:root{
  --amber:#FBB03B;
  --amber-deep:#8A5F12;
  --bg:#0b0b0a;
  --surface:#141412;
  --surface-2:#1c1b18;
  --line:#2d2b27;
  --text:#F3F0E8;
  --muted:#B7B3A9;
  --head:"Russo One",Impact,system-ui,sans-serif;
  --tech:"Orbitron","Russo One",system-ui,sans-serif;
  --body:"Public Sans",system-ui,sans-serif;
  --gutter:clamp(16px,4vw,48px);
  --header:72px;
  --accent-text:#FBB03B;
  --on-photo:#F3F0E8;
  --header-bg:rgba(11,11,10,.92);
  --nav-bg:rgba(11,11,10,.98);
  --overlay-bg:rgba(11,11,10,.985);
  --card-bg:rgba(20,20,18,.94);
  --input-bg:#0d0d0c;
  --input-line:#4a4741;
  --invalid-bg:#241210;
  --err:#FF8A80;
  --ok:#7FE0A0;
  --vig-1:rgba(0,0,0,.55);
  --vig-2:rgba(0,0,0,.85);
  --blank-fill:var(--blank-fill);
  --shadow:rgba(0,0,0,.6);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;overflow-x:clip;background:var(--bg);color-scheme:dark}
body{margin:0;overflow-x:clip;font:400 1.0625rem/1.6 var(--body);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
h1,h2,h3{font-family:var(--head);font-weight:400;line-height:1.08;margin:0 0 .5em;letter-spacing:.005em}
h1,h2{text-transform:uppercase}
h1{font-size:clamp(1.9rem,min(5vw,7.4vh),4.2rem);line-height:1.04}
h2{font-size:clamp(1.7rem,3.8vw,2.6rem)}
h3{font-size:1.2rem;line-height:1.2}
p{margin:0 0 1em;max-width:62ch}
a{color:inherit}
:focus-visible{outline:3px solid var(--amber);outline-offset:3px}
section[id],form[id]{scroll-margin-top:90px}
.skip{position:absolute;left:-999px;top:0;background:var(--amber);color:#000;padding:.6rem 1rem;z-index:20}
.skip:focus{left:0}
.wrap{max-width:1120px;margin:0 auto;padding:0 var(--gutter)}
.narrow{max-width:760px}

/* ambient: a dark vignette over the whole page plus a faint amber glow from the top */
body::before{content:"";position:fixed;inset:0;z-index:4;pointer-events:none;
  background:radial-gradient(ellipse 110% 90% at 50% 45%,transparent 38%,var(--vig-1) 78%,var(--vig-2) 100%)}
body::after{content:"";position:fixed;left:50%;top:-30vh;width:90vw;height:60vh;transform:translateX(-50%);z-index:0;pointer-events:none;
  background:radial-gradient(ellipse at center,rgba(251,176,59,.10),transparent 65%)}
main,footer{position:relative;z-index:1}

/* header */
.top{display:flex;align-items:center;justify-content:space-between;gap:1rem;height:var(--header);padding:0 var(--gutter);border-bottom:4px solid var(--amber);background:var(--header-bg);backdrop-filter:blur(8px);position:sticky;top:0;z-index:6}
.brand img{height:48px;width:auto;display:block;filter:drop-shadow(0 2px 10px rgba(0,0,0,.6))}
.top nav{display:flex;align-items:center;gap:clamp(.8rem,2vw,1.6rem);font:500 .8rem var(--tech);letter-spacing:.05em}
.top nav a{text-decoration:none}
.top nav a:not(.btn):hover{text-decoration:underline;text-decoration-color:var(--amber);text-decoration-thickness:3px;text-underline-offset:4px}

/* buttons */
.btn{display:inline-block;background:var(--amber);color:#000;font:700 .9rem var(--tech);letter-spacing:.04em;padding:.95rem 1.5rem;border:0;border-radius:2px;text-decoration:none;cursor:pointer;box-shadow:4px 4px 0 var(--amber-deep);transition:transform .12s,box-shadow .12s,background .12s}
.btn:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--amber-deep);background:#ffc05a}
.btn:active{transform:translate(4px,4px);box-shadow:0 0 0 var(--amber-deep)}
.btn-small{padding:.55rem 1rem;font-size:.75rem;box-shadow:3px 3px 0 var(--amber-deep)}
.btn-block{width:100%;text-align:center}

/* stage = hero slideshow with the quote form riding on top at desktop width */
.stage{position:relative}
.hero{position:relative;isolation:isolate;min-height:100%;height:100%;display:flex;align-items:flex-end;overflow:hidden;background:#000}
.slides{position:absolute;inset:0;z-index:-1}
.slide{position:absolute;inset:0;margin:0;opacity:0;transition:opacity 1.1s ease}
.slide.is-active{opacity:1}
.slide img{width:100%;height:100%;object-fit:cover;filter:saturate(.9) contrast(1.05) brightness(.9)}
.slide.is-active img{animation:drift 16s ease-out both}
@keyframes drift{from{transform:scale(1.12) translate(1.5%,1%)}to{transform:scale(1) translate(0,0)}}
/* shade layers: legibility under the text, and a hard vignette at the edges */
.hero::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;transition:opacity .7s;
  background:linear-gradient(90deg,rgba(0,0,0,.88) 0%,rgba(0,0,0,.62) 42%,rgba(0,0,0,.25) 100%),linear-gradient(0deg,rgba(11,11,10,1) 0%,transparent 28%)}
.hero::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(ellipse 85% 80% at 50% 50%,transparent 45%,rgba(0,0,0,.65) 100%)}
.stage[data-view="gallery"] .hero::before{opacity:.45}

.hero-ui{position:relative;z-index:1;width:100%;max-width:1240px;margin:0 auto;padding:clamp(24px,5vh,80px) var(--gutter) clamp(84px,13vh,120px);transition:opacity .6s ease,transform .6s ease}
.hero-ui h1,.hero-ui .lead,.hero-ui .hero-actions{max-width:min(46rem,56%)}
.hero-ui h1{text-shadow:0 2px 24px rgba(0,0,0,.6)}
.hero-ui .lead{font-size:clamp(1rem,2.4vh,1.25rem);max-width:min(34ch,56%);margin-top:1rem;color:#E9E5DA}
.hero-actions{margin-top:clamp(1rem,3vh,1.8rem)}
.stage[data-view="gallery"] .hero-ui{opacity:0;transform:translateY(14px);pointer-events:none;visibility:hidden;transition:opacity .5s ease,transform .5s ease,visibility 0s .5s}

/* gallery controls */
.gallery-bar{position:absolute;z-index:2;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:20px var(--gutter) 26px;max-width:1240px;margin:0 auto}
.cap{margin:0;font:400 1.1rem var(--head);min-height:1.4em;text-shadow:0 2px 12px #000}
.controls{display:flex;align-items:center;gap:10px;margin-left:auto}
.ctl{white-space:nowrap;display:inline-flex;align-items:center;gap:.5rem;font:700 .8rem var(--tech);letter-spacing:.05em;color:var(--on-photo);background:rgba(11,11,10,.7);border:2px solid var(--amber);border-radius:2px;padding:.7rem .9rem;cursor:pointer;backdrop-filter:blur(6px);transition:background .15s,color .15s}
.ctl:hover{background:var(--amber);color:#000}
.ctl-next{padding:.7rem 1rem .7rem 1.2rem}
.count{font:700 .85rem var(--tech);min-width:3.6em;text-align:center;color:var(--on-photo);text-shadow:0 1px 8px #000}
.stage[data-view="gallery"] .ctl-home{display:inline-flex}
.ctl[hidden]{display:none}

/* photos in later sections */
.photo{margin:0;background:var(--surface-2);border:1px solid var(--line);box-shadow:6px 6px 0 var(--amber-deep);overflow:hidden}
.photo img{width:100%;height:100%;object-fit:cover;filter:saturate(.9) brightness(.92)}
.builders-photo{aspect-ratio:16/10;margin-bottom:1.6rem}

/* form */
.quote{background:var(--card-bg);border:1px solid var(--line);border-top:5px solid var(--amber);padding:clamp(20px,3vw,32px);box-shadow:0 24px 70px var(--shadow);transition:opacity .5s ease,transform .5s ease,visibility 0s}
.quote h2{font-size:1.7rem;margin-bottom:.2em}
.quote-sub{color:var(--muted);font-size:.95rem}
.quote label{display:block;font-weight:600;font-size:.95rem;margin:1rem 0 .3rem}
.quote input,.quote select,.quote textarea{width:100%;font:inherit;padding:.75rem .8rem;border:1px solid var(--input-line);border-radius:2px;background:var(--input-bg);color:var(--text)}
.quote input:focus,.quote select:focus,.quote textarea:focus{border-color:var(--amber);outline:2px solid var(--amber);outline-offset:0}
.quote textarea{resize:vertical}
.quote [aria-invalid="true"]{border-color:var(--err);background:var(--invalid-bg)}
.quote .btn{margin-top:1.4rem}
.hp{position:absolute;left:-9999px;height:0;overflow:hidden}
.form-status{margin:1rem 0 0;font-weight:600;min-height:1.5em}
.form-status.err{color:var(--err)}
.form-status.ok{color:var(--ok)}
.form-status.note{color:var(--muted)}

/* desktop: form floats on the right of the hero, and leaves in gallery mode */
@media (min-width:861px){
  .quote{position:absolute;z-index:3;right:max(var(--gutter),calc(50% - 620px + var(--gutter)));top:50%;transform:translateY(-50%);width:min(400px,36vw);max-height:calc(100% - 24px);overflow:auto}
  .stage[data-view="gallery"] .quote{opacity:0;transform:translateY(calc(-50% + 14px));pointer-events:none;visibility:hidden;transition:opacity .5s ease,transform .5s ease,visibility 0s .5s}
}

/* sections */
.band{padding:clamp(48px,7vw,96px) 0;background:var(--bg)}
.band#process{background:var(--surface)}
.rows{list-style:none;margin:2rem 0 0;padding:0;border-top:3px solid var(--amber)}
.rows li{display:grid;grid-template-columns:minmax(200px,1fr) 2fr;gap:1rem 2rem;padding:1.3rem 0;border-bottom:1px solid var(--line)}
.rows h3,.rows p{margin:0}
.rows p,.steps p,details p{color:var(--muted)}

.builders{background:var(--surface-2);padding:clamp(48px,7vw,96px) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.builders h2{color:var(--accent-text)}
.two{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(24px,5vw,72px);align-items:center}
.checks{list-style:none;margin:0;padding:0}
.checks li{padding:.9rem 0 .9rem 2.2rem;border-bottom:1px solid var(--line);position:relative;font-weight:600}
.checks li::before{content:"";position:absolute;left:0;top:1.05rem;width:1rem;height:1.2rem;background:var(--amber);clip-path:polygon(60% 0,0 58%,42% 58%,30% 100%,100% 38%,56% 38%)}

.steps{list-style:none;counter-reset:s;margin:2rem 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:3px solid var(--amber)}
.steps li{counter-increment:s;padding:1.2rem 1.2rem 0 0}
.steps li::before{content:counter(s);display:block;font:400 2.8rem var(--head);color:var(--accent-text);line-height:1;margin-bottom:.6rem}
.steps p{font-size:.98rem}

.area{padding:clamp(40px,6vw,72px) 0;background:linear-gradient(100deg,#2a1d06,#17110a 70%);border-top:4px solid var(--amber)}
.area h2{margin-bottom:.3em}
.area p{margin:0;color:#E4DCC9}
.area-cta{text-align:right}

details{border-bottom:1px solid var(--line);padding:1rem 0}
details:first-of-type{border-top:3px solid var(--amber);margin-top:2rem}
summary{font:400 1.1rem var(--head);cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:1rem}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font-size:1.5rem;line-height:1;color:var(--accent-text)}
details[open] summary::after{content:"\2212"}
details p{margin:.8rem 0 0}

.foot{background:#050504;color:var(--text);padding:32px 0;border-top:1px solid var(--line)}
.foot-row{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem}
.foot img{background:#fff;padding:6px 8px;border-radius:2px}
.foot p{margin:0}
.foot .fine{margin-left:auto;color:#9a968c;font-size:.9rem}

/* tablet and phone: the form drops below the photo, text stays over it */
@media (max-width:860px){
  .hero-ui{padding-bottom:96px}
  .hero-ui h1,.hero-ui .lead,.hero-ui .hero-actions{max-width:100%}
  .hero::before{background:linear-gradient(0deg,rgba(0,0,0,.9) 0%,rgba(0,0,0,.55) 55%,rgba(0,0,0,.35) 100%)}
  .two{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr 1fr;row-gap:1.5rem}
  .rows li{grid-template-columns:1fr}
  .area-cta{text-align:left}
}
@media (max-width:560px){
  .brand img{height:40px}
  .steps{grid-template-columns:1fr}
  .foot .fine{margin-left:0}
  .gallery-bar{flex-wrap:wrap;justify-content:center;padding-bottom:20px}
  .cap{width:100%;text-align:center}
  .controls{margin:0 auto}
  .ctl{padding:.65rem .7rem;font-size:.85rem}
  .count{min-width:3em}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .btn,.slide,.hero-ui,.quote{transition:none}
  .slide.is-active img{animation:none}
}

/* about and mission */
.about{padding:clamp(48px,7vw,96px) 0;background:var(--surface)}
.about-grid{grid-template-columns:1fr 1fr;align-items:center}
.about p{color:var(--muted)}
.collage{position:relative;aspect-ratio:1/1.05;max-width:520px}
.collage .photo{position:absolute}
.collage .c1{left:0;top:0;width:68%;height:74%}
.collage .c2{right:0;bottom:0;width:58%;height:48%;border-color:var(--amber);box-shadow:0 18px 40px rgba(0,0,0,.6)}
.mission{background:var(--bg);padding:clamp(56px,8vw,112px) 0;border-top:1px solid var(--line)}
.mission-line{font:400 clamp(1.5rem,3.6vw,2.6rem)/1.2 var(--head);max-width:26ch;margin:.4em 0 0;padding-left:clamp(16px,3vw,32px);border-left:8px solid var(--amber);color:var(--text)}
.values{list-style:none;margin:clamp(32px,5vw,56px) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,40px);border-top:1px solid var(--line)}
.values li{padding-top:1.4rem}
.values h3{color:var(--accent-text)}
.values p{color:var(--muted);font-size:.98rem}
@media (max-width:860px){
  .about-grid{grid-template-columns:1fr}
  .collage{max-width:420px;margin:0 auto 1rem;width:100%}
  .values{grid-template-columns:1fr}
}

/* people / origin story template */
.people{background:var(--bg);padding:clamp(48px,7vw,96px) 0;border-top:1px solid var(--line)}
.people-grid{grid-template-columns:.8fr 1.2fr;align-items:center}
.people p{color:var(--muted)}
.portrait{margin:0;max-width:420px;width:100%}
.portrait-blank{aspect-ratio:4/5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;border:1px solid var(--line);box-shadow:6px 6px 0 var(--amber-deep);color:var(--muted);
  background:repeating-linear-gradient(135deg,var(--surface-2) 0 14px,var(--surface) 14px 28px)}
.portrait-blank svg{width:46%;fill:var(--blank-fill)}
.portrait-blank span{font:500 .8rem var(--tech);letter-spacing:.05em}
.portrait img{width:100%;aspect-ratio:4/5;object-fit:cover;border:1px solid var(--line);box-shadow:6px 6px 0 var(--amber-deep)}
.portrait figcaption{margin-top:1.1rem;line-height:1.4;color:var(--muted)}
.portrait figcaption strong{font:400 1.2rem var(--head);color:var(--text)}
/* highlighted fill-in spots: obvious on screen so nothing made-up goes live by accident. Delete these rules at launch. */
mark.fill{background:rgba(251,176,59,.14);color:var(--accent-text);border-bottom:1px dashed var(--amber);padding:0 .15em}
@media (max-width:860px){
  .people-grid{grid-template-columns:1fr}
  .portrait{margin:0 auto}
}

/* ---- one-screen home page ---- */
body.home{height:100vh;height:100svh;display:flex;flex-direction:column;overflow:hidden}
body.home main{flex:1;min-height:0;display:flex;flex-direction:column}
body.home .stage{flex:1;min-height:0}
.top{flex:none}

/* nav, hamburger, current page */
.top nav a[aria-current="page"]{color:var(--accent-text)}
.burger{display:none;width:46px;height:46px;border:2px solid var(--amber);background:transparent;border-radius:2px;cursor:pointer;padding:0;position:relative}
.burger span{position:absolute;left:11px;right:11px;height:3px;background:var(--amber);transition:transform .2s,opacity .2s,top .2s}
.burger span:nth-child(1){top:13px}.burger span:nth-child(2){top:21px}.burger span:nth-child(3){top:29px}
.burger[aria-expanded="true"] span:nth-child(1){top:21px;transform:rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){top:21px;transform:rotate(-45deg)}

/* the brick: a slim strip of tiny links at the bottom */
.brick{flex:none;position:relative;z-index:6;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 24px;padding:9px var(--gutter);background:#050504;border-top:2px solid var(--amber);font:500 .64rem/1.2 var(--tech);letter-spacing:.07em;color:#B7B3A9}
.brick a{color:#B7B3A9;text-decoration:none;padding:4px 0}
.brick a:hover,.brick a:focus-visible{color:var(--amber)}
.brick-links,.brick-social{display:flex;flex-wrap:wrap;align-items:center;gap:2px 18px;margin:0;max-width:none}
.brick-copy{color:#6f6b62;margin-left:6px}
.brick-links a+a,.brick-social a+a{position:relative}
.brick-links a+a::before,.brick-social a+a::before{content:"";position:absolute;left:-10px;top:50%;width:1px;height:10px;margin-top:-5px;background:#3a3830}

/* inner pages */
.page-head{padding:clamp(40px,7vw,88px) 0 clamp(24px,4vw,40px);background:var(--bg);border-bottom:1px solid var(--line)}
.page-head h1{font-size:clamp(2rem,5vw,3.6rem);margin-bottom:.3em}
.page-head h1::after{content:"";display:block;width:84px;height:6px;background:var(--amber);margin-top:.35em}
.page-head .lead{font-size:1.2rem;color:var(--muted);margin:0}
.cta-band{background:var(--surface-2);border-top:1px solid var(--line)}
.cta-band p{color:var(--muted);margin:0}
.apply-grid{align-items:start}
.apply-form{max-width:480px;justify-self:end;width:100%}
.apply-grid p{color:var(--muted)}
.inner main{min-height:60vh}

/* quote form close button only exists for the phone overlay */
.quote-close{display:none}

@media (max-width:860px){
  .burger{display:block}
  .top nav{position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--nav-bg);border-bottom:4px solid var(--amber);padding:6px var(--gutter) 18px;max-height:0;overflow:hidden;visibility:hidden;opacity:0;transition:opacity .2s,max-height .25s,visibility 0s .25s;font-size:.95rem}
  .top nav.is-open{max-height:80vh;visibility:visible;opacity:1;transition:opacity .2s,max-height .25s}
  .top nav a:not(.btn){padding:.95rem 0;border-bottom:1px solid var(--line);font-size:.9rem}
  .top nav .btn{margin-top:14px;text-align:center;font-size:.85rem;padding:.9rem 1rem}
  /* form becomes a full-screen panel opened by Request a quote */
  .quote{position:fixed;z-index:8;top:var(--header);left:0;right:0;bottom:0;margin:0;overflow:auto;border:0;border-top:5px solid var(--amber);display:none;background:var(--overlay-bg);box-shadow:none;padding-bottom:40px}
  body.quote-open .quote{display:block}
  body.quote-open{overflow:hidden}
  .stage[data-view="gallery"] .quote{opacity:1;visibility:visible}
  .quote-close{display:inline-block;float:right;font:700 .7rem var(--tech);letter-spacing:.05em;color:var(--text);background:transparent;border:2px solid var(--amber);border-radius:2px;padding:.55rem .8rem;cursor:pointer}
  .apply-form{position:static;display:block;justify-self:stretch;max-width:none;background:var(--surface)}
  .apply-form.quote{position:static}
}
@media (max-width:560px){
  .brick{justify-content:center;text-align:center;gap:2px 14px}
  .brick-links,.brick-social{justify-content:center;gap:0 14px}
  .brick-copy{display:none}
}

/* the Apply page reuses the form styling but sits in the page flow */
.apply-form.quote{position:static;transform:none;display:block;width:100%;max-height:none;overflow:visible;right:auto;top:auto;z-index:auto;background:var(--surface)}

/* controls sit bottom-left so the quote form never covers them */
.gallery-bar{justify-content:flex-start;flex-direction:row-reverse}
.controls{margin-left:0;margin-right:auto}
.cap{margin-left:auto;text-align:right}
@media (max-width:860px){.gallery-bar{flex-direction:row;justify-content:center}.cap{margin:0}.controls{margin:0 auto}}
/* short windows: tighten the form so the whole thing fits */
@media (min-width:861px) and (max-height:800px){
  .quote{padding:18px 22px}
  .quote h2{font-size:1.35rem}
  .quote-sub{margin-bottom:0}
  .quote label{margin:.65rem 0 .2rem;font-size:.85rem}
  .quote input,.quote select,.quote textarea{padding:.5rem .65rem}
  .quote textarea{height:64px}
  .quote .btn{margin-top:.9rem;padding:.75rem 1rem}
  .form-status{margin-top:.5rem;min-height:1.2em}
}

/* ---- the brick hides at the bottom edge and slides up when the pointer nears it ---- */
.brick{position:fixed;left:0;right:0;bottom:0;z-index:7;
  transform:translateY(calc(100% - 7px));transition:transform .3s ease;cursor:pointer}
.brick.is-up,.brick:focus-within{transform:none;cursor:auto}
/* pull tab: the hint that something lives down here */
.brick::after{content:"";position:absolute;left:50%;top:-16px;width:54px;height:16px;transform:translateX(-50%);
  background:var(--amber);clip-path:polygon(0 100%,16% 0,84% 0,100% 100%);pointer-events:none;transition:opacity .2s}
.brick.is-up::after,.brick:focus-within::after{opacity:0}
/* leave the bottom edge free for the hover zone */
.gallery-bar{padding-bottom:64px}
.hero-ui{padding-bottom:clamp(120px,19vh,170px)}
body.home main{padding-bottom:0}
@media (max-width:860px){.hero-ui{padding-bottom:132px}}
@media (prefers-reduced-motion:reduce){.brick{transition:none}}
@media (max-height:600px){
  .hero-ui{padding-bottom:84px;padding-top:12px}
  .gallery-bar{padding-bottom:40px}
}

/* ---- logo pieces: the VFL mark and the ELECTRIC wordmark sit apart ---- */
.brand{display:flex;align-items:center;gap:12px}
.brand .brand-mark{height:40px;width:auto;filter:drop-shadow(0 2px 10px rgba(0,0,0,.6))}
.brand-rule{width:3px;height:28px;background:var(--amber);transform:skewX(-14deg);flex:none}
.brand .brand-word{height:15px;width:auto;opacity:.95}
@media (max-width:560px){.brand{gap:9px}.brand .brand-mark{height:34px}.brand-rule{height:22px}.brand .brand-word{height:11px}}

/* wire divider (a bolt and a plug, taken from the logo) straddling the seam between sections */
:root{--wire:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 28'%3E%3Cpath d='M0 14H556' stroke='%23FBB03B' stroke-width='3'/%3E%3Cpath d='M316 0 288 16h14l-10 12 30-19h-15z' fill='%23FBB03B' stroke='%230b0b0a' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M556 5h16c5 0 8 4 10 9-2 5-5 9-10 9h-16z' fill='%23FBB03B'/%3E%3Crect x='584' y='8' width='24' height='3.4' rx='1.7' fill='%23FBB03B'/%3E%3Crect x='584' y='16.6' width='24' height='3.4' rx='1.7' fill='%23FBB03B'/%3E%3C/svg%3E")}
.inner main>section+section{position:relative}
.inner main>section+section::before{content:"";position:absolute;z-index:2;top:-14px;left:max(var(--gutter),calc(50% - 560px + var(--gutter)));width:min(520px,78vw);height:28px;background:var(--wire) no-repeat left center/contain;pointer-events:none}
.page-head h1::after{width:min(420px,100%);height:28px;background:var(--wire) no-repeat left center/contain;margin-top:.3em}

/* ---- services: full-screen photo carousel ---- */
.svc{position:relative;isolation:isolate;height:calc(100vh - var(--header));height:calc(100svh - var(--header));min-height:540px;overflow:hidden;background:#000}
.svc-track{display:flex;height:100%;transition:transform .7s cubic-bezier(.65,0,.25,1);touch-action:pan-y}
.svc-slide{position:relative;flex:0 0 100%;height:100%;overflow:hidden}
.svc-slide img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.9) contrast(1.05) brightness(.85)}
.svc-slide.is-active img{animation:drift 14s ease-out both}
.svc-slide::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(0deg,rgba(0,0,0,.92) 0%,rgba(0,0,0,.45) 48%,rgba(0,0,0,.5) 100%),radial-gradient(ellipse 85% 80% at 50% 50%,transparent 45%,rgba(0,0,0,.6) 100%)}
.svc-text{position:absolute;z-index:1;left:0;right:0;bottom:0;max-width:1240px;margin:0 auto;padding:0 var(--gutter) clamp(110px,18vh,150px)}
.svc-text>*{max-width:34rem;opacity:0;transform:translateY(18px);transition:opacity .5s ease,transform .5s ease}
.svc-slide.is-active .svc-text>*{opacity:1;transform:none;transition-delay:.35s}
.svc-slide.is-active .svc-text>p{transition-delay:.45s}
.svc-slide.is-active .svc-text>.btn{transition-delay:.55s}
.svc-text h2{font-size:clamp(2rem,5.6vw,4.2rem);text-shadow:0 2px 24px rgba(0,0,0,.7);margin-bottom:.35em}
.svc-text p{font-size:clamp(1rem,2.4vh,1.25rem);color:#E9E5DA;margin-bottom:1.4rem}
.svc-h1{position:absolute;z-index:3;top:20px;left:max(var(--gutter),calc(50% - 620px + var(--gutter)));margin:0;font:500 .85rem var(--tech);letter-spacing:.14em;text-transform:none;color:var(--amber);text-shadow:0 1px 8px #000}
.svc-bar{position:absolute;z-index:3;left:max(var(--gutter),calc(50% - 620px + var(--gutter)));bottom:56px;display:flex;align-items:center;gap:10px}
@media (max-width:860px){
  .svc-bar{left:0;right:0;justify-content:center}
  .svc-text{padding-bottom:120px}
}
@media (prefers-reduced-motion:reduce){.svc-track,.svc-text>*{transition:none}.svc-slide.is-active img{animation:none}}

/* the strip nudges up now and then so people know it is there */
@keyframes nudge{
  0%,100%{transform:translateY(calc(100% - 7px))}
  28%{transform:translateY(calc(100% - 34px))}
  50%{transform:translateY(calc(100% - 12px))}
  68%{transform:translateY(calc(100% - 24px))}
  84%{transform:translateY(calc(100% - 8px))}
}
.brick.hint:not(.is-up){animation:nudge 1s ease-out 1}
.page-head+section::before,.svc+section::before{display:none}

/* ---- home hero: text centered in the open area, clear of the slideshow buttons ---- */
.hero{align-items:center}
.hero-ui{text-align:center;padding-top:clamp(20px,4vh,60px);padding-bottom:clamp(130px,20vh,190px)}
.hero-ui h1,.hero-ui .lead,.hero-ui .hero-actions{margin-left:auto;margin-right:auto;max-width:min(46rem,100%)}
.hero-ui .lead{max-width:min(36ch,100%)}
.hero-actions{margin-top:clamp(1.2rem,3.5vh,2rem)}
.hero::before{background:radial-gradient(ellipse 80% 90% at 50% 50%,rgba(0,0,0,.72) 0%,rgba(0,0,0,.45) 60%,rgba(0,0,0,.3) 100%),linear-gradient(0deg,rgba(11,11,10,1) 0%,transparent 28%)}
@media (min-width:861px){
  /* keep the text centered in the space left of the quote form */
  .hero-ui{padding-right:calc(min(400px,36vw) + var(--gutter) * 2)}
}
@media (max-width:860px){
  .hero::before{background:linear-gradient(0deg,rgba(0,0,0,.9) 0%,rgba(0,0,0,.6) 55%,rgba(0,0,0,.45) 100%)}
}
@media (max-height:600px){
  .hero-ui{padding-bottom:96px;padding-top:12px}
}

/* ---- reviews (company page) ---- */
.reviews{background:var(--surface);padding:clamp(56px,8vw,104px) 0}
.rating-line{font:400 clamp(1.05rem,2.2vw,1.35rem) var(--head);margin:.2rem 0 1.6rem;max-width:none}
.stars{color:var(--accent-text);letter-spacing:.12em;margin:0}
.proof{list-style:none;margin:0 0 clamp(28px,4vw,48px);padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,2vw,24px)}
.proof li{border:1px solid var(--line);border-top:3px solid var(--amber);background:var(--bg);padding:1rem 1.1rem}
.proof strong{display:block;font:400 1.02rem var(--head);line-height:1.25;margin-bottom:.3rem}
.proof span{color:var(--muted);font-size:.9rem}
.review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2.4vw,28px)}
.review{display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--line)}
.review .photo{aspect-ratio:16/10;border:0;box-shadow:none;border-bottom:3px solid var(--amber)}
.review-body{padding:1.2rem 1.3rem 1.4rem;display:flex;flex-direction:column;gap:.7rem;flex:1}
.review-body p{margin:0}
.quote-text{color:var(--text);font-size:1.02rem;line-height:1.55}
.who{margin-top:auto!important;display:flex;flex-direction:column;gap:.15rem;color:var(--muted);font-size:.88rem}
.who strong{font:400 1rem var(--head);color:var(--text)}
.reviews-cta{margin:clamp(28px,4vw,44px) 0 0}
@media (max-width:860px){
  .proof{grid-template-columns:1fr}
  .review-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin:0 calc(var(--gutter) * -1);padding:0 var(--gutter) 10px}
  .review{flex:0 0 min(84vw,380px);scroll-snap-align:center}
}

/* ---- visit page ---- */
.visit{background:var(--bg);padding:clamp(48px,7vw,96px) 0}
.visit-grid{display:grid;grid-template-columns:.9fr 1.3fr;gap:clamp(24px,5vw,64px);align-items:start}
.facts{margin:1.2rem 0 1.6rem}
.facts div{padding:1rem 0;border-bottom:1px solid var(--line)}
.facts div:first-child{border-top:3px solid var(--amber)}
.facts dt{font:500 .72rem var(--tech);letter-spacing:.1em;color:var(--accent-text);margin-bottom:.35rem}
.facts dd{margin:0;color:var(--text);line-height:1.5}
.visit-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.4rem;margin:0;max-width:none}
.visit-actions .text-link{font-weight:600;text-decoration-color:var(--amber);text-decoration-thickness:3px;text-underline-offset:4px}
.map-frame{position:relative;aspect-ratio:4/3;border:1px solid var(--line);box-shadow:6px 6px 0 var(--amber-deep);background:var(--surface-2);overflow:hidden}
.map-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:invert(.92) hue-rotate(180deg) saturate(.8) contrast(.9)}
.map-note{margin:.8rem 0 0;font-size:.8rem;color:var(--muted)}
.visit-photo{background:var(--surface)}
.visit-photo p{color:var(--muted)}
.portrait-blank.wide{aspect-ratio:16/10}
@media (max-width:860px){
  .visit-grid{grid-template-columns:1fr}
  .map-frame{aspect-ratio:1/1}
}

/* ---- light theme: toggled by the button in the header ---- */
html[data-theme="light"]{
  color-scheme:light;
  --bg:#F2F2EF;--surface:#E7E7E2;--surface-2:#DBDBD4;--line:#C6C5BD;--text:#15140F;--muted:#55524A;--amber-deep:#C98A1F;
  --accent-text:#8A5600;
  --header-bg:rgba(242,242,239,.94);--nav-bg:rgba(242,242,239,.99);--overlay-bg:rgba(242,242,239,.99);
  --card-bg:rgba(255,255,255,.97);--input-bg:#fff;--input-line:#8D8A82;--invalid-bg:#FFF1EF;
  --err:#B3261E;--ok:#0B6B2E;
  --vig-1:rgba(70,52,14,.08);--vig-2:rgba(70,52,14,.2);
  --blank-fill:#C3C1BA;--shadow:rgba(40,30,10,.25);
}
html[data-theme="light"] .map-frame iframe{filter:none}
html[data-theme="light"] body::after{background:radial-gradient(ellipse at center,rgba(251,176,59,.22),transparent 65%)}

/* logo: cream lettering on dark, black lettering on light */
.logo-on-light{display:none}
html[data-theme="light"] .logo-on-dark{display:none}
html[data-theme="light"] .logo-on-light{display:block}
html[data-theme="light"] .brand .brand-mark,html[data-theme="light"] .brand .brand-word{filter:none}

/* theme toggle */
.theme-toggle{flex:none;width:44px;height:44px;margin-left:14px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--text);border:2px solid var(--amber);border-radius:2px;cursor:pointer;padding:0;transition:background .15s,color .15s}
.theme-toggle:hover{background:var(--amber);color:#000}
.theme-toggle svg{width:22px;height:22px}
.theme-toggle .i-moon{display:none}
html[data-theme="light"] .theme-toggle .i-sun{display:none}
html[data-theme="light"] .theme-toggle .i-moon{display:block}
.top nav{margin-left:auto}
@media (max-width:860px){
  .theme-toggle{margin-left:auto;order:2}
  .burger{order:3;margin-left:10px}
}

/* things that sit on photos keep light text in both themes */
.hero,.svc,.mission{color:var(--on-photo)}
.mission h2,.mission .values h3{color:#FBB03B}
.mission .values p{color:#D5D1C6}
.mission .values{border-top-color:rgba(255,255,255,.22)}
.area{color:#F3F0E8}

/* mission: photo behind it */
.mission{position:relative;isolation:isolate;overflow:hidden;background:#000;border-top:0}
.mission-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;filter:saturate(.85) contrast(1.05) brightness(.7)}
.mission::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(90deg,rgba(0,0,0,.88) 0%,rgba(0,0,0,.6) 55%,rgba(0,0,0,.35) 100%),radial-gradient(ellipse 90% 85% at 50% 50%,transparent 45%,rgba(0,0,0,.55) 100%)}
.mission-line{color:var(--on-photo);text-shadow:0 2px 24px rgba(0,0,0,.6)}

/* strip on pages that scroll: fully hidden until the very bottom, then a springy rise */
.brick.gated{transform:translateY(100%);transition:transform .45s cubic-bezier(.34,1.56,.64,1)}
.brick.gated::after{display:none}
.brick.gated.is-up{transform:none}
body.inner{padding-bottom:64px}
@media (max-width:560px){body.inner{padding-bottom:84px}}

/* theme toggle lives in the menu: an icon in the desktop bar, a full row in the phone dropdown */
.top nav .theme-toggle{margin-left:0;order:0;width:40px;height:40px}
.tt-label{display:none}
@media (max-width:860px){
  .burger{margin-left:auto;order:0}
  .top nav .theme-toggle{width:100%;height:auto;justify-content:flex-start;gap:.8rem;padding:.95rem 0;border:0;border-bottom:1px solid var(--line);border-radius:0;font:500 .9rem var(--tech);letter-spacing:.05em;color:var(--text);background:transparent}
  .top nav .theme-toggle:hover{background:transparent;color:var(--accent-text)}
  .tt-label{display:inline}
}

/* header logos: show exactly one set per theme (specific enough to beat the .brand img rule) */
.brand img.logo-on-light{display:none}
html[data-theme="light"] .brand img.logo-on-dark{display:none}
html[data-theme="light"] .brand img.logo-on-light{display:block}

/* mission photo: heavier vignette so the text always reads, edges fall off to near black */
.mission-bg{filter:saturate(.8) contrast(1.05) brightness(.55)}
.mission::before{
  background:
    radial-gradient(ellipse 75% 70% at 50% 50%,rgba(0,0,0,.2) 0%,rgba(0,0,0,.62) 62%,rgba(0,0,0,.95) 100%),
    linear-gradient(90deg,rgba(0,0,0,.82) 0%,rgba(0,0,0,.55) 55%,rgba(0,0,0,.7) 100%),
    linear-gradient(180deg,rgba(0,0,0,.85) 0%,transparent 22%,transparent 70%,rgba(0,0,0,.9) 100%)}
.mission-line,.mission h2{text-shadow:0 2px 26px rgba(0,0,0,.85),0 0 3px rgba(0,0,0,.6)}
.mission .values p{color:#E6E2D7;text-shadow:0 1px 14px rgba(0,0,0,.8)}

/* the wire divider owns .mission::before, so the photo shade lives on ::after */
.mission{overflow:visible}
.mission-bg{inset:0}
.mission::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(ellipse 75% 70% at 50% 50%,rgba(0,0,0,.2) 0%,rgba(0,0,0,.62) 62%,rgba(0,0,0,.95) 100%),
    linear-gradient(90deg,rgba(0,0,0,.82) 0%,rgba(0,0,0,.55) 55%,rgba(0,0,0,.7) 100%),
    linear-gradient(180deg,rgba(0,0,0,.85) 0%,transparent 22%,transparent 70%,rgba(0,0,0,.9) 100%)}
.mission-bg{filter:saturate(.85) contrast(1.05) brightness(.75)}
.mission::after{
  background:
    radial-gradient(ellipse 75% 70% at 55% 50%,rgba(0,0,0,.05) 0%,rgba(0,0,0,.45) 60%,rgba(0,0,0,.95) 100%),
    linear-gradient(90deg,rgba(0,0,0,.8) 0%,rgba(0,0,0,.45) 55%,rgba(0,0,0,.6) 100%),
    linear-gradient(180deg,rgba(0,0,0,.85) 0%,transparent 22%,transparent 70%,rgba(0,0,0,.9) 100%)}
.mission-bg{filter:saturate(.9) contrast(1.05) brightness(.82)}
.mission::after{
  background:
    radial-gradient(ellipse 85% 80% at 55% 50%,transparent 0%,rgba(0,0,0,.25) 62%,rgba(0,0,0,.7) 100%),
    linear-gradient(90deg,rgba(0,0,0,.7) 0%,rgba(0,0,0,.35) 55%,rgba(0,0,0,.45) 100%),
    linear-gradient(180deg,rgba(0,0,0,.6) 0%,transparent 18%,transparent 78%,rgba(0,0,0,.7) 100%)}


/* ---- About page: warm, story-led ---- */
.about-hero{position:relative;isolation:isolate;min-height:clamp(420px,72vh,680px);display:flex;align-items:flex-end;overflow:hidden;background:#000;color:var(--on-photo)}
.about-hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;filter:saturate(.95) contrast(1.05) brightness(.8)}
.about-hero::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(0deg,rgba(0,0,0,.9) 0%,rgba(0,0,0,.35) 50%,rgba(0,0,0,.45) 100%),radial-gradient(ellipse 90% 85% at 50% 45%,transparent 50%,rgba(0,0,0,.55) 100%)}
.about-hero-text{width:100%;padding-top:80px;padding-bottom:clamp(40px,8vh,80px)}
.about-hero h1{font-size:clamp(2.4rem,7vw,5rem);max-width:12ch;margin-bottom:.3em;text-shadow:0 2px 26px rgba(0,0,0,.7)}
.about-hero .lead{font-size:clamp(1.05rem,2.4vw,1.35rem);max-width:34ch;color:#ECE8DD;margin:0;text-shadow:0 1px 14px rgba(0,0,0,.7)}

.about-intro{background:var(--bg);padding:clamp(56px,8vw,104px) 0}
.big-line{font:400 clamp(1.7rem,4.4vw,3rem)/1.12 var(--head);max-width:20ch;margin:0 0 1.2rem}
.about-intro p{color:var(--muted)}
.about-intro .big-line{color:var(--text)}

.story{background:var(--surface);padding:clamp(56px,8vw,104px) 0}
.chapters{display:flex;flex-direction:column;gap:clamp(48px,7vw,96px);margin-top:clamp(28px,4vw,48px)}
.chapter{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(24px,5vw,72px);align-items:center}
.chapter:nth-child(even) .chapter-photo{order:2}
.chapter-photo{aspect-ratio:4/3}
.chapter .when{font:400 clamp(2rem,4vw,3rem) var(--head);color:var(--accent-text);margin:0 0 .1em;line-height:1}
.chapter h3{font-size:clamp(1.4rem,2.6vw,1.9rem);margin-bottom:.5em}
.chapter-text p{color:var(--muted)}

.crew{background:var(--bg);padding:clamp(56px,8vw,104px) 0}
.crew-lead{color:var(--muted);margin:0 0 clamp(24px,4vw,40px)}
.crew-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,3vw,36px)}
.crew-card .portrait-blank{aspect-ratio:4/5}
.crew-card h3{margin:1.1rem 0 .15rem;font-size:1.3rem}
.crew-card .role{color:var(--accent-text);font-weight:600;margin:0 0 .6rem}
.crew-card p:last-child{color:var(--muted);font-size:.98rem;margin:0}

.little{background:var(--surface);padding:clamp(48px,7vw,88px) 0}
.little-list{list-style:none;margin:2rem 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(16px,2.4vw,28px)}
.little-list li{border-top:3px solid var(--amber);padding-top:1rem}
.little-list h3{font-size:1.1rem}
.little-list p{color:var(--muted);font-size:.97rem}

.hello{background:var(--surface-2);border-top:1px solid var(--line)}
.hello p{color:var(--muted);margin:0}
.hello .area-cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:1rem 1.4rem}
.hello .text-link{font-weight:600;text-decoration-color:var(--amber);text-decoration-thickness:3px;text-underline-offset:4px}

@media (max-width:860px){
  .chapter{grid-template-columns:1fr}
  .chapter:nth-child(even) .chapter-photo{order:0}
  .crew-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin:0 calc(var(--gutter) * -1);padding:0 var(--gutter) 10px}
  .crew-card{flex:0 0 min(70vw,280px);scroll-snap-align:center}
  .little-list{grid-template-columns:1fr 1fr}
  .hello .area-cta{justify-content:flex-start}
}
@media (max-width:560px){.little-list{grid-template-columns:1fr}}

.book-fields[hidden]{display:none}
.opt{font-weight:400;color:var(--muted);font-size:.85em}
.quote select optgroup{font-weight:700}
