/* ============================================================
   Triple SSS Construction — red, white & navy, straight from the logo.
   Type: Libre Caslon (the face of America's founding documents) for statements,
   Archivo for labels and reading text.
   ============================================================ */
:root{
  --navy:#100f4b; --navy-2:#0a0934; --navy-3:#1b1a63;
  --red:#c20d15; --red-2:#9f0a11;
  --white:#fff; --paper:#f5f6fa; --sky:#dfe5f1; --sky-2:#c9d4e9;
  --ink:#0d0c2b; --ink-70:rgba(13,12,43,.74); --ink-50:rgba(13,12,43,.56); --line:rgba(16,15,75,.14);
  --on-dark:#fff; --on-dark-70:rgba(255,255,255,.74); --on-dark-50:rgba(255,255,255,.55); --line-dark:rgba(255,255,255,.18);

  --f-disp:'Libre Caslon Display','Libre Caslon Text',Georgia,serif;
  --f-it:'Libre Caslon Text',Georgia,serif;
  --f-sans:'Archivo','Helvetica Neue',Arial,sans-serif;

  --gut:clamp(1rem,3.2vw,2.6rem);
  --max:1480px;
  --hdr:84px;

  /* motion — the template's line reveal */
  --t-line:.85s; --e-line:cubic-bezier(.2,.2,.6,1); --t-stag:.11s;
  --e-out:cubic-bezier(.22,1,.36,1); --t-hov:.38s;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:100px}
body{margin:0;background:var(--white);color:var(--ink);font-family:var(--f-sans);font-size:1.0625rem;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:clip}
img,canvas,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
p{margin:0 0 1em}
h1,h2,h3,h4{margin:0;font-weight:400}
ul{margin:0;padding:0;list-style:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;left:1rem;top:-4rem;z-index:200;background:var(--navy);color:#fff;padding:.6rem 1rem;border-radius:999px}
.skip:focus{top:1rem}
:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.ic{width:1.1em;height:1.1em;flex:0 0 auto}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gut)}

/* ------------------------------------------------------------ type */
.lbl{font-family:var(--f-sans);font-size:.72rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;line-height:1.3;display:inline-block}
.lbl--gap{margin-top:1.4rem}
.h-xxl,.h-xl,.h-l,.h-m{font-family:var(--f-disp);text-transform:uppercase;letter-spacing:-.012em}
.h-xxl{font-size:clamp(3rem,8.6vw,9.6rem);line-height:.9}
.h-xl{font-size:clamp(2.5rem,6.2vw,6.6rem);line-height:.94}
.h-l{font-size:clamp(2rem,4.2vw,4.3rem);line-height:.98}
.h-m{font-size:clamp(1.45rem,2.3vw,2.25rem);line-height:1.08}
.h-xxl em,.h-xl em,.h-l em,.h-m em,.say em{font-family:var(--f-it);font-style:italic;text-transform:none;letter-spacing:-.02em;color:var(--red)}
.on-dark .h-xxl em,.on-dark .h-xl em,.on-dark .h-l em,.on-dark .h-m em{color:#ff5a60}
.lede{font-size:clamp(1.08rem,1.25vw,1.25rem);line-height:1.55;color:var(--ink-70);max-width:44ch}
.on-dark{color:var(--on-dark)} .on-dark .lede,.on-dark p{color:var(--on-dark-70)}

/* ------------------------------------------------------------ line-masked reveal (from the Rail template)
   Each line sits in its own clip box and slides up into place, one after another; it slides back
   down when the block leaves below the screen, so scrolling up replays it. */
.rv{display:block;overflow:hidden;padding-bottom:.14em;margin-bottom:-.14em}
.rv>i{display:block;font-style:inherit;transform:translate3d(0,112%,0);transition:transform var(--t-line) var(--e-line);transition-delay:calc(var(--k,0) * var(--t-stag));will-change:transform}
.is-in .rv>i,.is-in.rv>i{transform:translate3d(0,0,0)}
[data-lines] .rv{padding-bottom:.08em;margin-bottom:-.08em}
.fade{opacity:0;transform:translate3d(0,24px,0);transition:opacity .9s var(--e-out),transform .9s var(--e-out);transition-delay:calc(var(--k,0) * 90ms)}
.is-in .fade,.fade.is-in{opacity:1;transform:none}

/* ------------------------------------------------------------ buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;border-radius:999px;padding:1em 1.7em;font-size:.95rem;font-weight:500;letter-spacing:.01em;border:1px solid currentColor;transition:background var(--t-hov),color var(--t-hov),border-color var(--t-hov),transform var(--t-hov) var(--e-out);white-space:nowrap}
.btn .ic{transition:transform var(--t-hov) var(--e-out)}
.btn:hover .ic{transform:translateX(4px)}
.btn--red{background:var(--red);border-color:var(--red);color:#fff}
.btn--red:hover{background:var(--navy);border-color:var(--navy)}
.on-red .btn--red,.close .btn--red{background:var(--navy);border-color:var(--navy)}
.close .btn--red:hover{background:var(--red-2)}
.btn--navy{background:var(--navy);border-color:var(--navy);color:#fff}
.btn--navy:hover{background:var(--red);border-color:var(--red)}
.btn--ghost:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.on-dark .btn--ghost:hover{background:#fff;color:var(--navy);border-color:#fff}
.btn--sm{padding:.7em 1.25em;font-size:.86rem}
.btn--block{width:100%}
.pill{display:inline-flex;align-items:center;gap:.6em;border:1px solid currentColor;border-radius:999px;padding:.7em 1.4em;font-family:var(--f-it);font-style:italic;font-size:1rem;transition:background var(--t-hov),color var(--t-hov)}
.pill:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.on-dark .pill:hover{background:#fff;color:var(--navy)}
.link{display:inline-flex;align-items:center;gap:.5em;font-weight:500;border-bottom:1px solid currentColor;padding-bottom:2px}
.link:hover .ic{transform:translateX(4px)} .link .ic{transition:transform .3s var(--e-out)}

/* ------------------------------------------------------------ the waving flag logo */
.logo{position:relative;display:block;width:100%;aspect-ratio:446/236}
.logo img{width:100%;height:100%}
.logo canvas{position:absolute;inset:-8% -4%;width:108%;height:116%;opacity:0}
.logo.is-live img{opacity:0} .logo.is-live canvas{opacity:1}

/* ------------------------------------------------------------ header */
.hdr{position:fixed;inset:0 0 auto;z-index:60;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:14px var(--gut);pointer-events:none;transition:transform .5s var(--e-out)}
.hdr>*{pointer-events:auto}
.hdr__logo{position:relative;display:block;width:clamp(96px,9vw,136px);transition:width .5s var(--e-out)}
/* the logo floats on the page: navy wordmark on light sections, white wordmark on dark ones (body.hdr-dark, set by app.js) */
.hdr__logo .logo{transition:opacity .4s ease}
.hdr__logo .logo--alt{position:absolute;inset:0;opacity:0}
.hdr-dark .hdr__logo .logo:not(.logo--alt),.menu-open .hdr__logo .logo:not(.logo--alt){opacity:0}
.hdr-dark .hdr__logo .logo--alt,.menu-open .hdr__logo .logo--alt{opacity:1}
.is-scrolled .hdr__logo{width:clamp(84px,7vw,104px)}
.pill-nav{display:flex;align-items:center;gap:.15rem;background:rgba(255,255,255,.86);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);border:1px solid var(--line);border-radius:999px;padding:.32rem;box-shadow:0 10px 30px -18px rgba(16,15,75,.35)}
.pill-nav>a,.dd>button{display:inline-flex;align-items:center;gap:.3em;padding:.55rem .95rem;border-radius:999px;font-size:.88rem;font-weight:500;color:var(--navy);transition:background .3s,color .3s}
.pill-nav>a:hover,.dd>button:hover,.dd.is-open>button{background:var(--sky)}
.pill-nav>a[aria-current]{background:var(--navy);color:#fff}
.dd{position:relative}
.dd>button .ic{width:.9em;height:.9em;transition:transform .3s}
.dd.is-open>button .ic{transform:rotate(180deg)}
.dd__panel{position:absolute;left:50%;top:calc(100% + 12px);width:min(720px,90vw);transform:translate(-50%,8px);opacity:0;visibility:hidden;background:#fff;border:1px solid var(--line);border-radius:22px;padding:1.4rem 1.5rem 1.1rem;box-shadow:0 30px 60px -30px rgba(16,15,75,.45);transition:opacity .3s,transform .4s var(--e-out),visibility .3s}
.dd__panel--areas{width:min(560px,90vw)}
.dd.is-open .dd__panel{opacity:1;visibility:visible;transform:translate(-50%,0)}
.dd__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.dd__grid .lbl{color:var(--red);margin-bottom:.5rem}
.dd__grid a{display:block;padding:.28rem 0;font-family:var(--f-it);font-size:1.05rem;color:var(--navy);transition:color .25s,transform .3s var(--e-out)}
.dd__grid a:hover{color:var(--red);transform:translateX(4px)}
.dd__grid--areas{grid-template-columns:repeat(3,1fr);gap:.2rem 1.2rem}
.dd__grid--areas small{font-family:var(--f-sans);font-size:.68rem;letter-spacing:.12em;margin-left:.4em;color:var(--ink-50)}
.dd__all{display:flex;align-items:center;justify-content:space-between;margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--line);font-size:.85rem;font-weight:500;color:var(--navy)}
.hdr__cta{display:flex;align-items:center;gap:.6rem}
.hdr__tel{display:inline-flex;align-items:center;gap:.45em;font-weight:600;font-size:.9rem;color:var(--navy);background:rgba(255,255,255,.86);border:1px solid var(--line);border-radius:999px;padding:.62em 1em}
.hdr__tel .ic{color:var(--red)}
.menu-btn{display:none;align-items:center;gap:.6rem;background:var(--navy);color:#fff;border-radius:999px;padding:.7rem 1.1rem;font-size:.88rem;font-weight:500}
.menu-btn i{position:relative;width:16px;height:2px;background:currentColor;transition:background .2s}
.menu-btn i::before,.menu-btn i::after{content:"";position:absolute;left:0;width:16px;height:2px;background:currentColor;transition:transform .35s var(--e-out)}
.menu-btn i::before{top:-5px}.menu-btn i::after{top:5px}
.menu-open .menu-btn i{background:transparent}
.menu-open .menu-btn i::before{transform:translateY(5px) rotate(45deg)}
.menu-open .menu-btn i::after{transform:translateY(-5px) rotate(-45deg)}

/* phone menu (under 900px only): a flag unfurls and settles into a navy drawer covering three quarters of the screen */
.mmenu{position:fixed;inset:0;z-index:55;color:#fff;pointer-events:none}
.mmenu[hidden]{display:block;visibility:hidden}
.mmenu.is-open{pointer-events:auto}
.mmenu__scrim{position:absolute;inset:0;background:rgba(10,9,52,.58);opacity:0;transition:opacity .45s}
.mmenu.is-open .mmenu__scrim{opacity:1}
.mmenu .btn{justify-content:center}
/* ================================================================ A · the flag unfurls */
.menu-btn{background:var(--navy);box-shadow:inset 0 0 0 1.5px var(--red)}
.menu-btn i,.menu-btn i::before,.menu-btn i::after{height:2.5px;border-radius:2px;width:18px}
.menu-btn i{background:#ff4a52;animation:mnA-wave 2.6s ease-in-out infinite}
.menu-btn i::before{background:#fff;animation:mnA-wave 2.6s ease-in-out -.25s infinite}
.menu-btn i::after{background:#ff4a52;animation:mnA-wave 2.6s ease-in-out -.5s infinite}
@keyframes mnA-wave{0%,100%{transform:translateX(0) skewX(0)}50%{transform:translateX(1.5px) skewX(-14deg)}}
.menu-open .menu-btn i{background:transparent;animation:none}
.menu-open .menu-btn i::before,.menu-open .menu-btn i::after{animation:none}
.menu-open .menu-btn i::after{background:#fff}

.mmenu__wipe{position:absolute;top:0;bottom:0;right:0;width:75%;overflow:hidden;pointer-events:none;z-index:2}
.mmenu__wipe i{position:absolute;left:0;width:100%;top:calc(var(--i) * 100% / 13);height:calc(100% / 13 + 1px);background:var(--red);transform:translateX(-101%)}
.mmenu__wipe i:nth-child(even){background:#fff}
.mmenu.is-open .mmenu__wipe i{animation:mnA-sweep .82s cubic-bezier(.72,0,.28,1) calc(var(--i) * 14ms) both}
@keyframes mnA-sweep{0%{transform:translateX(-101%)}36%,58%{transform:translateX(0)}100%{transform:translateX(101%)}}
.mmenu__panel{position:absolute;top:0;bottom:0;right:0;width:75%;min-width:260px;box-shadow:-24px 0 60px -20px rgba(0,0,0,.55);background:radial-gradient(120% 60% at 100% 0%,#1d1c6a 0%,var(--navy) 55%,#0a0934 100%);display:flex;flex-direction:column;opacity:0;transition:opacity .25s}
.mmenu.is-open .mmenu__panel{opacity:1;transition:opacity .05s .44s}
.mmenu__in{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:calc(var(--hdr) + 2.2rem) 1.3rem 1rem}
.mmenu__link{display:flex;align-items:center;gap:.9rem;font-family:var(--f-disp);font-size:clamp(1.45rem,6.4vw,2rem);line-height:1.12;text-transform:uppercase;letter-spacing:.01em;padding:.42rem 0;color:#fff;cursor:pointer;list-style:none;transition:color .3s}
.mmenu__link::-webkit-details-marker{display:none}
.mmenu__link .ic{margin-left:auto;width:22px;height:22px;transition:transform .4s var(--e-out)}
.mmenu__grp[open]>.mmenu__link .ic{transform:rotate(180deg)}
.mmenu__star{width:15px;height:15px;flex:none;display:grid;place-items:center;color:#fff;transition:color .3s,transform .5s var(--e-out)}
.mmenu__star .ic{width:15px;height:15px;margin:0}
.mmenu__link:hover,.mmenu__link:active,.mmenu__link:focus-visible{color:#ff7a7f}
.mmenu__link:hover .mmenu__star,.mmenu__link:active .mmenu__star,.mmenu__grp[open]>.mmenu__link .mmenu__star{color:var(--red);transform:rotate(72deg) scale(1.25)}
.mmenu__sub{display:grid;grid-template-columns:1fr;gap:0;padding:.3rem 0 .9rem 1.8rem}
.mmenu__sub a{font-family:var(--f-it);font-style:italic;font-size:1.05rem;color:var(--on-dark-70);padding:.32rem 0}
.mmenu__sub a small{font-family:var(--f-sans);font-style:normal;font-size:.62rem;letter-spacing:.14em;margin-left:.4em;color:rgba(255,255,255,.4)}
.mmenu__sub a.all{grid-column:1/-1;font-family:var(--f-sans);font-style:normal;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:#ff7a7f;display:flex;align-items:center;gap:.5em;margin-top:.3rem}
.mmenu__sub a.all .ic{width:14px;height:14px}
.mmenu__slogan{font-family:var(--f-it);font-style:italic;color:var(--on-dark-70);margin:1.6rem 0 1rem;font-size:1.02rem}
.mmenu__slogan em{color:#ff7a7f}
.mmenu__soc{display:flex;flex-wrap:wrap;gap:.5rem}
.mmenu__in>*{opacity:0;transform:translate3d(-18px,0,0)}
.mmenu.is-open .mmenu__in>*{opacity:1;transform:none;transition:opacity .5s calc(.52s + var(--k,0) * 45ms),transform .7s var(--e-out) calc(.52s + var(--k,0) * 45ms)}
.mmenu__foot{padding:0 1.3rem}
.mmenu__cta{display:grid;grid-template-columns:1fr;gap:.6rem;padding:.4rem 0 1rem;max-width:560px;opacity:0;transition:opacity .4s}
.mmenu.is-open .mmenu__cta{opacity:1;transition:opacity .5s .9s}
.mmenu__cta .btn--ghost{color:#fff;border-color:var(--line-dark)}
.mmenu__cta .btn{padding:.8em 1em}
.mmenu__band{display:grid;grid-template-rows:repeat(7,4px);margin:0 -1.3rem;padding-bottom:env(safe-area-inset-bottom);background:#fff}
.mmenu__band i{background:var(--red);transform:scaleX(0);transform-origin:0 50%}
.mmenu__band i:nth-child(even){background:#fff}
.mmenu.is-open .mmenu__band i{transform:none;transition:transform .9s var(--e-out) calc(.7s + var(--i,0) * 40ms)}
.mmenu__band i:nth-child(1){--i:0}.mmenu__band i:nth-child(3){--i:1}.mmenu__band i:nth-child(5){--i:2}.mmenu__band i:nth-child(7){--i:3}


.soc{display:inline-flex;align-items:center;gap:.5em;border:1px solid var(--line-dark);border-radius:999px;padding:.55em 1em;font-size:.85rem;transition:background .3s,color .3s}
.soc:hover{background:#fff;color:var(--navy)}

/* social rail — the tab on the right edge, middle of the screen */
.rail-soc{position:fixed;right:0;top:50%;transform:translateY(-50%);z-index:58;display:flex;flex-direction:column;align-items:center;gap:.25rem;background:var(--navy);color:#fff;padding:.9rem .45rem .6rem;border-radius:16px 0 0 16px;box-shadow:0 18px 40px -20px rgba(16,15,75,.6)}
.rail-soc::before{content:"";position:absolute;inset:0 0 auto;height:5px;background:var(--red);border-radius:16px 0 0 0}
.rail-soc__t{writing-mode:vertical-rl;transform:rotate(180deg);font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--on-dark-70);margin-bottom:.5rem}
.rail-soc a{position:relative;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;transition:background .3s,color .3s}
.rail-soc a .ic{width:19px;height:19px}
.rail-soc a:hover{background:#fff;color:var(--navy)}
.rail-soc a::after{content:attr(data-tip);position:absolute;right:calc(100% + 12px);top:50%;transform:translate(8px,-50%);opacity:0;pointer-events:none;white-space:nowrap;background:var(--navy);color:#fff;font-size:.78rem;padding:.4em .8em;border-radius:999px;transition:opacity .25s,transform .35s var(--e-out)}
.rail-soc a:hover::after{opacity:1;transform:translate(0,-50%)}

/* ------------------------------------------------------------ marquee band */
.ticker{background:var(--navy);color:#fff;overflow:hidden;padding:1.1rem 0;border-block:1px solid var(--navy-3)}
.ticker__t{display:flex;width:max-content;animation:tick 42s linear infinite}
.ticker__t span{font-family:var(--f-disp);text-transform:uppercase;font-size:clamp(1.3rem,2.4vw,2.2rem);white-space:nowrap;padding-right:.6em;display:flex;align-items:center;gap:.6em}
.ticker__t b{color:var(--red);font-weight:400;font-size:.7em}
@keyframes tick{to{transform:translateX(-50%)}}

/* ------------------------------------------------------------ HOME: hero */
.hero{position:relative;min-height:100svh;padding:calc(var(--hdr) + 5vh) var(--gut) 5vh;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);align-items:center;gap:2vw;overflow:hidden;background:linear-gradient(180deg,#fff 0%,#fff 62%,var(--paper) 100%)}
.hero__stars{position:absolute;right:-6vw;top:8vh;width:46vw;opacity:.06;color:var(--navy);pointer-events:none}
.hero__copy{position:relative;z-index:2;max-width:780px}
.hero h1{font-size:clamp(2.3rem,3.9vw,5rem);line-height:.98}
.hero__k{color:var(--red);margin-bottom:2.2rem;display:flex;align-items:center;gap:.8rem}
.hero__k::before{content:"";width:34px;height:1px;background:currentColor}
.hero h1 .rv:nth-child(3){padding-left:clamp(1rem,3.2vw,3.4rem)}
.hero__p{margin:2.2rem 0 2rem;max-width:46ch}
.hero__cta{display:flex;flex-wrap:wrap;gap:.7rem}
.hero__proof{display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;margin-top:2.4rem;font-size:.82rem;color:var(--ink-70)}
.hero__proof span{display:inline-flex;align-items:center;gap:.45em}
.hero__proof .stars{color:var(--red);display:inline-flex;gap:1px}
.hero__proof .stars .ic{width:14px;height:14px}
.hero__house{position:relative;z-index:1;align-self:end;margin-right:-2vw}
.hero__house img{width:100%;height:auto;transform:translate3d(0,var(--hy,0px),0)}
/* the photoreal finished house, in a frame whose camera drifts with scroll */
.hero__house{align-self:center;margin-right:0}
.hero__photo{position:relative;aspect-ratio:5/4;overflow:hidden;border-radius:6px;box-shadow:0 40px 80px -50px rgba(16,15,75,.6)}
.hero__photo::after{content:"";position:absolute;left:0;right:0;bottom:0;height:6px;background:linear-gradient(90deg,var(--red) 0 33%,#fff 33% 66%,var(--navy) 66%)}
.hero__photo img{position:absolute;inset:-6% -4%;width:108%;height:112%;max-width:none;object-fit:cover;object-position:58% 60%;transform:translate3d(0,var(--py,0px),0) scale(1.02)}
.hero__tag{position:absolute;left:-1.6rem;bottom:-1.4rem;z-index:2;background:#fff;border:1px solid var(--line);border-radius:16px;padding:.8rem 1rem;box-shadow:0 20px 40px -26px rgba(16,15,75,.5);font-size:.8rem;line-height:1.35;max-width:220px}
.hero__tag b{display:block;font-family:var(--f-disp);font-weight:400;font-size:1.5rem;color:var(--navy)}

/* ------------------------------------------------------------ statement */
.say{padding:clamp(5rem,13vh,9rem) var(--gut);max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:minmax(0,.3fr) minmax(0,1fr);gap:2rem}
.say__big{font-family:var(--f-disp);font-size:clamp(1.7rem,3.3vw,3.4rem);line-height:1.12;letter-spacing:-.01em;color:var(--navy)}
.say__side{display:flex;flex-direction:column;justify-content:space-between;gap:2rem}
.say__small{max-width:34ch;color:var(--ink-70);font-size:.98rem}

/* ------------------------------------------------------------ the 3D build (scroll-scrubbed frames) */
.build{position:relative;height:440vh;background:var(--paper)}
.build__stage{position:sticky;top:0;height:100svh;overflow:hidden;display:grid;grid-template-columns:minmax(0,.62fr) minmax(0,1fr);align-items:center;padding:var(--hdr) var(--gut) 3vh}
.build__copy{position:relative;z-index:2}
.build__copy h2{margin:1rem 0 2rem}
.steps{counter-reset:s;border-top:1px solid var(--line)}
.steps a{counter-increment:s;display:grid;grid-template-columns:2.2rem 1fr auto;align-items:center;padding:.62rem 0;border-bottom:1px solid var(--line);color:var(--ink-50);transition:color .4s,padding .5s var(--e-out)}
.steps a::before{content:counter(s,decimal-leading-zero);font-size:.72rem;letter-spacing:.1em}
.steps a span{font-family:var(--f-disp);text-transform:uppercase;font-size:clamp(1rem,1.5vw,1.45rem);line-height:1.1}
.steps a .ic{opacity:0;transition:opacity .3s,transform .3s;width:1rem}
.steps a.is-on{color:var(--navy);padding-left:.5rem}
.steps a.is-on::before{color:var(--red)}
.steps a.is-done{color:var(--ink-70)}
.steps a:hover .ic,.steps a.is-on .ic{opacity:1}
.build__view{position:relative;height:100%;display:flex;align-items:center;justify-content:center}
.build__view canvas{width:100%;height:auto;max-height:82svh;aspect-ratio:var(--ar,1.5)}
.build__now{position:absolute;right:0;bottom:4vh;text-align:right}
.build__now b{display:block;font-family:var(--f-disp);font-weight:400;text-transform:uppercase;font-size:clamp(1.6rem,3.6vw,3.6rem);line-height:1;color:var(--navy)}
.build__bar{position:absolute;left:var(--gut);right:var(--gut);bottom:2.2vh;height:2px;background:var(--line)}
.build__bar i{position:absolute;inset:0;transform-origin:0 50%;transform:scaleX(var(--p,0));background:var(--red)}

/* ------------------------------------------------------------ the rail — vertical scroll drives a sideways track (desktop) */
.rail{position:relative;background:#fff}
.rail__stage{position:sticky;top:0;height:100vh;overflow:hidden}
.rail__track{display:flex;height:100vh;width:max-content;transform:translate3d(var(--tx,0px),0,0);will-change:transform}
.rail .panel{position:relative;height:100vh;flex:0 0 auto}
.r-intro{width:min(42vw,640px);padding:calc(var(--hdr) + 8vh) var(--gut) var(--gut);display:flex;flex-direction:column;justify-content:space-between}
.r-intro p{max-width:34ch;color:var(--ink-70)}
.card{width:min(64vw,1020px);display:flex;flex-direction:column;justify-content:flex-end;padding-top:var(--hdr)}
.card:nth-child(3n+2){background:var(--sky)}
.card:nth-child(3n+3){background:var(--navy);color:#fff}
.card:nth-child(3n+4){background:var(--paper)}
.card__img{position:relative;flex:1;overflow:hidden;margin:0 var(--gut)}
.card__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.08) translate3d(var(--cx,0px),0,0);transition:transform 1.2s var(--e-out)}
.card:hover .card__img img{transform:scale(1.12) translate3d(var(--cx,0px),0,0)}
.card__bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:1.6rem var(--gut) 2rem}
.card__meta{font-size:.82rem;line-height:1.4;max-width:24ch;opacity:.8}
.card__name{font-size:clamp(1.8rem,3.2vw,3.3rem);line-height:1;text-transform:uppercase;text-align:center;white-space:nowrap}
.card__name--a{font-family:var(--f-disp)}
.card__name--b{font-family:var(--f-it);font-style:italic;text-transform:none}
.card__name--c{font-family:var(--f-sans);font-weight:500;letter-spacing:-.02em}
.card__cta{justify-self:end;display:flex;align-items:center;gap:1.2rem;font-size:.8rem}
.r-end{width:min(52vw,820px);background:var(--red);color:#fff;padding:calc(var(--hdr) + 10vh) var(--gut) var(--gut);display:flex;flex-direction:column;justify-content:space-between}
.r-end .h-xl em{color:#fff}

/* ------------------------------------------------------------ values: three words drifting apart */
.terms{position:relative;background:var(--navy);color:#fff;overflow:hidden;padding:clamp(5rem,14vh,10rem) var(--gut)}
.terms__w{display:block;white-space:nowrap;font-size:clamp(3.6rem,13vw,13.5rem);line-height:.98;text-transform:uppercase;transform:translate3d(var(--dx,0px),0,0);will-change:transform}
.terms__w--1{font-family:var(--f-it);font-style:italic;text-transform:none}
.terms__w--2{font-family:var(--f-disp);padding-left:18vw;color:#ff5a60}
.terms__w--3{font-family:var(--f-sans);font-weight:500;letter-spacing:-.04em}
.terms__n{font-size:.72rem;letter-spacing:.14em;vertical-align:top;margin-right:1rem;font-family:var(--f-sans);font-style:normal;color:var(--on-dark-50)}
.terms__copy{position:relative;z-index:2;max-width:36ch;margin:3rem 0 0 auto;color:var(--on-dark-70)}
.terms__copy .lbl{color:#fff;margin-bottom:1rem}
.terms__img{position:absolute;right:16vw;top:30%;width:min(22vw,320px);aspect-ratio:3/4;overflow:hidden;border-radius:2px}
.terms__img img{width:100%;height:100%;object-fit:cover}

/* ------------------------------------------------------------ the founding year */
.year{padding:clamp(4rem,12vh,8rem) var(--gut);text-align:center;overflow:hidden;background:#fff}
.year__n{display:flex;justify-content:center;font-family:var(--f-disp);font-size:clamp(6rem,26vw,24rem);line-height:.8;color:var(--navy);letter-spacing:-.04em}
.year__d{display:block;height:.8em;overflow:hidden}
.year__d span{display:block;transform:translate3d(0,calc(var(--y,0) * -.8em),0);transition:transform 1.6s cubic-bezier(.3,.1,.1,1);transition-delay:calc(var(--k,0) * .12s)}
.year__d span i{display:block;height:.8em;font-style:normal}
.year__s{margin-top:1.6rem;display:flex;justify-content:center;flex-wrap:wrap;gap:.4rem 1.6rem;color:var(--ink-70)}
.year__s b{color:var(--red);font-weight:500}

/* ------------------------------------------------------------ reviews */
.revs{background:var(--sky);padding:clamp(5rem,13vh,9rem) 0}
.revs__head{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap;margin-bottom:3rem}
.revs__score{display:flex;align-items:center;gap:1rem}
.revs__score b{font-family:var(--f-disp);font-weight:400;font-size:4.2rem;line-height:1;color:var(--navy)}
.revs__score .stars{color:var(--red);display:flex;gap:2px}
.revs__score small{display:block;font-size:.8rem;color:var(--ink-70)}
.revs__row{display:flex;gap:1.2rem;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 var(--gut) 1.2rem;scrollbar-width:none;cursor:grab}
.revs__row::-webkit-scrollbar{display:none}
.rev{scroll-snap-align:start;flex:0 0 min(84vw,520px);background:#fff;border-radius:22px;padding:2rem 2rem 1.6rem;display:flex;flex-direction:column;justify-content:space-between;gap:1.6rem;box-shadow:0 30px 60px -44px rgba(16,15,75,.55)}
.rev q{font-family:var(--f-it);font-size:1.18rem;line-height:1.5;color:var(--navy);quotes:"“" "”"}
.rev q::before{content:"“";display:block;font-family:var(--f-disp);font-size:4rem;line-height:.6;color:var(--red);margin-bottom:.4rem}
.rev q::after{content:""}
.rev footer{display:flex;justify-content:space-between;align-items:center;gap:1rem;font-size:.82rem;border-top:1px solid var(--line);padding-top:1rem}
.rev footer b{font-weight:600;display:block;color:var(--ink)}
.rev footer .stars{color:var(--red);display:flex}
.rev footer .stars .ic{width:13px;height:13px}
.revs__nav{display:flex;gap:.5rem}
.revs__nav button{width:48px;height:48px;border-radius:50%;border:1px solid var(--navy);display:grid;place-items:center;color:var(--navy);transition:background .3s,color .3s}
.revs__nav button:hover{background:var(--navy);color:#fff}
.revs__nav button:first-child .ic{transform:rotate(180deg)}

/* ------------------------------------------------------------ work mosaic */
.work{padding:clamp(5rem,13vh,9rem) var(--gut);max-width:var(--max);margin:0 auto}
.work__head{display:grid;grid-template-columns:1fr auto;align-items:end;gap:2rem;margin-bottom:2.6rem}
.work__head .pill,.faqs__side .pill{justify-self:start}
.mosaic{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:clamp(110px,11vw,170px);gap:.8rem}
.mosaic figure{margin:0;position:relative;overflow:hidden;border-radius:4px;background:var(--sky)}
.mosaic figure:nth-child(1){grid-column:span 5;grid-row:span 3}
.mosaic figure:nth-child(2){grid-column:span 4;grid-row:span 2}
.mosaic figure:nth-child(3){grid-column:span 3;grid-row:span 2}
.mosaic figure:nth-child(4){grid-column:span 3;grid-row:span 2}
.mosaic figure:nth-child(5){grid-column:span 4;grid-row:span 2}
.mosaic figure:nth-child(6){grid-column:span 5;grid-row:span 1}
.mosaic img{width:100%;height:100%;object-fit:cover;transform:scale(1.12) translate3d(0,var(--py,0px),0);transition:transform .2s linear}
.mosaic figcaption{position:absolute;left:.7rem;bottom:.6rem;background:rgba(255,255,255,.92);color:var(--navy);font-size:.72rem;padding:.3em .7em;border-radius:999px}

/* ------------------------------------------------------------ map */
.map-sec{background:var(--navy);color:#fff;padding:clamp(5rem,12vh,8rem) 0 0;overflow:hidden}
.map-sec__head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.7fr);gap:2rem;align-items:end;margin-bottom:2.4rem}
.map-wrap{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 340px;min-height:72vh;border-top:1px solid var(--line-dark)}
.map{position:relative;background:#0c0b3d;min-height:520px}
.map .leaflet-tile-pane{filter:grayscale(1) invert(1) brightness(.88) contrast(.92) sepia(.5) hue-rotate(190deg) saturate(2.4)}
.map .leaflet-control-attribution{background:rgba(10,9,52,.7);color:var(--on-dark-50);font-size:10px}
.map .leaflet-control-attribution a{color:var(--on-dark-70)}
.map .leaflet-control-zoom a{background:var(--navy);color:#fff;border-color:var(--line-dark)}
.map__ph{position:absolute;inset:0;display:grid;place-items:center;color:var(--on-dark-50);font-size:.85rem}
.mk{position:relative;width:22px;height:22px}
.mk i{position:absolute;inset:0;background:var(--red);clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);transform:translateY(-30px) scale(.4);opacity:0;transition:transform .7s cubic-bezier(.3,1.6,.5,1),opacity .3s;transition-delay:var(--d,0s)}
.mk b{position:absolute;inset:-9px;border-radius:50%;border:1px solid rgba(255,90,96,.55);transform:scale(.2);opacity:0}
.map.is-live .mk i{transform:none;opacity:1}
.map.is-live .mk b{animation:ping 2.8s var(--d,0s) infinite}
.mk--home i{background:#fff;clip-path:none;border-radius:50%;box-shadow:0 0 0 5px var(--red)}
.mk.is-hot i{transform:scale(1.5)}
@keyframes ping{0%{transform:scale(.2);opacity:.9}100%{transform:scale(2.4);opacity:0}}
.mk-label{background:none;border:0;box-shadow:none;color:#fff;font-family:var(--f-sans);font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:0;white-space:nowrap}
.mk-label::before{display:none}
.route{stroke:#ff5a60;stroke-width:1.4;stroke-dasharray:4 6;fill:none;opacity:.7}
.map-list{border-left:1px solid var(--line-dark);display:flex;flex-direction:column;max-height:72vh;overflow:auto}
.map-list a{display:grid;grid-template-columns:1fr auto;align-items:center;padding:.95rem 1.4rem;border-bottom:1px solid var(--line-dark);transition:background .3s,padding .4s var(--e-out)}
.map-list a span{font-family:var(--f-disp);text-transform:uppercase;font-size:1.25rem}
.map-list a small{font-size:.72rem;color:var(--on-dark-50);letter-spacing:.08em}
.map-list a:hover,.map-list a.is-hot{background:var(--navy-3);padding-left:1.8rem}
.map-list a:hover span,.map-list a.is-hot span{color:#ff5a60}
.leaflet-popup-content-wrapper{border-radius:14px!important;font-family:var(--f-sans)}
.pop b{display:block;font-family:var(--f-disp);font-weight:400;font-size:1.3rem;text-transform:uppercase;color:var(--navy)}
.pop a{color:var(--red);font-weight:500}

/* ------------------------------------------------------------ FAQ */
.faqs{padding:clamp(5rem,13vh,9rem) var(--gut);max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:3rem}
.faqs__side p{max-width:32ch;color:var(--ink-70);margin-top:1.6rem}
.faq{border-top:1px solid var(--line)}
.faq__i{border-bottom:1px solid var(--line)}
.faq__i summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:1fr 28px;gap:1.2rem;align-items:center;padding:1.35rem 0;font-family:var(--f-it);font-size:clamp(1.08rem,1.5vw,1.32rem);line-height:1.35;color:var(--navy)}
.faq__i summary::-webkit-details-marker{display:none}
.faq__i summary i{position:relative;width:28px;height:28px;border-radius:50%;border:1px solid var(--line);transition:background .3s,border-color .3s}
.faq__i summary i::before,.faq__i summary i::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:1.5px;background:currentColor;transform:translate(-50%,-50%);transition:transform .4s var(--e-out)}
.faq__i summary i::after{transform:translate(-50%,-50%) rotate(90deg)}
.faq__i[open] summary i{background:var(--red);border-color:var(--red);color:#fff}
.faq__i[open] summary i::after{transform:translate(-50%,-50%) rotate(0)}
.faq__a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--e-out)}
.faq__a>p{overflow:hidden;margin:0;color:var(--ink-70);max-width:62ch}
.faq__i.is-open .faq__a{grid-template-rows:1fr}
.faq__i.is-open .faq__a>p{padding-bottom:1.4rem}
.on-dark .faq,.on-dark .faq__i{border-color:var(--line-dark)} .on-dark .faq__i summary{color:#fff}

/* ------------------------------------------------------------ journal cards (blog laid out like a gallery) */
.jr{padding:clamp(4rem,12vh,8rem) var(--gut);max-width:var(--max);margin:0 auto}
.jr__head{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:2.4rem;flex-wrap:wrap}
.jr__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.post-card{display:flex;flex-direction:column;gap:1rem}
.post-card__img{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:4px;background:var(--sky)}
.post-card__img img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--e-out)}
.post-card:hover .post-card__img img{transform:scale(1.06)}
.post-card__img .lbl{position:absolute;left:.8rem;top:.8rem;background:#fff;color:var(--navy);padding:.45em .8em;border-radius:999px;font-size:.64rem}
.post-card h3{font-family:var(--f-disp);font-size:clamp(1.25rem,1.7vw,1.6rem);line-height:1.15;color:var(--navy);text-transform:uppercase}
.post-card p{font-size:.92rem;color:var(--ink-70);margin:0}
.post-card small{font-size:.76rem;color:var(--ink-50);letter-spacing:.06em}

/* ------------------------------------------------------------ closing: red panel + form */
.close{position:relative;background:var(--red);color:#fff;overflow:hidden;padding:clamp(4rem,11vh,7rem) 0 clamp(4rem,10vh,6rem)}
.close__run{font-family:var(--f-disp);text-transform:uppercase;font-size:clamp(4rem,12vw,12rem);line-height:1;white-space:nowrap;color:rgba(255,255,255,.12);margin-bottom:2rem}
.close__run span{display:inline-block;transform:translate3d(var(--dx,0px),0,0)}
.close__in{max-width:var(--max);margin:0 auto;padding:0 var(--gut);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.95fr);gap:clamp(2rem,5vw,5rem);align-items:start}
.close__say .lbl{margin-bottom:1.2rem}
.close .h-xl em{color:#fff}
.close__p{margin:1.8rem 0 2rem;max-width:40ch;color:rgba(255,255,255,.86)}
.close__direct{display:grid;gap:.2rem;border-top:1px solid rgba(255,255,255,.3)}
.close__direct a,.close__direct .nolink{display:flex;align-items:center;gap:1rem;padding:1rem 0;border-bottom:1px solid rgba(255,255,255,.3);font-family:var(--f-disp);font-size:clamp(1.15rem,1.9vw,1.7rem);line-height:1.2;word-break:break-word}
.close__direct small{display:block;font-family:var(--f-sans);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;opacity:.75;margin-bottom:.15rem}
.close__direct .ic{width:1.4rem;height:1.4rem;flex:0 0 auto}
.form{background:#fff;color:var(--ink);border-radius:26px;padding:clamp(1.4rem,3vw,2.4rem);display:grid;gap:1rem;box-shadow:0 40px 80px -40px rgba(10,9,52,.7)}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.fld{display:grid;gap:.35rem}
.fld span{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-70)}
.fld input,.fld select,.fld textarea{font:inherit;font-size:1rem;color:var(--ink);background:var(--paper);border:1px solid transparent;border-radius:12px;padding:.85rem 1rem;width:100%;transition:border-color .3s,background .3s}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:0;border-color:var(--navy);background:#fff}
.form__note{font-size:.78rem;color:var(--ink-50);margin:0;text-align:center}
.hp{position:absolute;left:-9999px}

/* ------------------------------------------------------------ footer */
.ftr{background:var(--navy-2);color:#fff;padding:clamp(4rem,10vh,6rem) var(--gut) 1.6rem;overflow:hidden}
.ftr__top{max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:2.4rem}
.logo--ftr{width:170px;margin-bottom:1.4rem}
.ftr__brand p{font-family:var(--f-it);font-style:italic;font-size:1.15rem;color:var(--on-dark-70);max-width:22ch}
.ftr__soc{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1.4rem}
.ftr__col{display:flex;flex-direction:column;gap:.15rem}
.ftr__col .lbl{color:#ff5a60;margin-bottom:.6rem}
.ftr__col a,.ftr__col>span:not(.lbl){font-size:.92rem;color:var(--on-dark-70);padding:.18rem 0;transition:color .25s}
.ftr__col a:hover{color:#fff}
.ftr__word{font-family:var(--f-disp);text-transform:uppercase;text-align:center;font-size:clamp(4.2rem,17.5vw,19rem);line-height:.8;letter-spacing:-.03em;margin:clamp(3rem,8vh,5rem) 0 1.4rem;white-space:nowrap;transform:scale(var(--ws,1));transform-origin:50% 100%;will-change:transform}
.ftr__word em{font-family:var(--f-it);text-transform:none;color:var(--red)}
.ftr__base{max-width:var(--max);margin:0 auto;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.78rem;color:var(--on-dark-50);border-top:1px solid var(--line-dark);padding-top:1.2rem}
.mbar{display:none}

/* ------------------------------------------------------------ inner-page hero (services, areas) */
.crumbs{display:flex;flex-wrap:wrap;gap:.5rem;font-size:.76rem;letter-spacing:.06em;color:var(--ink-50);margin-bottom:1.6rem}
.crumbs a:hover{color:var(--red)}
.on-dark .crumbs{color:var(--on-dark-50)}
.sv{position:relative;height:300vh;background:linear-gradient(180deg,#fff,var(--paper))}
.sv__stage{position:sticky;top:0;height:100svh;display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1fr);align-items:center;gap:2vw;padding:var(--hdr) var(--gut) 3vh;overflow:hidden}
.sv__copy .lbl{color:var(--red);margin-bottom:1.2rem;display:block}
.sv__copy .lede{margin:1.8rem 0 2rem}
.sv__cta{display:flex;flex-wrap:wrap;gap:.7rem}
.sv__view{position:relative;height:100%;display:flex;align-items:center;overflow:hidden}
.sv__view canvas{width:100%;height:auto;aspect-ratio:var(--ar,1.5);transform:scale(var(--z,1));transform-origin:var(--fx,50%) var(--fy,50%);will-change:transform}
.sv__chip{position:absolute;left:0;bottom:6vh;background:var(--navy);color:#fff;border-radius:999px;padding:.6em 1.1em;font-size:.78rem;letter-spacing:.06em;display:flex;gap:.6em;align-items:center}
.sv__chip i{width:8px;height:8px;border-radius:50%;background:#ff5a60;animation:blink 1.6s infinite}
@keyframes blink{50%{opacity:.25}}
.intro{padding:clamp(4rem,12vh,8rem) var(--gut);max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,6vw,6rem)}
.intro__big{font-family:var(--f-disp);font-size:clamp(1.3rem,1.75vw,1.85rem);line-height:1.32;color:var(--navy)}
.intro__txt p{color:var(--ink-70)}
.inc{padding:clamp(3rem,9vh,6rem) var(--gut);max-width:var(--max);margin:0 auto}
.inc__head{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap;margin-bottom:2rem}
.inc__list{border-top:1px solid var(--line)}
.inc__row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr) 40px;gap:2rem;align-items:baseline;padding:1.4rem 0;border-bottom:1px solid var(--line);transition:background .4s,padding .5s var(--e-out)}
.inc__row h3{font-family:var(--f-disp);text-transform:uppercase;font-size:clamp(1.25rem,2vw,1.9rem);line-height:1.1;color:var(--navy)}
.inc__row p{margin:0;color:var(--ink-70)}
.inc__row .ic{color:var(--red);opacity:0;transform:translateX(-8px);transition:opacity .3s,transform .4s var(--e-out)}
.inc__row:hover{background:var(--paper);padding-left:1rem;padding-right:1rem}
.inc__row:hover .ic{opacity:1;transform:none}
.signs{background:var(--navy);color:#fff;padding:clamp(5rem,13vh,9rem) var(--gut);overflow:hidden}
.signs__in{max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:3rem}
.signs ol{list-style:none;margin:0;padding:0;counter-reset:g}
.signs li{counter-increment:g;display:grid;grid-template-columns:3rem 1fr;padding:1.1rem 0;border-bottom:1px solid var(--line-dark);font-family:var(--f-it);font-size:clamp(1.1rem,1.6vw,1.45rem);line-height:1.35}
.signs li::before{content:counter(g,decimal-leading-zero);font-family:var(--f-sans);font-size:.72rem;letter-spacing:.12em;color:#ff5a60;padding-top:.45em}
.proc{padding:clamp(5rem,13vh,9rem) var(--gut);max-width:var(--max);margin:0 auto}
.proc__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;margin-top:3rem;counter-reset:p}
.proc__step{counter-increment:p;border-top:2px solid var(--navy);padding-top:1.3rem;position:relative}
.proc__step::before{content:counter(p);font-family:var(--f-disp);font-size:4.4rem;line-height:1;color:var(--red);display:block;margin-bottom:1rem}
.proc__step h3{font-family:var(--f-disp);text-transform:uppercase;font-size:1.3rem;line-height:1.1;color:var(--navy);margin-bottom:.6rem}
.proc__step p{color:var(--ink-70);font-size:.96rem;margin:0}
.local{background:var(--sky);padding:clamp(4rem,11vh,7rem) var(--gut)}
.local__in{max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3rem;align-items:start}
.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.6rem}
.chips a,.chips span{border:1px solid var(--navy);color:var(--navy);border-radius:999px;padding:.5em 1em;font-size:.85rem;transition:background .3s,color .3s}
.chips a:hover{background:var(--navy);color:#fff}
.on-dark .chips a,.on-dark .chips span{border-color:var(--line-dark);color:#fff}
.on-dark .chips a:hover{background:#fff;color:var(--navy)}
.rel{padding:clamp(4rem,11vh,7rem) var(--gut);max-width:var(--max);margin:0 auto}
.rel__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;margin-top:2.4rem}
.svc-card{position:relative;display:flex;flex-direction:column;justify-content:space-between;min-height:300px;padding:1.4rem;border-radius:4px;background:var(--paper);overflow:hidden;transition:color .4s}
.svc-card::before{content:"";position:absolute;inset:0;background:var(--navy);transform:translateY(101%);transition:transform .6s var(--e-out)}
.svc-card>*{position:relative}
.svc-card:hover{color:#fff}
.svc-card:hover::before{transform:none}
.svc-card h3{font-family:var(--f-disp);text-transform:uppercase;font-size:1.6rem;line-height:1.05}
.svc-card p{font-size:.9rem;opacity:.8;margin:.8rem 0 0}
.svc-card img{width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;margin-bottom:1rem;border-radius:2px}
.svc-card .ic{align-self:flex-end;width:1.4rem;height:1.4rem;color:var(--red)}
.tasks{padding:clamp(4rem,11vh,7rem) var(--gut);max-width:var(--max);margin:0 auto}
.tasks ul{columns:3;column-gap:2.4rem;margin-top:2.4rem}
.tasks li{break-inside:avoid;padding:.7rem 0;border-bottom:1px solid var(--line);display:flex;gap:.7rem;align-items:baseline;font-size:1.02rem}
.tasks li::before{content:"✶";color:var(--red);font-size:.8rem}

/* ------------------------------------------------------------ area pages */
.ah{position:relative;min-height:92svh;padding:calc(var(--hdr) + 6vh) var(--gut) 6vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:3vw;align-items:end;background:var(--navy);color:#fff;overflow:hidden}
.ah__city{font-family:var(--f-disp);text-transform:uppercase;font-size:clamp(3.4rem,11vw,11.5rem);line-height:.86;letter-spacing:-.03em}
.ah__city em{font-family:var(--f-it);text-transform:none;color:#ff5a60;font-size:.42em;letter-spacing:0;display:block;margin-top:.3em}
.ah .lede{margin:1.8rem 0 2rem}
.ah__map{position:relative;height:min(62vh,560px);border-radius:24px;overflow:hidden;border:1px solid var(--line-dark)}
.ah__map .map{position:absolute;inset:0;min-height:0}
.ah__stats{display:flex;flex-wrap:wrap;gap:.5rem 1.6rem;margin-top:2rem;font-size:.82rem;color:var(--on-dark-70)}
.notes{padding:clamp(4rem,11vh,7rem) var(--gut);max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.note{border-top:2px solid var(--red);padding-top:1.2rem}
.note h3{font-family:var(--f-disp);text-transform:uppercase;font-size:1.35rem;line-height:1.1;color:var(--navy);margin-bottom:.7rem}
.note p{color:var(--ink-70);font-size:.97rem;margin:0}
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line);margin-top:2.4rem}
.svc-grid a{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.3rem 1.2rem 1.3rem 0;border-bottom:1px solid var(--line);font-family:var(--f-disp);text-transform:uppercase;font-size:1.2rem;color:var(--navy);transition:color .3s,padding .4s var(--e-out)}
.svc-grid a small{display:block;font-family:var(--f-sans);text-transform:none;font-size:.78rem;color:var(--ink-50);margin-top:.2rem}
.svc-grid a:hover{color:var(--red);padding-left:.6rem}
.svc-grid a .ic{color:var(--red)}

/* ------------------------------------------------------------ simple page hero (hubs, about, gallery, blog, contact) */
.ph{padding:calc(var(--hdr) + 10vh) var(--gut) clamp(3rem,8vh,5rem);max-width:var(--max);margin:0 auto}
.ph .lbl{color:var(--red);margin-bottom:1.4rem;display:block}
.ph .lede{margin-top:1.8rem}
.ph--split{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:3rem;align-items:end}

/* gallery */
.gal-f{display:flex;flex-wrap:wrap;gap:.5rem;padding:0 var(--gut);max-width:var(--max);margin:0 auto 1.6rem}
.gal-f button{border:1px solid var(--navy);color:var(--navy);border-radius:999px;padding:.5em 1.1em;font-size:.85rem;transition:background .3s,color .3s}
.gal-f button[aria-pressed=true],.gal-f button:hover{background:var(--navy);color:#fff}
.gal{padding:0 var(--gut) clamp(4rem,10vh,7rem);max-width:var(--max);margin:0 auto;columns:3 280px;column-gap:.9rem}
.gal figure{margin:0 0 .9rem;break-inside:avoid;position:relative;overflow:hidden;border-radius:4px;background:var(--sky);cursor:zoom-in}
.gal figure.is-hidden{display:none}
.gal img{width:100%;height:auto;transition:transform 1s var(--e-out)}
.gal figure:hover img{transform:scale(1.04)}
.gal figcaption{position:absolute;left:.7rem;bottom:.6rem;right:.7rem;color:#fff;font-size:.78rem;text-shadow:0 1px 6px rgba(0,0,0,.6);opacity:0;transform:translateY(6px);transition:opacity .3s,transform .4s var(--e-out)}
.gal figure:hover figcaption{opacity:1;transform:none}
.lb{position:fixed;inset:0;z-index:90;background:rgba(10,9,52,.94);display:grid;place-items:center;padding:4vh 4vw;opacity:0;visibility:hidden;transition:opacity .35s,visibility .35s}
.lb.is-open{opacity:1;visibility:visible}
.lb img{max-height:84vh;width:auto;max-width:92vw;border-radius:4px}
.lb p{color:#fff;margin-top:1rem;text-align:center;font-size:.9rem}
.lb button{position:absolute;color:#fff;width:52px;height:52px;border-radius:50%;border:1px solid var(--line-dark);display:grid;place-items:center}
.lb__x{top:1.2rem;right:1.2rem}.lb__p{left:1.2rem;top:50%}.lb__n{right:1.2rem;top:50%}
.lb__p .ic{transform:rotate(180deg)}

/* blog post */
.post{max-width:760px;margin:0 auto;padding:0 var(--gut) clamp(4rem,10vh,6rem)}
.post-hero{padding:calc(var(--hdr) + 9vh) var(--gut) 3rem;max-width:1100px;margin:0 auto}
.post-hero .lbl{color:var(--red);display:block;margin-bottom:1.2rem}
.post-hero .lede{margin-top:1.6rem;max-width:60ch}
.post-hero small{display:block;margin-top:1.6rem;color:var(--ink-50);font-size:.82rem}
.post-cover{max-width:1200px;margin:0 auto 3rem;padding:0 var(--gut)}
.post-cover img{width:100%;aspect-ratio:2/1;object-fit:cover;border-radius:4px}
.post h2{font-family:var(--f-disp);text-transform:uppercase;font-size:clamp(1.5rem,2.4vw,2.1rem);line-height:1.1;color:var(--navy);margin:2.6rem 0 1rem}
.post p,.post li{font-size:1.1rem;line-height:1.75;color:#24233f}
.post ul{list-style:none;margin:0 0 1.4rem}
.post li{padding:.4rem 0 .4rem 1.6rem;position:relative}
.post li::before{content:"✶";position:absolute;left:0;color:var(--red);font-size:.8rem;top:.75rem}
.post blockquote{margin:2.4rem 0;padding:0 0 0 1.6rem;border-left:3px solid var(--red);font-family:var(--f-it);font-style:italic;font-size:1.6rem;line-height:1.35;color:var(--navy)}
.post__svc{margin-top:3rem;padding:1.6rem;background:var(--sky);border-radius:18px;display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.post__svc b{font-family:var(--f-disp);font-weight:400;font-size:1.4rem;text-transform:uppercase;color:var(--navy)}

/* about */
.ab-hero{position:relative;min-height:100svh;background:var(--navy);color:#fff;display:grid;place-items:center;text-align:center;padding:calc(var(--hdr) + 4vh) var(--gut) 6vh;overflow:hidden}
.ab-hero .logo{width:min(560px,80vw);margin:0 auto 3rem}
.ab-hero h1{max-width:14ch;margin:0 auto}
.ab-hero .lede{margin:2rem auto 0;text-align:center}
.ab-story{padding:clamp(5rem,13vh,9rem) var(--gut);max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.ab-story__img{position:sticky;top:110px;aspect-ratio:4/5;overflow:hidden;border-radius:4px;background:var(--sky)}
.ab-story__img img{width:100%;height:100%;object-fit:cover}
.ab-story__txt p{color:var(--ink-70);font-size:1.08rem}
.ab-story__txt .say__big{margin-bottom:2rem;font-size:clamp(1.5rem,2.4vw,2.4rem);color:var(--navy)}
.verse{background:var(--paper);padding:clamp(5rem,14vh,9rem) var(--gut);text-align:center}
.verse blockquote{margin:0 auto;max-width:22ch;font-family:var(--f-it);font-style:italic;font-size:clamp(1.8rem,3.6vw,3.6rem);line-height:1.2;color:var(--navy)}
.verse cite{display:block;margin-top:1.6rem;font-style:normal;font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--red)}
.crew{padding:clamp(4rem,11vh,7rem) var(--gut);max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.crew div{border-top:2px solid var(--navy);padding-top:1.2rem}
.crew b{display:block;font-family:var(--f-disp);font-weight:400;font-size:1.8rem;text-transform:uppercase;color:var(--navy)}
.crew span{font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--red)}
.crew p{color:var(--ink-70);margin-top:.8rem;font-size:.97rem}

/* contact */
.ct{padding:calc(var(--hdr) + 8vh) var(--gut) 3rem;max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3rem;align-items:end}
.ct__lines{display:grid;gap:0;border-top:1px solid var(--line)}
.ct__lines a,.ct__lines div{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.2rem 0;border-bottom:1px solid var(--line);font-family:var(--f-disp);font-size:clamp(1.2rem,2vw,1.8rem);color:var(--navy);word-break:break-word}
.ct__lines small{font-family:var(--f-sans);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--red)}
.ct__lines a:hover{color:var(--red)}

/* 404 / thank you */
.msg{min-height:80vh;display:grid;place-items:center;text-align:center;padding:calc(var(--hdr) + 4vh) var(--gut) 4rem}
.msg .lede{margin:1.6rem auto 2rem}

/* ============================================================
   SMALL SCREENS — every animated layout unrolls into a clean stack
   ============================================================ */
@media (max-width:1180px){
  .pill-nav>a:nth-of-type(n+4){display:none}
  .hdr__tel span{display:none}
}
@media (max-width:899px){
  :root{--hdr:72px}
  body{font-size:1rem;padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  .pill-nav,.hdr__tel,.hdr__cta .btn,.rail-soc{display:none}
  .menu-btn{display:inline-flex;position:relative;z-index:61}
  .hdr{padding:10px 1rem}
  .hdr__logo,.is-scrolled .hdr__logo{width:84px}
  .mbar{display:grid;grid-template-columns:1fr 1fr 1.4fr;position:fixed;left:0;right:0;bottom:0;z-index:57;background:var(--navy);padding:8px 8px calc(8px + env(safe-area-inset-bottom));gap:6px;box-shadow:0 -10px 30px -12px rgba(10,9,52,.5);transform:translateY(0);transition:transform .4s var(--e-out)}
  .mbar a{display:flex;align-items:center;justify-content:center;gap:.45em;color:#fff;font-size:.9rem;font-weight:500;padding:.8rem .4rem;border-radius:12px;border:1px solid var(--line-dark)}
  .mbar__go{background:var(--red);border-color:var(--red)!important}
  .menu-open .mbar{transform:translateY(110%)}

  .hero{grid-template-columns:1fr;min-height:auto;padding-top:calc(var(--hdr) + 3vh);padding-bottom:2rem;gap:1rem}
  .hero__k{margin-bottom:1.4rem}
  .hero h1 .rv:nth-child(3){padding-left:1.4rem}
  .hero__p{margin:1.4rem 0 1.4rem}
  .hero__cta .btn{flex:1 1 auto}
  .hero__house{margin:0}
  .hero__photo{aspect-ratio:4/3}
  .hero__tag{display:none}
  .hero__stars{width:90vw;top:auto;bottom:10%}
  .say{grid-template-columns:1fr;padding-top:4.5rem;padding-bottom:4.5rem}
  .say__side{gap:.8rem}

  .build{height:380vh}
  .build__stage{grid-template-columns:1fr;grid-template-rows:auto 1fr auto;align-items:start;padding:calc(var(--hdr) + 1vh) 1rem 4.5vh}
  .build__copy h2{margin:.6rem 0 0;font-size:clamp(1.8rem,8vw,2.6rem)}
  .steps{display:none}
  .build__view{flex-direction:column;align-items:stretch;justify-content:center;gap:1rem}
  .build__view canvas{max-height:52svh}
  .build__now{position:relative;right:auto;bottom:auto;text-align:left}
  .build__now b{font-size:2.2rem}
  .build__bar{bottom:2.4vh}

  .rail{height:auto!important}
  .rail__stage{position:relative;height:auto;overflow:visible}
  .rail__track{display:block;width:auto;height:auto;transform:none!important}
  .rail .panel{height:auto;width:auto!important}
  .r-intro{padding:4.5rem 1rem 2rem;gap:1.4rem}
  .card{padding:0 0 0;min-height:0}
  .card__img{aspect-ratio:4/3;flex:none;margin:0}
  .card__bar{grid-template-columns:1fr auto;padding:1.2rem 1rem 1.6rem}
  .card__meta{display:none}
  .card__name{text-align:left;font-size:2rem;white-space:normal}
  .r-end{padding:4rem 1rem}

  .terms{padding:5rem 1rem}
  .terms__w{font-size:clamp(3.2rem,17vw,6rem);white-space:normal}
  .terms__w--2{padding-left:2.4rem}
  .terms__img{position:relative;right:auto;top:auto;width:62%;margin:2rem 0 0 auto}
  .terms__copy{margin-top:2rem}

  .revs__head{padding:0 1rem}
  .work__head,.map-sec__head,.faqs,.intro,.signs__in,.local__in,.ab-story,.ct,.ph--split{grid-template-columns:1fr}
  .mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px}
  .mosaic figure:nth-child(n){grid-column:span 1;grid-row:span 1}
  .mosaic figure:nth-child(1),.mosaic figure:nth-child(6){grid-column:span 2;grid-row:span 2}
  .map-wrap{grid-template-columns:1fr;min-height:0}
  .map{min-height:62vh}
  .map-list{border-left:0;max-height:none;flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;padding:.6rem 1rem;gap:.5rem;scrollbar-width:none}
  .map-list a{flex:0 0 auto;border:1px solid var(--line-dark);border-radius:999px;padding:.6rem 1rem;grid-template-columns:auto;scroll-snap-align:start}
  .map-list a small{display:none}
  .map-list a span{font-size:1rem}
  .map-list a:hover,.map-list a.is-hot{padding-left:1rem}
  .jr__grid,.rel__grid,.notes,.crew{grid-template-columns:1fr}
  .close__in{grid-template-columns:1fr}
  .form__row{grid-template-columns:1fr}
  .ftr__top{grid-template-columns:1fr 1fr}
  .ftr__brand{grid-column:1/-1}

  .sv{height:250vh}
  .sv__stage{grid-template-columns:1fr;grid-template-rows:auto 1fr;align-items:start;padding:calc(var(--hdr) + 1.5vh) 1rem 3vh;gap:0}
  .sv__copy h1{font-size:clamp(2.2rem,10vw,3.2rem)}
  .sv__cta{margin-top:1.2rem}
  .sv__chip{bottom:2vh}
  .inc__row{grid-template-columns:1fr;gap:.4rem}
  .inc__row .ic{display:none}
  .proc__grid{grid-template-columns:1fr 1fr}
  .tasks ul{columns:1}
  .ah{grid-template-columns:1fr;min-height:auto;padding-top:calc(var(--hdr) + 5vh)}
  .ah__map{height:46vh}
  .svc-grid{grid-template-columns:1fr}
  .ab-story__img{position:relative;top:auto}
  .gal{columns:2 140px;column-gap:.6rem}
  .gal figure{margin-bottom:.6rem}
  .lb__p,.lb__n{top:auto;bottom:1.2rem}
}
@media (max-width:520px){
  .proc__grid{grid-template-columns:1fr}
  .ftr__top{grid-template-columns:1fr}
  .hero__proof{gap:.5rem 1rem}
}

/* ============================================================ reduced motion */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
  .rv>i,.fade{transform:none!important;opacity:1!important}
  .rail{height:auto!important}
  .rail__stage{position:relative;height:auto;overflow-x:auto}
  .rail__track{transform:none!important}
  .ticker__t{animation:none}
}

/* ============================================================ option previews (round 2) */
.opt-bar{background:var(--navy);color:#fff;padding:calc(var(--hdr) + 3.4rem) var(--gut) 2rem;display:grid;grid-template-columns:auto 1fr auto;gap:2rem;align-items:end}
.opt-bar__back{font-size:.82rem;color:var(--on-dark-70);align-self:start}
.opt-bar__back:hover{color:#fff}
.opt-bar h1{font-family:var(--f-disp);text-transform:uppercase;font-size:clamp(1.8rem,3.4vw,3.2rem);line-height:1;margin:.6rem 0 .6rem}
.opt-bar p{max-width:62ch;color:var(--on-dark-70);margin:0;font-size:.98rem}
.opt-bar__ab{display:flex;gap:.4rem}
.opt-bar__ab a{display:grid;place-items:center;min-width:64px;padding:.6rem .8rem;border:1px solid var(--line-dark);border-radius:14px;font-family:var(--f-disp);font-size:1.6rem;line-height:1}
.opt-bar__ab a small{font-family:var(--f-sans);font-size:.6rem;letter-spacing:.06em;color:var(--on-dark-50);margin-top:.3rem;max-width:9em;text-align:center;line-height:1.2}
.opt-bar__ab a[aria-current]{background:var(--red);border-color:var(--red)}
.opt-bar__ab a[aria-current] small{color:#fff}
.opt-hub{max-width:var(--max);margin:0 auto;padding:clamp(3rem,8vh,5rem) var(--gut);border-top:1px solid var(--line)}
.opt-hub__head{display:grid;grid-template-columns:auto 1fr;gap:1.4rem;align-items:start;margin-bottom:2rem}
.opt-hub__n{font-family:var(--f-disp);font-size:3rem;line-height:.9;color:var(--red)}
.opt-hub__head p{color:var(--ink-70);max-width:70ch;margin:.8rem 0 0}
.opt-hub__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.opt-card{display:flex;flex-direction:column;gap:1rem;background:var(--paper);border-radius:20px;padding:1rem;transition:transform .5s var(--e-out),box-shadow .5s}
.opt-card:hover{transform:translateY(-4px);box-shadow:0 30px 50px -36px rgba(16,15,75,.55)}
.opt-card__pv{aspect-ratio:16/10;border-radius:12px;overflow:hidden;background:var(--sky);display:grid;place-items:center;color:var(--ink-50);font-size:.8rem}
.opt-card__pv img{width:100%;height:100%;object-fit:cover;object-position:top}
.opt-card__t{display:grid;grid-template-columns:auto 1fr;gap:.9rem}
.opt-card__t b{font-family:var(--f-disp);font-weight:400;font-size:2.4rem;line-height:.9;color:var(--red)}
.opt-card h3{font-family:var(--f-disp);text-transform:uppercase;font-size:1.25rem;line-height:1.1;color:var(--navy)}
.opt-card p{font-size:.88rem;color:var(--ink-70);margin:.4rem 0 0}
.opt-card__go{margin-top:auto;display:flex;justify-content:space-between;align-items:center;font-size:.82rem;font-weight:500;color:var(--navy);border-top:1px solid var(--line);padding-top:.8rem}
@media (max-width:899px){
  .opt-bar{grid-template-columns:1fr;gap:1rem;padding-top:calc(var(--hdr) + 1.6rem)}
  .opt-bar__ab a{flex:1}
  .opt-hub__grid{grid-template-columns:1fr}
}
/* the floating "Find us" seal stays off the contact page so it never sits on the form */
.pg-contact [data-fu-final],.opt-contact [data-fu-final]{display:none!important}

.opt-hub__done{color:#1a7a3a;font-weight:600}.opt-hub__open{color:var(--red);font-weight:600}
.opt-card{position:relative}.opt-card.is-picked{box-shadow:0 0 0 3px var(--red)}
.opt-card__pick{position:absolute;top:1.4rem;left:1.4rem;z-index:2;background:var(--red);color:#fff;font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:.4em .8em;border-radius:999px}

/* service heroes: the realistic build video in a framed panel (replaces the scroll-scrubbed 3D model) */
.sv--vid{height:auto}
.sv--vid .sv__stage{position:relative;height:auto;min-height:100svh}
.sv__frame{position:relative;width:100%;aspect-ratio:16/10;overflow:hidden;border-radius:6px;box-shadow:0 40px 80px -50px rgba(16,15,75,.6);background:#0a0934}
.sv__frame::after{content:"";position:absolute;left:0;right:0;bottom:0;height:6px;background:linear-gradient(90deg,var(--red) 0 33%,#fff 33% 66%,var(--navy) 66%)}
.sv__frame video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* the chip hangs off the photo's bottom edge, over the flag stripe (it was pinned to the column bottom and clipped) */
.sv--vid .sv__view{flex-direction:column;justify-content:center;align-items:flex-start;overflow:visible}
.sv--vid .sv__chip{position:relative;left:1.2rem;bottom:auto;margin-top:-1.15rem;z-index:2;box-shadow:0 10px 24px -12px rgba(10,9,52,.6)}
@media (max-width:899px){
  .sv--vid .sv__stage{min-height:0;padding-bottom:3.5rem;grid-template-rows:auto auto;gap:2rem}
  .sv--vid .sv__view{height:auto}
}

/* call-to-action bands between home sections */
.ctab{padding:clamp(3.5rem,9vh,6rem) var(--gut)}
.ctab--paper{background:var(--paper)}.ctab--sky{background:var(--sky)}.ctab--white{background:#fff;border-top:1px solid var(--line)}
.ctab--navy{background:var(--navy);color:#fff}
.ctab__in{max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(2rem,5vw,5rem);align-items:end}
.ctab__say .lbl{color:var(--red);margin-bottom:1rem}
.ctab--navy .ctab__say .lbl{color:#ff7a7f}
.ctab__p{margin:1.4rem 0 0;max-width:46ch;color:var(--ink-70)}
.ctab__act{display:flex;flex-wrap:wrap;gap:.7rem;justify-content:flex-end;align-items:center}
.ctab__links{flex-basis:100%;display:flex;flex-wrap:wrap;gap:1.4rem;justify-content:flex-end;margin:.8rem 0 0}
.ctab--navy .btn--ghost{color:#fff}
.ctab--navy .link{color:#fff}
@media (max-width:899px){
  .ctab__in{grid-template-columns:1fr;gap:1.6rem;align-items:start}
  .ctab__act{justify-content:flex-start}
  .ctab__act .btn{flex:1 1 100%}
  .ctab__links{justify-content:flex-start}
}

/* reviews page: photo-led */
.rvw-mosaic{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:clamp(120px,14vw,220px);gap:.7rem;max-width:var(--max);margin:0 auto 3rem;padding:0 var(--gut)}
.rvw-mosaic__f{margin:0;overflow:hidden;border-radius:4px;background:var(--sky)}
.rvw-mosaic__f:nth-child(1),.rvw-mosaic__f:nth-child(6){grid-row:span 2}
.rvw-mosaic__f img{width:100%;height:100%;object-fit:cover;transform:scale(1.12) translate3d(0,var(--py,0px),0)}
.rvw{max-width:var(--max);margin:0 auto;padding:0 var(--gut) clamp(4rem,10vh,7rem);columns:3 320px;column-gap:1.2rem}
.rvw__card{break-inside:avoid;margin:0 0 1.2rem;background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 30px 60px -44px rgba(16,15,75,.55);border:1px solid var(--line)}
.rvw__ph{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--sky)}
.rvw__ph img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--e-out)}
.rvw__card:hover .rvw__ph img{transform:scale(1.05)}
.rvw__tag{position:absolute;left:.8rem;bottom:.8rem;background:rgba(255,255,255,.94);color:var(--navy);font-size:.7rem;letter-spacing:.06em;padding:.4em .8em;border-radius:999px}
.rvw__body{padding:1.3rem 1.4rem 1.2rem}
.rvw__stars{color:var(--red);display:flex}.rvw__stars .ic{width:14px;height:14px}
.stars{display:inline-flex;align-items:center;gap:2px}   /* five stars always sit in one row (they were stacking in a column on the reviews page) */
.rvw__body q{display:block;margin:.7rem 0 .4rem;font-family:var(--f-it);font-style:italic;font-size:1.08rem;line-height:1.45;color:var(--navy);quotes:"\201C" "\201D"}
.rvw__more summary{cursor:pointer;font-size:.82rem;font-weight:500;color:var(--red);list-style:none}
.rvw__more summary::-webkit-details-marker{display:none}
.rvw__more p{font-size:.92rem;color:var(--ink-70);margin:.6rem 0 0}
.rvw__body footer{display:flex;justify-content:space-between;gap:1rem;margin-top:1rem;padding-top:.8rem;border-top:1px solid var(--line);font-size:.82rem;color:var(--ink-50)}
.rvw__body footer b{color:var(--ink);font-weight:600}
@media (max-width:899px){ .rvw-mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:130px} }

/* Leaflet's panes carry z-index 400–1000; isolate every map so they can never rise above the header or the phone menu */
[data-map],.leaflet-container{isolation:isolate;z-index:0}
/* keep hyphenated words whole when copy is split into lines ("split-levels" was breaking after the hyphen) */
[data-lines] .w{white-space:nowrap}
