@font-face{font-family:"Instrument Serif";src:url("/fonts/instrument-serif.5eb09b5a.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Serif";src:url("/fonts/instrument-serif-italic.5a51946d.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Inter Tight";src:url("/fonts/inter-tight.77fefe8c.woff2") format("woff2");font-weight:400 700;font-style:normal;font-display:swap}

/* metric-matched fallbacks so the swap does not shift layout */
@font-face{font-family:"Instrument Serif Fallback";src:local("Times New Roman"),local("Times");size-adjust:83%;ascent-override:104%;descent-override:30%;line-gap-override:0%}
@font-face{font-family:"Instrument Serif Fallback";font-style:italic;src:local("Times New Roman Italic"),local("TimesNewRomanPS-ItalicMT"),local("Times Italic");size-adjust:88%;ascent-override:104%;descent-override:30%;line-gap-override:0%}
@font-face{font-family:"Inter Tight Fallback";src:local("Arial"),local("Helvetica");size-adjust:96%;ascent-override:96%;descent-override:24%;line-gap-override:0%}

:root{
  --ink:#0b0b0c; --ink-2:#141416; --ink-3:#1d1d20;
  --paper:#f3efe8; --paper-dim:rgba(243,239,232,.78); --line:rgba(243,239,232,.14);
  --accent:rgb(200 169 110); /* sampled at runtime from the image in view */
  --font-display:"Instrument Serif","Instrument Serif Fallback",Georgia,"Times New Roman",serif;
  --font-ui:"Inter Tight","Inter Tight Fallback",system-ui,-apple-system,"Segoe UI",sans-serif;
  --step--1:clamp(.9rem,.88rem + .12vw,.98rem);
  --label:clamp(.76rem,.74rem + .1vw,.82rem);
  --step-0:clamp(1rem,.96rem + .2vw,1.125rem);
  --step-1:clamp(1.25rem,1.1rem + .7vw,1.65rem);
  --step-3:clamp(2.2rem,1.6rem + 3vw,4rem);
  --step-5:clamp(3.4rem,1.6rem + 9vw,9.5rem);
  --gutter:clamp(1.1rem,4vw,3rem);
  --max:1480px;
  --radius:2px;
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-wipe:cubic-bezier(.7,0,.2,1);
  --dur:.8s;
}

*,*::before,*::after{box-sizing:border-box}
html{color-scheme:dark;-webkit-text-size-adjust:100%;scroll-behavior:auto}
body{margin:0;background:var(--ink);color:var(--paper);font:400 var(--step-0)/1.55 var(--font-ui);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .6s}
img,canvas,video{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration-color:color-mix(in srgb,var(--accent) 70%,transparent);text-underline-offset:.2em}
h1,h2,h3{font:400 var(--step-3)/.98 var(--font-display);letter-spacing:-.015em;margin:0 0 .4em;text-wrap:balance}
h1{font-size:var(--step-5);line-height:.88;letter-spacing:-.03em}
em{font-family:var(--font-display);font-style:italic;color:var(--accent)}
p{margin:0 0 1em;max-width:62ch;color:var(--paper-dim)}
.kicker{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin:0 0 1.2rem}
.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}
section{padding-block:clamp(4rem,10vw,9rem)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:var(--gutter);top:-4rem;background:var(--paper);color:var(--ink);padding:.6rem 1rem;z-index:100}
.skip:focus{top:1rem}

/* film grain: one fixed layer, tiny SVG noise, no JS */
body::after{content:"";position:fixed;inset:-50%;z-index:90;pointer-events:none;opacity:.07;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@media (prefers-reduced-motion:no-preference){body::after{animation:grain 1s steps(6) infinite}}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-4%,3%)}40%{transform:translate(3%,-5%)}60%{transform:translate(-5%,-2%)}80%{transform:translate(4%,4%)}100%{transform:translate(0,0)}}
@media (prefers-reduced-motion:reduce){body::after{opacity:.04}}

/* buttons */
.btn{--mx:0px;--my:0px;display:inline-flex;align-items:center;gap:.6rem;min-height:48px;padding:.85rem 1.6rem;border:1px solid var(--paper);border-radius:999px;background:transparent;color:var(--paper);font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;cursor:pointer;transform:translate(var(--mx),var(--my));transition:transform .35s var(--ease-out),background .25s,color .25s,border-color .25s}
.btn:hover{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.btn--solid{background:var(--paper);color:var(--ink)}
.btn[aria-disabled="true"]{opacity:.45;pointer-events:none}

/* Motion layer. Everything here is gated on no-preference. Content is visible by default. */
@media (prefers-reduced-motion:no-preference){

  /* word-up headlines (JS splits words; .is-in set by IntersectionObserver) */
  .js-motion [data-reveal=words] .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}
  .js-motion [data-reveal=words] .w>span{display:inline-block;transform:translateY(110%);transition:transform var(--dur) var(--ease-out);transition-delay:calc(var(--i) * 55ms)}
  .js-motion [data-reveal=words].is-in .w>span{transform:none}

  /* fallback state (no animation-timeline): classes from IntersectionObserver */
  .js-motion [data-reveal=fade]{opacity:0;transform:translateY(24px);transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out)}
  .js-motion [data-reveal=wipe]{clip-path:inset(0 100% 0 0);transition:clip-path 1.1s var(--ease-wipe)}
  .js-motion [data-reveal].is-in:not([data-reveal=words]){opacity:1;transform:none;clip-path:inset(0)}

  /* anything revealed by JS because it started in view skips the scroll timeline */
  .js-motion [data-reveal].is-in:not([data-reveal=words]){animation:none!important;opacity:1;transform:none;clip-path:none}

  /* scrub: words light up with scroll */
  [data-scrub] .w{opacity:.55;transition:opacity .35s}
  [data-scrub] .w.is-lit{opacity:1}

  /* native scroll-driven path */
  @supports (animation-timeline:view()){
    .js-motion [data-reveal=fade]{transition:none;animation:rise linear both;animation-timeline:view();animation-range:entry 0% entry 55%}
    .js-motion [data-reveal=wipe]{transition:none;animation:wipe linear both;animation-timeline:view();animation-range:entry 0% entry 70%}

    /* "develop" reveal: dark and desaturated to bright as the frame enters */
    .develop img,img.develop{animation:develop linear both;animation-timeline:view();animation-range:entry 5% cover 38%}

    /* page progress bar */
    .progress{position:fixed;inset:0 0 auto 0;height:2px;background:var(--accent);transform-origin:0 50%;z-index:95;animation:grow linear both;animation-timeline:scroll(root block)}
  }

  /* View Transitions: thumb to hero, menu sheet */
  @supports (view-transition-name:none){
    ::view-transition-group(hero){animation-duration:.55s;animation-timing-function:var(--ease-out)}
    ::view-transition-old(hero),::view-transition-new(hero){height:100%;object-fit:cover;mix-blend-mode:normal}
    html[data-vt=menu]::view-transition-old(root){animation:fade-out .3s both}
    html[data-vt=menu]::view-transition-new(root){animation:fade-in .5s var(--ease-out) both}
  }
}
@keyframes rise{from{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}
@keyframes wipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
@keyframes develop{from{filter:brightness(.18) saturate(.15) contrast(1.15)}to{filter:none}}
@keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes fade-in{from{opacity:0}}
@keyframes fade-out{to{opacity:0}}
@keyframes frame-in{from{opacity:0;transform:translateY(18px) scale(.96)}}

/* marquee (local proof strip) */
@media (prefers-reduced-motion:no-preference){.marquee__track{animation:marquee 40s linear infinite}.marquee:hover .marquee__track,.marquee:focus-within .marquee__track{animation-play-state:paused}}
@keyframes marquee{to{transform:translateX(-50%)}}

/* hero film */
.film{position:relative;min-height:100svh;display:grid;align-items:end;overflow:hidden;background:var(--ink-2)}
.film__poster,.film canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.film canvas{opacity:0}
.film canvas[data-ready]{opacity:1}
@media (prefers-reduced-motion:no-preference){.film canvas{transition:opacity 1s}}
.film::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--ink) 4%,rgba(11,11,12,.15) 55%,rgba(11,11,12,.4))}
.film__copy{position:relative;z-index:2;padding:0 var(--gutter) clamp(3rem,8vw,6rem)}

/* grid */
.grid{list-style:none;margin:0;padding:0;display:grid;gap:clamp(.5rem,1.2vw,1rem);grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}
.grid a,.reel a{display:block;overflow:hidden;background:var(--ink-3);border-radius:var(--radius)}
.grid img{width:100%;aspect-ratio:4/5;object-fit:cover}
@media (prefers-reduced-motion:no-preference){.grid img{transition:transform 1.1s var(--ease-out)}.grid a:hover img{transform:scale(1.04)}}

/* reel: native scroll-snap by default, pinned at >= 900px when JS sets data-pinned */
.reel{padding:0}
.reel__pin{padding-block:clamp(3rem,6vw,6rem)}
.reel ul{list-style:none;margin:0;padding:0 var(--gutter);display:flex;gap:clamp(.75rem,2vw,1.5rem);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.reel ul::-webkit-scrollbar{display:none}
.reel li{flex:0 0 min(78vw,420px);scroll-snap-align:center}
.reel img{width:100%;aspect-ratio:3/4;object-fit:cover}
@media (min-width:900px){
  .reel[data-pinned]{height:var(--reel-h,200vh)}
  .reel[data-pinned] .reel__pin{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;justify-content:center;overflow:hidden;padding-block:0}
  .reel[data-pinned] ul{overflow:visible;scroll-snap-type:none;width:max-content;will-change:transform}
  .reel[data-pinned] li{flex-basis:clamp(300px,28vw,460px)}
}

/* lightbox */
.lb{position:fixed;inset:0;z-index:80;background:rgba(11,11,12,.96);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:3.5rem var(--gutter) 3rem;touch-action:pan-y}
.lb[hidden]{display:none}
.lb__f{margin:0;display:grid;justify-items:center;gap:.8rem;min-width:0}
.lb__f img{max-height:78svh;width:auto;max-width:100%;object-fit:contain}
.lb figcaption{font-size:var(--step--1);color:var(--paper-dim)}
.lb button{background:none;border:1px solid var(--line);color:var(--paper);min-width:48px;min-height:48px;border-radius:999px;font:inherit;cursor:pointer}
.lb button:hover{border-color:var(--accent);color:var(--accent)}
.lb__x{position:absolute;top:1rem;right:var(--gutter);padding:0 1.2rem}
.lb__c{position:absolute;bottom:1rem;left:0;right:0;text-align:center;margin:0 auto;font-size:var(--step--1)}
.lb-open{overflow:hidden}
@media (max-width:640px){.lb{grid-template-columns:1fr}.lb__p,.lb__n{display:none}}

/* contact-sheet menu */
.menu-open .book-pill{visibility:hidden}

/* quote + matcher */
.panel{border:1px solid var(--line);padding:clamp(1.2rem,3vw,2.2rem);background:var(--ink-2)}
.panel fieldset{border:0;padding:0;margin:0 0 1.6rem}
.panel legend{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:.8rem;padding:0}
.chips{display:flex;flex-wrap:wrap;gap:.5rem}
.chip{position:relative}
.chip input{position:absolute;opacity:0;inset:0;cursor:pointer}
.chip span{display:inline-flex;align-items:center;min-height:44px;padding:.5rem 1.1rem;border:1px solid var(--line);border-radius:999px;font-size:var(--step--1);letter-spacing:.06em;transition:background .2s,color .2s,border-color .2s}
.chip input:checked+span{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.chip input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}
.panel input[type=number]{background:var(--ink);color:var(--paper);border:1px solid var(--line);padding:.7rem 1rem;min-height:44px;width:7rem;font:inherit}
.total{font:400 var(--step-5)/1 var(--font-display);margin:.2em 0}
.lines{list-style:none;padding:0;margin:0 0 1.4rem;color:var(--paper-dim);font-size:var(--step--1)}
.matcher [data-step] h3{font-size:var(--step-1)}
.matcher [hidden]{display:none}
.dots{display:flex;gap:.4rem;margin-bottom:1.2rem}
.dots i{width:2rem;height:2px;background:var(--line)}
.matcher[data-progress="1"] .dots i:nth-child(-n+1),.matcher[data-progress="2"] .dots i:nth-child(-n+2),.matcher[data-progress="3"] .dots i{background:var(--accent)}

/* local proof marquee */
.marquee{overflow:hidden;border-block:1px solid var(--line);padding-block:1.2rem}
.marquee__track{display:flex;gap:3rem;width:max-content;font:var(--step-3)/1 var(--font-display);white-space:nowrap}
.marquee__track span::after{content:"\2726";margin-left:3rem;color:var(--accent);font-size:.5em;vertical-align:middle}

/* sticky mobile Book pill */
.book-pill{position:fixed;left:50%;bottom:max(1rem,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:65;display:none;align-items:center;min-height:52px;padding:.9rem 1.6rem;border-radius:999px;background:var(--accent);color:var(--ink);font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;text-decoration:none;box-shadow:0 10px 40px rgba(0,0,0,.5);white-space:nowrap;max-width:calc(100vw - 2rem)}
@media (max-width:899px){.book-pill{display:inline-flex}}
dialog.sheet{border:1px solid var(--line);background:var(--ink-2);color:var(--paper);padding:clamp(1.2rem,4vw,2.4rem);max-width:min(92vw,640px);width:100%;max-height:92svh;overflow:auto}
dialog.sheet::backdrop{background:rgba(0,0,0,.7);backdrop-filter:blur(4px)}

/* Site layer: header, pages, galleries, pricing, published, forms, footer. */
.wordmark{font:italic var(--step-1)/1 var(--font-display);text-decoration:none;color:var(--paper);text-shadow:0 1px 14px rgba(0,0,0,.6)}
.wordmark b{font:600 .62em/1 var(--font-ui);letter-spacing:.2em;font-style:normal;margin-left:.5rem;color:var(--accent)}
.book-pill{display:none}
@media (max-width:767px){.book-pill{display:inline-flex}body{padding-bottom:6rem}}
main{display:block}
.film{padding-top:6.5rem}
.film--short{min-height:72svh}
.film__copy h1{max-width:12ch}
.film__copy .lede{max-width:46ch;font-size:var(--step-1);color:var(--paper)}
.lede{font-size:var(--step-1);line-height:1.4;color:var(--paper)}
.cta-row{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:1.6rem;align-items:center}
.next{margin-top:2rem;font-size:var(--step--1);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim)}
.next a{color:var(--paper)}
.big-statement{font:var(--step-3)/1.02 var(--font-display);max-width:20ch;letter-spacing:-.02em;margin:0}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:2rem 1rem;margin-top:3rem;border-top:1px solid var(--line);padding-top:2rem}
.stat strong{display:block;font:400 var(--step-5)/.9 var(--font-display);color:var(--paper)}
.stat span{display:block;margin-top:.6rem;font-size:var(--step--1);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-dim);max-width:20ch}
.split{display:grid;gap:clamp(1.5rem,4vw,4rem)}
@media (min-width:900px){.split{grid-template-columns:1fr 1fr;align-items:center}.split--wide{grid-template-columns:1.2fr .8fr}}
.frame{margin:0;overflow:hidden;background:var(--ink-3)}
.frame img{width:100%;height:100%;object-fit:cover}
.frame--tall{aspect-ratio:4/5}
.frame--wide{aspect-ratio:3/2}
.cats{padding-block:clamp(3rem,6vw,6rem)}
.reel li a{position:relative}
.reel li a span{position:absolute;left:1rem;bottom:1rem;right:1rem;font:var(--step-3)/1 var(--font-display);text-shadow:0 2px 20px rgba(0,0,0,.7)}
.reel li a i{position:absolute;top:1rem;left:1rem;font:italic var(--step-0)/1 var(--font-display);color:var(--accent)}
.reel li a::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(11,11,12,.75),transparent 55%)}
.reel li a span,.reel li a i{z-index:1}
.band{position:relative;min-height:80svh;display:grid;align-items:end;overflow:hidden;padding:0;background:var(--ink-2)}

.band::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--ink) 2%,rgba(11,11,12,.25) 60%,rgba(11,11,12,.45))}
.band__copy{position:relative;z-index:2;padding-block:clamp(3rem,8vw,6rem)}
.band h2{max-width:14ch;font-size:var(--step-5);line-height:.9}
.marquee__track a{text-decoration:none}
.prices{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);margin:2rem 0}
@media (min-width:700px){.prices{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}}
.prices a,.prices div{background:var(--ink);padding:1.6rem;text-decoration:none;display:block}
.prices h3{font-size:var(--step-1);margin-bottom:.3em}
.prices strong{display:block;font:400 var(--step-3)/1 var(--font-display);margin-bottom:.4rem}
.prices small{display:block;color:var(--paper-dim);font-size:var(--step--1);letter-spacing:.06em}
.price-from{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.tier-list{list-style:none;margin:0 0 2rem;padding:0;display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.tier-list li{background:var(--ink);padding:1.1rem 1.3rem;display:grid;gap:.2rem}
@media (min-width:700px){.tier-list li{grid-template-columns:12rem 10rem 1fr;align-items:baseline;gap:1rem}}
.tier-list b{font:400 var(--step-1)/1.1 var(--font-display)}
.tier-list .amt{font:600 var(--step-0)/1 var(--font-ui);color:var(--paper)}
.tier-list .pop{font:600 .7rem/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-left:.5rem}
.tier-list span{color:var(--paper-dim);font-size:var(--step--1)}
.service{padding-block:clamp(2.5rem,5vw,4rem);border-top:1px solid var(--line)}
.service h2{font-size:var(--step-3)}
.on-request{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.facts{columns:2 18rem;column-gap:3rem;color:var(--paper-dim);padding-left:1.1rem}
.facts li{margin-bottom:.4rem;break-inside:avoid}
.quote-layout{display:grid;gap:2rem}
@media (min-width:900px){.quote-layout{grid-template-columns:1fr 1fr;align-items:start}}
blockquote.t{margin:0;padding:0}
blockquote.t p{font:var(--step-1)/1.35 var(--font-display);color:var(--paper);max-width:40ch}
blockquote.t footer,blockquote.t cite{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-style:normal}
.t-grid{display:grid;gap:3rem 2rem}
@media (min-width:800px){.t-grid{grid-template-columns:repeat(2,1fr)}}
.steps{list-style:none;margin:0;padding:0;display:grid;gap:2rem;counter-reset:s}
@media (min-width:800px){.steps{grid-template-columns:repeat(4,1fr)}}
.steps li{counter-increment:s;border-top:1px solid var(--line);padding-top:1rem}
.steps li::before{content:counter(s,decimal-leading-zero);display:block;font:italic var(--step-3)/1 var(--font-display);color:var(--accent);margin-bottom:.6rem}
.steps h3{font-size:var(--step-1)}
.steps p{font-size:var(--step--1)}
.gallery{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:clamp(.4rem,1vw,.8rem)}
.gallery::after{content:"";flex-grow:1000000}
.gallery li{flex:calc(var(--r) * 100) 1 calc(var(--r) * 230px);min-width:140px;margin:0}
.gallery a{display:block;overflow:hidden;background:var(--ink-3);border-radius:var(--radius)}
.gallery img{width:100%;height:auto;aspect-ratio:var(--r);object-fit:cover}
@media (prefers-reduced-motion:no-preference){.gallery img{transition:transform 1.1s var(--ease-out)}.gallery a:hover img{transform:scale(1.03)}}
.crumb{font-size:var(--step--1);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim)}
.credits{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);margin:2rem 0 0;padding:0;list-style:none}
@media (min-width:800px){.credits{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}}
.credits li{background:var(--ink);padding:1.4rem}
.credits b{display:block;font:400 var(--step-1)/1.1 var(--font-display);margin-bottom:.4rem}
.credits span{display:block;color:var(--paper-dim);font-size:var(--step--1)}
.credits a{color:var(--paper)}
.badge{display:inline-flex;align-items:center;gap:.5rem;min-height:40px;padding:.5rem 1rem;border:1px solid var(--accent);border-radius:999px;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.08em;color:var(--paper);text-decoration:none;margin:0 .5rem .5rem 0}
.badge::before{content:"\2726";color:var(--accent)}
.badge:hover{background:var(--accent);color:var(--ink)}
.byline{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim)}
.chapter{padding-block:clamp(3rem,7vw,7rem)}
.chapter__head{display:grid;gap:.4rem;margin-bottom:2rem}
.chapter__head h2{font-size:var(--step-5);line-height:.88;margin:0}
.chapter__meta{display:flex;flex-wrap:wrap;gap:.4rem 1.6rem;font:600 var(--step--1)/1.4 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim)}
.chapter__meta span:first-child{color:var(--accent)}
.published-hero{min-height:100svh}
.published-hero .film__copy h1{max-width:10ch}
.toc{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0 0;padding:0;list-style:none}
.toc a{display:inline-flex;min-height:44px;align-items:center;padding:.4rem 1rem;border:1px solid var(--line);border-radius:999px;font-size:var(--step--1);text-decoration:none}
.toc a:hover{border-color:var(--accent)}
.form{display:grid;gap:1.1rem;max-width:44rem}
.form label{display:grid;gap:.4rem;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.form input,.form select,.form textarea{font:400 var(--step-0)/1.4 var(--font-ui);letter-spacing:0;text-transform:none;background:var(--ink-2);color:var(--paper);border:1px solid var(--line);padding:.85rem 1rem;min-height:48px;border-radius:var(--radius);width:100%}
.form input:focus,.form select:focus,.form textarea:focus{outline:2px solid var(--accent);outline-offset:2px}
.form textarea{min-height:9rem}
.form [aria-invalid]{border-color:#ff8a7a}
.form [data-error]{color:#ffb3a8;font:400 var(--step--1)/1.3 var(--font-ui);text-transform:none;letter-spacing:0}
.form [data-status]{min-height:1.5em;color:var(--paper)}
.form .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-row{display:grid;gap:1.1rem}
@media (min-width:700px){.form-row{grid-template-columns:1fr 1fr}}
.notice{padding:1rem 1.3rem;border:1px solid var(--accent);max-width:44rem;margin-bottom:1.5rem;color:var(--paper)}
.notice[hidden]{display:none}
.notice--err{border-color:#ff8a7a}
.site-foot{border-top:1px solid var(--line);padding-block:4rem 7rem}
.site-foot h2{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem}
.site-foot ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.site-foot a{text-decoration:none}
.site-foot a:hover{text-decoration:underline}
.site-foot .also{margin-top:2.5rem;font-size:var(--step--1);color:var(--paper-dim)}
.site-foot .also a{color:var(--paper-dim);text-decoration:underline;text-underline-offset:.2em}
.site-foot .fine{margin-top:1rem;font-size:var(--step--1);color:var(--paper-dim)}
.big-mark{font:italic var(--step-5)/.9 var(--font-display);letter-spacing:-.03em;margin:0 0 1rem;color:var(--paper)}
.prose p{max-width:62ch}
.prose h2{font-size:var(--step-3);margin-top:2rem}
.post p{font-size:var(--step-1);line-height:1.5;color:var(--paper)}
.page-top{padding-top:clamp(7rem,14vw,11rem)}
.page-top h1{font-size:var(--step-5);max-width:14ch}
.chips-links{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0 0;padding:0;list-style:none}
.chips-links a{display:inline-flex;min-height:44px;align-items:center;padding:.4rem 1.1rem;border:1px solid var(--line);border-radius:999px;font-size:var(--step--1);text-decoration:none}
.sheet form{margin:0}
.archive{list-style:none;margin:1rem 0 0;padding:0;border-top:1px solid var(--line)}
.arch{display:grid;gap:.2rem .8rem;grid-template-columns:1fr auto auto;align-items:baseline;padding:.8rem 0;border-bottom:1px solid var(--line)}
.arch a{font:var(--step-1)/1.2 var(--font-display)}
.badge-tag{font:600 .7rem/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);border:1px solid var(--line);padding:.3rem .6rem;border-radius:999px}
@media (max-width:600px){.arch{grid-template-columns:1fr auto}.arch a{grid-column:1/-1}}
.film--band{min-height:80svh}
.book-pill{opacity:0;pointer-events:none;transition:opacity .3s}
body.pill-on .book-pill{opacity:1;pointer-events:auto}
@media (max-width:767px){.book-pill{max-width:calc(100vw - 2rem)}}
.film__copy h1{font-size:clamp(3rem,1.2rem + 6.4vw,8rem);max-width:11ch;text-shadow:0 2px 30px rgba(0,0,0,.45)}
.film::after{background:linear-gradient(to top,var(--ink) 2%,rgba(11,11,12,.72) 30%,rgba(11,11,12,.1) 62%,rgba(11,11,12,.35))}
.prices{background:none;border:0;gap:.6rem}
.prices a,.prices div{border:1px solid var(--line)}
.film__copy h1{font-size:clamp(3rem,1rem + 5.4vw,6.6rem)}
.credits{background:none;border:0;gap:.6rem}
.credits li{border:1px solid var(--line)}
#archive h3{font-size:var(--step-1);margin-bottom:.2rem}
/* round 3: hero text is a normal-flow stack, bottom anchored; word wrappers never clip glyphs */
.film__copy{display:flex;flex-direction:column;align-items:flex-start;gap:1rem;width:100%}
.film__copy>*{margin:0;position:relative}
.film__copy h1{line-height:1.02;letter-spacing:-.025em;padding-block:.04em}
.film__copy h1 .w,h1 .w,h2 .w{padding-block:.1em;margin-block:-.1em}
.film__copy .cta-row{margin-top:.6rem}
.film::after{background:linear-gradient(to top,var(--ink) 2%,rgba(11,11,12,.72) 28%,rgba(11,11,12,.05) 60%),linear-gradient(to right,rgba(11,11,12,.78) 0%,rgba(11,11,12,.45) 38%,rgba(11,11,12,0) 66%)}
@media (min-width:900px){.film__copy{max-width:min(var(--max),100%)}.film__copy>*{max-width:34rem}.film__copy h1{max-width:9.5ch}}
.film--right::after{background:linear-gradient(to top,var(--ink) 2%,rgba(11,11,12,.7) 26%,rgba(11,11,12,0) 60%),linear-gradient(to left,rgba(11,11,12,.8) 0%,rgba(11,11,12,.45) 38%,rgba(11,11,12,0) 66%)}
.film--right .film__copy{align-items:flex-end;text-align:right}
.film--right .film__copy>*{margin-left:auto}
.stars{color:var(--accent);letter-spacing:.15em}
.rev__top{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.8rem}
blockquote.rev p{font:var(--step-0)/1.5 var(--font-ui);color:var(--paper)}
.g-badge{margin:0}
.rev-carousel{list-style:none;margin:1.5rem 0 0;padding:0 0 1rem;display:flex;gap:1.2rem;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin}
.rev-carousel li{flex:0 0 min(86vw,26rem);scroll-snap-align:start;border:1px solid var(--line);padding:1.3rem;background:var(--ink-2)}
.rev-carousel blockquote{margin:0}
/* round 4 */
.film__copy{gap:1.4rem}
.film__copy h1{padding-bottom:.14em;overflow-wrap:break-word;max-width:100%}
@media (min-width:900px){.film__copy h1{max-width:min(100%,11ch)}}
.film--right .film__copy{padding-inline:max(var(--gutter),1rem)}
.film__copy>*{max-width:100%}
@media (min-width:900px){.film__copy>*{max-width:34rem}.film__copy h1{max-width:min(100%,11ch)}}

/* Navigation: header, dropdowns, mobile sheet, search, breadcrumbs, home strip, footer sitemap. */
:root{--head-h:4.25rem}
html.menu-open,html.search-open{overflow:hidden}
html.menu-open body,html.search-open body{overflow:hidden}
.menu-open .book-pill,.search-open .book-pill{visibility:hidden}

/* ---------- header ---------- */
.site-head{position:fixed;top:0;left:0;right:0;z-index:68;transition:transform .4s var(--ease-out),background-color .3s,box-shadow .3s}
.site-head::before{content:"";position:absolute;inset:0 0 -1.6rem;background:linear-gradient(rgba(11,11,12,.62),rgba(11,11,12,0));pointer-events:none;transition:opacity .3s}
.site-head.is-solid,.site-head:has(.nav__item.is-open){background:rgba(11,11,12,.88);-webkit-backdrop-filter:blur(16px) saturate(1.2);backdrop-filter:blur(16px) saturate(1.2);box-shadow:0 1px 0 var(--line)}
.site-head.is-solid::before,.site-head:has(.nav__item.is-open)::before{opacity:0}
.site-head.is-hidden{transform:translateY(-102%)}
html.menu-open .site-head{background:var(--ink);transform:none;-webkit-backdrop-filter:none;backdrop-filter:none}
html.menu-open .site-head::before{opacity:0}
.site-head__bar{position:relative;min-width:0;display:flex;align-items:center;gap:clamp(.8rem,2vw,2rem);max-width:var(--max);min-height:var(--head-h);margin-inline:auto;padding:.5rem var(--gutter)}
.wordmark{position:relative;font:italic var(--step-1)/1 var(--font-display);text-decoration:none;color:var(--paper);text-shadow:0 1px 14px rgba(0,0,0,.7);padding-block:.5rem}
.nav__tools{display:flex;align-items:center;gap:.5rem;margin-left:auto;min-width:0}
.wordmark{flex:none}
@media (max-width:420px){.head-book{padding-inline:.85rem}.menu-toggle{min-width:4.2rem;padding-inline:.85rem}.nav__tools{gap:.3rem}}
.primary{display:none}
.nav__search{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;border-radius:999px;background:transparent;color:var(--paper);cursor:pointer;transition:background .2s,color .2s}
.nav__search[hidden]{display:none}
.nav__search:hover{background:rgba(243,239,232,.12)}
.head-book{min-height:44px;padding:.55rem 1.1rem;letter-spacing:.12em}
.head-book__long{display:none}
@media (min-width:600px){.head-book__long{display:inline}.head-book__short{display:none}}
.menu-toggle{min-height:44px;min-width:5rem;padding:.55rem 1.1rem;justify-content:center;background:rgba(11,11,12,.5)}
@media (min-width:1024px){
  .site-head .primary{display:block}
  .nav__tools .nav__login{display:inline-flex}
  .menu-toggle{display:none}
  .menu-sheet{display:none!important}
  .nav__tools{gap:.7rem}
}

/* desktop links */
.nav__list{display:flex;align-items:center;gap:clamp(0rem,.5vw,.5rem);list-style:none;margin:0;padding:0}
.nav__link,.nav__login{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:.5rem clamp(.5rem,.9vw,.85rem);background:none;border:0;border-radius:var(--radius);color:var(--paper);font:500 .95rem/1 var(--font-ui);letter-spacing:.01em;text-decoration:none;cursor:pointer;position:relative;text-shadow:0 1px 12px rgba(0,0,0,.55)}
.nav__login{display:none;color:var(--paper-dim);font-size:.88rem}
.nav__login:hover{color:var(--paper)}
.nav__link::after{content:"";position:absolute;left:clamp(.5rem,.9vw,.85rem);right:clamp(.5rem,.9vw,.85rem);bottom:.4rem;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out)}
.nav__link:hover::after,.nav__link[aria-expanded="true"]::after,.nav__link[data-current]::after{transform:scaleX(1)}
.nav__link[data-current]{color:var(--accent)}
.chev{transition:transform .25s var(--ease-out);opacity:.7}
.nav__link[aria-expanded="true"] .chev{transform:rotate(180deg)}

/* dropdown panels: centered under the bar, so none can overflow the viewport */
.nav__item{position:static}
.dd{position:absolute;top:calc(100% - .35rem);left:var(--gutter);right:var(--gutter);width:min(46rem,calc(100% - 2 * var(--gutter)));margin-inline:auto;z-index:2;background:rgba(14,14,16,.97);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--line);border-radius:8px;box-shadow:0 40px 70px -24px rgba(0,0,0,.75);padding:1.1rem}
.dd[hidden]{display:none}
.dd::before{content:"";position:absolute;inset:-.7rem 0 auto;height:.7rem}
.dd--portfolio{width:min(74rem,calc(100% - 2 * var(--gutter)))}
.dd--areas{width:min(40rem,calc(100% - 2 * var(--gutter)))}
@media (prefers-reduced-motion:no-preference){.dd:not([hidden]){animation:dd-in .28s var(--ease-out) both}}
@keyframes dd-in{from{opacity:0;transform:translateY(-6px)}}
.dd__in{display:grid;gap:1.2rem}
.dd__in--mega{grid-template-columns:minmax(12rem,15rem) 1fr}
.dd__in--cols{grid-template-columns:minmax(11rem,13rem) 1fr}
.dd__lead{display:grid;align-content:start;gap:.5rem;padding:1.1rem;border:1px solid var(--line);border-radius:6px;background:var(--ink-3);text-decoration:none;position:relative}
.dd__lead b{font:400 var(--step-1)/1.1 var(--font-display)}
.dd__lead span{font-size:.85rem;line-height:1.4;color:var(--paper-dim)}
.dd__lead i{font-style:normal;color:var(--accent);font-size:1.2rem;margin-top:.4rem}
.dd__lead:hover{border-color:var(--accent)}
.dd ul{list-style:none;margin:0;padding:0}
.dd__thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem 1rem}
.dd__thumbs a{display:grid;gap:.15rem;text-decoration:none;border-radius:4px}
.dd__img{display:block;aspect-ratio:3/2;overflow:hidden;background:var(--ink-3);border-radius:3px;margin-bottom:.4rem}
.dd__img img{width:100%;height:100%;object-fit:cover;filter:saturate(.85) brightness(.9)}
@media (prefers-reduced-motion:no-preference){.dd__img img{transition:transform .8s var(--ease-out),filter .4s}}
.dd__thumbs a:hover img,.dd__thumbs a:focus-visible img{transform:scale(1.05);filter:none}
.dd__thumbs b{font:500 .95rem/1.2 var(--font-ui)}
.dd__thumbs small,.dd__list small{font-size:.78rem;line-height:1.35;color:var(--paper-dim)}
.dd__list{display:grid;grid-template-columns:repeat(2,1fr);gap:.2rem .8rem;align-content:start}
.dd__list a{display:grid;gap:.1rem;padding:.55rem .7rem;border-radius:4px;text-decoration:none;min-height:44px;align-content:center}
.dd__list a:hover,.dd__list a:focus-visible{background:var(--ink-3)}
.dd__list b{font:500 .95rem/1.2 var(--font-ui)}
.dd__list--towns{grid-template-columns:repeat(3,1fr)}
.dd__list--towns a{font:500 .95rem/1.2 var(--font-ui)}
.dd a[aria-current="page"]{color:var(--accent)}
.dd a:focus-visible{outline-offset:-2px}

/* ---------- mobile sheet: the contact sheet, made readable ---------- */
.menu-sheet{position:fixed;inset:0;z-index:60;background:var(--ink);overflow-y:auto;overscroll-behavior:contain;padding:calc(var(--head-h) + .8rem) var(--gutter) 3rem}
.menu-sheet[hidden]{display:none}
.menu-sheet ul{list-style:none;margin:0;padding:0}
.sheet__in{max-width:40rem;margin-inline:auto}
.sheet__tasks{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:1.6rem!important}
.task{display:grid;align-content:space-between;gap:.25rem;min-height:5.6rem;height:100%;padding:.7rem .85rem .8rem;border:1px solid var(--line);border-radius:4px;background:var(--ink-2);text-decoration:none;position:relative}
.task i{font:italic 1.05rem/1 var(--font-display);color:var(--accent)}
.task b{font:600 .95rem/1.2 var(--font-ui)}
.task small{font-size:.78rem;line-height:1.3;color:var(--paper-dim)}
.sheet__tasks li:nth-child(3) .task{background:var(--paper);border-color:var(--paper);color:var(--ink)}
.sheet__tasks li:nth-child(3) .task i{color:#6b5320}
.sheet__tasks li:nth-child(3) .task small{color:#3d3a34}
.sheet__list{border-top:1px solid var(--line)}
.sheet__row{border-bottom:1px solid var(--line)}
.sheet__btn{display:flex;align-items:baseline;gap:.8rem;width:100%;min-height:3.7rem;padding:.7rem 0;background:none;border:0;color:var(--paper);text-align:left;text-decoration:none;cursor:pointer;font:inherit;align-items:center}
.sheet__btn>span{font:400 1.7rem/1.1 var(--font-display);flex:1}
.sheet__btn small{font-size:.8rem;color:var(--paper-dim)}
.sheet__btn[data-current]>span{color:var(--accent)}
.sheet__btn .chev{width:14px;height:14px}
.sheet__btn[aria-expanded="true"] .chev{transform:rotate(180deg)}
.sheet__acc{padding:.2rem 0 1.2rem}
.sheet__frames{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}
.sheet__frames a{position:relative;display:block;aspect-ratio:3/2;overflow:hidden;background:var(--ink-3);border-radius:2px;text-decoration:none}
.sheet__frames img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) brightness(.62)}
.sheet__frames a::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(11,11,12,.8),transparent 60%)}
.sheet__frames a:hover img,.sheet__frames a:focus-visible img,.sheet__frames a[aria-current] img{filter:none}
.sheet__frames i{position:absolute;z-index:1;top:.5rem;left:.6rem;font:italic .95rem/1 var(--font-display);color:var(--accent)}
.sheet__frames span{position:absolute;z-index:1;left:.6rem;right:.4rem;bottom:.5rem;font:600 .8rem/1.15 var(--font-ui);letter-spacing:.1em;text-transform:uppercase}
@media (prefers-reduced-motion:no-preference){
  .sheet__frames img{transition:filter .5s}
  .is-open .sheet__acc:not([hidden]) .sheet__frames li{animation:frame-in .5s var(--ease-out) both;animation-delay:calc(var(--n) * 35ms)}
}
.sheet__more{margin:.8rem 0 0;font-size:.9rem}
.sheet__more a{display:inline-flex;min-height:44px;align-items:center}
.sheet__sub{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
.sheet__sub li{border-bottom:1px solid var(--line)}
.sheet__sub a{display:flex;align-items:center;min-height:48px;text-decoration:none;font:500 1rem/1.2 var(--font-ui)}
.sheet__sub a[aria-current="page"]{color:var(--accent)}
.sheet__contact{display:flex;flex-wrap:wrap;gap:.2rem 1.4rem;margin-top:1.6rem!important;font-size:.95rem}
.sheet__contact a{display:inline-flex;min-height:44px;align-items:center}

/* ---------- search ---------- */
.search{position:fixed;inset:0;z-index:80;background:rgba(6,6,7,.8);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:grid;align-items:start;justify-items:center;padding:clamp(.8rem,9vh,6rem) var(--gutter) 1rem;overflow:auto}
.search[hidden]{display:none}
.search__box{width:min(40rem,100%);background:var(--ink-2);border:1px solid var(--line);border-radius:8px;box-shadow:0 40px 80px -20px rgba(0,0,0,.8);overflow:hidden}
.search__form{display:flex;align-items:center;border-bottom:1px solid var(--line);margin:0}
.search__form:focus-within{box-shadow:inset 0 -2px 0 var(--accent)}
.search__input{flex:1;min-width:0;min-height:3.6rem;background:none;border:0;color:var(--paper);font:400 1.15rem/1.2 var(--font-ui);padding:0 1.1rem}
.search__input:focus{outline:none}
.search__input::placeholder{color:var(--paper-dim)}
.search__close{margin-right:.8rem;min-height:32px;padding:.2rem .6rem;background:none;border:1px solid var(--line);border-radius:4px;color:var(--paper-dim);font:600 .72rem/1 var(--font-ui);letter-spacing:.1em;cursor:pointer}
.search__hint{margin:0;padding:.8rem 1.1rem .2rem;max-width:none;font:600 .72rem/1.4 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.search__hint:empty{display:none}
.search__list{list-style:none;margin:0;padding:.3rem .4rem .6rem;max-height:min(26rem,60vh);overflow:auto}
.search__list a{display:grid;grid-template-columns:1fr auto;gap:.1rem .8rem;align-items:baseline;padding:.7rem .8rem;border-radius:4px;text-decoration:none;min-height:44px}
.search__list [aria-selected="true"] a{background:var(--ink-3);box-shadow:inset 3px 0 0 var(--accent)}
.search__t{font:500 1rem/1.25 var(--font-ui)}
.search__s{grid-column:1;font-size:.8rem;color:var(--paper-dim)}
.search__k{grid-column:2;grid-row:1;font:600 .68rem/1 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-dim)}

/* ---------- breadcrumbs ---------- */
.crumbs{position:absolute;top:var(--head-h);left:0;right:0;z-index:5;font:600 .72rem/1.3 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-dim);text-shadow:0 1px 10px rgba(0,0,0,.7)}
.crumbs ol{display:flex;flex-wrap:wrap;gap:.1rem .5rem;list-style:none;margin-block:0;padding-block:.3rem 0}
.crumbs li+li::before{content:"/";margin-right:.5rem;opacity:.5}
.crumbs a{color:var(--paper);text-decoration:none;border-bottom:1px solid var(--line);padding-block:.4rem}
.crumbs a:hover{border-color:var(--accent)}
.crumbs [aria-current]{color:var(--paper-dim);min-width:0;max-width:min(32rem,70vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.crumbs ol{flex-wrap:nowrap;min-width:0;overflow:hidden}
.crumbs li{min-width:0}
.crumbs li:not(:last-child){flex:none}
.crumbs li:last-child{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- home: "I'm looking for" ---------- */
.find{padding-block:clamp(1.4rem,3vw,2.4rem) clamp(1.6rem,3vw,2.6rem)}
.find__h{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin:0 0 1rem}
.find__chips{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.find__chips li:last-child{grid-column:1/-1}
@media (min-width:900px){.find__chips{grid-template-columns:repeat(5,1fr)}.find__chips li:last-child{grid-column:auto}}
.find__chip{display:flex;align-items:center;justify-content:space-between;gap:.6rem;min-height:4.4rem;height:100%;padding:.9rem 1.3rem;border:1px solid var(--line);border-radius:999px;background:var(--ink-2);color:var(--paper);font:400 clamp(1.05rem,.9rem + .5vw,1.4rem)/1.1 var(--font-display);text-decoration:none;transition:background .25s,color .25s,border-color .25s}
.find__chip i{font-style:normal;color:var(--accent);transition:transform .3s var(--ease-out),color .25s}
.find__chip:hover,.find__chip:focus-visible{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.find__chip:hover i,.find__chip:focus-visible i{color:var(--ink);transform:translateX(4px)}

/* ---------- footer sitemap ---------- */
.foot-top{display:grid;gap:1.6rem;margin-bottom:3rem;padding-bottom:2.5rem;border-bottom:1px solid var(--line)}
@media (min-width:800px){.foot-top{grid-template-columns:1.6fr 1fr;align-items:end}.foot-top__cta{justify-self:end;text-align:right}}
.foot-top p{margin-bottom:.8rem}
.nap{font-style:normal;color:var(--paper-dim);line-height:1.6}
.nap b{color:var(--paper);font-weight:600}
.site-foot .cols{display:grid;grid-template-columns:1fr 1fr;gap:2.2rem 1.5rem}
@media (min-width:760px){.site-foot .cols{grid-template-columns:repeat(3,1fr)}.site-foot .towns{columns:2;column-gap:1rem}}
@media (min-width:1180px){.site-foot .cols{grid-template-columns:repeat(6,1fr)}.site-foot .towns{columns:1}}
.site-foot .towns{display:block}
.site-foot .towns li{break-inside:avoid}
.site-foot ul{gap:.1rem}
.foot-col a{display:inline-block;padding-block:.35rem;line-height:1.3}
.site-foot .also{margin-top:2.5rem}

/* Quote builder (/investment/). Server-rendered; works as a plain stacked form without JS.
   Motion is gated on no-preference. Cards use radio-group semantics (native radios, visually hidden). */
.qb [hidden]{display:none!important}
.qb{--qb-glow:color-mix(in srgb,var(--accent) 38%,transparent);margin-top:2rem}
.qb input[type=radio],.qb input[type=checkbox]{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.qb-grid{display:grid;gap:2rem}
@media (min-width:1000px){.qb-grid{grid-template-columns:minmax(0,1fr) 22rem;gap:3rem;align-items:start}.qb-sum{position:sticky;top:6rem}}
@media (min-width:1280px){.qb-grid{grid-template-columns:minmax(0,1fr) 25rem}}

/* stepper (JS only) */
.qb-nav,.qb-actions{display:none}
.is-wizard .qb-nav{display:flex;gap:.25rem;list-style:none;margin:0 0 2rem;padding:0;counter-reset:none}
.is-wizard .qb-actions{display:flex;gap:.8rem;margin-top:2rem}
.qb-nav li{flex:1;position:relative}
.qb-nav li::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--line);transition:background .4s}
.qb-nav li.is-done::before,.qb-nav li:has([aria-current=step])::before{background:var(--accent)}
.qb-nav button{display:flex;align-items:center;gap:.55rem;width:100%;min-height:44px;padding:.8rem .2rem 0;background:none;border:0;color:var(--paper-dim);font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;text-align:left}
.qb-nav button:disabled{opacity:.4;cursor:default}
.qb-nav button[aria-current=step]{color:var(--paper)}
.qb-nav button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.qb-nav i{font:italic 1.05rem/1 var(--font-display);color:var(--accent)}
@media (max-width:640px){.qb-nav button span{display:none}.qb-nav button[aria-current=step] span{display:inline}.qb-nav li:not(:has([aria-current=step])){flex:0 0 2.2rem}}

.qb-step{padding-block:.5rem 1rem}
.qb:not(.is-wizard) .qb-step{border-top:1px solid var(--line);margin-top:2rem;padding-top:2rem}
.qb-step h3{font:400 var(--step-3)/1.05 var(--font-display);margin:0 0 .6rem;outline:none}
.qb-step h3 em{color:var(--accent)}
.qb-lede{color:var(--paper-dim);max-width:52ch;margin:0 0 1.6rem}

/* step 1: session cards */
.qb-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}
@media (min-width:700px){.qb-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem}}
.qb-card{position:relative;display:block}
.qb-card__in{display:flex;flex-direction:column;height:100%;border:1px solid var(--line);background:var(--ink-2);overflow:hidden;transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out),border-color .3s}
.qb-card__img{display:block;aspect-ratio:4/3;overflow:hidden;background:var(--ink-3)}
.qb-card__img img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease-out),filter .5s;filter:saturate(.85) brightness(.9)}
.qb-card__t{display:flex;flex-direction:column;gap:.35rem;padding:.9rem 1rem 1.1rem;flex:1}
.qb-card__t b{font:400 var(--step-1)/1.1 var(--font-display)}
.qb-card__t small{color:var(--paper-dim);font-size:var(--step--1);line-height:1.4}
.qb-card__p{margin-top:auto;padding-top:.5rem;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.qb-card input:checked+.qb-card__in{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 24px 60px -18px var(--qb-glow),0 0 40px -8px var(--qb-glow)}
.qb-card input:checked+.qb-card__in .qb-card__img img{filter:none;transform:scale(1.05)}
.qb-card input:focus-visible+.qb-card__in,.qb-pkg input:focus-visible+.qb-pkg__in{outline:2px solid var(--accent);outline-offset:3px}
@media (prefers-reduced-motion:no-preference){
  .qb-card input:checked+.qb-card__in{transform:translateY(-8px)}
  @media (hover:hover){.qb-card:hover .qb-card__in{transform:translateY(-5px);border-color:var(--paper-dim)}.qb-card input:checked+.qb-card__in:hover{transform:translateY(-8px)}.qb-card:hover .qb-card__img img{transform:scale(1.04)}}
}

/* step 2: package comparison */
.qb-pkgs{display:flex;gap:.9rem;overflow-x:auto;scroll-snap-type:x mandatory;padding:.4rem .2rem 1.2rem;margin-inline:-.2rem;scrollbar-width:thin}
.qb-pkgs[hidden]{display:none}
.qb-pkg{position:relative;flex:0 0 min(78%,19rem);scroll-snap-align:start;display:block}
@media (min-width:700px){.qb-pkgs{display:grid;grid-template-columns:repeat(auto-fit,minmax(13.5rem,1fr));overflow:visible;padding-inline:0;margin-inline:0}.qb-pkg{flex:none}}
.qb-pkg__in{position:relative;display:flex;flex-direction:column;gap:.55rem;height:100%;padding:1.4rem 1.2rem 1.2rem;border:1px solid var(--line);background:var(--ink-2);transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out),border-color .3s}
.qb-pkg.is-pop .qb-pkg__in{background:linear-gradient(180deg,var(--ink-3),var(--ink-2))}
.qb-pkg input:checked+.qb-pkg__in{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 20px 50px -18px var(--qb-glow)}
.qb-pkg input:checked+.qb-pkg__in::after{content:"";position:absolute;top:.9rem;right:.9rem;width:1.3rem;height:1.3rem;border-radius:50%;background:var(--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 10.5l3.2 3.2L15 6.8' fill='none' stroke='%230b0b0c' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/80% no-repeat}
.qb-pkg__name{font:400 var(--step-1)/1.1 var(--font-display);padding-right:1.6rem}
.qb-pkg__price{font:400 clamp(2rem,1.6rem + 1.4vw,2.8rem)/1 var(--font-display)}
.qb-pkg__price small,.qb-addon__p small{font:500 var(--step--1)/1 var(--font-ui);color:var(--paper-dim)}
.qb-pkg__dur{font:600 var(--step--1)/1.2 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.qb-pkg ul{list-style:none;margin:.3rem 0 0;padding:.8rem 0 0;border-top:1px solid var(--line);display:grid;gap:.45rem;font-size:var(--step--1);color:var(--paper)}
.qb-pkg li{padding-left:1.1rem;position:relative;line-height:1.35}
.qb-pkg li::before{content:"";position:absolute;left:0;top:.55em;width:.5rem;height:1px;background:var(--accent)}
.qb-pkg__note,.qb-pkg__ret{font-size:var(--step--1);color:var(--paper-dim);line-height:1.4}
.qb-pkg__ret{margin-top:auto;padding-top:.6rem}
.qb-flag{align-self:flex-start;font:600 .68rem/1 var(--font-ui);font-style:normal;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);background:var(--accent);padding:.35rem .55rem;border-radius:999px}
.qb-flag--new{background:transparent;color:var(--accent);border:1px solid var(--accent);margin-left:.5rem;vertical-align:middle}
.qb-pkg .qb-flag--new{margin-left:0}
.qb-units{margin-top:.8rem}
.qb-units label{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.1em;text-transform:uppercase}
.qb-qty{display:inline-flex;align-items:center;gap:.2rem;border:1px solid var(--line);border-radius:999px;padding:.2rem}
.qb-qty[hidden],.qb-units[hidden],[data-qty-wrap][hidden]{display:none}
.qb-qty button{width:44px;height:44px;border-radius:50%;border:0;background:var(--ink-3);color:var(--paper);font:400 1.3rem/1 var(--font-ui);cursor:pointer;transition:background .2s,color .2s}
.qb-qty button:hover{background:var(--accent);color:var(--ink)}
.qb-qty button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.qb .qb-qty input{width:3.2rem;min-height:44px;text-align:center;background:transparent;border:0;color:var(--paper);font:600 1.05rem/1 var(--font-ui);-moz-appearance:textfield;padding:0}
.qb .qb-qty input::-webkit-outer-spin-button,.qb .qb-qty input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.qb .qb-qty input:focus-visible,.qb-date input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* step 3: add-ons */
.qb-addons{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}
@media (min-width:700px){.qb-addons{grid-template-columns:repeat(2,minmax(0,1fr))}}
.qb-addon{border:1px solid var(--line);background:var(--ink-2);transition:border-color .3s,box-shadow .5s var(--ease-out),background .3s;display:flex;flex-direction:column}
.qb-addon.is-on{border-color:var(--accent);box-shadow:0 12px 40px -18px var(--qb-glow);background:var(--ink-3)}
.qb-addon.is-superseded{opacity:.5}
.qb-addon__lbl{position:relative;display:flex;align-items:center;gap:.9rem;min-height:64px;padding:.8rem 1rem;cursor:pointer}
.qb-addon__lbl input{z-index:1}
.qb-sw{flex:none;width:2.6rem;height:1.5rem;border-radius:999px;background:var(--ink);border:1px solid var(--line);position:relative;transition:background .3s,border-color .3s}
.qb-sw::after{content:"";position:absolute;top:2px;left:2px;width:calc(1.5rem - 6px);height:calc(1.5rem - 6px);border-radius:50%;background:var(--paper-dim);transition:transform .35s var(--ease-out),background .3s}
.qb-addon.is-on .qb-sw{background:var(--accent);border-color:var(--accent)}
.qb-addon.is-on .qb-sw::after{transform:translateX(1.1rem);background:var(--ink)}
.qb-addon:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:3px}
.qb-addon__t{display:flex;flex-direction:column;gap:.2rem;flex:1;min-width:0}
.qb-addon__t b{font:500 var(--step-0)/1.2 var(--font-ui)}
.qb-addon__t small{color:var(--paper-dim);font-size:var(--step--1)}
.qb-addon__p{font:400 var(--step-1)/1 var(--font-display);white-space:nowrap}
.qb-addon .qb-qty{margin:0 1rem .8rem auto}
@media (prefers-reduced-motion:no-preference){.qb-addon .qb-qty:not([hidden]){animation:qb-pop .4s var(--ease-out)}}

/* step 4: travel */
.qb-cities{margin-bottom:1.6rem}
.qb-cities h4{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--paper-dim);margin:0 0 .7rem}
.qb-chips{display:flex;flex-wrap:wrap;gap:.5rem}
.qb-chip{position:relative}
.qb-chip span{display:inline-flex;align-items:baseline;gap:.55rem;min-height:44px;align-items:center;padding:.5rem 1.1rem;border:1px solid var(--line);border-radius:999px;font-size:var(--step--1);letter-spacing:.04em;background:var(--ink-2);transition:background .25s,color .25s,border-color .25s,box-shadow .4s}
.qb-chip small{color:var(--paper-dim);font-size:.72rem;letter-spacing:.06em}
.qb-chip input:checked+span{background:var(--paper);color:var(--ink);border-color:var(--paper);box-shadow:0 10px 30px -10px var(--qb-glow)}
.qb-chip input:checked+span small{color:var(--ink);opacity:.7}
.qb-chip input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}
.qb-date{display:grid;gap:.6rem;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.1em;text-transform:uppercase;max-width:20rem}
.qb-date input{min-height:52px;padding:.7rem 1rem;background:var(--ink-2);color:var(--paper);border:1px solid var(--line);font:inherit;font-size:var(--step-0);letter-spacing:0;text-transform:none;color-scheme:dark}

/* live summary */
.qb-sum{border:1px solid var(--line);background:linear-gradient(180deg,var(--ink-2),var(--ink));padding:clamp(1.2rem,3vw,1.8rem)}
.qb-total{margin:0 0 .4rem;min-height:1.1em}
.qb-roll{display:inline-flex;height:1.08em;overflow:hidden;font:400 clamp(3.2rem,2.4rem + 4vw,5.4rem)/1.08 var(--font-display);font-variant-numeric:tabular-nums;color:var(--paper)}
.qb-sum[data-empty=true] .qb-roll{opacity:.35}
.dg{display:inline-block;height:1.08em;overflow:hidden;width:.5em}
.dg-col{display:flex;flex-direction:column;transform:translateY(calc(var(--d,0) * -1.08em));transition:transform .9s var(--ease-out)}
.dg-col i{display:block;height:1.08em;line-height:1.08;font-style:normal;text-align:center}
.qb-note{margin:.2rem 0 1rem;color:var(--paper-dim);font-size:var(--step--1);line-height:1.45}
.qb-lines{list-style:none;margin:0 0 1.2rem;padding:0;font-size:var(--step--1)}
.qb-lines li{position:relative;display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0}
.qb-lines li::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line);transform-origin:0 50%}
.qb-lines .ln-r{white-space:nowrap;font-weight:600}
.qb-due{margin:0 0 1.4rem;display:grid;gap:.5rem}
.qb-due div{display:flex;justify-content:space-between;gap:1rem;align-items:baseline}
.qb-due dt{color:var(--paper-dim);font-size:var(--step--1)}
.qb-due dd{margin:0;font:400 var(--step-1)/1 var(--font-display)}
.qb-due div:first-child dd{color:var(--accent)}
.qb-hold{width:100%;justify-content:center}
.qb-copy{display:block;margin:.9rem auto 0;min-height:44px;background:none;border:0;color:var(--paper-dim);font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.1em;text-transform:uppercase;text-decoration:underline;text-underline-offset:.3em;cursor:pointer}
.qb-copy:hover{color:var(--paper)}
.qb-copy:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.qb-fine{list-style:none;margin:1.4rem 0 0;padding:1.1rem 0 0;border-top:1px solid var(--line);display:grid;gap:.5rem;font-size:.78rem;line-height:1.45;color:var(--paper-dim)}
.qb-fine b{color:var(--paper);font-weight:600}

/* print store */
.qb-print{display:grid;gap:1.6rem}
@media (min-width:800px){.qb-print{grid-template-columns:repeat(3,1fr)}}
.qb-print h3{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 .8rem}
.qb-print ul{list-style:none;margin:0;padding:0}
.qb-print li{display:flex;justify-content:space-between;gap:1rem;padding:.65rem 0;border-bottom:1px solid var(--line)}
.qb-print b{font-weight:600;white-space:nowrap}

/* contact form: quote carried over */
.quote-note{border:1px solid var(--accent);padding:1rem 1.2rem;margin-bottom:1.4rem;font-size:var(--step--1);white-space:pre-line}

/* motion */
@keyframes qb-pop{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@keyframes qb-line-in{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
@keyframes qb-draw{from{transform:scaleX(0);background:var(--accent)}to{transform:scaleX(1)}}
@keyframes qb-slide-in{from{opacity:0;transform:translateX(var(--qb-x,48px))}to{opacity:1;transform:none}}
@keyframes qb-slide-out{from{opacity:1;transform:none}to{opacity:0;transform:translateX(calc(var(--qb-x,48px) * -1))}}
@media (prefers-reduced-motion:no-preference){
  .qb-lines li.is-new{animation:qb-line-in .6s var(--ease-out) both}
  .qb-lines li.is-new::after{animation:qb-draw 1s var(--ease-wipe) both}
  .qb-card__img img{will-change:auto}
  @supports not (view-transition-name:none){.is-wizard .qb-step:not([hidden]){animation:qb-slide-in .45s var(--ease-out)}}
  @supports (view-transition-name:none){
    html[data-vt=quote] .qb-stage{view-transition-name:qb-stage}
    html[data-vt=quote]::view-transition-group(qb-stage){animation-duration:.5s;animation-timing-function:var(--ease-out)}
    html[data-vt=quote]::view-transition-old(qb-stage){animation:qb-slide-out .32s var(--ease-out) both}
    html[data-vt=quote]::view-transition-new(qb-stage){animation:qb-slide-in .5s var(--ease-out) both}
    html[data-vt=quote][data-qdir=back]{--qb-x:-48px}
  }
}
@media (prefers-reduced-motion:reduce){.dg-col,.qb-card__in,.qb-pkg__in,.qb-addon,.qb-sw::after{transition:none}}

/* fix round 1 */
body:has(.qb) .book-pill{display:none!important}
.qb,.qb-nav{scroll-margin-top:6rem}
.qb-hint{display:block;padding:0 1rem .8rem 4.5rem;color:var(--accent);font-size:var(--step--1)}
.qb-final{display:grid;gap:1.6rem}
.qb-final__img{margin:0;aspect-ratio:4/3;overflow:hidden;background:var(--ink-3);border:1px solid var(--line)}
.qb-final__img:empty{display:none}
.qb-final__img img{width:100%;height:100%;object-fit:cover}
@media (min-width:700px){.qb-final{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}
.qb-recap{list-style:none;margin:0 0 1.6rem;padding:0;display:grid;gap:.1rem}
.qb-recap li{padding:.65rem 0;border-bottom:1px solid var(--line);font-size:var(--step--1);line-height:1.4}
.qb-recap li:first-child{font:400 var(--step-1)/1.2 var(--font-display)}
.qb-bar{display:none}
.is-wizard .qb-bar{display:flex;position:sticky;bottom:0;z-index:20;align-items:center;justify-content:space-between;gap:1rem;margin:1.5rem calc(var(--gutter) * -1) 0;padding:.8rem var(--gutter) max(.8rem,env(safe-area-inset-bottom));background:color-mix(in srgb,var(--ink) 92%,transparent);backdrop-filter:blur(14px);border-top:1px solid var(--line)}
.qb-bar__t{display:flex;flex-direction:column;gap:.2rem}
.qb-bar__t small{font:600 .68rem/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--paper-dim)}
.qb-bar__t b{font:400 1.9rem/1 var(--font-display);font-variant-numeric:tabular-nums}
.qb-bar .btn:disabled{opacity:.45}
@media (min-width:1000px){.is-wizard .qb-bar{display:none}}
@media (max-width:999px){.is-wizard .qb-actions [data-quote-next]{display:none}}

/* First paint already looks like the stepper. The page with JavaScript on shows step 1 only, so the build output matches the script's first state
   and nothing jumps when the script adds .is-wizard (this was a 0.34 layout shift on /investment/). Without JavaScript every step stays visible. */
@media (scripting:enabled){
  .qb:not(.is-wizard) .qb-step:not([data-step="1"]){display:none}
  .qb:not(.is-wizard) .qb-step{border-top:0;margin-top:0;padding-top:.5rem}
  .qb:not(.is-wizard) .qb-nav{display:flex;gap:.25rem;list-style:none;margin:0 0 2rem;padding:0;counter-reset:none}
  .qb:not(.is-wizard) .qb-actions{display:flex;gap:.8rem;margin-top:2rem}
  .qb:not(.is-wizard) .qb-bar{display:flex;position:sticky;bottom:0;z-index:20;align-items:center;justify-content:space-between;gap:1rem;margin:1.5rem calc(var(--gutter) * -1) 0;padding:.8rem var(--gutter) max(.8rem,env(safe-area-inset-bottom));background:color-mix(in srgb,var(--ink) 92%,transparent);backdrop-filter:blur(14px);border-top:1px solid var(--line)}
}
@media (scripting:enabled) and (min-width:1000px){.qb:not(.is-wizard) .qb-bar{display:none}}
@media (scripting:enabled) and (max-width:999px){.qb:not(.is-wizard) .qb-actions [data-quote-next]{display:none}}

/* Motion design pass: intro iris, cinematic stills, contact sheet, filmstrip, marquee, previews, letterbox band, shutter transitions. */

/* ---- intro iris (JS-created, above a hero that already painted) ---- */
.intro{position:fixed;inset:0;z-index:200;background:var(--ink);pointer-events:none}
.intro__mark{position:fixed;inset:0;z-index:201;display:grid;place-items:center;pointer-events:none;font:italic clamp(1.4rem,1rem + 2vw,2.2rem)/1 var(--font-display);color:var(--paper);letter-spacing:.14em;text-shadow:0 2px 30px rgba(0,0,0,.7);padding-left:.14em}


/* ---- kinetic type: letters swell (stroke grows, then settles) and straighten ---- */
.kw{display:inline-block;white-space:nowrap}
@media (prefers-reduced-motion:no-preference){
  .js-motion [data-kinetic=ready] .ch{display:inline-block;opacity:0;transform:translateY(.45em) skewX(-10deg);-webkit-text-stroke:0 currentColor}
  .js-motion [data-kinetic=ready].is-in .ch{animation:bloom .9s var(--ease-out) both;animation-delay:calc(var(--ci) * 28ms)}
}
@keyframes bloom{0%{opacity:0;transform:translateY(.45em) skewX(-10deg);-webkit-text-stroke:0 currentColor}
  45%{opacity:1;-webkit-text-stroke:.05em currentColor}
  100%{opacity:1;transform:none;-webkit-text-stroke:0 currentColor}}

/* ---- contact sheet to full frame ---- */
.sheet{padding-block:clamp(3rem,6vw,6rem)}
.sheet__stage{position:relative;display:grid;gap:1.4rem;justify-items:center;padding-inline:var(--gutter)}
.sheet__copy{justify-self:start;max-width:var(--max);width:100%;margin-inline:auto}
.sheet__copy h2{font-size:var(--step-3);max-width:16ch;margin:0}
.sheet__grid{--ta:3/2;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(.3rem,.8vw,.6rem);width:min(100%,1100px)}
.sheet__grid li{aspect-ratio:var(--ta);overflow:hidden;background:var(--ink-3);border-radius:var(--radius)}
.sheet__grid a{display:block;height:100%;position:relative}
.sheet__grid picture,.sheet__grid img{display:block;width:100%;height:100%;object-fit:cover}
.sheet__grid a span{position:absolute;left:.5rem;bottom:.4rem;font:600 .68rem/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;text-shadow:0 1px 8px rgba(0,0,0,.8)}
.sheet__cap,.sheet__full{display:none}
@media (max-width:700px){.sheet__grid{--ta:4/5}}
@media (prefers-reduced-motion:no-preference){
  .sheet[data-pinned]{height:260vh;padding:0}
  .sheet[data-pinned] .sheet__stage{position:sticky;top:0;height:100svh;overflow:hidden;align-content:center;padding-block:4.5rem 1.5rem;gap:1rem}
  .sheet[data-pinned] .sheet__grid{width:min(100%,calc((100svh - 16rem) * var(--gar,1.5)),1100px)}
  .sheet[data-pinned] .sheet__grid li{will-change:transform,opacity}
  .sheet[data-pinned] .sheet__grid li.is-c{visibility:hidden}
  .sheet[data-pinned] .sheet__full{display:block;position:absolute;left:0;top:0;z-index:3;will-change:transform,clip-path;background:var(--ink-3);overflow:hidden}
  .sheet[data-pinned] .sheet__full:not([data-on]){visibility:hidden}
  .sheet[data-pinned] .sheet__full img{width:100%;height:100%;object-fit:cover;display:block}
  .sheet[data-pinned] .sheet__cap{display:block;position:absolute;z-index:4;left:var(--gutter);bottom:1.6rem;margin:0;opacity:0;font:italic var(--step-1)/1 var(--font-display);background:rgba(11,11,12,.55);padding:.5rem .9rem;backdrop-filter:blur(6px);border-radius:2px}
  .sheet[data-pinned] .sheet__copy{position:relative;z-index:4}
}
@media (max-width:700px){.sheet__grid{--gar:.8}}

/* ---- /published/ filmstrip ---- */
.strip{padding-block:clamp(3rem,6vw,5rem)}
.strip__head h2{font-size:var(--step-3);margin:0;max-width:16ch}
.strip__bar{display:flex;align-items:baseline;gap:1.2rem;margin:1.4rem 0 .6rem}
.strip__date{font:italic var(--step-3)/1 var(--font-display);color:var(--accent);min-width:7ch}
.strip__timeline{position:relative;list-style:none;margin:.3rem var(--gutter) 1.4rem;padding:0;height:2.6rem;border-top:1px solid var(--line)}
.strip__timeline li{position:absolute;top:-4px;left:calc(var(--at) * 100%);transform:translateX(-50%);font:600 .66rem/1 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-dim);padding-top:.9rem;white-space:nowrap}
.strip__timeline li::before{content:"";position:absolute;top:0;left:50%;width:7px;height:7px;margin-left:-3.5px;border-radius:50%;background:var(--ink-3);border:1px solid var(--paper-dim)}
.strip__timeline li.is-on::before{background:var(--accent);border-color:var(--accent)}
.strip__timeline li:not(.now){font-size:0;letter-spacing:0}.strip__timeline li.now{color:var(--paper)}
.strip__fill{position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:0 50%}
.strip__reel{list-style:none;margin:0;padding:0 var(--gutter);display:flex;gap:1.2rem;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;background:#12100e;border-block:1px solid var(--line)}
.strip__reel::-webkit-scrollbar{display:none}
.strip__reel li{flex:0 0 min(80vw,520px);scroll-snap-align:center;position:relative;padding:34px 0;--hole:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='18'%3E%3Crect x='7' y='3' width='16' height='11' rx='3' fill='%230b0b0c'/%3E%3C/svg%3E")}
.strip__reel li::before,.strip__reel li::after{content:"";position:absolute;left:-1.2rem;right:-1.2rem;height:18px;background:var(--hole) 0 0/30px 18px repeat-x}
.strip__reel li::before{top:8px}
.strip__reel li::after{bottom:8px}
.strip__reel a{display:block;position:relative;text-decoration:none;color:var(--paper)}
.strip__reel img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;filter:saturate(.7) brightness(.78);transition:filter .5s}
.strip__reel li.is-active img{filter:none}
.strip__reel .fn{position:absolute;left:.7rem;top:.5rem;font:italic var(--step-3)/1 var(--font-display);text-shadow:0 2px 16px rgba(0,0,0,.8)}
.strip__reel .edge{display:flex;justify-content:space-between;gap:1rem;margin-top:.5rem;font:600 .68rem/1.3 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.strip__reel .ttl{display:block;margin-top:.3rem;font:var(--step-1)/1.1 var(--font-display)}
.strip__flash{position:fixed;inset:0;z-index:55;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 55%,#fff6e0,#ffe3b0 45%,rgba(255,227,176,0) 75%)}
.strip__flash.go{animation:flash .42s ease-out}
.strip__reel li.pop img{animation:pop .6s var(--ease-out)}
@keyframes flash{0%{opacity:0}18%{opacity:.8}100%{opacity:0}}
@keyframes pop{0%{transform:scale(.965);filter:brightness(2.2) saturate(.6)}100%{transform:none}}
@media (prefers-reduced-motion:no-preference){
  .strip[data-pinned]{height:var(--strip-h,260vh);padding:0}
  .strip[data-pinned] .strip__pin{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;justify-content:center;overflow:hidden}
  .strip[data-pinned] .strip__reel{overflow:visible;scroll-snap-type:none;width:max-content;padding-inline:calc(50vw - min(80vw,520px)/2);will-change:transform;gap:2rem}
  .strip[data-pinned] .strip__reel li{flex-basis:clamp(340px,40vw,560px)}
}
@media (prefers-reduced-motion:reduce){.strip__flash{display:none}}

/* ---- service marquee ---- */
.svc{overflow:hidden;padding-block:clamp(1.5rem,4vw,3rem);border-block:1px solid var(--line);background:var(--ink)}
.svc-row{display:flex;gap:clamp(1.5rem,3vw,3rem);width:max-content;font:var(--step-5)/1 var(--font-display);white-space:nowrap;padding-block:.15em;will-change:transform}
.svc-row a,.svc-row span{text-decoration:none;color:var(--paper);display:inline-flex;align-items:center;gap:clamp(1.5rem,3vw,3rem)}
.svc-row a::after,.svc-row span::after{content:"\2726";font-size:.4em;color:var(--accent)}
.svc-row .alt{font-style:italic}
.svc-row a:hover{color:var(--accent)}
.svc-row[data-dir="-1"]{margin-top:.2rem}
@media (prefers-reduced-motion:no-preference){.svc:not([data-linked]) .svc-row{animation:marquee 60s linear infinite}.svc:not([data-linked]) .svc-row[data-dir="-1"]{animation-direction:reverse}}
@media (prefers-reduced-motion:reduce){.svc-row{width:auto;flex-wrap:wrap;white-space:normal;font-size:var(--step-3)}.svc-row[aria-hidden=true]{display:none}}

/* ---- portfolio index with cursor-follow preview ---- */
.index{list-style:none;margin:2rem 0 0;padding:0;border-top:1px solid var(--line)}
.index a{display:grid;grid-template-columns:3rem minmax(0,1fr) auto;align-items:baseline;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line);text-decoration:none;transition:padding .4s var(--ease-out),color .3s}
.index .idx{font:italic var(--step-0)/1 var(--font-display);color:var(--accent)}
.index .nm{font:var(--step-5)/.95 var(--font-display);min-width:0;overflow-wrap:anywhere}
@media (max-width:520px){.index a{grid-template-columns:2.2rem minmax(0,1fr);row-gap:.35rem}.index .ct{grid-column:2}.index .nm{font-size:clamp(2rem,9vw,2.8rem)}}
.index .ct{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim)}
@media (hover:hover){.index.has-hover a:not(.is-hot){color:var(--paper-dim)}.index a.is-hot{padding-left:1.2rem}}
.pv{position:fixed;left:0;top:0;z-index:90;width:clamp(180px,22vw,320px);aspect-ratio:4/5;pointer-events:none;opacity:0;transition:opacity .25s;overflow:hidden;border-radius:2px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.pv.on{opacity:1}
.pv img{width:100%;height:100%;object-fit:cover;display:block}

/* ---- Beyond the Triangle: letterbox bars + loop cross-fade ---- */
.beyond{position:relative;min-height:88svh;display:grid;align-items:end;overflow:hidden;background:var(--ink-2)}
.beyond__stage,.beyond__stage>img,.beyond__v{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.beyond__v{opacity:0}
@media (prefers-reduced-motion:no-preference){.beyond__v{transition:opacity 1.2s}}
.beyond__v.on{opacity:1}
.beyond::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--ink) 2%,rgba(11,11,12,.55) 38%,rgba(11,11,12,.15) 70%)}
.beyond__bar{position:absolute;left:0;right:0;height:9%;background:#000;z-index:4}
.beyond__bar--t{top:0}.beyond__bar--b{bottom:0}
.beyond__copy{position:relative;z-index:3;padding-block:clamp(4rem,10vw,8rem)}
.beyond__copy h2{font-size:var(--step-5);line-height:.9;max-width:12ch;margin:0}
.beyond__label{position:absolute;z-index:5;right:var(--gutter);bottom:calc(9% + .8rem);margin:0;font:600 .7rem/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--paper)}
@media (prefers-reduced-motion:no-preference){
  .beyond[data-motion] .beyond__bar{height:50%;transition:height 1.4s var(--ease-wipe)}
  .beyond[data-motion].is-in .beyond__bar{height:9%}
}

/* ---- lightbox dissolve ---- */
.lb__f{position:relative}
.lb__gl{position:absolute;left:50%;top:0;transform:translateX(-50%);pointer-events:none;z-index:2}
.lb__f.is-fx img{opacity:0}
@media (prefers-reduced-motion:no-preference){.lb__f img.fade{animation:lbfade .5s var(--ease-out)}}
@keyframes lbfade{from{opacity:.25;transform:scale(.985)}}

/* ---- shutter page transition (cross-document View Transitions) + accent sweep ---- */
.sweep{position:fixed;inset:0;pointer-events:none;opacity:0;view-transition-name:sweep}
@media (prefers-reduced-motion:no-preference){
  @view-transition{navigation:auto}
  html[data-gal=portrait]{--gal:#d9b27c}html[data-gal=family]{--gal:#e0a06a}html[data-gal=sports]{--gal:#8fb4e8}
  html[data-gal=event]{--gal:#e07a6f}html[data-gal=landscape]{--gal:#8ec3a2}html[data-gal=graduation]{--gal:#b79be0}html[data-gal=published]{--gal:#e6c75a}
  html{--gal:var(--accent)}
  html:not([data-vt])::view-transition-old(root){animation:shutter-out .55s cubic-bezier(.7,0,.2,1) both}
  html:not([data-vt])::view-transition-new(root){animation:shutter-in .75s cubic-bezier(.16,1,.3,1) .12s both}
  ::view-transition-group(sweep){animation:sweep .95s cubic-bezier(.7,0,.2,1) both;background:var(--gal);z-index:9}
  ::view-transition-old(sweep),::view-transition-new(sweep){display:none}
}
@keyframes shutter-out{to{filter:brightness(2.4) saturate(.4);opacity:0;transform:scale(1.04)}}
@keyframes shutter-in{from{clip-path:polygon(50% 50%,50% 50%,50% 50%,50% 50%,50% 50%,50% 50%)}
  to{clip-path:polygon(50% -90%,172% 5%,172% 105%,50% 190%,-72% 105%,-72% 5%)}}
@keyframes sweep{0%{clip-path:inset(0 100% 0 0)}45%{clip-path:inset(0 0 0 0)}100%{clip-path:inset(0 0 0 100%)}}
.strip__v{position:absolute;left:0;top:0;width:100%;aspect-ratio:3/2;object-fit:cover;opacity:0;transition:opacity .6s}
.strip__v.on{opacity:1}
.strip__timeline li:first-of-type{transform:none}
.strip__timeline li:first-of-type::before{margin-left:0;left:0}
.strip__timeline li:last-of-type{transform:translateX(-100%)}
.strip__timeline li:last-of-type::before{left:auto;right:0;margin-left:0}

/* ---- non-generative cinematic treatment of the untouched photo: slow 2.5D move, light leak, grain, letterbox reveal ---- */
.cine::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(#000,#000) 0 0/100% 7% no-repeat,linear-gradient(#000,#000) 0 100%/100% 7% no-repeat,
    radial-gradient(60% 80% at 15% 20%,rgba(255,160,70,.0),rgba(255,160,70,0) 60%)}
.cine .film__copy{z-index:2}
.film__grain{position:absolute;inset:-50%;z-index:1;pointer-events:none;opacity:.07;mix-blend-mode:overlay;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}
.film__leak{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;mix-blend-mode:screen;background:linear-gradient(105deg,rgba(255,120,40,0) 30%,rgba(255,150,60,.55) 45%,rgba(255,215,140,.35) 52%,rgba(255,90,40,0) 68%);transform:translateX(-60%)}
@media (prefers-reduced-motion:no-preference){
  html:not([data-save]) .cine .film__poster,html:not([data-save]) .cine picture img.film__poster{transform-origin:62% 45%;animation:kb 24s ease-in-out infinite alternate;will-change:transform}
  html:not([data-save]) .cine::before{animation:bars 1.6s var(--ease-wipe) .2s both}
  html:not([data-save]) .film__leak{animation:leak 5.5s ease-in-out 1.4s 1 both}
  html:not([data-save]) .film__grain{animation:grain .9s steps(6) infinite}
}
@media (prefers-reduced-motion:reduce){.film__grain,.film__leak{display:none}}
html[data-save] .film__grain,html[data-save] .film__leak{display:none}
@keyframes kb{from{transform:scale(1) translate3d(0,0,0)}to{transform:scale(1.06) translate3d(-1.2%,-.8%,0)}}
@keyframes bars{from{background-size:100% 50%,100% 50%,100% 100%}to{background-size:100% 0,100% 0,100% 100%}}
@keyframes leak{0%{opacity:0;transform:translateX(-60%)}25%{opacity:1}100%{opacity:0;transform:translateX(70%)}}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-1%)}80%{transform:translate(3%,3%)}100%{transform:translate(0,0)}}

/* Beyond band: scrim for bright sand, headline clear of the lede */
.beyond::after{background:linear-gradient(to top,var(--ink) 4%,rgba(11,11,12,.8) 42%,rgba(11,11,12,.4) 75%,rgba(11,11,12,.3))}
.beyond__copy h2{line-height:1.02;padding-bottom:.12em;margin-bottom:.35em}
.beyond__copy .lede{max-width:46ch;text-shadow:0 1px 14px rgba(0,0,0,.7)}

/* ---- home hero reel (real stills, whole-image transforms only) ---- */
.film[data-reel] .film__poster{animation:none!important}
.hr__w{display:block;position:relative;overflow:hidden;min-height:2.2em;padding-bottom:.14em;margin-bottom:-.14em}
.hr__a{display:block}
.hr__a.in{position:relative;animation:wordin .8s var(--ease-out) both}
.hr__a.out{position:absolute;left:0;top:0;width:100%;animation:wordout .6s var(--ease-wipe) both}
@keyframes wordin{from{transform:translateY(105%)}to{transform:none}}
@keyframes wordout{to{transform:translateY(-105%)}}
.hr__f{position:absolute;inset:0;overflow:hidden;z-index:0;will-change:transform,clip-path}
.hr__i{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform-origin:55% 45%;will-change:transform}
.hr__flash{position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;mix-blend-mode:screen;background:linear-gradient(105deg,rgba(255,200,120,0) 20%,rgba(255,196,110,.9) 42%,rgba(255,240,205,.95) 50%,rgba(255,150,70,.6) 58%,rgba(255,120,40,0) 80%);transform:translateX(-80%)}
.hr__flash.go{animation:hrflash .9s cubic-bezier(.7,0,.2,1)}
@keyframes hrflash{0%{opacity:0;transform:translateX(-80%)}20%{opacity:1}100%{opacity:0;transform:translateX(80%)}}
.hr__ui{position:absolute;z-index:5;right:var(--gutter);bottom:1.1rem;display:flex;align-items:center;gap:.6rem;font:600 .7rem/1 var(--font-ui);letter-spacing:.14em;color:var(--paper)}
.hr__count{min-width:3.6em;text-align:right;text-shadow:0 1px 8px rgba(0,0,0,.8)}
.hr__bar{display:block;width:clamp(60px,12vw,140px);height:2px;background:rgba(243,239,232,.3);overflow:hidden}
.hr__bar i{display:block;height:100%;background:var(--accent);transform:scaleX(0);transform-origin:0 50%}
.hr__b{min-width:44px;min-height:44px;padding:0 .8rem;border:1px solid var(--line);background:rgba(11,11,12,.55);color:var(--paper);border-radius:999px;font:inherit;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;backdrop-filter:blur(6px)}
.hr__b:hover{border-color:var(--accent)}
.hr__b:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media (max-width:700px){.hr__ui{bottom:.6rem}.hr__b[data-act=prev],.hr__b[data-act=next]{display:none}}

/* City service-area pages and the /service-areas/ hub */
.src{font-size:var(--step--1);color:var(--paper-dim);white-space:nowrap}
.tip{font:700 .72rem/1 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.facts--src{columns:1;padding-left:1.1rem}
.cprice{padding:1.6rem;border:1px solid var(--line);background:var(--ink-2)}
.cprice__list{list-style:none;margin:0 0 1rem;padding:0;display:grid;gap:.1rem}
.cprice__list a{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;padding:.8rem 0;border-bottom:1px solid var(--line);text-decoration:none;min-height:44px}
.cprice__list b{font:400 var(--step-1)/1.1 var(--font-display)}
.cprice__list span{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.cprice__note{color:var(--paper-dim);font-size:var(--step--1)}

/* spot guide */
.cguide{padding-block:clamp(2.5rem,6vw,5rem)}
.sfilter{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:1.4rem 0}
.sfilter[hidden]{display:none}
.sfilter__l{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim);margin-right:.4rem}
.sfilter button{min-height:44px;padding:.4rem 1.1rem;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--paper);font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.06em;cursor:pointer}
.sfilter button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.cg{display:grid;gap:2rem}
@media (min-width:980px){.cg{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start}.cmap{position:sticky;top:5.5rem}}
.cg__list{list-style:none;margin:0;padding:0;display:grid;gap:1.4rem}
.spot{scroll-margin-top:5rem}
.spot article{padding:clamp(1.1rem,3vw,1.8rem);border:1px solid var(--line);background:var(--ink-2)}
.spot__head{display:flex;gap:1rem;align-items:flex-start;margin-bottom:.8rem}
.spot__n{flex:none;display:grid;place-items:center;width:2.2rem;height:2.2rem;border-radius:50%;background:var(--accent);color:var(--ink);font:700 .95rem/1 var(--font-ui)}
.spot h3{font:400 var(--step-1)/1.1 var(--font-display);margin:0}
.spot__area{margin:.25rem 0 0;color:var(--paper-dim);font-size:var(--step--1)}
.spot__line{margin:.55rem 0}
.spot__line b,.spot__facts dt{font:600 var(--step--1)/1.2 var(--font-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.seasons{list-style:none;margin:1rem 0 .3rem;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem}
.season{padding:.55rem .4rem;border:1px solid var(--line);text-align:center;display:grid;gap:.25rem;transition:border-color .3s,background .3s}
.season__l{font:600 .7rem/1 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-dim)}
.season__r{color:var(--accent);letter-spacing:.08em;font-size:.95rem;line-height:1}
.season__r i{font-style:normal;color:var(--line)}
[data-spots][data-sel="spring"] .season[data-s="spring"],[data-spots][data-sel="summer"] .season[data-s="summer"],[data-spots][data-sel="fall"] .season[data-s="fall"],[data-spots][data-sel="winter"] .season[data-s="winter"]{border-color:var(--accent);background:rgba(200,169,110,.12)}
.season-notes{margin:.2rem 0 .6rem;font-size:var(--step--1)}
.season-notes summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:var(--paper-dim);letter-spacing:.06em}
.season-notes ul{margin:0 0 .5rem;padding-left:1.1rem;color:var(--paper-dim)}
.season-notes li{margin-bottom:.35rem}
.chips{list-style:none;margin:.4rem 0 1rem;padding:0;display:flex;flex-wrap:wrap;gap:.4rem}
.chip{padding:.3rem .75rem;border:1px solid var(--line);border-radius:999px;font:600 .74rem/1 var(--font-ui);letter-spacing:.06em;color:var(--paper)}
.chip--for{color:var(--paper-dim)}
.spot__facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.8rem 1.4rem;margin:0 0 1rem}
.spot__facts div{display:grid;gap:.25rem}
.spot__facts dd{margin:0;font-size:var(--step--1);color:var(--paper)}
.spot__rules{border-top:1px solid var(--line);padding-top:.8rem}
.spot__src{margin:.3rem 0;font-size:var(--step--1);color:var(--paper-dim)}
.spot__src a{color:var(--paper)}
.flag{margin:.6rem 0 0;padding:.7rem .9rem;border-left:3px solid var(--accent);background:rgba(200,169,110,.1);font-size:var(--step--1)}
.flag--confirm{border-left-color:#ffb3a8;background:rgba(255,179,168,.1)}
.flag--soft{border-left-color:var(--line);background:transparent;color:var(--paper-dim)}
.spot__go{margin:1rem 0 0}

/* static map */
.cmap__in{border:1px solid var(--line);background:var(--ink-2);padding:1rem}
.cmap__svg{display:block;width:100%;height:auto}
.cmap__bg{fill:var(--ink)}
.cmap__grid path{stroke:var(--line);stroke-width:1;fill:none}
.cmap__n path{fill:var(--paper-dim)}
.cmap__n text{fill:var(--paper-dim);font:600 12px var(--font-ui)}
.pin circle{fill:var(--accent);stroke:var(--ink);stroke-width:2;transition:transform .3s var(--ease-out);transform-box:fill-box;transform-origin:center}
.pin text{fill:var(--ink);font:700 13px var(--font-ui);pointer-events:none}
.pin--approx circle{fill:var(--ink);stroke:var(--accent);stroke-width:2.5}
.pin--approx text{fill:var(--accent)}
.pin:hover circle,.pin:focus-visible circle{transform:scale(1.25)}
.cmap__note{margin:.7rem 0;font-size:var(--step--1);color:var(--paper-dim)}
.cmap__legend{list-style:none;margin:0;padding:0;display:grid;gap:.1rem}
.cmap__legend a{display:flex;gap:.7rem;align-items:center;min-height:44px;text-decoration:none;font-size:var(--step--1)}
.cmap__legend i{flex:none;display:grid;place-items:center;width:1.7rem;height:1.7rem;border-radius:50%;border:1px solid var(--accent);color:var(--accent);font:700 .75rem/1 var(--font-ui);font-style:normal}

/* faq, nearby, hub */
.faq{display:grid;gap:1.4rem;max-width:62ch}
.faq__i h3{font:400 var(--step-1)/1.15 var(--font-display);margin:0 0 .4rem}
.faq__i p{margin:0;color:var(--paper-dim)}
.near{list-style:none;margin:1rem 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.8rem}
.near a{display:grid;gap:.3rem;padding:1.1rem;border:1px solid var(--line);text-decoration:none;min-height:44px}
.near b{font:400 var(--step-1)/1.1 var(--font-display)}
.near span,.cgrid__m,.cgrid__s{font-size:var(--step--1);color:var(--paper-dim)}
.cgrid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:.8rem}
.cgrid a{display:grid;gap:.35rem;padding:1.2rem;border:1px solid var(--line);background:var(--ink-2);text-decoration:none;height:100%;transition:border-color .3s,background .3s}
.cgrid a:hover,.cgrid a:focus-visible,.near a:hover{border-color:var(--accent)}
.cgrid__t{font:400 var(--step-1)/1.1 var(--font-display)}
.cgrid__fee{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.page-top.hub-top{padding-top:clamp(5.5rem,10vw,7.5rem);padding-bottom:1.4rem}
.hub-top h1{font-size:clamp(2.4rem,1.5rem + 3.4vw,4.4rem);max-width:20ch}
.hub-top .lede{margin:.6rem 0 0;max-width:52ch}
.hub-grid{padding-top:0}
.sh{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1.4rem;margin-top:1.6rem}
.sh__c h3{font:400 var(--step-1)/1.1 var(--font-display);margin:0 0 .6rem}
.sh__c ul{list-style:none;margin:0;padding:0;display:grid;gap:.8rem;font-size:var(--step--1);color:var(--paper-dim)}
.sh__c b{color:var(--paper)}
@media (max-width:560px){.seasons{grid-template-columns:repeat(2,1fr)}.cprice{padding:1.1rem}.cgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.cgrid a{padding:.9rem}.cgrid__t{font-size:1.3rem}.cgrid__fee{letter-spacing:.06em}}
@media (prefers-reduced-motion:reduce){.pin circle,.season{transition:none}}

/* fix round 1 */
.spot__tip{margin:.7rem 0 0;padding:.7rem .9rem;border-left:3px solid var(--accent);background:rgba(200,169,110,.08);font-size:var(--step--1);color:var(--paper)}
.spot__facts dd .src{margin-left:.3rem}
.cmap__c{fill:rgba(243,239,232,.78);font:600 10px var(--font-ui);paint-order:stroke;stroke:rgba(11,11,12,.8);stroke-width:3px}
.cmap__bg{fill:var(--ink)}
.cmap__n path,.cmap__n text{fill:var(--paper);stroke:rgba(11,11,12,.7);stroke-width:2px;paint-order:stroke}
.pin circle{stroke:#0b0b0c;stroke-width:2.5}
.cgrid a{padding:0;overflow:hidden;gap:0;align-content:start}
.cgrid__img{display:block;aspect-ratio:16/10;overflow:hidden;background:var(--ink-3)}
.cgrid__img picture,.cgrid__img img{display:block;width:100%;height:100%}
.cgrid__img img{object-fit:cover;transition:transform .9s var(--ease-out)}
.cgrid a:hover .cgrid__img img,.cgrid a:focus-visible .cgrid__img img{transform:scale(1.05)}
.cgrid__t,.cgrid__fee,.cgrid__m,.cgrid__s{padding-inline:1.1rem}
.cgrid__t{padding-top:1rem;margin-bottom:.35rem}
.cgrid__fee{margin-bottom:.35rem}
.cgrid__s{padding-bottom:1.1rem;margin-top:.35rem}
.cgrid a>span{display:block}
/* the floating book button must not sit on top of the spot cards */
body.cards-in-view .book-pill{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
@media (max-width:700px){.cguide{padding-bottom:6rem}.cgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.cgrid__t,.cgrid__fee,.cgrid__m,.cgrid__s{padding-inline:.8rem}.cgrid__t{font-size:1.25rem}}

/* city hero: a taller, clearly photographic frame with a left-side scrim for the headline */
.film--city{min-height:min(86svh,860px)}
.film--city .film__poster{object-position:68% 40%}
.film--city::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(11,11,12,.72) 0%,rgba(11,11,12,.34) 42%,rgba(11,11,12,0) 70%),linear-gradient(0deg,rgba(11,11,12,.7),rgba(11,11,12,0) 38%)}
.film--city .film__copy{z-index:2}

/* fix round 2: editorial layout */
.lead .lede{margin-top:0}
.local{max-width:62ch;margin:1.1rem 0 .5rem;font-size:var(--step-0);line-height:1.6;color:var(--paper)}
.local::first-line{font-variant:small-caps;letter-spacing:.04em}
.local__src{margin:0 0 1rem;font-size:var(--step--1);color:var(--paper-dim)}
.local__src a{color:var(--paper-dim)}
.cguide{padding-inline:0}
.cguide .wrap .lede{max-width:56ch}
.mapstrip{display:grid;gap:1.4rem;margin:1.6rem 0 2.4rem}
@media (min-width:900px){.mapstrip{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);align-items:start}}
.mapstrip .cmap{position:static}
.mapstrip .cmap__in{padding:.7rem}
.mapstrip .cmap__legend{margin:0;align-content:start;column-gap:1.5rem}
@media (min-width:600px) and (max-width:899px){.mapstrip .cmap__legend{grid-template-columns:1fr 1fr}}
.cg__list{grid-template-columns:repeat(auto-fit,minmax(min(100%,27rem),1fr));align-items:start;gap:clamp(1.2rem,3vw,2rem)}
.mag{padding:clamp(1.3rem,3vw,2.2rem);border:1px solid var(--line);background:var(--ink-2)}
.mag__head{margin-bottom:.4rem}
.mag__t{font:400 clamp(1.8rem,1.3rem + 1.7vw,2.7rem)/1.02 var(--font-display);letter-spacing:-.01em;margin:0}
.mag__pull{margin:1.1rem 0 .6rem;padding:0;border:0}
.mag__pull p{margin:0;padding-left:1rem;border-left:3px solid var(--accent);font:italic 400 var(--step-1)/1.28 var(--font-display);color:var(--paper)}
.mag__rest{margin:.3rem 0 .6rem;color:var(--paper-dim);font-size:var(--step--1)}
.mag__badges{display:flex;flex-wrap:wrap;gap:.4rem;margin:.2rem 0 .6rem}
.badge-note{padding:.3rem .7rem;border:1px solid var(--accent);border-radius:999px;font:700 .68rem/1 var(--font-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.badge-note--confirm{border-color:#ffb3a8;color:#ffb3a8}
.plan{margin-top:1rem;border-top:1px solid var(--line)}
.plan summary{display:flex;justify-content:space-between;align-items:center;min-height:52px;cursor:pointer;list-style:none;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--paper)}
.plan summary::-webkit-details-marker{display:none}
.plan summary::after{content:"+";font:400 1.6rem/1 var(--font-display);color:var(--accent);transition:transform .3s var(--ease-out)}
.plan[open] summary::after{transform:rotate(45deg)}
.plan .spot__facts{margin-top:.4rem}
.plan .season-notes{margin:1rem 0 0}
.plan .season-notes ul{margin:.3rem 0 0;padding-left:1.1rem;color:var(--paper-dim);font-size:var(--step--1)}
.spot__go{margin:1.1rem 0 0}
.pband{margin:clamp(2rem,5vw,4.5rem) 0;height:clamp(240px,44vw,620px);overflow:hidden;position:relative;background:var(--ink-3)}
.pband picture{display:block;height:100%}
.pband img{display:block;width:100%;height:100%;object-fit:cover}
.pband::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,rgba(11,11,12,.45),rgba(11,11,12,0) 35%)}
.cgrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));gap:1rem}
.cgrid__t{font-size:clamp(1.5rem,1.2rem + .8vw,1.9rem)}
.cgrid__img{aspect-ratio:4/3}
@media (min-width:1100px){.cgrid{grid-template-columns:repeat(4,1fr)}}
@media (max-width:700px){.cguide{padding-bottom:5rem}.cg__list{grid-template-columns:1fr}}

/* fix round 3: four spot cards at a time */
.spots-rest{padding-block:0}
.spots-rest>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:center;min-height:56px;margin:1.4rem 0;padding:.8rem 1.4rem;border:1px solid var(--accent);border-radius:999px;font:600 var(--step--1)/1.2 var(--font-ui);letter-spacing:.06em;color:var(--paper)}
.spots-rest>summary::-webkit-details-marker{display:none}
.spots-rest>summary:hover,.spots-rest>summary:focus-visible{background:var(--accent);color:var(--ink)}
.spots-rest[open]>summary{margin-bottom:.4rem}

/* fix round 3: four spot cards at a time */
.spots-rest{padding-block:0}
.spots-rest>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:center;min-height:56px;margin:1.4rem 0;padding:.8rem 1.4rem;border:1px solid var(--accent);border-radius:999px;font:600 var(--step--1)/1.2 var(--font-ui);letter-spacing:.06em;color:var(--paper)}
.spots-rest>summary::-webkit-details-marker{display:none}
.spots-rest>summary:hover,.spots-rest>summary:focus-visible{background:var(--accent);color:var(--ink)}
.spots-rest[open]>summary{margin-bottom:.4rem}

/* Session Planner: /guides/ hub and the six tools */
.guide-top h1{max-width:18ch}
.guide-sec{padding-block:clamp(1.4rem,3vw,2.4rem)}
.guide-sec h2{font:400 var(--step-3)/1.05 var(--font-display);margin:0 0 1rem}
.guide-sec ul{padding-left:1.1rem;max-width:62ch}
.guide-sec li{margin-bottom:.5rem}
.guide-cta{padding-block:clamp(2.5rem,6vw,5rem)}
.guide-more{margin-top:.6rem}
.tool{padding-block:clamp(1.6rem,4vw,3rem)}
.tool-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:1rem 1.2rem;align-items:end;padding:clamp(1rem,3vw,1.6rem);border:1px solid var(--line);background:var(--ink-2)}
.tool-form[hidden]{display:none}
.tool-form--wide{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}
.tool-form--stack{grid-template-columns:1fr}
.field{display:grid;gap:.4rem;border:0;margin:0;padding:0;min-width:0}
.field--grow{grid-column:span 2}
@media (max-width:640px){.field--grow{grid-column:auto}}
.field>label,.field>legend{font:600 var(--step--1)/1.2 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-dim);padding:0}
.field select,.field input[type=number],.field input[type=date]{width:100%;min-height:48px;padding:.6rem .9rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--ink);color:var(--paper);font:500 var(--step-0)/1.2 var(--font-ui);color-scheme:dark}
.field select:focus-visible,.field input:focus-visible,.btn:focus-visible,.tab:focus-visible,.fcard a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.field--checks{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:.4rem 1.6rem}
label.check{display:flex;align-items:flex-start;gap:.7rem;min-height:44px;padding:.35rem 0;cursor:pointer;font-size:var(--step-0);line-height:1.35;color:var(--paper)}
label.check input{width:22px;height:22px;margin:.1rem 0 0;flex:none;accent-color:var(--accent)}
label.check input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tool-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin:1rem 0}
.tool-actions .btn[hidden]{display:none}
.tool-out{margin-top:1.4rem}
.tool-note{margin-top:1.4rem;font-size:var(--step--1);color:var(--paper-dim);max-width:70ch}
.tool-count{margin:1.2rem 0 .6rem;font:600 var(--step--1)/1.3 var(--font-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-dim)}
.tool-empty{padding:1.2rem;border:1px dashed var(--line)}
.tool-empty[hidden]{display:none}

/* outfit planner */
.otool__block{margin:0 0 1.8rem;padding:clamp(1rem,3vw,1.6rem);border:1px solid var(--line);background:var(--ink-2)}
.otool__block h3{font:400 var(--step-1)/1.15 var(--font-display);margin:0 0 .6rem}
.otool__block ul,.otool__block ol{padding-left:1.1rem;margin:.4rem 0}
.otool__block li{margin-bottom:.4rem;max-width:70ch}
.otool__sub{color:var(--paper-dim);font-size:var(--step--1);max-width:70ch}
.swatches{list-style:none!important;padding:0!important;display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));gap:.7rem;margin:1rem 0!important}
.sw{display:grid;gap:.4rem;margin:0!important}
.sw__chip{display:grid;place-items:end start;aspect-ratio:3/2;padding:.5rem;border:1px solid var(--line);font:600 .72rem/1 var(--font-ui);letter-spacing:.08em;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.sw b{font:600 var(--step--1)/1.2 var(--font-ui);letter-spacing:.06em}
.sw small{font:600 .72rem/1 var(--font-ui);letter-spacing:.08em;color:var(--paper-dim)}
.tscroll{overflow-x:auto}
.board{width:100%;border-collapse:collapse;min-width:20rem}
.board th,.board td{padding:.7rem .6rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.board thead th{font:600 var(--step--1)/1.2 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-dim)}
.board tbody th{font-weight:600}
.board small{display:block;color:var(--paper-dim);font-size:.78rem;margin-top:.2rem}
.mini{display:inline-flex;align-items:center;gap:.5rem}
.mini i{width:1.1rem;height:1.1rem;border-radius:50%;border:1px solid var(--line);flex:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.looks{max-width:70ch}
.looks b{color:var(--accent)}

/* spot finder */
.fgrid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr));gap:1.2rem}
.fcard[hidden]{display:none}
.fcard article{height:100%;padding:clamp(1rem,3vw,1.5rem);border:1px solid var(--line);background:var(--ink-2);display:flex;flex-direction:column}
.fcard h3{font:400 var(--step-1)/1.1 var(--font-display);margin:0}
.fcard__area{margin:.3rem 0 .6rem;color:var(--paper-dim);font-size:var(--step--1)}
.fcard__area a{color:var(--paper)}
.fcard__why{margin:.2rem 0 .8rem;font-size:var(--step--1)}
.fcard__sel{margin:.4rem 0;padding:.6rem .8rem;border-left:3px solid var(--accent);background:rgba(200,169,110,.1);font-size:var(--step--1)}
.fcard__sel[hidden]{display:none}
.fcard .spot__rules{margin-top:auto}
.permit{margin:0 0 .3rem;font-size:var(--step--1)}
.permit b{padding:.2rem .6rem;border-radius:999px;border:1px solid var(--line)}
.permit.is-ok b{border-color:#8fc79a;color:#b8e6c0}
.permit.is-req b{border-color:var(--accent);color:var(--accent)}
.permit.is-chk b{border-color:#ffb3a8;color:#ffb3a8}
.spot__go{display:flex;flex-wrap:wrap;gap:.5rem}
.spot__go .btn{padding:.7rem 1.1rem}

/* golden hour */
.gbar{position:relative;height:2.6rem;margin:1rem 0 2.4rem;border:1px solid var(--line);background:linear-gradient(90deg,#10151f,#2a3350 20%,#4a5a80 40%,#4a5a80 60%,#2a3350 80%,#10151f)}
.gbar__s{position:absolute;top:0;bottom:0;display:block}
.gbar__s.is-gold{background:rgba(236,176,74,.92)}
.gbar__s.is-blue{background:rgba(78,120,214,.85)}
.gbar__m{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--paper)}
.gbar__t{position:absolute;left:0;right:0;top:100%}
.gbar__t span{position:absolute;transform:translateX(-50%);padding-top:.3rem;font:600 .72rem/1 var(--font-ui);color:var(--paper-dim)}
.gtimes{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.8rem;margin:0}
.gtimes div{padding:1rem;border:1px solid var(--line);background:var(--ink-2)}
.gtimes dt{font:600 .72rem/1.2 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.gtimes dd{margin:.3rem 0 0;font:400 var(--step-1)/1.2 var(--font-display)}
.grec{margin-top:1rem;padding:1rem 1.2rem;border-left:3px solid var(--accent);background:rgba(200,169,110,.1);max-width:70ch}
.tool-out h3{font:400 var(--step-1)/1.2 var(--font-display);margin:0 0 .3rem}

/* calendar */
.cal__nav{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.4rem}
.cal__nav a{display:inline-flex;align-items:center;min-height:44px;padding:.3rem 1rem;border:1px solid var(--line);border-radius:999px;text-decoration:none;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.06em}
.cal__nav a:hover,.cal__nav a:focus-visible{border-color:var(--accent)}
.calgrid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,24rem),1fr));gap:1.2rem}
.cal{scroll-margin-top:5rem}
.cal article{height:100%;padding:clamp(1rem,3vw,1.5rem);border:1px solid var(--line);background:var(--ink-2)}
.cal--peak article{border-color:var(--accent)}
.cal h3{font:400 var(--step-3)/1 var(--font-display);margin:0}
.cal__s{margin:.3rem 0 .8rem;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.cal h4{margin:1.1rem 0 .4rem;font:600 var(--step--1)/1.2 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-dim)}
.cal ul{margin:0;padding-left:1.1rem;font-size:var(--step--1)}
.cal li{margin-bottom:.4rem}
.cal__book{margin:1rem 0 0;padding:.7rem .9rem;border-left:3px solid var(--accent);background:rgba(200,169,110,.1);font-size:var(--step--1)}
.cal__none,.cal__tip{font-size:var(--step--1);color:var(--paper-dim)}

/* prep */
.tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.2rem}
.tabs[hidden]{display:none}
.tab{min-height:48px;padding:.5rem 1.2rem;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--paper);font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.06em;cursor:pointer}
.tab[aria-selected="true"]{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.prep{margin-bottom:2rem}
.prep[hidden]{display:none}
.prep__h{font:400 var(--step-3)/1.05 var(--font-display);margin:0 0 .3rem}
.prep__p{margin:0 0 1rem;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.prep__g{margin:0 0 1.2rem;padding:1rem 1.2rem;border:1px solid var(--line);background:var(--ink-2)}
.prep__g legend{padding:0 .5rem;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.prep__g ul{list-style:none;margin:0;padding:0}

/* print visualizer */
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.5rem,1fr));gap:.5rem}
.thumb{position:relative;display:block;cursor:pointer}
.thumb input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.thumb span{display:block;aspect-ratio:1;overflow:hidden;border:2px solid var(--line)}
.thumb img{width:100%;height:100%;object-fit:cover}
.thumb input:checked+span{border-color:var(--accent)}
.thumb input:focus-visible+span{outline:2px solid var(--paper);outline-offset:2px}
.opts{display:flex;flex-wrap:wrap;gap:.5rem}
.opt{position:relative}
.opt input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.opt span{display:inline-flex;align-items:center;gap:.5rem;min-height:48px;padding:.5rem 1.1rem;border:1px solid var(--line);border-radius:999px;font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.04em}
.opt small{color:var(--paper-dim);font-weight:500}
.opt input:checked+span{background:var(--paper);border-color:var(--paper);color:var(--ink)}
.opt input:checked+span small{color:#4a4640}
.opt input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}
.viz{margin:1.4rem 0 .6rem;border:1px solid var(--line);background:var(--ink-2);padding:.6rem}
.viz__svg{display:block;width:100%;max-height:70vh;height:auto}
.viz__wall{fill:#d9d2c4}
.viz__f{fill:#5d5a55}
.viz__l{fill:#47443f}
.viz__frame{fill:#1b1a18}
.viz__dim path{stroke:#1b1a18;stroke-width:.5;fill:none}
.viz__dim text{font:600 3.6px var(--font-ui);fill:#1b1a18}
.viz__t{font:600 3px var(--font-ui);fill:#d9d2c4}
.gsum{margin:.6rem 0 0;max-width:70ch}

/* hub */
.gtools{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr));gap:1.2rem}
.gtools a{display:block;height:100%;border:1px solid var(--line);background:var(--ink-2);text-decoration:none;transition:border-color .3s}
.gtools a:hover,.gtools a:focus-visible{border-color:var(--accent)}
.gtools picture,.gtools img{display:block;width:100%}
.gtools img{aspect-ratio:3/2;object-fit:cover}
.gtools__b{display:grid;gap:.5rem;padding:1.1rem}
.gtools__b b{font:400 var(--step-1)/1.1 var(--font-display)}
.gtools__b span{color:var(--paper-dim);font-size:var(--step--1)}
.gtools__b em{font:600 var(--step--1)/1 var(--font-ui);font-style:normal;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}

/* print: only the tool, on white */
@media print{
  html.print-tool body{background:#fff!important;color:#111!important}
  html.print-tool .site-head,html.print-tool .head-book,html.print-tool [data-menu],html.print-tool .site-foot,html.print-tool .book-pill,html.print-tool .progress,html.print-tool .sweep,html.print-tool .skip,html.print-tool .crumbs,html.print-tool .tool-form,html.print-tool .tool-actions,html.print-tool [data-guide-body],html.print-tool .guide-cta,html.print-tool .guide-top .lede,html.print-tool .tabs,html.print-tool main>section:not([data-tool-section]){display:none!important}
  html.print-tool .guide-top{padding-top:0}
  html.print-tool .guide-top h1{color:#111;font-size:2rem}
  html.print-tool .otool__block,html.print-tool .prep__g{background:#fff!important;border-color:#bbb!important;color:#111!important;break-inside:avoid}
  html.print-tool *{color:#111!important;opacity:1!important}
  html.print-tool .kicker,html.print-tool .tool-note{color:#444!important}
}
@media (prefers-reduced-motion:no-preference){
  .tool-out,.viz__svg{animation:guide-in .45s var(--ease-out) both}
  @keyframes guide-in{from{opacity:.4;transform:translateY(4px)}to{opacity:1;transform:none}}
}

/* ---------- photo spot map (finder) and the season hub ---------- */
.fmap{margin:1.4rem 0;padding:0;max-width:60rem}
.fmap svg{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--ink-2)}
.fmap__bg{fill:var(--ink-2)}
.fmap__grid line{stroke:rgba(243,239,232,.06);stroke-width:1}
.fmap__l{font:600 11px/1 var(--font-ui);fill:var(--paper-dim);paint-order:stroke;stroke:var(--ink-2);stroke-width:3px;letter-spacing:.04em}
.fmap .pin circle{fill:var(--accent);fill-opacity:.88;stroke:var(--ink);stroke-width:1.5;transition:r .2s}
.fmap .pin--approx circle{fill:none;stroke:var(--accent);stroke-width:2}
.fmap .pin:hover circle,.fmap .pin:focus-visible circle{r:9;stroke:var(--paper)}
.fmap .pin:focus-visible{outline:none}
.fmap .pin[data-rating="5"] circle{r:8}.fmap .pin[data-rating="4"] circle{r:7}.fmap .pin[data-rating="3"] circle{r:5.5}.fmap .pin[data-rating="2"] circle{r:4}.fmap .pin[data-rating="1"] circle{r:3}
.fmap figcaption{margin-top:.5rem;font-size:var(--step--1);color:var(--paper-dim);max-width:62ch}
.fcard[data-hot]{outline:2px solid var(--accent);outline-offset:3px}
.seasec{padding-block:clamp(1.6rem,3.6vw,2.8rem) 0}
.seasec>h2{margin:0 0 .8rem;font:400 clamp(1.7rem,1.3rem + 1.8vw,2.6rem)/1.08 var(--font-display)}
.shub{list-style:none;margin:1rem 0 0;padding:0;display:grid;gap:.7rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr))}
.shub li{padding:1rem 1.1rem;border:1px solid var(--line);background:var(--ink-2)}
.shub a{display:grid;gap:.15rem;text-decoration:none}
.shub b{font:400 var(--step-1)/1.15 var(--font-display);color:var(--paper)}
.shub a span{color:var(--accent);font:600 var(--label)/1.3 var(--font-ui);letter-spacing:.1em;text-transform:uppercase}
.shub p{margin:.5rem 0 0;font-size:var(--step--1);color:var(--paper-dim);line-height:1.5}
.shub__hl{margin-top:1rem;max-width:70ch;font-size:var(--step--1);color:var(--paper-dim)}
.shub__hl a{color:var(--paper-dim)}

/* ---------- finder (fix round 3): map and list side by side, cards drawn 12 at a time, one fixed card template ---------- */
.finder-split{display:grid;gap:1.4rem;grid-template-columns:minmax(0,1fr);margin-top:1rem}
@media (min-width:1100px){.finder-split{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start}.finder-split__map{position:sticky;top:5.5rem}}
.finder .tool-count{margin:.8rem 0 0}
.fmap{margin:0;max-width:none}
.fmap__l{font:600 22px/1 var(--font-ui)}
.fmap .pin{cursor:pointer}
.fgrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));align-items:stretch}
.fcard{min-width:0}
.fcard article{min-width:0}
.fcard__best{margin:0 0 .7rem;font-size:var(--step--1);color:var(--paper-dim)}
.fcard .seasons{list-style:none;margin:.2rem 0 .8rem;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}
.fseason{min-width:0;padding:.45rem .2rem;border:1px solid var(--line);text-align:center;display:grid;gap:.25rem}
.fseason .season__l{font-size:.8rem;text-transform:none;letter-spacing:.02em;overflow-wrap:anywhere}
.fseason .season__r{font-size:.8rem;letter-spacing:0;white-space:nowrap}
.fcard .spot__facts{grid-template-columns:repeat(2,minmax(0,1fr))}
.fcard .spot__facts dd{overflow-wrap:anywhere}
.finder-more{display:flex;flex-wrap:wrap;align-items:center;gap:.8rem 1.2rem;margin:1.4rem 0 0;font-size:var(--step--1);color:var(--paper-dim)}
.finder-top .top10{margin:0 0 1.6rem;padding-left:1.3rem;display:grid;gap:.6rem}
.finder-top .top10 b{font-weight:600}
@media (min-width:1100px){.finder-split .fgrid{grid-template-columns:minmax(0,1fr)}}

/* SEO answer-stack components: answer block, facts strip, price tables, FAQ, service picker, Wake County matrix.
   Text first, no motion. Everything is visible at first paint. */
:root{--brass-fixed:#c8a96e;--ok:#8fb996;--warn:#d9a05b;--step-4:clamp(2.6rem,1.6rem + 6vw,6rem)}

.answer-wrap{padding-block:clamp(1.8rem,4vw,3rem) 0}
.answer{margin:0;max-width:62ch;padding-left:1.1rem;border-left:2px solid var(--brass-fixed);font:400 var(--step-1)/1.4 var(--font-display);color:var(--paper)}
.facts-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:1px;margin:1.6rem 0 0;padding:0;background:var(--line);border:1px solid var(--line)}
.facts-strip>div{background:var(--ink);padding:.95rem 1.1rem;display:grid;gap:.35rem;align-content:start}
.facts-strip dt{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim)}
.facts-strip dd{margin:0;font:400 var(--step-1)/1.15 var(--font-display)}

.seo-sec{padding-block:clamp(1.6rem,3.6vw,2.8rem) 0}
.seo-sec>h2,.faq-sec>h2{margin:0 0 1rem;font:400 clamp(1.7rem,1.3rem + 1.8vw,2.6rem)/1.08 var(--font-display);max-width:26ch}
.seo-sec .prose p,.seo-sec .prose li{max-width:64ch;line-height:1.6;color:var(--paper)}
.seo-sec .prose p{margin:0 0 1rem}
.seo-sec .prose h3{margin:1.6rem 0 .5rem;font:400 var(--step-1)/1.15 var(--font-display)}
.seo-sec .prose ul,.seo-sec .prose ol{margin:0 0 1rem;padding-left:1.25rem}
.seo-sec .prose li{margin:.35rem 0}
.svc-layer{padding-block:clamp(1.6rem,3.6vw,2.6rem) 0}
.svc-layer>h2{margin:0 0 1rem;font:400 clamp(1.7rem,1.3rem + 1.8vw,2.6rem)/1.08 var(--font-display);max-width:28ch}
.svc-layer>p{max-width:64ch;line-height:1.6;margin:0 0 1rem}
.svc-src{color:var(--paper-dim);font-size:var(--step--1)}
.svc-src a{color:var(--paper)}
.link-list{list-style:none;margin:.6rem 0 1rem;padding:0;display:grid;gap:.3rem}
.seo-sec .prose .link-list{padding-left:0}
.link-list a{display:inline-flex;min-height:44px;align-items:center}
.faq-sec{padding-block:clamp(1.6rem,3.6vw,2.8rem) 0}
.upd{margin:0;padding:1.6rem var(--gutter) 2.4rem;max-width:var(--max);margin-inline:auto;font-size:var(--step--1);color:var(--paper-dim)}
.revsrc{margin:.6rem 0 0;font-size:var(--step--1);color:var(--paper-dim)}
.jump{padding-top:1.4rem}

/* price tables and the matrix */
.ptable-wrap{margin:1rem 0 1.2rem}
.ptable{width:100%;border-collapse:collapse;font:400 var(--step--1)/1.45 var(--font-ui);color:var(--paper)}
.ptable caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.ptable th,.ptable td{padding:.75rem .8rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.ptable thead th{font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--paper-dim);border-bottom-color:var(--brass-fixed)}
.ptable tbody th{font-weight:600;color:var(--paper)}
.ptable td.amt{font-weight:600;color:var(--brass-fixed);white-space:nowrap}
.ptable a{color:var(--paper);text-underline-offset:.2em}
@media (max-width:640px){
  .ptable thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .ptable,.ptable tbody,.ptable tr,.ptable th,.ptable td{display:block;width:100%}
  .ptable tr{border:1px solid var(--line);margin:0 0 .8rem;background:var(--ink-2)}
  .ptable th,.ptable td{border:0;padding:.45rem .9rem}
  .ptable tbody th{padding-top:.8rem;font:400 var(--step-1)/1.15 var(--font-display)}
  .ptable td[data-l]{display:flex;justify-content:space-between;gap:1rem}
  .ptable td[data-l]::before{content:attr(data-l);flex:0 0 38%;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--paper-dim);font-size:.72rem;padding-top:.15rem}
  .ptable td[data-l]>*{flex:1 1 auto}
}

/* hero for the headshot pages: the type is capped so the portrait stays beside it */
.hero-split h1{font-size:var(--step-4);max-width:12ch}
.hero-split .frame--tall{max-height:78vh}
.hero-split .frame img{object-position:50% 25%}

/* home service picker */
.picker-sec{padding-block:clamp(2rem,5vw,3.6rem) 0}
.picker-sec h2{margin:0 0 1rem;font:400 clamp(1.7rem,1.3rem + 1.8vw,2.6rem)/1.08 var(--font-display);max-width:24ch}
.picker{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.picker a{display:grid;gap:.4rem;padding:1.2rem 1.3rem;background:var(--ink);text-decoration:none;min-height:44px;align-content:start;height:100%}
.picker a:hover,.picker a:focus-visible{background:var(--ink-2)}
.picker b{font:400 var(--step-1)/1.1 var(--font-display)}
.picker__p{font:600 var(--step--1)/1 var(--font-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--brass-fixed)}
.picker__t{color:var(--paper-dim);font-size:var(--step--1)}

.rev-static{list-style:none;margin:0;padding:0;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));overflow:visible}
.rev-static li{min-width:0}
.spots-answer{max-width:62ch}

.picker__quiz{margin:1rem 0 0;font-size:var(--step--1)}
.picker__quiz a{color:var(--paper)}
.form-note{margin:0;font-size:var(--step--1);color:var(--paper-dim)}
.form-note a{color:var(--paper)}
.quiz-nudge{padding-block:clamp(1.6rem,3.6vw,2.8rem) 0}
.quiz-nudge .lede{max-width:56ch}

/* Plain check list used in town and headshot pages: a vertical list with a gold tick, never a flex row. */
ul.check,.seo-sec .prose ul.check{list-style:none;margin:0 0 1rem;padding:0;display:grid;gap:.15rem}
ul.check>li,.seo-sec .prose ul.check>li{position:relative;margin:0;padding:.55rem 0 .55rem 1.9rem;max-width:64ch;line-height:1.55;border-bottom:1px solid var(--line)}
ul.check>li::before{content:"";position:absolute;left:.25rem;top:1.05rem;width:.7rem;height:.38rem;border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(-45deg)}
ul.check>li:last-child{border-bottom:0}

/* Polish layer, fix round 1 (2026-10-19). Loaded last. Only overrides: type scale, rhythm, the home page, the mobile bar. */

/* ---------- type: secondary copy is never below 14px, micro labels stay small, dim text clears 7:1 on the ink ---------- */
.kicker,.btn,.byline,.badge,.price-from,.next,.crumb,.facts-strip dt,.picker__p,.badge-tag,.stat span,.tool-count,.crumbs,.chapter__meta{font-size:var(--label)}
.tier-list span,.prices small,.picker__t,.near span{font-size:var(--step--1)}
.ptable th,.ptable td{font-size:var(--step--1)}

/* ---------- rhythm: no dead bands, section padding stops near 120px ---------- */
section{padding-block:clamp(2.75rem,5.5vw,7.5rem)}
.upd{border-top:1px solid var(--line);margin-top:0;padding:1rem var(--gutter) 1.4rem;font-size:var(--label);letter-spacing:.06em}

/* ---------- home hero: two lines on desktop, sharp frame, copy never over the faces ---------- */
.film--home .film__copy h1{font-size:clamp(2.55rem,1rem + 4.1vw,5.2rem);line-height:1;max-width:min(100%,15em)}
@media (min-width:900px){.film--home .film__copy>h1{max-width:min(100%,15em)}.film--home .film__copy>.lede{max-width:34rem}}
.film--home .hr__w{min-height:1.08em}

/* ---------- home stats: four equal cells, tabular figures ---------- */
.stats--home{grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem clamp(1.5rem,4vw,4rem)}
@media (max-width:760px){.stats--home{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stats .stat{border-left:1px solid var(--line);padding-left:1.1rem;min-width:0}
.stats .stat strong{font-variant-numeric:tabular-nums lining-nums;font-size:clamp(2.6rem,1.4rem + 4.4vw,5.2rem);white-space:nowrap}
.stats .stat span{max-width:22ch;line-height:1.4}

/* ---------- home picker: 3 by 2, no grey fill ---------- */
.picker{grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;background:none;border:0}
.picker a{border:1px solid var(--line);padding:1.3rem 1.4rem}
.picker__t{color:var(--paper-dim)}
@media (max-width:900px){.picker{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:440px){.picker{grid-template-columns:minmax(0,1fr)}}

/* ---------- review carousel: edge fades and arrows ---------- */
.rev-wrap{position:relative}
.rev-wrap::before,.rev-wrap::after{content:"";position:absolute;top:0;bottom:3.4rem;width:3rem;z-index:2;pointer-events:none;transition:opacity .25s;opacity:1}
.rev-wrap::before{left:0;background:linear-gradient(to right,var(--ink),transparent)}
.rev-wrap::after{right:0;background:linear-gradient(to left,var(--ink),transparent)}
.rev-wrap[data-start="1"]::before,.rev-wrap[data-end="1"]::after{opacity:0}
.rev-nav{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.4rem}
.rev-btn{width:48px;height:48px;border-radius:999px;border:1px solid var(--line);background:var(--ink-2);color:var(--paper);font:600 1.1rem/1 var(--font-ui);cursor:pointer;transition:background .2s,border-color .2s,color .2s}
.rev-btn:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:var(--ink)}
.rev-btn:disabled{opacity:.35;cursor:default}
.rev-btn[hidden]{display:none}
.rev-carousel:focus-visible{outline:2px solid var(--accent);outline-offset:4px}

/* ---------- FAQ: two columns on desktop ---------- */
.faq__i p{color:var(--paper);font-size:var(--step-0)}
@media (min-width:960px){.faq{max-width:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:2.2rem 4rem}.faq__i{border-top:1px solid var(--line);padding-top:1rem}}

/* ---------- contact sheet: the centre cell is never empty ---------- */
.sheet[data-pinned] .sheet__grid li.is-c{visibility:visible}
.sheet__grid li{min-width:0}
.sheet__copy .kicker,.sheet__copy h2{margin-left:0}

/* ---------- footer ---------- */
@media (min-width:1180px){.site-foot .cols{grid-template-columns:repeat(8,minmax(0,1fr))}.site-foot .foot-col:nth-child(4){grid-column:span 2}.site-foot .towns{columns:2;column-gap:1.4rem}}
.site-foot .fine{max-width:none;font-size:var(--step--1)}

/* ---------- breadcrumbs: scrim so the trail never fights a photo or the eyebrow label ---------- */
.crumbs{top:var(--head-h)}
.crumbs ol{background:linear-gradient(rgba(11,11,12,.55),rgba(11,11,12,0));padding-block:.4rem .9rem}
@media (max-width:520px){.crumbs ol li:not(:first-child):not(:last-child){display:none}.crumbs li+li::before{content:"/"}}
.film{padding-top:7.4rem}

/* ---------- mobile bar: one stable label, safe-area inset, steps aside for forms and tools ---------- */
@media (max-width:899px){
  .book-pill{left:0;right:0;bottom:0;transform:none;width:100%;max-width:none;border-radius:0;justify-content:center;min-height:56px;padding:.85rem 1rem calc(.85rem + env(safe-area-inset-bottom));box-shadow:0 -10px 30px rgba(0,0,0,.45);font-size:.9rem;letter-spacing:.12em;text-transform:uppercase}
  body{padding-bottom:calc(4.6rem + env(safe-area-inset-bottom))}
}
body.pill-off .book-pill{opacity:0!important;visibility:hidden!important;pointer-events:none!important}

/* ---------- header on small phones ---------- */
@media (max-width:420px){.nav__search{width:40px;height:40px}.head-book{padding-inline:.8rem;letter-spacing:.08em}}

/* ---------- inline inquiry card ---------- */
.ask{scroll-margin-top:5.5rem;padding-block:clamp(1.6rem,3.6vw,2.8rem)}
.ask>h2{margin:0 0 .8rem;font:400 clamp(1.7rem,1.3rem + 1.8vw,2.6rem)/1.08 var(--font-display);max-width:26ch}
.ask__form{max-width:46rem;padding:clamp(1.1rem,3vw,1.8rem);border:1px solid var(--line);background:var(--ink-2);border-radius:var(--radius)}
.ask__form select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--paper) 50%),linear-gradient(135deg,var(--paper) 50%,transparent 50%);background-position:calc(100% - 1.3rem) 55%,calc(100% - .95rem) 55%;background-size:.4rem .4rem;background-repeat:no-repeat;padding-right:2.6rem}
.ask__alt,.ask__consent{margin:0;font-size:var(--step--1);color:var(--paper-dim)}
.ask__alt a,.ask__consent a{color:var(--paper)}

/* ---------- jump bar and capped galleries ---------- */
.jump-bar{display:flex;align-items:center;gap:.8rem 1rem;flex-wrap:wrap;padding-block:1.2rem 0}
.jump-bar>span{font:600 var(--label)/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--paper-dim)}
.jump-bar .chips-links{margin:0}
.more-photos{margin-top:1rem}
.more-photos>summary{list-style:none;cursor:pointer;justify-content:center;width:max-content;margin:1.2rem auto}
.more-photos>summary::-webkit-details-marker{display:none}
.more-photos .more__close,.more-photos[open] .more__open{display:none}
.more-photos[open] .more__close{display:inline}

/* ---------- contact: the form comes straight after the H1, with tap-to-call and tap-to-mail ---------- */
.contact-top{padding-bottom:clamp(1rem,3vw,2rem)}
.contact-top h1{font-size:clamp(2.6rem,1.6rem + 5vw,5.4rem);max-width:16ch}
.contact-chips{list-style:none;margin:1.2rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.contact-chips .cchip{display:inline-flex;align-items:center;gap:.6rem;min-height:48px;padding:.5rem 1.2rem;border:1px solid var(--line);border-radius:999px;background:var(--ink-2);color:var(--paper);text-decoration:none;font:600 var(--step--1)/1 var(--font-ui)}
.contact-chips .cchip span{color:var(--accent);letter-spacing:.14em;text-transform:uppercase;font-size:var(--label)}
.contact-chips .cchip:hover{border-color:var(--accent)}
.form select:invalid{color:var(--paper-dim)}
.form select option{color:var(--paper);background:var(--ink-2)}

/* ---------- two-column estimate tables: item left, amount right, no repeated label on phones ---------- */
@media (max-width:640px){
  .ptable--two,.ptable--two tbody{display:block}
  .ptable--two tr{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;border:0;border-bottom:1px solid var(--line);background:none;margin:0;padding:.55rem 0}
  .ptable--two th,.ptable--two td{display:block;width:auto;padding:.1rem 0;font:400 var(--step-0)/1.35 var(--font-ui)}
  .ptable--two tbody th{font:400 var(--step-0)/1.35 var(--font-ui);padding:.1rem 0}
  .ptable--two td{text-align:right;font-weight:600;min-width:0;flex:1 1 auto;overflow-wrap:anywhere}
  .ptable--two th{flex:0 0 auto}
  .ptable--two td::before{content:none!important}
}
.contact-chips .cchip{min-height:44px;padding:.4rem 1rem}

/* ---------- local facts list on town pages ---------- */
.local-facts{padding-block:clamp(1.6rem,3.6vw,2.6rem) 0}
.local-facts>h2{margin:0 0 1rem;font:400 clamp(1.7rem,1.3rem + 1.8vw,2.6rem)/1.08 var(--font-display);max-width:28ch}
.local-facts ul{list-style:none;margin:0;padding:0;display:grid;gap:.6rem;max-width:64ch}
.local-facts li{padding:.8rem 1rem;border-left:2px solid var(--accent);background:var(--ink-2);color:var(--paper);line-height:1.55}
.local-facts li a{margin-left:.4rem;font-size:var(--step--1);color:var(--paper-dim)}

/* ---------- desktop: the inline-form pages get a quiet "Get my price" pill once the hero has scrolled away ---------- */
@media (min-width:900px){
  .book-pill--ask{display:inline-flex;left:auto;right:1.5rem;bottom:1.5rem;transform:none;min-height:48px;padding:.8rem 1.4rem}
}

/* ---------- phone heroes: the photo gets the top of the screen and the words sit below it, so no face is under type ---------- */
@media (max-width:700px){
  .film:not(.film--band){min-height:0;display:block;padding-top:0;background:var(--ink)}
  .film:not(.film--band) .film__poster,.film:not(.film--band) canvas,.film:not(.film--band) .hr__f{inset:0 0 auto 0;height:62svh}
  .film:not(.film--band)::after{background:linear-gradient(to bottom,rgba(11,11,12,.55) 0,rgba(11,11,12,0) 16%,rgba(11,11,12,0) calc(62svh - 8rem),var(--ink) 62svh)}
  .film:not(.film--band) .film__copy{padding-top:calc(62svh - 3.2rem)}
}

.hero-price{font:var(--step-0)/1.35 var(--font-ui);color:var(--paper);margin:0}
.hero-price b{font:400 var(--step-2)/1 var(--font-display);color:var(--accent);letter-spacing:0}

/* ---------- service page heroes: a shorter headline so the price and both buttons sit on the first screen ---------- */
@media (min-width:900px){
  .film--short .film__copy>h1{max-width:min(100%,17ch);font-size:clamp(2.6rem,1rem + 3.9vw,5.2rem)}
  .film--short .film__copy>.lede{max-width:40rem}
  .film--short .film__copy{gap:1rem}
}
.hero-ctas{margin-top:.2rem}

.form-more{margin:.2rem 0 1rem;border:1px solid var(--line);border-radius:6px;padding:.2rem 1rem}
.form-more summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font:600 var(--step--1)/1.2 var(--font-ui);letter-spacing:.04em;color:var(--accent)}
.form-more[open]{padding-bottom:.4rem}

/* ---------- tap targets and small text (mobile audit): 44px targets, nothing under 12px ---------- */
.site-foot a,.foot-col a,.crumbs a,.wordmark,.site-foot .also a{display:inline-flex;align-items:center;min-height:44px;padding-block:.4rem}
.site-foot ul{gap:0}
.site-foot .fine a,.site-foot .also a{display:inline-flex}
.nav__search{min-width:44px;min-height:44px}
.badge{min-height:44px;display:inline-flex;align-items:center}
.tip,.badge-note,.chip,.hr__count,.hr__b,.season__l,.picker__p,.badge-tag,.tool-count{font-size:max(12px,.78rem)}
.season__l,.badge-note,.tip{text-transform:none;letter-spacing:.03em}
.chip{letter-spacing:.02em}
.check{min-height:44px;display:flex;align-items:center;gap:.7rem}
.check input{width:24px;height:24px;flex:none}
.opt,.chips-links a,.near a{min-height:44px}
.marquee__track a{display:inline-flex;align-items:center;min-height:44px}
.site-foot .also a{min-width:44px;justify-content:center;padding-inline:.4rem}

/* ---------- home: image-first session cards and readable contact-sheet labels ---------- */
.picker a{overflow:hidden}
.picker__img{display:block;aspect-ratio:3/2;overflow:hidden;margin:-1.3rem -1.4rem .9rem;background:var(--ink-3)}
.picker__img picture,.picker__img img{display:block;width:100%;height:100%;object-fit:cover}
.picker__img img{transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.picker a:hover .picker__img img,.picker a:focus-visible .picker__img img{transform:scale(1.05)}
@media (prefers-reduced-motion:reduce){.picker__img img{transition:none}.picker a:hover .picker__img img,.picker a:focus-visible .picker__img img{transform:none}}
.sheet__grid a::after{content:"";position:absolute;inset:auto 0 0 0;height:46%;background:linear-gradient(to top,rgba(11,11,12,.82),rgba(11,11,12,0));pointer-events:none}
.sheet__grid a span{z-index:1;left:.7rem;bottom:.6rem;font:600 .85rem/1.1 var(--font-ui);letter-spacing:.02em;text-transform:none;color:var(--paper)}
/* breadcrumbs: 44px rows, one baseline, 12px text */
.crumbs{font-size:max(12px,.78rem)}
.crumbs ol{align-items:center;padding-block:0}
.crumbs li{display:flex;align-items:center;min-height:44px}
.crumbs a{border-bottom:0;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:.3em;padding-block:0;min-height:44px}
.crumbs a:hover,.crumbs a:focus-visible{text-decoration-color:var(--accent)}

/* glossary: terms use the same look as FAQ items without being FAQ markup */
.gl{display:grid;gap:1.4rem 3rem;grid-template-columns:minmax(0,1fr)}
.gl__i h3{font:400 var(--step-1)/1.15 var(--font-display);margin:0 0 .4rem}
.gl__i p{margin:0;color:var(--paper);font-size:var(--step-0)}
@media (min-width:960px){.gl{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.2rem 4rem}.gl__i{border-top:1px solid var(--line);padding-top:1rem}}
/* tap targets, round two: short links keep a 44px width, and link lists and table row links get a 44px row */
.foot-col a,.crumbs a{min-width:44px}
.link-list a,.ptable th a{display:inline-flex;align-items:center;min-height:44px}
.link-list li{margin:0}
.next a,.post-tool a,.prose h3 a,.chips-links a{display:inline-flex;align-items:center;min-height:44px}
.ptable th a,.chips-links a{min-width:44px}
.qb-flag,.pop,.qb small,.tier-list small,.prices small{font-size:max(12px,.78rem)}
em.pop{font-size:max(12px,.78rem)!important}
.qb-nav button{min-width:44px}
.ptable td a{display:inline-flex;align-items:center;min-height:44px}
.lp-quiet{display:inline-flex;align-items:center;min-height:44px}
.svc-src a,.spot__src a{padding-block:.85rem;margin-block:-.85rem}

/* ---------- town pages: one even rhythm between sections ----------
   The town pages stack three kinds of section (service layers, split leads, plain wraps) that each carried their own
   padding, so the gaps ran 42px, 90px and 180px. One padding for all of them gives even breathing room. */
main:has(.cguide)>section:not(.answer-wrap):not(.ask):not(.cguide){padding-block:clamp(1.8rem,3.6vw,2.8rem)}
main:has(.cguide)>section.ask{margin-block:clamp(1.2rem,2.4vw,1.8rem)}
main:has(.cguide)>.cguide{padding-top:clamp(1.8rem,3.6vw,2.8rem)}
#quote{scroll-margin-top:calc(var(--head-h) + .5rem)}

picture{display:contents}
.band>picture img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
