/* ==========================================================================
   The Imagination Factory — site stylesheet
   Art direction: "The Factory Floor" (see tif-web-art-direction-v1.md)
   Colour ratio: light grounds ~65% · aubergine ~20% · accent fields ~15%
   ========================================================================== */

/* ---- fonts ---- */
@font-face{font-family:'Outfit';font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/outfit-latin-400-normal.woff2") format('woff2')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/outfit-latin-500-normal.woff2") format('woff2')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/outfit-latin-600-normal.woff2") format('woff2')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/outfit-latin-700-normal.woff2") format('woff2')}
@font-face{font-family:'Outfit';font-style:normal;font-weight:800;font-display:swap;src:url("/fonts/outfit-latin-800-normal.woff2") format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/inter-latin-400-normal.woff2") format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/inter-latin-500-normal.woff2") format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/inter-latin-600-normal.woff2") format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/inter-latin-700-normal.woff2") format('woff2')}

/* ---- tokens ---- */
:root{
  --ink:#281A38;        /* Aubergine */
  --ink-deep:#1B1026;
  --paper:#FFFFFF;
  --cloud:#F5F4F7;
  --line:#EAE7EF;
  --magenta:#ED1C8F;
  --magenta-dk:#C4137A;
  --cyan:#00BCE4;
  --lime:#C1CD23;
  --orange:#F7901E;
  --dkyellow:#EEB111;
  --yellow:#FFEF00;
  --gray:#717073;
  --body:#4A4257;
  --body-dark:#CFC6DB;
  --rail:linear-gradient(90deg,var(--dkyellow) 0 20%,var(--orange) 20% 40%,var(--cyan) 40% 60%,var(--lime) 60% 80%,var(--magenta) 80% 100%);
}

/* ---- base ---- */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:96px}
body{font-family:'Inter',system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--paper);
  font-size:17px;line-height:1.7;overflow-x:hidden;-webkit-font-smoothing:antialiased}
/* Width and height attributes reserve the correct space before an image loads.
   Once CSS changes either dimension, keep the other dimension automatic so
   logos, artwork, and editorial photography retain their intended shape. */
img{display:block;max-width:100%;height:auto}
a{text-decoration:none;color:inherit}
h1,h2,h3,h4,.visual-h3,.visual-h4,.out{font-family:'Outfit','Century Gothic',sans-serif}
:focus-visible{outline:3px solid var(--cyan);outline-offset:3px;border-radius:4px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:16px;top:16px;z-index:999;background:#fff;color:var(--ink);padding:12px 20px;border-radius:10px;font-weight:700}

.wrap{max-width:1240px;margin:0 auto;padding:0 32px}
.wrap-wide{max-width:1480px;margin:0 auto;padding:0 32px}
.wrap-narrow{max-width:880px;margin:0 auto;padding:0 32px}

/* ---- type ---- */
.kicker{font-family:'Outfit',sans-serif;font-size:12px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;display:inline-block}
.kicker-magenta{color:var(--magenta)}
.kicker-yellow{color:var(--yellow)}
.kicker-cyan{color:var(--cyan)}
h1{font-size:clamp(40px,5.5vw,78px);font-weight:700;letter-spacing:-.035em;line-height:1}
h2{font-size:clamp(30px,4.3vw,56px);font-weight:700;letter-spacing:-.032em;line-height:1.04}
h3,.visual-h3{font-size:clamp(21px,2.1vw,27px);font-weight:600;letter-spacing:-.02em;line-height:1.2}
h4,.visual-h4{font-size:19px;font-weight:600;letter-spacing:-.012em}
.lede{font-size:clamp(17px,1.35vw,19px);line-height:1.72;color:var(--body)}
.ink-band .lede,.ink-band p{color:var(--body-dark)}
.center{text-align:center}
.center .lede,.center .mx{margin-left:auto;margin-right:auto}
.mx{max-width:820px}
.mt-s{margin-top:14px}.mt-m{margin-top:22px}.mt-l{margin-top:40px}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;gap:10px;font-family:'Outfit',sans-serif;font-weight:700;font-size:15px;letter-spacing:-.01em;
  padding:17px 34px;border-radius:999px;border:2px solid transparent;cursor:pointer;text-align:center;
  transition:transform .2s cubic-bezier(.2,.7,.3,1),box-shadow .2s,background .2s,color .2s,border-color .2s}
.btn .arw{transition:transform .25s cubic-bezier(.2,.7,.3,1)}
.btn:hover .arw{transform:translateX(4px)}
.btn-magenta{background:var(--magenta);color:#fff;box-shadow:0 10px 30px -10px rgba(237,28,143,.75)}
.btn-magenta:hover{transform:translateY(-2px);box-shadow:0 18px 40px -12px rgba(237,28,143,.85)}
.btn-yellow{background:var(--yellow);color:var(--ink)}
.btn-yellow:hover{transform:translateY(-2px);box-shadow:0 16px 36px -12px rgba(255,239,0,.5)}
.btn-white{background:#fff;color:var(--magenta)}
.btn-white:hover{transform:translateY(-2px);box-shadow:0 16px 36px -12px rgba(0,0,0,.35)}
.btn-ghost-light{border-color:rgba(255,255,255,.45);color:#fff}
.btn-ghost-light:hover{border-color:#fff;background:rgba(255,255,255,.1)}
.btn-ghost-dark{border-color:rgba(40,26,56,.25);color:var(--ink)}
.btn-ghost-dark:hover{border-color:var(--ink);background:rgba(40,26,56,.04)}
.btn-sm{padding:12px 24px;font-size:14px}
.cta-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.center .cta-row{justify-content:center}

.txtlink{font-family:'Outfit',sans-serif;font-weight:700;font-size:14.5px;display:inline-flex;gap:8px;align-items:center;color:var(--cyan)}
.txtlink:hover{text-decoration:underline}
.txtlink .arw{transition:transform .25s}
.txtlink:hover .arw{transform:translateX(4px)}

/* ---- spectrum rail + gear texture ---- */
.rail{height:7px;background:var(--rail);width:100%}
.rail-thin{height:4px}
.gear{position:absolute;pointer-events:none;user-select:none;z-index:0}
.gear img{width:100%;height:auto}

/* ---- utility bar + header ---- */
.utility{background:var(--ink-deep);color:#9182A6;font-size:12.5px;position:relative;z-index:60}
.utility .wrap{display:flex;justify-content:flex-end;gap:26px;padding-top:9px;padding-bottom:9px}
.utility a:hover{color:#fff}
.utility .sep{opacity:.35}

header{position:sticky;top:0;z-index:50;background:transparent;transition:background .32s ease,box-shadow .32s ease}
header.solid{background:rgba(27,16,38,.94);backdrop-filter:blur(14px);box-shadow:0 10px 34px -18px rgba(0,0,0,.7)}
header.static{background:var(--ink-deep)}
.nav{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:20px 32px;max-width:1480px;margin:0 auto;transition:padding .32s}
header.solid .nav{padding:13px 32px}
.nav .logo{height:55px;width:auto}
.nav-links{display:flex;gap:30px;font-family:'Outfit',sans-serif;font-weight:600;font-size:14.5px}
.nav-links a{position:relative;color:#fff;opacity:.85;padding:8px 0;transition:opacity .18s}
.nav-links a:hover,.nav-links a[aria-current]{opacity:1}
.nav-links a::after{content:"";position:absolute;left:0;bottom:2px;height:3px;width:0;border-radius:3px;background:var(--yellow);transition:width .22s cubic-bezier(.2,.7,.3,1)}
.nav-links a:hover::after,.nav-links a[aria-current]::after{width:100%}
.nav-right{display:flex;align-items:center;gap:18px}
.lang{font-family:'Outfit',sans-serif;font-size:13px;font-weight:600;color:#9182A6;white-space:nowrap;letter-spacing:.06em}
.lang b{color:#fff;font-weight:700}
.burger{display:none;flex-direction:column;gap:5px;padding:8px;cursor:pointer;background:none;border:none}
.burger span{width:26px;height:2.5px;background:#fff;border-radius:3px}

.mobile-menu{display:none;position:fixed;inset:0;z-index:200;background:var(--ink);padding:96px 32px 40px;flex-direction:column;overflow-y:auto}
.mobile-menu.open{display:flex}
.mobile-menu a{font-family:'Outfit',sans-serif;font-weight:700;font-size:26px;color:#fff;padding:13px 0;border-bottom:1px solid rgba(255,255,255,.1)}
.mobile-menu a[aria-current]{color:var(--yellow);border-bottom-color:rgba(255,239,0,.45)}
.mobile-menu .close{position:absolute;top:26px;right:30px;font-size:30px;color:#fff;cursor:pointer;line-height:1;background:none;border:none}
.mobile-menu .mm-foot{margin-top:26px;color:#9182A6;font-size:15px;border:none}

/* ---- HOME hero: full-bleed photo, copy over it ---- */
.hero{position:relative;min-height:min(94vh,920px);display:flex;align-items:flex-end;margin-top:-98px;
  padding-top:160px;padding-bottom:82px;overflow:hidden;background:var(--ink)}
.hero .heroimg{position:absolute;top:0;bottom:0;left:0;right:auto;width:122%;height:100%;object-fit:cover;object-position:center 42%;z-index:0}
.hero .scrim{position:absolute;inset:0;z-index:1;
  background:linear-gradient(93deg,rgba(27,16,38,.97) 0%,rgba(27,16,38,.94) 26%,rgba(40,26,56,.72) 40%,rgba(40,26,56,.3) 52%,rgba(40,26,56,.04) 62%,rgba(40,26,56,0) 70%)}
.hero .scrim2{position:absolute;inset:0;z-index:1;
  background:linear-gradient(0deg,rgba(27,16,38,.6) 0%,rgba(27,16,38,.1) 22%,rgba(27,16,38,0) 38%),
             linear-gradient(180deg,rgba(27,16,38,.8) 0%,rgba(27,16,38,.5) 8%,rgba(27,16,38,.12) 15%,rgba(27,16,38,0) 23%)}
.hero .gear{left:-26%;bottom:-52%;width:64%;opacity:.08;z-index:2}
.hero .wrap-wide{position:relative;z-index:3;width:100%}
.hero-inner{max-width:760px}
.hero .kicker{color:#fff;border:1.5px solid rgba(255,255,255,.4);border-radius:999px;padding:9px 18px;letter-spacing:.16em;font-size:11.5px}
.hero h1{color:#fff;margin:26px 0 0}
/* The home headline is locked to two lines at every width: each line is a
   nowrap block and the type scales to fit its column instead of wrapping.
   9.6cqw keeps it inside the copy column; 4.5vw keeps the longer line clear
   of the child and the block tower on wide screens (below 720px the scrim
   turns vertical, so only the column constraint applies). */
.hero-h1{font-size:clamp(26px,7.4vw,58px)}
.hero-h1 .l{display:block;white-space:nowrap}
@supports (container-type:inline-size){
  .hero-inner{container-type:inline-size}
  .hero-h1{font-size:min(9.6cqw,4.5vw,64px)}
  @media (max-width:720px){.hero-h1{font-size:min(9.6cqw,64px)}}
}
.grad{background:linear-gradient(102deg,var(--cyan) 2%,#5AA5D6 26%,var(--magenta) 62%);
  /* background-clip:text paints only inside the background box, and with
     line-height:1 that box is shorter than the glyphs — which chopped the
     arm of the 'y' in "factory". Pad the box out, pull the margins back so
     nothing moves. Vertical padding on an inline box doesn't affect layout. */
  padding:.34em .12em .40em;margin:0 -.12em;
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.hero p.sub{margin:26px 0 34px;max-width:600px;font-size:clamp(16.5px,1.3vw,19px);line-height:1.7;color:#E4DFEC}
.hero-meta{margin-top:38px;display:flex;gap:30px;flex-wrap:wrap;align-items:center;font-family:'Outfit',sans-serif;
  font-size:13px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:rgba(255,255,255,.62)}
.hero-meta .dot{width:6px;height:6px;border-radius:50%;display:inline-block;margin-right:9px;vertical-align:middle}
.hero .rail{position:absolute;left:0;bottom:0;z-index:4}
@media (min-width:1700px){.hero{min-height:min(94vh,1040px)}.hero .heroimg{width:108%;object-position:center 34%}}
@media (max-width:1400px) and (min-width:1081px){.hero .hero-inner{max-width:600px}}

/* ---- INNER PAGE hero: compact aubergine band ---- */
/* Every inner-page hero is the same band: same height, same gear, same
   kicker / title / paragraph, no call to action. The home hero is separate. */
.phero{position:relative;background:var(--ink);color:#fff;overflow:hidden;margin-top:-98px;
  min-height:560px;padding:172px 0 clamp(52px,5.4vw,76px)}
.phero .gear{right:-14%;top:-34%;width:52%;opacity:.09}
.phero .wrap{position:relative;z-index:2}
.phero h1{margin-top:18px;max-width:26ch;font-size:clamp(36px,4.6vw,64px);min-height:2em}
.phero.center h1{margin-left:auto;margin-right:auto}
.phero p.lede{margin-top:22px;max-width:64ch;color:var(--body-dark);min-height:calc(1.72em * 3)}
.phero .cta-row{margin-top:34px}
.phero .rail{position:absolute;left:0;bottom:0}
.phero .kicker{display:block}
.crumb{font-family:'Outfit',sans-serif;font-size:12.5px;font-weight:600;color:#9182A6;letter-spacing:.04em}
.crumb a:hover{color:#fff}
.crumb span{opacity:.5;margin:0 8px}

/* ---- section grounds ---- */
section{position:relative}
.sec{padding:clamp(66px,8vw,118px) 0}
.sec-sm{padding:clamp(50px,5.5vw,78px) 0}
.paper{background:var(--paper)}
.cloud{background:var(--cloud)}
.ink-band{background:var(--ink);color:#fff}
.ink-band h2,.ink-band h3{color:#fff}
.magenta-band{background:var(--magenta);color:#fff}
.hairline{border-top:1px solid var(--line)}

/* ---- trust strip ---- */
.trust{background:var(--paper);border-bottom:1px solid var(--line)}
.trust .wrap{display:grid;grid-template-columns:repeat(4,1fr);padding-top:34px;padding-bottom:34px}
.trust .item{padding:4px 26px;border-left:1px solid var(--line)}
.trust .item:first-child{border-left:none;padding-left:0}
.trust .num{font-family:'Outfit',sans-serif;font-size:clamp(30px,3vw,42px);font-weight:700;letter-spacing:-.03em;line-height:1}
.trust .num.word{font-size:clamp(22px,2.2vw,30px);letter-spacing:-.025em}
.trust .lbl{font-family:'Outfit',sans-serif;font-weight:700;font-size:14.5px;margin-top:9px}
.trust .sm{font-size:13.5px;color:var(--gray);line-height:1.5;margin-top:3px}
.trust .stars{color:var(--dkyellow);font-size:19px;letter-spacing:3px;line-height:1}
.trust a{color:var(--cyan);font-weight:600;font-size:13.5px}
.trust a:hover{text-decoration:underline}

/* ---- triad ---- */
.triad{margin-top:44px;display:inline-flex;align-items:center;gap:26px;flex-wrap:wrap;justify-content:center;
  font-family:'Outfit',sans-serif;font-weight:700;font-size:14px;letter-spacing:.18em;text-transform:uppercase}
.triad i{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:11px;vertical-align:2px;font-style:normal}
.triad span{white-space:nowrap}

/* ---- big stat band ---- */
.stat{overflow:hidden}
.stat .gear{right:-16%;top:-24%;width:58%;opacity:.10}
.stat .wrap{position:relative;z-index:2;display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(40px,6vw,90px);align-items:center}
.bignum{font-family:'Outfit',sans-serif;font-weight:800;font-size:clamp(90px,13vw,190px);line-height:.82;letter-spacing:-.055em;color:var(--yellow)}
.lettercrop{position:relative;height:clamp(230px,26vw,380px);overflow:hidden;display:flex;align-items:center;justify-content:center}
.lettercrop img{width:190%;max-width:none;opacity:.9;transform:translateX(6%)}

/* ---- cards ---- */
.cards{display:grid;gap:26px;margin-top:52px}
.cards-3{grid-template-columns:repeat(3,1fr)}
.cards-2{grid-template-columns:repeat(2,1fr)}
.cards-4{grid-template-columns:repeat(4,1fr);gap:20px}
.pcard{background:var(--paper);border-radius:20px;overflow:hidden;display:block;
  box-shadow:0 2px 0 0 var(--line),0 18px 40px -30px rgba(40,26,56,.4)}
a.pcard:hover{box-shadow:0 2px 0 0 var(--line),0 18px 40px -30px rgba(40,26,56,.4)}
.pcard .bar{height:7px}
.pcard .imgbox{aspect-ratio:4/3;overflow:hidden}
.pcard .imgbox img{width:100%;height:100%;object-fit:cover}
.pcard .b{padding:28px 28px 32px}
.pcard h3{font-size:23px}
.pcard p{margin-top:11px;font-size:15.5px;line-height:1.65;color:var(--body)}
.home-three .pcard .b{padding-top:24px}
.home-three .pcard p{margin-top:0}
.home-three-title{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px;text-align:center}
.home-three-kicker{display:block;text-align:center}

/* flat info card (no image) */
.icard{background:var(--paper);border-radius:18px;padding:30px 28px;box-shadow:0 2px 0 0 var(--line),0 16px 36px -30px rgba(40,26,56,.35)}
.cloud .icard{box-shadow:0 1px 0 0 rgba(40,26,56,.06),0 16px 36px -30px rgba(40,26,56,.3)}
.icard .cap{height:5px;width:44px;border-radius:3px;margin-bottom:18px}
.icard h3{font-size:21px}
.icard p{margin-top:10px;font-size:15.5px;line-height:1.66;color:var(--body)}
.icard ul{margin-top:14px;list-style:none;display:flex;flex-direction:column;gap:9px;font-size:15px;color:var(--body)}
.icard ul li{padding-left:24px;position:relative}
.icard ul li::before{content:"";position:absolute;left:2px;top:10px;width:9px;height:9px;border-radius:50%;background:var(--cyan);opacity:.9}

/* pricing-style experience cards */
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:52px;align-items:start}
.plan{background:var(--paper);border-radius:22px;padding:34px 30px 36px;position:relative;
  box-shadow:0 2px 0 0 var(--line),0 20px 46px -32px rgba(40,26,56,.4);display:flex;flex-direction:column;height:100%}
.plan.featured{background:var(--ink);color:#fff;box-shadow:0 26px 60px -28px rgba(40,26,56,.6)}
.plan.featured p,.plan.featured li{color:var(--body-dark)}
.plan.featured h3{color:#fff}
.plan .flag{position:absolute;top:-13px;left:30px;background:var(--magenta);color:#fff;font-family:'Outfit',sans-serif;
  font-weight:700;font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:7px 14px;border-radius:999px}
.plan .hours{font-family:'Outfit',sans-serif;font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--magenta)}
.plan.featured .hours{color:var(--yellow)}
.plan h3{margin-top:12px;font-size:25px}
.plan .tag{margin-top:12px;font-size:15.5px;line-height:1.6;color:var(--body)}
.plan ul{margin-top:20px;list-style:none;display:flex;flex-direction:column;gap:10px;font-size:15px;color:var(--body);flex:1}
.plan ul li{padding-left:26px;position:relative}
.plan ul li::before{content:"✓";position:absolute;left:0;top:0;font-weight:700;color:var(--cyan)}
.plan.featured ul li::before{color:var(--lime)}
.plan .btn{margin-top:26px;width:100%;justify-content:center}

/* ---- split image + text ---- */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(36px,5vw,76px);align-items:center}
.split.rev .txt{order:2}
.split.rev .media{order:1}
.split .media img{width:100%;border-radius:22px;object-fit:cover;aspect-ratio:4/3;box-shadow:0 30px 60px -34px rgba(40,26,56,.55)}
.split .media .phold{aspect-ratio:4/3;border-radius:22px}
.split .media img.tall{aspect-ratio:4/5}
.split + .split{margin-top:clamp(48px,6vw,92px)}
.split h3,.split .visual-h3{font-size:clamp(23px,2.6vw,34px);font-weight:700;letter-spacing:-.025em}
.split p{margin-top:14px;font-size:16.5px;line-height:1.7;color:var(--body)}
.eyebrow{font-family:'Outfit',sans-serif;font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;display:block;margin-bottom:12px}
.chips{margin-top:18px;display:flex;flex-wrap:wrap;gap:9px}
.chip{background:var(--cloud);border-radius:999px;padding:8px 15px;font-size:12.5px;font-weight:600;color:#3f3750}
.paper .chip{background:var(--cloud)}
.cloud .chip{background:#fff}
.meta-line{margin-top:16px;font-size:13px;color:var(--gray);font-weight:600;letter-spacing:.02em}

/* ---- numbered steps ---- */
.steps{counter-reset:st;display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:44px}
.steps.five{grid-template-columns:repeat(5,1fr)}
.steps.three{grid-template-columns:repeat(3,1fr)}
.step{background:var(--paper);border-radius:18px;padding:26px 24px;position:relative;box-shadow:0 2px 0 0 var(--line)}
.cloud .step{background:#fff;box-shadow:0 1px 0 0 rgba(40,26,56,.06)}
.step::before{counter-increment:st;content:counter(st,decimal-leading-zero);font-family:'Outfit',sans-serif;font-weight:800;
  font-size:34px;line-height:1;color:var(--magenta);opacity:.22;display:block;margin-bottom:14px}
.step p{font-size:15.5px;line-height:1.62;color:var(--body)}
.step h4,.step .visual-h4{margin-bottom:8px}

/* ---- playroom spectrum ---- */
.spectrum{display:grid;grid-template-columns:repeat(5,1fr);width:100%}
.proom{position:relative;overflow:hidden;min-height:clamp(280px,30vw,400px);display:flex;flex-direction:column;
  justify-content:flex-end;padding:32px 26px 30px}
/* hover: the photograph comes forward in its own colour; the Playroom colour
   stays as a light wash rather than a multiply that drains it */
.proom .bgimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;
  transition:opacity .5s,transform 1.1s cubic-bezier(.2,.7,.3,1);transform:scale(1.08)}
.proom:hover .bgimg{opacity:0.82;transform:scale(1)}
.proom .veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 32%,rgba(0,0,0,.5) 100%);opacity:0;transition:opacity .4s}
.proom:hover .veil{opacity:1}
.proom .c{position:relative;z-index:2}
.proom .age{font-family:'Outfit',sans-serif;font-weight:700;font-size:12px;letter-spacing:.19em;text-transform:uppercase;opacity:.82}
.proom .nm{font-family:'Outfit',sans-serif;font-weight:700;font-size:clamp(22px,2.2vw,30px);letter-spacing:-.025em;line-height:1.05;margin-top:10px}
.proom .go{margin-top:16px;font-family:'Outfit',sans-serif;font-weight:700;font-size:14px;display:inline-flex;gap:8px;opacity:.9}
.proom:hover .go .arw{transform:translateX(5px)}
.proom .arw{transition:transform .25s}
.proom.on-light{color:var(--ink)}
/* on hover the photo replaces the Lime field, so the aubergine label would lose
   contrast — go white, with a slightly deeper scrim to carry it */
.proom.on-light:hover{color:#fff}
.proom.on-light .veil{background:linear-gradient(180deg,rgba(0,0,0,0) 24%,rgba(0,0,0,.66) 100%)}
.proom.on-dark{color:#fff}

/* playroom detail block */
/* html already reserves 96px for the sticky header via scroll-padding-top;
   adding scroll-margin here as well double-counted it */
.proom-detail{scroll-margin-top:0}
.proom-detail .swatch{display:inline-flex;align-items:center;gap:11px;font-family:'Outfit',sans-serif;font-weight:700;
  font-size:12px;letter-spacing:.16em;text-transform:uppercase;margin-bottom:12px}
.proom-detail .swatch i{width:14px;height:14px;border-radius:50%;display:inline-block;font-style:normal}

/* anchor nav pills */
.jump{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:34px}
.jump a{font-family:'Outfit',sans-serif;font-weight:700;font-size:13.5px;padding:11px 20px;border-radius:999px;
  background:#fff;box-shadow:0 1px 0 0 var(--line);transition:transform .2s,box-shadow .2s;display:inline-flex;align-items:center;gap:9px}
.cloud .jump a{background:#fff}
.jump a:hover{transform:translateY(-2px);box-shadow:0 12px 26px -14px rgba(40,26,56,.5)}
.jump a i{width:10px;height:10px;border-radius:50%;display:inline-block;font-style:normal}

/* ---- quote ---- */
.quote{position:relative;overflow:hidden}
.quote .mark{font-family:'Outfit',sans-serif;font-weight:800;font-size:clamp(90px,11vw,168px);line-height:.55;
  color:var(--lime);opacity:.55;display:block;margin-bottom:clamp(10px,1.4vw,20px)}
.quote .q{font-family:'Outfit',sans-serif;font-weight:500;font-size:clamp(24px,3.3vw,46px);line-height:1.18;
  letter-spacing:-.03em;max-width:940px;margin:0 auto}
.quote .who{margin-top:26px;font-family:'Outfit',sans-serif;font-weight:700;font-size:14.5px;letter-spacing:.06em}
.quote .note{margin-top:22px;max-width:620px;margin-left:auto;margin-right:auto;font-size:16px;color:var(--body)}

/* ---- testimonials ---- */
.quotes{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:44px}
.qi{background:#fff;border-radius:18px;padding:28px;border-top:5px solid;box-shadow:0 2px 0 0 var(--line),0 16px 36px -32px rgba(40,26,56,.4)}
.qi p{font-family:'Outfit',sans-serif;font-weight:400;font-size:17px;line-height:1.55}
.qi .who{margin-top:16px;font-size:13.5px;font-weight:600;color:var(--gray)}
.disc{margin-top:22px;font-size:13px;color:var(--gray)}

/* ---- collage ---- */
.collage{position:relative;padding-bottom:56px;padding-right:44px}
.collage img{border-radius:18px;box-shadow:0 30px 60px -32px rgba(40,26,56,.55)}
.collage .a{width:84%;aspect-ratio:4/5;object-fit:cover}
.collage .b{position:absolute;right:0;bottom:0;width:56%;aspect-ratio:1/1;object-fit:cover;border:6px solid var(--paper)}
.cloud .collage .b{border-color:var(--cloud)}

/* ---- accordion ---- */
.acc{margin-top:40px;border-top:1px solid var(--line)}
.acc details{border-bottom:1px solid var(--line)}
.acc summary{list-style:none;cursor:pointer;padding:24px 44px 24px 0;position:relative;
  font-family:'Outfit',sans-serif;font-weight:600;font-size:19px;letter-spacing:-.015em}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:"";position:absolute;right:8px;top:34px;width:13px;height:13px;
  border-right:2.5px solid var(--magenta);border-bottom:2.5px solid var(--magenta);transform:rotate(45deg);transition:transform .25s}
.acc details[open] summary::after{transform:rotate(-135deg);top:38px}
.acc .body{padding:0 44px 26px 0;font-size:16.5px;line-height:1.72;color:var(--body)}
.acc .body p + p{margin-top:14px}
.acc .body ul{margin-top:12px;padding-left:22px;display:flex;flex-direction:column;gap:8px}

/* ---- comparison table ---- */
.tablewrap{margin-top:44px;overflow-x:auto;border-radius:18px;box-shadow:0 2px 0 0 var(--line)}
table.cmp{width:100%;border-collapse:collapse;background:#fff;min-width:680px;font-size:15.5px}
table.cmp th,table.cmp td{padding:18px 20px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
table.cmp thead th{font-family:'Outfit',sans-serif;font-weight:700;font-size:13px;letter-spacing:.1em;
  text-transform:uppercase;background:var(--ink);color:#fff;border-bottom:none}
table.cmp thead th:first-child{border-radius:18px 0 0 0}
table.cmp thead th:last-child{border-radius:0 18px 0 0}
table.cmp tbody th{font-family:'Outfit',sans-serif;font-weight:700;font-size:15px;width:22%}
table.cmp tbody tr:nth-child(even){background:#FBFAFC}
table.cmp td.tif{background:rgba(237,28,143,.06);font-weight:500}

/* ---- timeline ---- */
.timeline{margin-top:48px;display:grid;gap:0}
.tl-item{display:grid;grid-template-columns:132px 1fr;gap:28px;padding:26px 0;border-top:1px solid var(--line);align-items:start}
.tl-item:last-child{border-bottom:1px solid var(--line)}
.tl-year{font-family:'Outfit',sans-serif;font-weight:700;font-size:22px;letter-spacing:-.02em;color:var(--magenta)}
.tl-item h4,.tl-item .visual-h4{margin-bottom:6px}
.tl-item p{font-size:16px;line-height:1.68;color:var(--body)}

/* ---- day rhythm strip ---- */
.rhythm{margin-top:44px;display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-radius:18px;overflow:hidden;box-shadow:0 2px 0 0 var(--line)}
.rhythm .slot{background:#fff;padding:28px 26px;border-left:1px solid var(--line)}
.rhythm .slot:first-child{border-left:none}
.rhythm .slot .t{font-family:'Outfit',sans-serif;font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan)}
.rhythm .slot h4,.rhythm .slot .visual-h4{margin-top:10px}
.rhythm .slot p{margin-top:8px;font-size:15.5px;line-height:1.62;color:var(--body)}

/* ---- forms ---- */
.formcard{min-width:0;background:#fff;border-radius:22px;padding:clamp(28px,3.2vw,44px);box-shadow:0 2px 0 0 var(--line),0 24px 54px -36px rgba(40,26,56,.45)}
.cloud .formcard{box-shadow:0 1px 0 0 rgba(40,26,56,.06),0 24px 54px -36px rgba(40,26,56,.35)}
/* minmax(0,1fr), not 1fr: a bare 1fr track cannot shrink below an input's
   intrinsic width, which pushed the second field out of the card. */
.fgrid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.field{display:flex;flex-direction:column;gap:8px;margin-bottom:18px;min-width:0}
.field label{font-family:'Outfit',sans-serif;font-weight:600;font-size:13.5px;letter-spacing:.02em}
.field .req{color:var(--magenta)}
.field input,.field select,.field textarea{font-family:'Inter',sans-serif;font-size:16px;color:var(--ink);
  padding:14px 16px;border:1.5px solid #DFDBE6;border-radius:12px;background:#fff;transition:border-color .2s,box-shadow .2s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 4px rgba(0,188,228,.14)}
.field textarea{min-height:130px;resize:vertical}
.field .hint{font-size:13px;color:var(--gray)}
.form-note{margin-top:16px;font-size:13.5px;color:var(--gray)}
.hp{position:absolute;left:-9999px}

/* info list (contact details) */
.infolist{list-style:none;display:flex;flex-direction:column;gap:22px;margin-top:30px}
.infolist li{display:grid;grid-template-columns:48px 1fr;gap:18px;align-items:start;font-size:16px;line-height:1.6}
.infolist .ic{display:grid;place-items:center;width:48px;height:48px;border-radius:15px;background:var(--magenta);color:#fff;box-shadow:0 14px 30px -22px rgba(237,28,143,.9)}
.infolist .ic svg{display:block;width:24px;height:24px}
.infolist .ic img{display:block;width:23px;height:23px;object-fit:contain}
.infolist a:hover{color:var(--magenta)}
.infolist strong{display:block;font-family:'Outfit',sans-serif;font-size:13px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--gray);margin-bottom:4px;font-weight:700}

/* ---- final CTA band ---- */
.finale{color:#fff;overflow:hidden}
.finale-magenta{background:linear-gradient(104deg,#ED1C8F 0%,#D4147E 55%,#B70F6C 100%)}
.finale-cyan{background:linear-gradient(104deg,var(--cyan) 0%,#16C7E9 58%,#43D2EC 100%)}
.finale-orange{background:linear-gradient(104deg,var(--orange) 0%,#F9A62F 58%,#F6BF26 100%)}
.finale-lime{background:linear-gradient(104deg,var(--lime) 0%,#CCD83A 58%,#DDE55F 100%)}
.finale-yellow{background:linear-gradient(104deg,var(--yellow) 0%,#F6E72B 58%,#F6BF26 100%)}
.finale .gear{left:-22%;top:-46%;width:56%;opacity:.10}
.finale .wrap{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:44px;flex-wrap:wrap}
.finale h2{max-width:17ch;color:#fff}
.finale p{margin-top:16px;max-width:52ch;color:rgba(255,255,255,.9);font-size:17px}
.finale-cyan,.finale-orange,.finale-lime,.finale-yellow{color:var(--ink)}
.finale-cyan h2,.finale-orange h2,.finale-lime h2,.finale-yellow h2{color:var(--ink)}
.finale-cyan p,.finale-orange p,.finale-lime p,.finale-yellow p{color:rgba(40,26,56,.86)}
.finale-cyan .btn-white,.finale-orange .btn-white,.finale-lime .btn-white,.finale-yellow .btn-white{background:var(--ink);color:#fff}
.finale-cyan .btn-ghost-light,.finale-orange .btn-ghost-light,.finale-lime .btn-ghost-light,.finale-yellow .btn-ghost-light{border-color:rgba(40,26,56,.48);color:var(--ink)}
.finale-cyan .orword,.finale-orange .orword,.finale-lime .orword,.finale-yellow .orword{color:var(--ink)}

/* ---- prose (legal pages) ---- */
.prose{max-width:760px}
.prose h2{font-size:clamp(23px,2.4vw,30px);margin-top:46px}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:20px;margin-top:30px}
.prose p{margin-top:14px;font-size:16.5px;line-height:1.75;color:var(--body)}
.prose ul,.prose ol{margin-top:14px;padding-left:24px;display:flex;flex-direction:column;gap:9px;color:var(--body);font-size:16.5px}
.prose a{color:var(--magenta);font-weight:600}
.prose a:hover{text-decoration:underline}
.prose .updated{font-size:14px;color:var(--gray);font-weight:600}
.legal-page .phero{min-height:500px}
.legal-page .phero h1{max-width:none;min-height:0}
.legal-page .prose{margin-inline:auto}
.policy-block + .policy-block{margin-top:42px;padding-top:42px;border-top:1px solid var(--line)}
.policy-block h2{margin-top:0}
.policy-block p{margin-top:14px}

/* ---- footer ---- */
footer{background:var(--ink-deep);color:#A79BBB;padding:82px 0 0;position:relative;overflow:hidden}
footer .gear{right:-16%;bottom:-42%;width:44%;opacity:.05}
footer .wrap{position:relative;z-index:2}
.fgrid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:44px}
footer .flogo{height:72px;width:auto;margin-bottom:22px}
footer p.about{font-size:15px;line-height:1.65;max-width:34ch}
footer h4,footer .footer-heading{font-family:'Outfit',sans-serif;color:#fff;font-size:13px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;margin-bottom:18px;line-height:1.2}
footer ul{list-style:none;display:flex;flex-direction:column;gap:11px;font-size:15px}
footer a:hover{color:#fff}
.socials{display:flex;gap:12px;margin-top:20px}
.socials a{width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.18);
  display:flex;align-items:center;justify-content:center;transition:background .2s,border-color .2s}
.socials a:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.4)}
.socials img{width:17px;filter:brightness(0) invert(1);opacity:.8}
.fbot{margin-top:56px;border-top:1px solid rgba(255,255,255,.1);padding:22px 0 26px;
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:13.5px}

/* ---- sticky mobile action bar ---- */
.mbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:120;background:rgba(27,16,38,.97);
  backdrop-filter:blur(12px);padding:10px 12px calc(10px + env(safe-area-inset-bottom));gap:8px;border-top:1px solid rgba(255,255,255,.12)}
.mbar a{flex:1;text-align:center;font-family:'Outfit',sans-serif;font-weight:700;font-size:13.5px;padding:13px 6px;border-radius:12px;color:#fff}
.mbar a.primary{background:var(--magenta)}
.mbar a.ghost{background:rgba(255,255,255,.1)}

/* ---- scroll reveal ---- */
.rv{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.2,.7,.3,1),transform .7s cubic-bezier(.2,.7,.3,1)}
.rv.in{opacity:1;transform:none}

/* ==========================================================================
   responsive
   ========================================================================== */
@media (max-width:1180px){
  .nav-links{display:none}
  .burger{display:flex}
  .nav .logo{content:url("/assets/tif-monogram.png");width:58px;height:58px;object-fit:contain}
  .trust .wrap{grid-template-columns:repeat(2,1fr);gap:26px 0}
  .trust .item:nth-child(3){border-left:none;padding-left:0}
  .cards-3,.cards-2,.cards-4{grid-template-columns:1fr;gap:20px}
  .plans{grid-template-columns:1fr}
  .stat .wrap{grid-template-columns:1fr}
  .lettercrop{height:190px;margin-top:14px}
  .split{grid-template-columns:minmax(0,1fr);gap:30px}
  .split.rev .txt,.split.rev .media{order:0}
  .split .media img,.split .media img.tall{aspect-ratio:16/10}
  .spectrum{grid-template-columns:repeat(2,1fr)}
  .proom{min-height:210px}
  .steps,.steps.five,.steps.three{grid-template-columns:1fr 1fr}
  .quotes{grid-template-columns:1fr}
  .rhythm{grid-template-columns:1fr}
  .rhythm .slot{border-left:none;border-top:1px solid var(--line)}
  .rhythm .slot:first-child{border-top:none}
  .fgrid{grid-template-columns:1fr 1fr;gap:36px}
  .collage{padding-right:30px;padding-bottom:40px}
  .phero{padding-top:150px}
  .hero{min-height:720px;padding-top:180px;padding-bottom:92px;align-items:center}
  .hero .heroimg,.hero .scrim,.hero .scrim2{display:none}
  .hero .hero-inner{max-width:740px}
}
@media (max-width:720px){
  body{font-size:16px}
  .wrap,.wrap-wide,.wrap-narrow{padding:0 22px}
  .utility{display:none}
  .nav-right .btn{display:none}
  .nav{padding:16px 22px}
  header.solid .nav{padding:11px 22px}
  .hero{margin-top:-86px;padding-top:138px;padding-bottom:88px;min-height:680px}
  .hero .gear{display:none}
  .cta-row .btn{width:100%;justify-content:center}
  .phero{margin-top:-86px;padding-top:110px;padding-bottom:48px;min-height:540px}
  .phero .kicker{min-height:3.4em}
  .phero h1{font-size:33px}
  .phero p.lede{font-size:16px}
  .legal-page .phero{min-height:500px}
  .policy-block + .policy-block{margin-top:34px;padding-top:34px}
  .spectrum{grid-template-columns:1fr}
  .proom{min-height:150px;padding:24px 22px}
  .steps,.steps.five,.steps.three{grid-template-columns:1fr}
  .fgrid{grid-template-columns:1fr}
  .fgrid2{grid-template-columns:minmax(0,1fr)}
  .tl-item{grid-template-columns:1fr;gap:6px}
  .mbar{display:flex}
  footer{padding-bottom:76px}
  .finale .wrap{flex-direction:column;align-items:flex-start}
  .acc summary{font-size:17.5px;padding-right:38px}
}
@media (prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
  html{scroll-behavior:auto}
  *{animation:none!important}
}

/* ---- accordion in a card (FAQ) ---- */
.acc-card{background:#fff;border-radius:22px;padding:6px clamp(22px,3vw,44px);
  box-shadow:0 2px 0 0 var(--line),0 26px 56px -40px rgba(40,26,56,.4)}
.acc-card .acc{margin-top:0;border-top:none}
.acc-card .acc details:last-child{border-bottom:none}

/* ---- tables on the aubergine band ---- */
.ink-band .tablewrap{box-shadow:0 2px 0 0 rgba(255,255,255,.1)}
.ink-band table.cmp{background:rgba(255,255,255,.045);color:#fff}
.ink-band table.cmp th,.ink-band table.cmp td{border-bottom-color:rgba(255,255,255,.13)}
.ink-band table.cmp thead th{background:rgba(255,255,255,.1);color:#fff}
.ink-band table.cmp tbody tr:nth-child(even){background:rgba(255,255,255,.03)}
.ink-band table.cmp tbody th{color:#fff}
.ink-band table.cmp td{color:var(--body-dark)}
.ink-band table.cmp td.tif{background:rgba(237,28,143,.2);color:#fff}

/* ---- embedded iframes (scheduler, map) ---- */
.embed{display:block;width:100%;border:0;border-radius:18px;height:380px;background:var(--cloud)}
.embed-tall{height:860px;border-radius:0}
@media (max-width:720px){
  .embed{height:300px}
  .embed-tall{height:1180px}
}

/* ---- booking page ---- */
.split.top{align-items:start}
.embed-book{height:900px;border-radius:14px}
.formcard.flush{padding:clamp(14px,1.4vw,20px)}
.booking-full-page{margin:12px 4px 0;text-align:right;font-size:13px;color:var(--gray)}
.booking-full-page a{font-weight:700;color:var(--magenta)}
.booking-mobile{display:none;text-align:center;align-items:center;flex-direction:column;padding:34px 22px 38px}
.booking-mobile-icon{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:var(--magenta);color:#fff;box-shadow:0 18px 38px -22px rgba(237,28,143,.8)}
.booking-mobile-icon svg{width:28px;height:28px}
.booking-mobile h3{margin-top:22px;font-size:25px;max-width:16ch}
.booking-mobile p{margin-top:12px;max-width:33ch;font-size:15.5px;line-height:1.65;color:var(--body)}
.booking-mobile .btn{margin-top:24px}
@media (max-width:720px){
  .booking-card{padding:10px}
  .booking-desktop{display:none}
  .booking-mobile{display:flex}
}

/* ==========================================================================
   The day (Experiences) — chapters + proportional reach diagram
   ========================================================================== */
.chapters{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:44px}
.chapter{background:#fff;border-radius:18px;padding:26px 24px 28px;box-shadow:0 2px 0 0 var(--line),0 16px 36px -32px rgba(40,26,56,.35);display:flex;flex-direction:column}
.chapter .bar{height:6px;border-radius:3px;width:46px;margin-bottom:18px}
.chapter .bar.dual{display:flex;width:98px;gap:6px;background:none}
.chapter .bar.dual span{display:block;flex:1;border-radius:3px}
.chapter .t{font-family:'Outfit',sans-serif;font-weight:700;font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--gray)}
.chapter h4,.chapter .visual-h4{margin-top:7px;font-size:22px;letter-spacing:-.02em}
.chapter ul{list-style:none;margin-top:18px;display:flex;flex-direction:column}
.chapter li{position:relative;padding:0 0 18px 26px;font-size:15.5px;line-height:1.55;color:var(--body)}
.chapter li:last-child{padding-bottom:0}
.chapter li::before{content:"";position:absolute;left:2px;top:6px;width:8px;height:8px;border-radius:50%;
  background:#fff;border:2px solid var(--line);z-index:1}
.chapter li::after{content:"";position:absolute;left:5.5px;top:14px;bottom:0;width:1.5px;background:var(--line)}
.chapter li:last-child::after{display:none}
.chapter li b{color:var(--ink);font-weight:600}
.chapter li.key::before{background:var(--magenta);border-color:var(--magenta)}
.chapter li.key{color:var(--ink)}
.chapter li.key .why{display:block;font-weight:400;font-size:14.5px;color:var(--body);margin-top:5px}
.chapter .foot{margin-top:auto;padding-top:18px;font-size:13px;color:var(--gray);line-height:1.5}

.reach{margin-top:34px;background:#fff;border-radius:20px;padding:28px 28px 24px;
  box-shadow:0 2px 0 0 var(--line),0 16px 36px -32px rgba(40,26,56,.35);overflow-x:auto}
.reach h4,.reach .visual-h4{font-size:17px;margin-bottom:20px}
.reach-inner{min-width:660px}
.reach-row{display:grid;grid-template-columns:190px repeat(19,1fr);align-items:center}
.reach-row + .reach-row{margin-top:10px}
.reach-row .name{grid-column:1;grid-row:1;padding-right:18px;line-height:1.25}
.reach-row .name b{display:block;font-family:'Outfit',sans-serif;font-weight:700;font-size:15px;letter-spacing:-.01em}
.reach-row .name small{display:block;font-size:12.5px;color:var(--gray);margin-top:2px}
.reach-row .track{grid-column:2/21;grid-row:1;height:18px;border-radius:99px;background:var(--cloud)}
.reach-row .b{grid-row:1;height:18px;border-radius:99px}
.reach-row .b.addon{background:transparent;border:1.5px dashed rgba(237,28,143,.7);
  background-image:repeating-linear-gradient(45deg,rgba(237,28,143,.16) 0 5px,rgba(237,28,143,0) 5px 10px)}
.reach-axis{display:grid;grid-template-columns:190px repeat(19,1fr);margin-bottom:8px}
.reach-axis span{grid-row:1;font-family:'Outfit',sans-serif;font-size:11.5px;font-weight:700;
  letter-spacing:.06em;color:var(--gray)}
.reach-axis span.end{justify-self:end}
.reach-note{margin-top:18px;font-size:13.5px;color:var(--gray);line-height:1.55}
.reach-scrollhint{display:none;font-size:12.5px;color:var(--gray);margin-top:10px}

.orword{font-family:'Outfit',sans-serif;font-weight:600;font-size:15px;opacity:.85}

@media (max-width:1080px){
  .chapters{grid-template-columns:1fr 1fr}
}
@media (max-width:720px){
  .chapters{grid-template-columns:1fr}
  .reach{padding:22px 18px 20px}
  .reach-row,.reach-axis{grid-template-columns:130px repeat(19,1fr)}
  .reach-inner{min-width:560px}
  .reach-scrollhint{display:block}
}

/* ---- expandable cards (The Imagination Family) ---- */
.xcard{background:#fff;border-radius:18px;overflow:hidden;
  box-shadow:0 2px 0 0 var(--line),0 16px 36px -32px rgba(40,26,56,.35);
  transition:transform .25s cubic-bezier(.2,.7,.3,1),box-shadow .25s}
.cloud .xcard{box-shadow:0 1px 0 0 rgba(40,26,56,.07),0 16px 36px -32px rgba(40,26,56,.3)}
.xcard:hover{transform:translateY(-4px);box-shadow:0 26px 50px -30px rgba(40,26,56,.45)}
.xcard[open]{transform:none}
.xcard > summary{list-style:none;cursor:pointer;padding:28px 26px 24px;position:relative}
.xcard > summary::-webkit-details-marker{display:none}
.xcard .cap{display:block;height:5px;width:44px;border-radius:3px;margin-bottom:18px}
.xcard h3{font-size:20px}
.xcard summary p{margin-top:10px;font-size:15.5px;line-height:1.62;color:var(--body)}
.xcard .more{margin-top:16px;display:inline-flex;align-items:center;gap:9px;
  font-family:'Outfit',sans-serif;font-weight:700;font-size:13.5px;color:var(--magenta)}
.xcard .more::after{content:"";width:9px;height:9px;border-right:2px solid currentColor;
  border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .25s}
.xcard[open] .more::after{transform:rotate(-135deg) translateY(-2px)}
.xcard[open] .more span::after{content:""}
.xcard .xbody{padding:0 26px 28px}
.xcard .xbody p{font-size:15.5px;line-height:1.65;color:var(--body);margin-top:16px}
.phold{aspect-ratio:16/10;border-radius:14px;background:var(--cloud);border:1.5px dashed #D6D0E0;
  display:flex;align-items:center;justify-content:center;text-align:center;padding:16px;
  font-family:'Outfit',sans-serif;font-size:12.5px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:#8A8199;line-height:1.5}
.cloud .phold{background:#FAF9FB}
@media (max-width:1080px){.cards-4{grid-template-columns:1fr 1fr}}
@media (max-width:720px){.cards-4{grid-template-columns:1fr}}

/* ---- growth curve (Method · birth to five) ---- */
.growth{margin-top:clamp(34px,4vw,52px)}
.growth-chart{position:relative;height:clamp(160px,18vw,250px);border-radius:16px;margin-top:58px;background:rgba(255,255,255,.05)}
.growth-fill{position:absolute;inset:0;border-radius:16px;background:linear-gradient(90deg,rgba(255,239,0,.3),rgba(255,239,0,.85));
  clip-path:polygon(0 76%,60% 20%,100% 10%,100% 100%,0 100%)}
.growth-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(6,1fr);z-index:1}
.growth-grid i{border-left:1px solid rgba(255,255,255,.09);font-style:normal}
.growth-grid i:first-child{border-left:none}
.growth-mark{position:absolute;z-index:3;transform:translate(-50%,-100%);text-align:center;white-space:nowrap}
.growth-mark b{display:block;font-family:'Outfit',sans-serif;font-weight:800;font-size:clamp(19px,2.3vw,30px);
  color:#fff;letter-spacing:-.03em;line-height:1}
.growth-mark small{display:block;margin-top:4px;font-size:11px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:rgba(255,255,255,.68)}
.growth-mark::after{content:"";position:absolute;left:50%;bottom:-13px;transform:translateX(-50%);
  width:9px;height:9px;border-radius:50%;background:#fff}
.growth-axis{display:grid;grid-template-columns:repeat(6,1fr);margin-top:14px}
.growth-axis span{font-family:'Outfit',sans-serif;font-weight:700;font-size:12.5px;letter-spacing:.12em;
  text-transform:uppercase;color:rgba(255,255,255,.6)}
.mcards{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-top:26px}
.mcard{background:rgba(255,255,255,.06);border-radius:14px;padding:20px 18px;border-top:3px solid var(--yellow)}
.mcard h4,.mcard .visual-h4{color:#fff;font-size:16px}
.mcard p{margin-top:8px;font-size:14px;line-height:1.55;color:var(--body-dark)}
@media (max-width:1080px){
  .mcards{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:720px){
  .mcards{grid-template-columns:1fr 1fr;gap:12px}
  .growth-axis span{font-size:11px;letter-spacing:.06em}
  .growth-mark small{display:none}
}

/* ---- distinctive claims (Method · how we compare) ---- */
table.cmp td.tif{font-weight:600}
table.cmp .tifhead{background:var(--magenta);color:#fff}

@media (max-width:380px){
  .phero h1{font-size:29px}
  .phero p.lede{font-size:15.5px;line-height:1.62}
}

/* ---- large testimonials (home · family voices) ---- */
.quotes-lg{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:clamp(40px,4.4vw,60px);align-items:stretch}
.qbig{background:#fff;border-radius:22px;padding:clamp(30px,3vw,42px) clamp(26px,2.6vw,36px) clamp(28px,2.8vw,38px);
  border-top:6px solid;box-shadow:0 2px 0 0 var(--line),0 24px 52px -36px rgba(40,26,56,.45);height:100%}
.cloud .qbig{box-shadow:0 1px 0 0 rgba(40,26,56,.07),0 24px 52px -36px rgba(40,26,56,.35)}
.qbig .mk{display:block;font-family:'Outfit',sans-serif;font-weight:800;font-size:64px;line-height:.48;
  margin-bottom:clamp(20px,2vw,28px)}
.qbig p{font-family:'Outfit',sans-serif;font-weight:400;font-size:clamp(19px,1.72vw,24px);
  line-height:1.4;letter-spacing:-.018em;color:var(--ink)}
.qbig .who{margin-top:clamp(20px,2vw,28px);font-family:'Inter',sans-serif;font-size:14px;font-weight:600;color:var(--gray)}
.qbig .who span{font-weight:400}
@media (max-width:1080px){.quotes-lg{grid-template-columns:repeat(2,1fr);gap:18px}}
@media (max-width:720px){.quotes-lg{grid-template-columns:1fr}}

/* ---- workshop pills (home teaser) ---- */
.wpills{display:flex;flex-wrap:wrap;gap:10px;margin-top:clamp(30px,3vw,40px)}
.wpills a{display:inline-flex;align-items:center;gap:10px;background:#fff;border-radius:999px;
  padding:12px 20px;font-family:'Outfit',sans-serif;font-weight:700;font-size:14px;
  box-shadow:0 1px 0 0 var(--line);transition:transform .2s,box-shadow .2s}
.cloud .wpills a{box-shadow:0 1px 0 0 rgba(40,26,56,.08)}
.wpills a:hover{transform:translateY(-2px);box-shadow:0 12px 26px -14px rgba(40,26,56,.5)}
.wpills i{width:10px;height:10px;border-radius:50%;display:inline-block;font-style:normal;flex-shrink:0}

/* ---- file upload ---- */
.field input[type=file]{padding:11px 14px;border:1.5px dashed #DFDBE6;border-radius:12px;background:#fff;
  font-family:'Inter',sans-serif;font-size:14.5px;color:var(--body);cursor:pointer;transition:border-color .2s}
.field input[type=file]:hover{border-color:var(--cyan)}
.field input[type=file]::file-selector-button{font-family:'Outfit',sans-serif;font-weight:700;font-size:13px;
  border:none;background:var(--cloud);color:var(--ink);padding:9px 15px;border-radius:999px;margin-right:13px;cursor:pointer}
.field input[type=file]::file-selector-button:hover{background:#E9E6EE}

/* ---- reCAPTCHA slot (placeholder shows until the widget renders) ---- */
.field input,.field select,.field textarea{min-width:0}
.formcard form{width:0;min-width:100%}
.captcha{margin-bottom:20px;min-height:82px;min-width:0;overflow:hidden}
.captcha .g-recaptcha{max-width:100%}
a[href^="mailto:"]{overflow-wrap:anywhere}
@media(max-width:420px){
  /* the reCAPTCHA widget is a fixed 302px box; width:0 + min-width:100% stops it
     forcing the form (and its grid track) wider than the viewport */
  .captcha{min-height:70px;width:0;min-width:100%}
  .captcha .g-recaptcha{transform:scale(.84);transform-origin:0 0}
  .captcha .g-recaptcha:empty{width:304px}
}
.captcha .g-recaptcha:empty{display:flex;align-items:center;justify-content:center;height:78px;width:304px;
  max-width:100%;border:1.5px dashed #DFDBE6;border-radius:12px;color:var(--gray);
  font-family:'Outfit',sans-serif;font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.captcha .g-recaptcha:empty::before{content:"reCAPTCHA"}

/* ---- contact: full-width map band ---- */
.mapband{margin-top:clamp(40px,4.4vw,64px)}
.mapband .embed{height:clamp(300px,32vw,440px)}

/* ---- contact: details + map column beside the form, bottoms aligned ---- */
.contact-split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,5vw,76px);align-items:stretch}
.contact-col{display:flex;flex-direction:column;min-width:0}
.contact-col .infolist{margin-top:0}
.contact-map{margin-top:auto;padding-top:clamp(26px,3vw,40px);flex:1 1 auto;display:flex;min-height:260px}
.contact-map iframe{width:100%;height:100%;min-height:260px;border:0;border-radius:18px;background:var(--cloud)}
@media (max-width:1080px){
  .contact-split{grid-template-columns:1fr;gap:34px}
  .contact-map{margin-top:0;min-height:300px}
  .contact-map iframe{height:300px;min-height:300px}
}
@media (max-width:520px){
  .infolist{gap:20px}
  .infolist li{grid-template-columns:44px 1fr;gap:15px}
  .infolist .ic{width:44px;height:44px;border-radius:13px}
  .infolist .ic svg,.infolist .ic img{width:22px;height:22px}
}

/* ---- split that stretches (Method: placeholder matches the cards beside it) ---- */
.split.stretch{align-items:stretch}
.split.stretch .media{display:flex}
.phold.fill{aspect-ratio:auto;height:100%;width:100%}
/* a photo that travels with a long text column instead of leaving dead space.
   .rv.in resets transform to none, so sticky is not trapped by the reveal. */
.split.stretch .media.stick{display:block}
.split.stretch .media.stick img{position:sticky;top:104px}
@media(max-width:900px){.split.stretch .media.stick img{position:static}}

/* ---- image tiles with the title over the photo (Experiences · The Imagination Family) ---- */
.fcards{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:clamp(40px,4.4vw,58px)}
.tcard{position:relative;aspect-ratio:4/5;border-radius:20px;overflow:hidden;background:var(--ink);
  transition:transform .35s cubic-bezier(.2,.7,.3,1),box-shadow .35s}
.tcard.family-tcard{aspect-ratio:3/4}
.tcard:hover{transform:scale(1.03);box-shadow:0 30px 62px -28px rgba(40,26,56,.55)}
.tcard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.3,1)}
.tcard:hover img{transform:scale(1.06)}
/* placeholder stands in for the photograph and previews how the title will sit on it */
.tcard .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;
  padding:22px;background:linear-gradient(158deg,#3B2B50 0%,#241733 100%);
  color:rgba(255,255,255,.32);font-family:'Outfit',sans-serif;font-size:11.5px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;line-height:1.6}
.tcard .veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(27,16,38,0) 34%,rgba(27,16,38,.78) 100%)}
.tcard .c{position:absolute;left:0;right:0;bottom:0;padding:26px 24px;z-index:2}
.tcard .cap{display:block;height:5px;width:40px;border-radius:3px;margin-bottom:14px}
.tcard h3{color:#fff;font-size:clamp(18px,1.5vw,21px);letter-spacing:-.02em;line-height:1.18}
@media (max-width:1180px){.fcards{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.fcards{grid-template-columns:1fr}.tcard{aspect-ratio:16/10}}

/* ---- rotating photo slot -------------------------------------------------
   Some slots have several approved selections. They cross-fade in one frame
   rather than being picked at random, so the page composition never shifts.  */
.rot{position:relative;aspect-ratio:4/3;border-radius:22px;overflow:hidden;
  box-shadow:0 30px 60px -34px rgba(40,26,56,.55)}
.split .media .rot img,.rot img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;aspect-ratio:auto;border-radius:0;box-shadow:none;
  opacity:0;transition:opacity 1.15s ease}
.split .media .rot img.on,.rot img.on{opacity:1}
.rot.tall{aspect-ratio:4/5}
/* inside .split.stretch the .media is a flex row, and a .rot's only children
   are absolutely positioned — so it needs an explicit width or it collapses. */
.rot.fill{aspect-ratio:auto;height:100%;width:100%;flex:1 1 auto}
@media (max-width:900px){
  .rot,.rot.tall{aspect-ratio:16/10}
  .rot.fill{aspect-ratio:16/10;height:auto}
}
@media (prefers-reduced-motion:reduce){.split .media .rot img,.rot img{transition:none}}

/* ---- 2026 editorial content system ---- */
.early-years-home .wrap{position:relative;z-index:2}
.gear-signature{width:clamp(84px,10vw,132px);margin:0 auto 24px;opacity:.16}
.signature-quote .q{margin-top:22px}

.method-question{max-width:900px;margin:42px auto 0;padding:26px 30px;border-radius:20px;background:var(--ink);color:#fff;display:grid;grid-template-columns:170px 1fr;gap:28px;align-items:center;text-align:left;box-shadow:0 28px 55px -38px rgba(40,26,56,.8)}
.method-question>span{font-family:'Outfit',sans-serif;font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--yellow)}
.method-question h3{font-size:clamp(22px,2.3vw,31px);color:#fff}
.method-question p{margin-top:7px;color:var(--body-dark);font-size:15px;line-height:1.55}
.method-flow{display:grid;grid-template-columns:1fr 48px 1fr 48px 1fr 48px 1fr;align-items:stretch;margin-top:34px}
.flow-step{position:relative;min-height:200px;border:1px solid var(--line);border-top:6px solid var(--flow-color,var(--magenta));border-radius:0 0 20px 20px;padding:30px 24px;background:var(--cloud);display:flex;flex-direction:column;justify-content:center;text-align:left}
.flow-step span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--flow-color,var(--magenta));font-family:'Outfit',sans-serif;font-weight:800;font-size:11px;letter-spacing:.08em;color:var(--ink)}
.flow-step h3{margin-top:18px;font-size:22px}
.flow-step p{margin-top:7px;font-size:15px;line-height:1.5;color:var(--body)}
.flow-arrow{display:grid;place-items:center;font-family:'Outfit',sans-serif;font-size:42px;font-weight:300;line-height:1;color:var(--magenta)}
.method-promise{max-width:920px;margin:52px auto 0;padding:34px 42px;border-left:6px solid var(--magenta);background:var(--cloud);
  font-family:'Outfit',sans-serif;font-weight:600;font-size:clamp(23px,3vw,38px);line-height:1.25;letter-spacing:-.025em}

.approach-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:46px}
.approach-card{padding:28px 24px;border:1px solid var(--line);border-radius:18px;background:#fff}
.approach-card>span{display:block;font-family:'Outfit',sans-serif;font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--gray)}
.approach-card h3{margin-top:12px;font-size:22px}
.approach-card p{margin-top:10px;color:var(--body);font-size:15px;line-height:1.65}
.approach-card.tif{border-color:rgba(237,28,143,.35);box-shadow:inset 0 5px 0 var(--magenta)}
.approach-card.tif>span{color:var(--magenta)}
.comparison-accordion{max-width:920px;margin:42px auto 0}

.development-note{display:flex;gap:10px;align-items:baseline;margin:8px 0 18px;font-family:'Outfit',sans-serif}
.development-note b{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--magenta)}
.development-note span{font-size:14px;color:var(--gray)}
.capacity-line{display:inline-block;padding:9px 13px;border-radius:10px;background:var(--cloud)}
.cloud .capacity-line{background:#fff}

.faq-group{font-size:19px;letter-spacing:.08em;text-transform:uppercase;color:var(--magenta);padding:34px 0 10px}
.faq-group:first-child{padding-top:20px}
.faq-group+details{border-top:1px solid var(--line)}

.brain-fact{background:var(--ink);color:#fff;border-radius:24px;padding:clamp(30px,4vw,52px);box-shadow:0 30px 60px -34px rgba(40,26,56,.6)}
.brain-fact .kicker{color:var(--yellow)}
.brain-stat{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;margin-top:28px}
.brain-stat b{font-family:'Outfit',sans-serif;font-size:clamp(52px,7vw,86px);line-height:.9;color:var(--cyan);letter-spacing:-.05em}
.brain-stat span{font-family:'Outfit',sans-serif;font-weight:600;font-size:17px;line-height:1.3}
.brain-divider{height:1px;background:rgba(255,255,255,.15);margin-top:28px}
.brain-fact>p{margin-top:30px;color:var(--body-dark);font-size:14px;line-height:1.65}

.development-path{max-width:980px;margin:54px auto 0;position:relative}
.development-path::before{content:"";position:absolute;left:40px;top:40px;bottom:65px;width:3px;background:var(--rail)}
.dev-stop{position:relative;display:grid;grid-template-columns:80px 1fr;gap:30px;padding:0 0 42px}
.dev-age{width:80px;height:80px;display:grid;place-items:center;border-radius:50%;position:relative;z-index:2;background:var(--ink);color:var(--yellow);
  font-family:'Outfit',sans-serif;font-size:32px;font-weight:800;box-shadow:0 0 0 9px var(--cloud)}
.dev-stop>div:last-child{padding:8px 26px 26px;border-bottom:1px solid var(--line)}
.dev-stop span{font-family:'Outfit',sans-serif;font-weight:800;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--magenta)}
.dev-stop h3{margin-top:7px}
.dev-stop p{margin-top:8px;color:var(--body);font-size:15.5px}
.dev-continues{margin-left:110px;padding:22px 26px;border-radius:16px;background:#fff;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.dev-continues span{font-family:'Outfit',sans-serif;font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--magenta)}
.dev-continues strong{font-family:'Outfit',sans-serif;font-size:18px}

.foundation-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:46px}
.foundation-item{padding:28px 24px;border-top:5px solid var(--cyan);background:var(--cloud);border-radius:0 0 18px 18px}
.foundation-item:nth-child(2){border-color:var(--orange)}
.foundation-item:nth-child(3){border-color:var(--lime)}
.foundation-item:nth-child(4){border-color:var(--magenta)}
.foundation-item>span{font-family:'Outfit',sans-serif;font-weight:800;font-size:12px;color:var(--gray)}
.foundation-item h3{margin-top:12px}
.foundation-item p{margin-top:8px;color:var(--body);font-size:15px;line-height:1.65}
.care-purpose{overflow:hidden}
.care-purpose .gear{right:-14%;top:-70%;width:50%;opacity:.08}
.care-purpose .wrap{position:relative;z-index:2}

@media (max-width:1080px){
  .method-flow{max-width:700px;margin:34px auto 0;grid-template-columns:1fr;gap:8px}
  .method-flow .flow-step,.method-flow .flow-arrow{grid-column:1}
  .flow-step{min-height:0;padding:26px}
  .flow-arrow{height:38px;transform:rotate(90deg)}
  .approach-cards,.foundation-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:720px){
  .method-question{grid-template-columns:1fr;gap:10px;padding:24px}
  .flow-step{padding:24px}
  .approach-cards,.foundation-grid{grid-template-columns:1fr}
  .method-promise{padding:28px 24px}
  .development-note{align-items:flex-start;flex-direction:column;gap:1px}
  .brain-stat{grid-template-columns:1fr;gap:8px}
  .development-path::before{left:27px}
  .dev-stop{grid-template-columns:54px 1fr;gap:16px;padding-bottom:32px}
  .dev-age{width:54px;height:54px;font-size:24px;box-shadow:0 0 0 6px var(--cloud)}
  .dev-stop>div:last-child{padding:0 0 22px}
  .dev-continues{margin-left:70px}
}

/* ---- full-width panorama band (the whole-school photograph) ---- */
.panoband{position:relative;line-height:0}
.panoband img{width:100%;height:clamp(220px,26vw,420px);object-fit:cover;object-position:50% 50%}

/* ---- inquiry forms connected to HubSpot ---- */
.form-consent{display:flex;align-items:flex-start;gap:10px;margin:5px 0 18px;font-size:12.5px;line-height:1.55;color:#524a61;cursor:pointer}
.form-consent input{width:17px;height:17px;margin-top:1px;accent-color:var(--magenta);flex:0 0 auto}
.form-consent a{color:var(--magenta);font-weight:700;text-decoration:underline;text-underline-offset:2px}
.checkgroup{border:0;padding:0;margin:0 0 18px}
.checkgroup legend{width:100%;margin-bottom:9px;font-family:'Outfit',sans-serif;font-size:13px;font-weight:700;color:#352b41}
.field-hint{margin-left:7px;font-weight:500;color:var(--gray)}
.check-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.check-option{display:flex;align-items:flex-start;gap:11px;padding:12px 13px;border:1.5px solid #dfdbe6;border-radius:12px;background:#fff;cursor:pointer;transition:border-color .2s,background-color .2s}
.check-option:hover{border-color:var(--cyan)}
.check-option:has(input:checked){border-color:var(--magenta);background:rgba(201,35,105,.045)}
.check-option input{width:17px;height:17px;margin-top:2px;accent-color:var(--magenta);flex:0 0 auto}
.check-option span{font-family:'Outfit',sans-serif;font-size:13px;font-weight:700;line-height:1.25;color:#352b41}
.check-option small{display:block;margin-top:3px;font:500 11.5px/1.3 'Outfit',sans-serif;color:var(--gray)}
.form-status{min-height:22px;margin-top:12px;font-size:13px;font-weight:600;line-height:1.5}
.form-status.error{color:#A92355}
form[data-hubspot-form][aria-busy="true"] button[type="submit"]{opacity:.65;cursor:wait;pointer-events:none}
@media (max-width:720px){
  .check-options{grid-template-columns:1fr}
}

/* ---- refined editorial sections and responsive form logic ---- */
.childhood-promise .split{align-items:center}

.tif-difference{max-width:980px;margin:36px auto 0;padding:clamp(30px,5vw,54px);border-radius:24px;
  background:var(--ink);color:#fff;box-shadow:0 34px 70px -40px rgba(40,26,56,.85)}
.tif-difference h3{margin-top:14px;color:#fff;font-size:clamp(25px,3vw,38px)}
.tif-difference>p{margin-top:18px;color:var(--body-dark);font-size:16px;line-height:1.75}
.tif-difference .tif-choice-line{padding-top:20px;border-top:1px solid rgba(255,255,255,.14);
  color:#fff;font-family:'Outfit',sans-serif;font-weight:700}

.brightwheel-link{display:inline-flex;align-items:center;gap:20px;margin-top:28px;padding:17px 20px;
  border:1px solid rgba(41,82,204,.2);border-radius:16px;background:#fff;box-shadow:0 20px 44px -34px rgba(41,82,204,.65);
  transition:transform .2s ease,box-shadow .2s ease}
.brightwheel-link:hover{transform:translateY(-2px);box-shadow:0 24px 48px -32px rgba(41,82,204,.75)}
.brightwheel-link img{display:block;width:min(260px,48vw);height:auto}
.brightwheel-link>span{padding-left:20px;border-left:1px solid var(--line);font:700 13px/1.35 'Outfit',sans-serif;color:#2852cc}
.brand-note{max-width:66ch;margin-top:12px;font-size:11.5px;line-height:1.55;color:var(--gray)}

.summer-feature-photo{display:flex;justify-content:center;align-items:center}
.rot.summer-square{width:min(100%,560px);aspect-ratio:1/1}

.careers-centered{max-width:860px;margin:0 auto;text-align:center}
.careers-centered h3{max-width:22ch;margin-left:auto;margin-right:auto}
.careers-centered p{max-width:70ch;margin:18px auto 0;line-height:1.75}
.contact-audience .cards{margin-top:0}
.contact-audience .icard{height:100%}
.contact-audience .icard h3,.contact-audience .icard .visual-h3{color:var(--ink)}
.virtual-tour-section{position:relative;overflow:hidden;background:#fff}
.virtual-tour-section>.gear{position:absolute;right:-10%;top:-24%;width:34%;opacity:.045;pointer-events:none}
.virtual-tour-intro{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:clamp(34px,6vw,88px);align-items:end}
.virtual-tour-intro h2{max-width:15ch}
.virtual-tour-copy{display:flex;flex-direction:column;align-items:flex-start;gap:24px}
.virtual-tour-copy p{max-width:48ch;font-size:clamp(17px,1.5vw,20px);line-height:1.65;color:var(--body)}
.virtual-tour-frame{overflow:hidden;border-radius:24px;background:var(--ink);box-shadow:0 24px 70px rgba(35,22,54,.16)}
.virtual-tour-frame iframe{display:block;width:100%;height:clamp(430px,56vw,680px);border:0}
.virtual-tour-credit{margin-top:14px;font-size:12px;line-height:1.5;color:var(--muted);text-align:right}
@media(max-width:760px){
  .virtual-tour-section>.gear{right:-30%;top:-8%;width:74%}
  .virtual-tour-intro{grid-template-columns:1fr;gap:22px}
  .virtual-tour-intro h2{max-width:13ch}
  .virtual-tour-frame{border-radius:18px}
  .virtual-tour-frame iframe{height:440px}
  .virtual-tour-credit{text-align:left}
}

.conditional-field[hidden]{display:none!important}
.referral-followups{margin-top:-5px}
.referral-followups:empty{display:none}
.field-note{margin-top:7px;color:var(--gray);font-size:12px;line-height:1.5}
.career-resume-field{padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--cloud)}
.career-resume-field input[type="file"]{padding:12px;background:#fff}

@media (max-width:900px){
  .rot.summer-square{aspect-ratio:1/1}
}
@media (max-width:640px){
  .home-three-title{display:flex;justify-content:center;gap:.3em;flex-wrap:wrap}
  .brightwheel-link{align-items:flex-start;flex-direction:column}
  .brightwheel-link img{width:min(250px,72vw)}
  .brightwheel-link>span{padding-left:0;padding-top:12px;border-left:0;border-top:1px solid var(--line)}
}

/* Mobile photography uses one calm, responsive 4:3 frame. Intrinsic image
   dimensions remain in the markup to prevent layout shift; these rules govern
   the visible crop without stretching the source. */
@media (max-width:720px){
  .split .media>img,
  .split .media>img.tall,
  .panoband img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
  .rot,
  .rot.tall,
  .rot.fill,
  .tcard,
  .phold,
  .phold.fill{width:100%;height:auto;aspect-ratio:4/3}
  .rot img,
  .tcard img,
  .pcard .imgbox img{width:100%;height:100%;object-fit:cover}
  .rot.summer-square{aspect-ratio:1/1}
  .tcard.family-tcard{aspect-ratio:3/4}
}
