/* RLB Maintenance · "Before Open" · tokens live here, nowhere else */
@font-face{font-family:"Libre Franklin";font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/libre-franklin-var.woff2) format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:200 900;font-display:swap;src:url(fonts/source-serif-4-var.woff2) format("woff2")}
@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:200 900;font-display:swap;src:url(fonts/source-serif-4-italic-var.woff2) format("woff2")}
@font-face{font-family:"Archivo";font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(fonts/archivo-var.woff2) format("woff2")}
@font-face{font-family:"DM Mono";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/dm-mono-400.woff2) format("woff2")}
@font-face{font-family:"DM Mono";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/dm-mono-500.woff2) format("woff2")}

:root{
  --concrete:#EDEFEC; --ink:#14171B; --slate:#5B6067; --beacon:#F0A500; --beacon-deep:#8A5B00;
  /* accent roles: surface on light, text on light, voice on ink, text on the accent surface */
  --accent:var(--beacon); --accent-txt:var(--beacon-deep); --accent-ink:var(--beacon); --on-accent:var(--ink);
  --card:#F6F7F4; --line:#D5D8D3; --ink-line:#2B2F33; --ink-2:#1C2025; --bone:#ECEDE8; --bone-2:#B4B8B2;
  --disp:"Libre Franklin",system-ui,sans-serif; --serif:"Source Serif 4",Georgia,serif; --mono:"DM Mono",ui-monospace,monospace;
  --ease:cubic-bezier(.16,1,.3,1);
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:64px; --s9:96px;
  --wrap:1200px; --gutter:clamp(20px,4vw,56px); --nav-h:72px;
}
/* v2: her blue, redrawn. One accent, same system. */
[data-theme="blue"]{--accent:#0B3FA8; --accent-txt:#0B3FA8; --accent-ink:#8FB0FF; --on-accent:#FFFFFF; --logo-ink:#0A2450}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--serif);font-size:17.5px;line-height:1.55;background:var(--concrete);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:none;cursor:pointer}
::selection{background:var(--accent);color:var(--on-accent)}
:focus-visible{outline:2px solid var(--accent-txt);outline-offset:3px}
.contact :focus-visible,.foot :focus-visible,.hero :focus-visible{outline-color:var(--accent)}
.skip{position:absolute;left:-9999px;top:8px;z-index:100;background:var(--ink);color:var(--bone);padding:10px 14px;font-family:var(--disp);font-weight:700}
.skip:focus{left:8px}

/* ---------- type ---------- */
h1,h2,h3,h4{font-family:var(--disp);font-weight:800;letter-spacing:-0.025em;line-height:1.02;text-wrap:balance}
h1{font-size:clamp(2.5rem,6vw,4.6rem);max-width:15ch}
h2{font-size:clamp(1.9rem,3.6vw,2.75rem);max-width:18ch;line-height:1.05}
h3{font-size:1.35rem;letter-spacing:-0.015em;line-height:1.15}
h4{font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--slate)}
p{max-width:62ch}
.lead{font-size:1.2rem;font-weight:500;line-height:1.45;color:var(--slate);max-width:52ch}
.eyebrow{display:block;font-family:var(--mono);font-weight:500;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-txt);margin-bottom:var(--s4)}
em{font-style:italic}
strong{font-weight:600}
.small{font-size:.9rem}

/* verify-before-display slots */
[data-todos="show"] .todo{text-decoration:underline dashed var(--accent-txt);text-decoration-thickness:1px;text-underline-offset:3px;cursor:help}
[data-todos="show"] .contact .todo,[data-todos="show"] .foot .todo,[data-todos="show"] .hero .todo{text-decoration-color:var(--accent-ink)}

/* ---------- layout ---------- */
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
main>section{padding:clamp(64px,8.5vw,120px) 0}
.sec-head{display:flex;flex-direction:column;gap:var(--s4);margin-bottom:clamp(36px,5vw,64px)}
.sec-head .eyebrow{margin-bottom:0}

/* ---------- reveal ---------- */
/* The hidden state is scoped to .js, set by the inline script in <head>. Unscoped, anything
   that paints the page without running JavaScript — a link-preview crawler, the thumbnail
   capture behind a shared link, a reader with scripts off — shows these sections blank and
   never reveals them. Same guard the FAQ accordions use below. */
.js .rv{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.js .rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .rv{opacity:1;transform:none;transition:none}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* ---------- buttons ---------- */
.btn{display:inline-block;background:var(--accent);color:var(--on-accent);text-decoration:none;padding:16px 26px;font-family:var(--disp);font-weight:700;font-size:.95rem;line-height:1;white-space:nowrap;border:1px solid var(--accent);transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease),transform .15s var(--ease)}
.btn:hover{background:var(--ink);color:var(--bone);border-color:var(--ink)}
.btn:active{transform:translateY(1px)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn-ghost:hover{background:var(--ink);color:var(--bone)}
.btn-sm{padding:12px 18px;font-size:.88rem}
.contact .btn:hover,.callbar .cb-book:hover{background:var(--bone);color:var(--ink);border-color:var(--bone)}

/* ---------- brand ---------- */
.brand{display:inline-flex;align-items:baseline;gap:9px;text-decoration:none;color:inherit;line-height:1}
.brand-mark{display:inline-block;width:.62em;height:.62em;background:var(--accent);transform:translateY(-.02em)}
.brand b{font-family:var(--disp);font-weight:900;font-size:1.45rem;letter-spacing:-0.04em}
.brand span{font-family:var(--mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--slate)}
/* v2 brand: her wordmark, rebuilt */
:root{--logo-halo:#FFFFFF}
.brand-word{display:none}
.rw{font-family:"Archivo",system-ui,sans-serif;font-weight:900;font-variation-settings:"wdth" 125;font-size:290px}
[data-theme="blue"] .brand{flex-direction:column;align-items:flex-start;gap:3px}
[data-theme="blue"] .brand-mark,[data-theme="blue"] .brand b{display:none}
[data-theme="blue"] .brand-word{display:block;height:2.6em;width:auto}
[data-theme="blue"] .brand span{font-family:"Archivo",system-ui,sans-serif;font-weight:600;font-size:.6rem;letter-spacing:.235em;padding-left:.15em}
[data-theme="blue"] .foot{--logo-halo:#ECEDE8}
[data-theme="blue"] .foot .brand-word{height:3.1em}
/* Her full lockup needs width before the service labels read, so it appears on wider
   screens only; narrow screens keep the wordmark instead. */
.foot-logo{display:none;margin-bottom:clamp(40px,5vw,64px)}
.foot-logo a{display:block;max-width:640px;margin:0 auto}
.foot-logo img{width:100%;height:auto;border-radius:14px}
@media (min-width:760px){
  .foot-logo{display:block}
  [data-theme="blue"] .foot-brand .brand{display:none}
  [data-theme="blue"] .foot-tag{margin-top:0}
}
.foot h4.foot-follow{margin-top:var(--s5)}
[data-theme="blue"] .page-home .nav:not(.scrolled):not(.open) .brand{opacity:0;pointer-events:none;transition:opacity .3s var(--ease)}
@media (max-width:640px){.foot-logo img{max-width:100%}}

/* social links */
.social{list-style:none;display:flex;flex-direction:column;gap:10px}
.social a{display:inline-flex;align-items:center;gap:10px;text-decoration:none}
.social svg{width:18px;height:18px;flex:0 0 auto}
.c-meta .social a{color:var(--bone)}

/* ---------- nav ---------- */
.nav{position:fixed;inset:0 0 auto 0;z-index:60;height:var(--nav-h);display:flex;align-items:center;color:var(--bone);border-bottom:1px solid transparent;transition:background .35s var(--ease),border-color .35s var(--ease),color .35s var(--ease)}
.nav .brand span{color:var(--bone-2)}
.nav:not(.scrolled):not(.open) .brand span{color:var(--bone)}
.nav.scrolled,.nav.open{background:rgba(237,239,236,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-color:var(--line);color:var(--ink)}
.nav.scrolled .brand span,.nav.open .brand span{color:var(--slate)}
.nav-wrap{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--s5)}
.nav-links ul{display:flex;gap:26px;list-style:none}
.nav-links a{text-decoration:none;font-family:var(--disp);font-weight:600;font-size:.9rem;position:relative;padding:6px 0}
.nav-links a::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--accent);transition:width .3s var(--ease)}
.nav-links a:hover::after,.nav-links a[aria-current]::after{width:100%}
.nav-cta{display:flex;align-items:center;gap:var(--s4)}
.nav-phone{font-family:var(--mono);font-size:.85rem;text-decoration:none;white-space:nowrap;letter-spacing:.02em}
.menu-btn{display:none;flex-direction:column;gap:5px;padding:10px;margin-right:-10px}
.menu-btn span{display:block;width:22px;height:2px;background:currentColor;transition:transform .3s var(--ease),opacity .2s}
.nav.open .menu-btn span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav.open .menu-btn span:nth-child(2){opacity:0}
.nav.open .menu-btn span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.mobile-menu{display:none}
@media (max-width:1040px){
  .nav-links{display:none}
  .nav-phone{display:none}
}
@media (max-width:760px){
  .nav .btn{display:none}
  .menu-btn{display:flex}
  .mobile-menu{position:fixed;top:var(--nav-h);left:0;right:0;z-index:55;background:var(--concrete);border-bottom:1px solid var(--line);padding:8px var(--gutter) 24px;display:none;flex-direction:column}
  .nav.open + .mobile-menu{display:flex}
  .mobile-menu a{display:block;padding:15px 0;text-decoration:none;font-family:var(--disp);font-size:1.15rem;font-weight:700;border-bottom:1px solid var(--line)}
  .mobile-menu .mm-cta{color:var(--accent-txt)}
  .mobile-menu .mm-phone{font-family:var(--mono);font-size:.95rem;font-weight:500;border:none}
}
@media (min-width:761px) and (max-width:1040px){
  .menu-btn{display:flex}
  .mobile-menu{position:fixed;top:var(--nav-h);left:0;right:0;z-index:55;background:var(--concrete);border-bottom:1px solid var(--line);padding:8px var(--gutter) 24px;display:none;flex-direction:column}
  .nav.open + .mobile-menu{display:flex}
  .mobile-menu a{display:block;padding:14px 0;text-decoration:none;font-family:var(--disp);font-size:1.1rem;font-weight:700;border-bottom:1px solid var(--line)}
  .mobile-menu .mm-cta,.mobile-menu .mm-phone{display:none}
}

/* ---------- hero ---------- */
main>section.hero{padding:0;position:relative;min-height:min(100svh,880px);display:flex;align-items:flex-end;overflow:hidden;background:var(--ink);color:var(--bone)}
.hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.9)}
.btn-ghost-light{color:var(--bone);border-color:rgba(236,237,232,.55)}
.btn-ghost-light:hover{background:var(--bone);color:var(--ink);border-color:var(--bone)}
.hero-scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(to top,rgba(20,23,27,.86) 0%,rgba(20,23,27,.50) 45%,rgba(20,23,27,.28) 100%)}
.hero-wrap{position:relative;z-index:2;width:100%;display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s6);padding-top:calc(var(--nav-h) + 40px);padding-bottom:clamp(40px,6vw,72px)}
.hero-copy{max-width:780px}
.hero .eyebrow{color:var(--accent-ink)}
[data-theme="blue"] .hero .eyebrow{color:#DAE4FF}
.hero h1{color:var(--bone);margin-bottom:var(--s5)}
.hero-sub{font-size:1.2rem;font-weight:500;line-height:1.45;max-width:46ch;color:rgba(236,237,232,.88);margin-bottom:var(--s6)}
.hero-ctas{display:flex;align-items:center;gap:var(--s5);flex-wrap:wrap}
.hero-phone,.phead-phone{font-family:var(--mono);font-size:.95rem;text-decoration:none;letter-spacing:.02em;white-space:nowrap}
.hero-phone span,.phead-phone span{color:var(--bone-2);margin-right:4px}
.phead-phone span{color:var(--slate)}
.hero-phone:hover,.phead-phone:hover{text-decoration:underline;text-decoration-color:var(--accent-ink);text-underline-offset:4px}
/* branded hero: her lockup leads, the copy centres beneath it */
.hero-logo{display:none}
[data-theme="blue"] .hero-logo{display:block;width:min(340px,86%);margin:0 auto clamp(18px,2.4vw,30px)}
[data-theme="blue"] .hero-logo img{width:100%;height:auto;display:block}
[data-theme="blue"] .hero-branded{justify-content:center}
[data-theme="blue"] .hero-branded .hero-copy{max-width:820px;text-align:center;margin:0 auto}
[data-theme="blue"] .hero-branded .hero-sub{margin-left:auto;margin-right:auto}
[data-theme="blue"] .hero-branded .hero-ctas{justify-content:center}
[data-theme="blue"] .hero-branded .hero-stamp{display:none}
[data-theme="blue"] .hero-branded h1{max-width:none}
/* her lockup carries its own dark field, so the hero photo sits back behind it */
[data-theme="blue"] .hero-scrim{background:linear-gradient(to bottom,rgba(7,20,50,.97) 0%,rgba(7,20,50,.94) 46%,rgba(7,20,50,.80) 78%,rgba(7,20,50,.88) 100%)}
@media (min-width:760px){
  /* The lockup gets whatever height the copy does not use, measured by flex rather than
     guessed. A hardcoded reserve was wrong: on a 1366x768 laptop the usable viewport is
     about 600px, and a 340px reserve left the logo at ~550px while wide screens got
     1200px. Flex reads the real copy height, so the logo is as large as each screen
     allows and the hero still ends at the fold. */
  [data-theme="blue"] .hero{min-height:100svh;align-items:stretch}
  /* the 1200px content wrap is what leaves dead air on wide screens, so the hero opts out */
  [data-theme="blue"] .hero-branded{max-width:min(1560px,96vw);height:100svh;display:flex;flex-direction:column;justify-content:center;padding-top:calc(var(--nav-h) + clamp(8px,1.2vh,20px));padding-bottom:clamp(16px,2.4vh,40px)}
  [data-theme="blue"] .hero-branded .hero-copy{max-width:100%;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;justify-content:center}
  [data-theme="blue"] .hero-branded .eyebrow{display:none}
  [data-theme="blue"] .hero-logo{flex:1 1 auto;min-height:0;width:100%;max-width:min(1500px,94vw);display:flex;align-items:center;justify-content:center;margin:0 auto clamp(8px,1.4vh,22px)}
  [data-theme="blue"] .hero-logo img{height:100%;width:auto;max-width:100%;object-fit:contain;display:block}
  [data-theme="blue"] .hero-branded h1{flex:0 0 auto;font-size:clamp(1.8rem,min(3.7vw,5vh),3.4rem);margin-bottom:clamp(8px,1.4vh,18px)}
  [data-theme="blue"] .hero-branded .hero-sub{flex:0 0 auto;font-size:clamp(.98rem,min(1.4vw,2vh),1.16rem);max-width:64ch;margin-bottom:clamp(14px,2.2vh,28px)}
  [data-theme="blue"] .hero-branded .hero-ctas{flex:0 0 auto}
}

/* her profiles, tucked into the hero corner */
.hero-social{position:absolute;z-index:3;right:clamp(20px,4vw,56px);bottom:clamp(26px,4vw,48px);list-style:none;display:flex;flex-direction:column;gap:11px;align-items:flex-end;margin:0}
.hero-social a{display:inline-flex;align-items:center;gap:9px;text-decoration:none;font-family:var(--mono);font-size:.76rem;letter-spacing:.03em;color:var(--bone-2);transition:color .25s var(--ease)}
.hero-social a:hover{color:var(--bone)}
.hero-social svg{width:17px;height:17px;flex:0 0 auto}
/* Between 760 and 1040 the hero copy runs the full width of the wrap and the block has
   nowhere to sit, so it stays hidden there. On phones the copy is centred and narrow, and
   the band between the buttons and the sticky call bar is free, so it comes back in the
   same bottom corner it occupies on desktop. */
@media (min-width:761px) and (max-width:1040px){.hero-social{display:none}}
@media (max-width:760px){
  /* One row, not two: a 667px-tall phone has about 30px between the last button and the
     sticky call bar, and a stacked block needs 63. Laid out in a row it fits in the band
     the wrap already reserves, so nothing gets pushed below the fold. */
  .hero-social{flex-direction:row;align-items:center;right:var(--gutter);bottom:75px;gap:16px}
  .hero-social a{font-size:.7rem;gap:7px}
  .hero-social svg{width:15px;height:15px}
  .hero-branded .hero-sub{margin-bottom:24px}
  .hero-branded .hero-ctas{gap:16px}
}

.hero-stamp{font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--bone-2);border-top:1px solid rgba(236,237,232,.28);padding-top:10px;max-width:22ch;text-align:right;margin:0}
@media (max-width:760px){.hero-stamp{display:none}.hero-wrap{padding-bottom:116px}.hero .eyebrow{font-size:.66rem;letter-spacing:.08em}.hero-sub{font-size:1.1rem}}


/* ---------- strip ---------- */
main>section.strip{padding:0;border-bottom:1px solid var(--line)}
.strip-list{list-style:none;display:grid;grid-template-columns:repeat(4,1fr)}
.strip-list li{padding:26px 28px 26px 0;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:6px}
.strip-list li+li{padding-left:28px}
.strip-list li:last-child{border-right:none}
.strip-label{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-txt)}
.strip-list strong{font-family:var(--disp);font-weight:700;font-size:1.02rem;letter-spacing:-0.01em;line-height:1.2}
.strip-sub{font-size:.92rem;color:var(--slate)}
@media (max-width:900px){.strip-list{grid-template-columns:1fr 1fr}.strip-list li{border-right:none;border-bottom:1px solid var(--line);padding-left:0!important}.strip-list li:nth-child(odd){border-right:1px solid var(--line);padding-right:20px}.strip-list li:nth-child(even){padding-left:20px!important}.strip-list li:nth-last-child(-n+2){border-bottom:none}}
@media (max-width:520px){.strip-list{grid-template-columns:1fr}.strip-list li{border-right:none!important;padding:18px 0!important;border-bottom:1px solid var(--line)}.strip-list li:last-child{border-bottom:none}}

/* ---------- numbered facility rows ---------- */
.num-list{border-top:1px solid var(--ink)}
.num-row{display:grid;grid-template-columns:72px 1fr 220px 120px;gap:var(--s6);align-items:center;padding:30px 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}
.num{font-family:var(--mono);font-size:.85rem;letter-spacing:.06em;color:var(--accent-txt);padding-top:6px;align-self:start}
.num-body h3{margin-bottom:8px;transition:text-decoration-color .25s}
.num-body p{color:var(--slate);max-width:48ch}
.num-photo img{aspect-ratio:4/3;object-fit:cover;width:100%;filter:saturate(.92)}
.num-go{font-family:var(--disp);font-weight:700;font-size:.85rem;justify-self:end;white-space:nowrap;position:relative;padding-right:22px}
.num-go::after{content:"";position:absolute;right:0;top:50%;width:12px;height:12px;border-top:2px solid var(--ink);border-right:2px solid var(--ink);transform:translateY(-50%) rotate(45deg);transition:transform .25s var(--ease)}
.num-row:hover .num-go::after{transform:translate(4px,-50%) rotate(45deg)}
.num-row:hover h3{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:3px;text-underline-offset:5px}
@media (max-width:900px){.num-row{grid-template-columns:56px 1fr 150px}.num-go{display:none}}
@media (max-width:600px){.num-row{grid-template-columns:44px 1fr;gap:var(--s4)}.num-photo{grid-column:2;margin-top:6px}.num-photo img{aspect-ratio:16/9}}

/* ---------- the signature: one night at your building ---------- */
.shift-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(40px,7vw,110px);align-items:start}
.shift-intro{position:sticky;top:calc(var(--nav-h) + 32px)}
.shift-intro .sec-head{margin-bottom:var(--s5)}
.shift-note{font-family:var(--mono);font-size:.74rem;letter-spacing:.04em;color:var(--slate);max-width:40ch;line-height:1.6;border-top:1px solid var(--line);padding-top:var(--s4)}
.shift-log{list-style:none;position:relative;padding-left:44px;margin:0}
.shift-log::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line)}
.shift-fill{position:absolute;left:5px;top:6px;width:2px;height:0;background:var(--accent);transition:height .25s linear}
.stop{position:relative;padding-bottom:clamp(40px,5vw,64px)}
.stop::before{content:"";position:absolute;left:-44px;top:8px;width:12px;height:12px;background:var(--concrete);border:2px solid var(--line);transition:background .3s var(--ease),border-color .3s var(--ease),transform .3s var(--ease)}
.stop.lit::before{background:var(--accent);border-color:var(--accent);transform:scale(1.25)}
.stop time{display:block;font-family:var(--mono);font-weight:500;font-size:.8rem;letter-spacing:.08em;color:var(--accent-txt);margin-bottom:8px}
.stop h3{font-size:1.5rem;margin-bottom:8px}
.stop p{color:var(--slate);max-width:46ch}
.stop figure{margin-top:var(--s5);max-width:520px}
.stop figure img{aspect-ratio:3/2;object-fit:cover;width:100%}
.stop figcaption,.pgrid figcaption,.split-photo figcaption,.phead-photo figcaption{font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--slate);margin-top:10px}
.stop.final{padding-bottom:0}
.stop.final h3{font-size:clamp(1.9rem,3.2vw,2.5rem)}
.stop.final::before{background:var(--ink);border-color:var(--ink)}
.stop.final.lit::before{background:var(--accent);border-color:var(--accent)}
@media (max-width:860px){.shift-grid{grid-template-columns:1fr}.shift-intro{position:static}}

/* ---------- what happens when ---------- */
.ww-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,4vw,56px) clamp(32px,5vw,80px)}
.ww-item{border-top:2px solid var(--ink);padding-top:var(--s4)}
.ww-item h3{font-size:1.2rem;margin-bottom:10px}
.ww-item p{color:var(--slate);max-width:44ch}
@media (max-width:640px){.ww-grid{grid-template-columns:1fr}}

/* ---------- photo grid ---------- */
.pgrid{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:clamp(150px,22vw,290px);gap:var(--s4)}
.pgrid figure{margin:0;overflow:hidden;position:relative}
.pgrid figure img{width:100%;height:100%;object-fit:cover;filter:saturate(.92);transition:transform .8s var(--ease)}
.pgrid figure:hover img{transform:scale(1.03)}
.pgrid figcaption{position:absolute;left:0;right:0;bottom:0;margin:0;padding:10px 12px;background:rgba(20,23,27,.72);color:var(--bone-2)}
.p-std{grid-column:span 2}
.p-wide{grid-column:span 4}
.p-tall{grid-column:span 2;grid-row:span 2}
@media (max-width:760px){.pgrid{grid-template-columns:1fr 1fr;grid-auto-rows:clamp(150px,34vw,220px)}.p-std,.p-wide,.p-tall{grid-column:span 1;grid-row:span 1}.p-wide{grid-column:span 2}}

/* ---------- steps ---------- */
.steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:0 clamp(24px,4vw,56px);border-top:1px solid var(--ink)}
.step{padding:28px 0 40px;border-bottom:1px solid var(--line)}
.step-n{display:block;font-family:var(--mono);font-size:.8rem;letter-spacing:.08em;color:var(--accent-txt);margin-bottom:var(--s5);position:relative;padding-left:20px}
.step-n::before{content:"";position:absolute;left:0;top:2px;width:10px;height:10px;background:var(--accent)}
.step h3{margin-bottom:10px;font-size:1.25rem}
.step p{color:var(--slate);font-size:1rem}
@media (max-width:860px){.steps{grid-template-columns:1fr 1fr}}
@media (max-width:540px){.steps{grid-template-columns:1fr}.step{padding:22px 0 26px}}

/* ---------- scope table ---------- */
.scope{width:100%;border-collapse:collapse;border-top:1px solid var(--ink)}
.scope th,.scope td{text-align:left;vertical-align:top;padding:16px 20px 16px 0;border-bottom:1px solid var(--line)}
.scope thead th{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--slate);font-weight:500;padding:12px 20px 12px 0}
.scope tbody th{font-family:var(--disp);font-weight:700;font-size:1.02rem;letter-spacing:-0.01em;width:22%;border-bottom:1px solid var(--line)}
.scope tbody tr:last-child th,.scope tbody tr:last-child td{border-bottom:1px solid var(--ink)}
.scope tbody+tbody tr:first-child th,.scope tbody+tbody tr:first-child td{border-top:none}
.scope td.freq{font-family:var(--mono);font-size:.78rem;letter-spacing:.04em;white-space:nowrap;color:var(--accent-txt);width:14%}
.scope-note{font-family:var(--mono);font-size:.74rem;letter-spacing:.04em;color:var(--slate);margin-top:var(--s4);max-width:60ch;line-height:1.6}
@media (max-width:640px){.scope thead{display:none}.scope tbody th{display:block;width:auto;padding-bottom:6px;border-bottom:none;padding-top:22px}.scope tbody tr{display:block}.scope td{display:block;padding:4px 0}.scope td.freq{padding-bottom:16px}}

/* ---------- faq ---------- */
.faq-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(32px,6vw,96px);align-items:start}
.faq-grid .sec-head{position:sticky;top:calc(var(--nav-h) + 32px);margin-bottom:0}
.faq-list{border-top:1px solid var(--ink)}
.faq-item{border-bottom:1px solid var(--line)}
.faq-item h3{font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit}
.faq-q{width:100%;display:flex;justify-content:space-between;align-items:center;gap:var(--s5);padding:22px 0;text-align:left;font-family:var(--disp);font-weight:700;font-size:1.12rem;letter-spacing:-0.01em;line-height:1.25}
.faq-x{position:relative;flex:0 0 16px;height:16px}
.faq-x::before,.faq-x::after{content:"";position:absolute;background:var(--ink);left:0;top:7px;width:16px;height:2px;transition:transform .3s var(--ease)}
.faq-x::after{transform:rotate(90deg)}
.faq-item.open .faq-x::after{transform:rotate(0)}
.js .faq-a{height:0;overflow:hidden;transition:height .35s var(--ease)}
.faq-a p{color:var(--slate);padding-bottom:24px;max-width:56ch}
@media (max-width:860px){.faq-grid{grid-template-columns:1fr}.faq-grid .sec-head{position:static;margin-bottom:var(--s5)}}

/* ---------- split ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,96px);align-items:center}
.split.flip .split-copy{order:2}
.split-copy h2{margin-bottom:var(--s5)}
.split-copy p{margin-bottom:var(--s4);max-width:52ch}
.split-copy p:last-child{margin-bottom:0}
.split-photo{margin:0}
.split-photo img{width:100%;aspect-ratio:4/3;object-fit:cover;filter:saturate(.92)}
.marks{list-style:none;margin:var(--s5) 0 0;display:flex;flex-direction:column;gap:10px}
.marks li{position:relative;padding-left:22px;max-width:52ch}
.marks li::before{content:"";position:absolute;left:0;top:.55em;width:9px;height:9px;background:var(--accent)}
.split-cta{margin-top:var(--s6)}
@media (max-width:820px){.split{grid-template-columns:1fr}.split.flip .split-copy{order:0}}

/* ---------- prose ---------- */
.prose-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:clamp(32px,6vw,96px);align-items:start}
.prose h2{margin-bottom:var(--s5)}
.prose p{margin-bottom:var(--s4)}
.prose ul{margin:0 0 var(--s4) 0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.prose ul li{position:relative;padding-left:22px;max-width:62ch}
.prose ul li::before{content:"";position:absolute;left:0;top:.55em;width:9px;height:9px;background:var(--accent)}
.prose h3{margin:var(--s6) 0 var(--s3)}
.side-ledger{border-top:1px solid var(--ink);position:sticky;top:calc(var(--nav-h) + 32px)}
.side-ledger div{display:flex;flex-direction:column;gap:4px;padding:16px 0;border-bottom:1px solid var(--line)}
.side-ledger dt{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-txt)}
.side-ledger dd{font-family:var(--disp);font-weight:700;font-size:1.02rem;letter-spacing:-0.01em}
@media (max-width:820px){.prose-grid{grid-template-columns:1fr}.side-ledger{position:static}}

/* ---------- page head ---------- */
main>section.phead{padding:calc(var(--nav-h) + clamp(48px,7vw,96px)) 0 clamp(48px,6vw,80px);border-bottom:1px solid var(--line)}
.phead-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(32px,6vw,96px);align-items:end}
.phead h1{font-size:clamp(2.3rem,5vw,3.8rem);margin-bottom:var(--s5)}
.phead .lead{margin-bottom:var(--s6)}
.phead-photo{margin:0}
.phead-photo img{width:100%;aspect-ratio:5/4;object-fit:cover;filter:saturate(.92)}
.phead.no-photo .phead-grid{grid-template-columns:1fr}
@media (max-width:820px){.phead-grid{grid-template-columns:1fr}.phead-photo img{aspect-ratio:16/10}}

/* ---------- ledger ---------- */
.ledger{border-top:1px solid var(--ink)}
.ledger-row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:var(--s5);padding:20px 0;border-bottom:1px solid var(--line)}
.ledger dt{font-family:var(--disp);font-weight:700;font-size:1.1rem;letter-spacing:-0.01em}
.ledger dd{color:var(--ink);max-width:52ch}
.ledger-note{display:block;font-family:var(--mono);font-size:.72rem;letter-spacing:.04em;color:var(--slate);margin-top:6px}
@media (max-width:600px){.ledger-row{grid-template-columns:1fr;gap:6px}}

/* ---------- areas ---------- */
.areas-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(32px,6vw,96px);align-items:start}
.areas-grid .sec-head{margin-bottom:0}
.areas{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:0 var(--s5);border-top:1px solid var(--ink)}
.areas li{font-family:var(--disp);font-weight:700;font-size:1.05rem;padding:14px 0;border-bottom:1px solid var(--line)}
@media (max-width:860px){.areas-grid{grid-template-columns:1fr}}
@media (max-width:520px){.areas{grid-template-columns:1fr 1fr}}

/* ---------- contact (the one dark block) ---------- */
main>section.contact{background:var(--ink);color:var(--bone);padding:clamp(72px,9vw,128px) 0}
.contact .eyebrow{color:var(--accent-ink)}
.contact .lead{color:var(--bone-2)}
.contact-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(40px,6vw,96px);align-items:start}
.c-phone{display:inline-block;font-family:var(--disp);font-weight:800;font-size:clamp(1.6rem,3vw,2.2rem);letter-spacing:-0.02em;color:var(--accent-ink);text-decoration:none;margin:var(--s2) 0 var(--s6)}
.c-phone:hover{text-decoration:underline;text-underline-offset:6px}
.c-meta{display:grid;grid-template-columns:1fr 1fr;gap:var(--s5) var(--s6);border-top:1px solid var(--ink-line);padding-top:var(--s5);margin-bottom:var(--s6)}
.c-meta h4{color:var(--bone-2);margin-bottom:6px}
.c-meta p{font-size:.98rem;color:var(--bone)}
.c-meta a{text-decoration:none}
.c-meta a:hover{text-decoration:underline;text-decoration-color:var(--accent-ink);text-underline-offset:4px}
.next{list-style:none;border-top:1px solid var(--ink-line);display:flex;flex-direction:column}
.next li{display:grid;grid-template-columns:44px 1fr;gap:var(--s3);padding:14px 0;border-bottom:1px solid var(--ink-line);font-size:1rem;color:var(--bone)}
.next li span{font-family:var(--mono);font-size:.78rem;letter-spacing:.08em;color:var(--accent-ink);padding-top:4px}
.c-form{background:var(--ink-2);padding:clamp(24px,3vw,40px);border:1px solid var(--ink-line);position:relative}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4)}
.field{display:flex;flex-direction:column;gap:7px;margin-bottom:var(--s4)}
.field label{font-family:var(--disp);font-weight:600;font-size:.88rem;color:var(--bone)}
.field label em{font-style:normal;font-weight:400;color:var(--bone-2)}
.field input,.field select,.field textarea{width:100%;background:var(--ink);border:1px solid #3A4048;color:var(--bone);padding:13px 14px;font-family:var(--disp);font-size:1rem;border-radius:0;-webkit-appearance:none;appearance:none;transition:border-color .2s}
.field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M2 5l5 5 5-5' fill='none' stroke='%23ECEDE8' stroke-width='1.6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:40px}
.field textarea{resize:vertical;min-height:88px;font-family:var(--serif)}
.field input::placeholder,.field textarea::placeholder{color:#7C838C}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent-ink);outline:none}
.field .help{font-size:.82rem;color:var(--bone-2)}
.field.err input,.field.err select{border-color:#E4A2A2}
.f-more{margin-bottom:var(--s4);border-top:1px solid var(--ink-line)}
.f-more summary{cursor:pointer;list-style:none;padding:14px 0;font-family:var(--disp);font-weight:600;font-size:.88rem;color:var(--bone);position:relative;padding-left:22px}
.f-more summary::-webkit-details-marker{display:none}
.f-more summary::before,.f-more summary::after{content:"";position:absolute;left:0;top:50%;width:12px;height:2px;background:var(--accent-ink);transform:translateY(-50%)}
.f-more summary::after{transform:translateY(-50%) rotate(90deg);transition:transform .25s var(--ease)}
.f-more[open] summary::after{transform:translateY(-50%) rotate(0)}
.f-more summary em{font-style:normal;font-weight:400;color:var(--bone-2)}
.f-more[open] summary{margin-bottom:var(--s3)}
.c-form .btn{width:100%;text-align:center;margin-top:var(--s2)}
.form-note a{color:var(--bone);text-decoration:underline;text-decoration-color:var(--accent-ink);text-underline-offset:3px}
.form-note{font-size:.88rem;color:var(--bone-2);margin-top:var(--s3);max-width:none}
@media (max-width:860px){.contact-grid{grid-template-columns:1fr}}
@media (max-width:520px){.f-row{grid-template-columns:1fr}.c-meta{grid-template-columns:1fr}}

/* ---------- footer ---------- */
.foot{background:var(--ink);color:var(--bone-2);border-top:1px solid var(--ink-line);padding:clamp(48px,6vw,80px) 0 0;font-size:.95rem}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:var(--s6)}
.foot .brand{color:var(--bone)}
.foot .brand span{color:var(--bone-2)}
.foot-tag{font-family:var(--disp);font-weight:700;color:var(--bone);margin:var(--s5) 0 var(--s3);font-size:1rem;letter-spacing:-0.01em}
.foot-line{max-width:34ch;font-size:.92rem}
.foot h4{color:var(--bone);margin-bottom:var(--s4)}
.foot ul{list-style:none;display:flex;flex-direction:column;gap:9px}
.foot a{text-decoration:none}
.foot a:hover{text-decoration:underline;text-decoration-color:var(--accent-ink);text-underline-offset:4px}
.foot ul.foot-areas{display:grid;grid-template-columns:1fr 1fr;gap:9px var(--s4)}
.foot-bottom{display:flex;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;border-top:1px solid var(--ink-line);margin-top:clamp(40px,5vw,64px);padding-top:var(--s5);padding-bottom:var(--s6);font-size:.85rem}
@media (max-width:900px){.foot-grid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.foot-grid{grid-template-columns:1fr}}

/* ---------- sticky mobile call bar ---------- */
.callbar{display:none}
@media (max-width:760px){
  body{padding-bottom:112px}   /* clears the sticky call bar, incl. the footer legal line */
  .callbar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:grid;grid-template-columns:1fr 2fr;background:var(--ink);border-top:1px solid var(--ink-line)}
  .callbar a{display:flex;align-items:center;justify-content:center;height:60px;text-decoration:none;font-family:var(--disp);font-weight:700;font-size:.95rem}
  .cb-call{color:var(--bone);border-right:1px solid var(--ink-line)}
  .cb-book{background:var(--accent);color:var(--on-accent);border:1px solid var(--accent)}
}

/* ---------- plain pages ---------- */
main>section.plain{padding-top:calc(var(--nav-h) + clamp(48px,7vw,96px));min-height:60vh}
.plain h1{margin-bottom:var(--s5)}
.plain p{margin-bottom:var(--s4)}
.plain .btn{margin-top:var(--s3)}
