/* Thunder Reel site styles. Rules: no hover styles, no pointer-shape rules, no boxes/cards/borders on layout (form inputs excepted). */
*,*::before,*::after{box-sizing:border-box}
html{background:var(--bg);color:var(--bone);font-family:var(--f-body);font-size:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:5rem}
body{margin:0;font-size:var(--fs-body);line-height:1.6;overflow-x:clip;min-height:100vh}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.2em}
h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0;padding:0}
ul,ol{list-style:none}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
[tabindex="-1"]:focus{outline:none}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap{padding-inline:var(--pad-x);width:100%}
.skip{position:fixed;left:1rem;top:-6rem;z-index:200;background:var(--accent);color:var(--ink);padding:.9rem 1.2rem;font-weight:600;text-decoration:none}
.skip:focus{top:1rem}
.eyebrow,.label{font-family:var(--f-mono);font-size:var(--fs-label);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ash)}
.display{font-family:var(--f-display);font-weight:400;font-size:var(--fs-display);line-height:.9;text-transform:uppercase;letter-spacing:.005em}
.h2{font-family:var(--f-display);font-weight:400;font-size:var(--fs-h2);line-height:.95;text-transform:uppercase}
.h3{font-family:var(--f-display);font-weight:400;font-size:var(--fs-h3);line-height:1;text-transform:uppercase}
.lead{max-width:44rem;font-size:clamp(1.05rem,1.4vw,1.4rem);color:var(--bone)}
.arr{display:inline-block;margin-left:.15em}
/* Buttons: pill-shaped (fully rounded, echoing the logo's rounded sprocket holes), black/white/grey only.
   Label: condensed caps, wide tracking. A small rounded "sprocket" mark sits before the label.
   No hover styles by rule: feedback comes from :focus-visible (keyboard) and :active (press, touch or keyboard).
   Contrast (WCAG 2.x, on #000):
   primary   #000 on #FFF = 21:1 | active #000 on #D0D0D0 = 13.9:1 | focus ring #FFF vs page 21:1
   secondary #FFF on #000 = 21:1, outline #FFF 2px | active #FFF on #262626 = 15.1:1
   disabled  #8E8E8E on #000 = 6.5:1, dashed #8E8E8E outline (state also given by the "disabled" attribute) */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.7em;min-height:48px;min-width:44px;padding:.75rem 1.6rem;
  font:400 1rem/1.15 var(--f-display);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;text-align:center;
  border:2px solid var(--white);border-radius:999px;background:transparent;color:var(--white);
  transition:background-color var(--d1),color var(--d1),transform 120ms var(--ease-out)}
.btn::before{content:"";flex:0 0 auto;width:.5em;height:.62em;border-radius:.16em;background:currentColor}
.btn .arr{margin-left:0}
.btn--pri{background:var(--white);color:var(--ink)}
.btn--sec{background:transparent;color:var(--white)}
.btn:focus-visible{outline:2px solid var(--white);outline-offset:4px}
.btn:active{transform:scale(.97)}
.btn--pri:active{background:#D0D0D0;border-color:#D0D0D0}
.btn--sec:active{background:#262626}
.btn--sm{min-height:44px;padding:.55rem 1.1rem;font-size:.85rem;letter-spacing:.12em}
.btn[disabled],.btn[aria-disabled="true"]{background:transparent;color:var(--ash);border:2px dashed var(--ash);transform:none}
.btn[disabled]::before{background:transparent;outline:1.5px solid currentColor;outline-offset:-1.5px}
.btn[disabled]:active{background:transparent}
/* button look on a span inside a larger link (project bands): the whole band is the tap target */
.btn-look{pointer-events:none}

/* loader fallback: stays hidden if the inline loader style is ever blocked (e.g. CSP hash mismatch) */
.ldr{display:none}

/* fixed layers */
.gl,.gl-still,.grain{position:fixed;inset:0;pointer-events:none}
.gl{z-index:0;width:100%;height:100%;opacity:0;transition:opacity 600ms var(--ease-out)}
.gl.is-on{opacity:1}
.gl-still{z-index:0;background:var(--ink) center/cover no-repeat;opacity:.9}
html:not(.js) .gl-still,html.gl-off .gl-still,html.rm .gl-still{background-image:image-set(url(/assets/img/stills/particles-1920.webp) type("image/webp"))}
@media (max-width:767px){html:not(.js) .gl-still,html.gl-off .gl-still,html.rm .gl-still{background-image:url(/assets/img/stills/particles-960.webp)}}
.grain{z-index:3;opacity:.07;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")}
main,.ftr{position:relative;z-index:1}

/* header: logo on the LEFT, page nav (wide screens) in the middle, CTA + menu button on the right */
.hdr{position:fixed;z-index:20;top:0;left:0;right:0;display:flex;align-items:center;gap:1rem 1.5rem;padding:.75rem var(--pad-x);background:linear-gradient(180deg,rgba(0,0,0,.75),rgba(0,0,0,0));transition:transform var(--d2) var(--ease-out),opacity var(--d2)}
.hdr.is-hidden{transform:translateY(-110%)}
.hdr:focus-within{transform:none}
.js.intro-pending .hdr{opacity:0}
.hdr__l,.hdr__r{display:flex;align-items:center;gap:.75rem}
.hdr__r{margin-left:auto}
.logo{position:relative;display:flex;align-items:center;min-height:44px;min-width:44px;text-decoration:none;color:var(--bone)}
.logo__word{font-family:var(--f-display);font-size:clamp(1.25rem,2vw,1.6rem);text-transform:uppercase;line-height:1;white-space:nowrap}
.logo__img{display:block;height:clamp(34px,3.2vw,44px);width:auto;max-width:min(46vw,182px);object-fit:contain;object-position:left center}
.hdr__nav{display:none}
.hdr__nav ul{display:flex;flex-wrap:wrap;gap:0 clamp(.75rem,1.6vw,1.75rem)}
.hdr__a{display:inline-flex;align-items:center;min-height:44px;min-width:44px;text-decoration:none;font:500 .8125rem/1.2 var(--f-mono);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--bone)}
.hdr__a[aria-current="page"]{color:var(--white);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.45em}
.menu-btn,.menu-close{display:none;align-items:center;gap:.6rem;min-height:44px;min-width:44px;padding:0 .75rem;background:none;border:0;color:var(--bone);font:500 var(--fs-label)/1 var(--f-mono);letter-spacing:var(--track-label);text-transform:uppercase}
.js .menu-btn{display:inline-flex}
@media (min-width:1100px){.js .hdr__nav{display:block;margin-left:auto}.js .hdr__r{margin-left:0}.js .menu-btn{display:none}}
.menu-btn__ico{position:relative;width:22px;height:10px}
.menu-btn__ico::before,.menu-btn__ico::after{content:"";position:absolute;left:0;right:0;height:2px;background:currentColor}
.menu-btn__ico::before{top:0}.menu-btn__ico::after{bottom:0}
.menu-btn__ico.is-x::before{top:4px;transform:rotate(45deg)}.menu-btn__ico.is-x::after{bottom:4px;transform:rotate(-45deg)}
@media (max-width:519px){.hdr__cta{display:none}}
/* without JS: the header nav is shown (wrapping) and the menu dialog is hidden */
html:not(.js) .hdr{position:absolute;flex-wrap:wrap}
html:not(.js) .hdr__nav{display:block;order:3;width:100%}
html:not(.js) .menu{display:none}
.js .menu{position:fixed;inset:0;z-index:30;background:var(--ink);visibility:hidden;opacity:0;transition:opacity var(--d2) var(--ease-out),visibility 0s linear var(--d2);overflow-y:auto}
.js .menu.is-open{visibility:visible;opacity:1;transition:opacity var(--d2) var(--ease-out)}
.js .menu-close{display:inline-flex}
.menu__in{padding:.75rem var(--pad-x) 3rem;min-height:100%}
.js .menu__nav{margin-top:clamp(1.5rem,5vh,4rem)}
.js .menu__main a{display:block;font-family:var(--f-display);font-size:clamp(2.25rem,7.5vw,5.5rem);line-height:1.08;text-transform:uppercase;text-decoration:none;padding:.1rem 0}
.js .menu__main a[aria-current="page"]{text-decoration:underline;text-decoration-thickness:.06em;text-underline-offset:.12em}
.js .menu__main li{transform:translateY(40px);opacity:0;transition:transform var(--d3) var(--ease-out),opacity var(--d3)}
.js .menu.is-open .menu__main li{transform:none;opacity:1}
.js .menu.is-open .menu__main li:nth-child(2){transition-delay:40ms}.js .menu.is-open .menu__main li:nth-child(3){transition-delay:80ms}
.js .menu.is-open .menu__main li:nth-child(4){transition-delay:120ms}.js .menu.is-open .menu__main li:nth-child(5){transition-delay:160ms}.js .menu.is-open .menu__main li:nth-child(6){transition-delay:200ms}
.js .menu.is-open .menu__main li:nth-child(7){transition-delay:240ms}.js .menu.is-open .menu__main li:nth-child(8){transition-delay:280ms}
.js .menu__sub{display:flex;flex-wrap:wrap;gap:0 2rem;margin-top:2rem}
.js .menu__sub a{display:inline-flex;min-height:44px;align-items:center;font:500 var(--fs-label)/1 var(--f-mono);letter-spacing:var(--track-label);text-transform:uppercase}

/* sections: full-bleed, transparent, no seams */
.ch{position:relative;width:100%;min-height:100svh;padding-block:var(--pad-y)}
.ch__head{margin-bottom:clamp(2rem,6vh,4rem)}
.ch__head .h2{margin:.75rem 0 1.25rem;max-width:16ch}
/* inner-page opening scene: full viewport, big type, text bottom-left */
/* statements (home about line, about page) */
.statement{font-family:var(--f-display);font-weight:400;font-size:clamp(2rem,5.2vw,5.5rem);line-height:1;text-transform:uppercase;max-width:22ch;margin-top:.75rem}
.statement--sm{font-family:var(--f-body);font-weight:400;font-size:clamp(1.25rem,2.4vw,2.25rem);line-height:1.3;text-transform:none;max-width:34ch;margin:0}
.stack{display:flex;flex-direction:column;gap:clamp(1.5rem,5vh,3rem)}
.more{margin-top:clamp(2rem,6vh,3.5rem)}
.ch--about{display:flex;align-items:center}
.ch--work .more{margin-top:clamp(2rem,6vh,3.5rem)}
.ch--panels{padding-block:0}

/* intro / hero */
.ch--intro{display:flex;flex-direction:column;justify-content:flex-end;min-height:100svh;padding-block:var(--hd-top) var(--hd-bottom);overflow:hidden}
.ftg{position:absolute;inset:0;overflow:hidden;clip-path:inset(0 0 0 0)}
.js:not(.rm) .intro-pending .ftg,.js:not(.rm).intro-pending .ftg{clip-path:inset(0 100% 0 0)}
.ftg.is-wiped{transition:clip-path var(--d3) var(--ease-inout)}
.ftg__glow{position:absolute;width:70vmax;height:70vmax;border-radius:50%;filter:blur(80px);opacity:.28;animation:drift 22s var(--ease-inout) infinite alternate}
.ftg__glow--a{background:var(--p1);left:35%;top:-30%;opacity:.16}
.ftg__glow--b{background:var(--p2);left:-25%;top:30%;animation-duration:27s;opacity:.14}
.ftg__glow--c{background:var(--p3);left:55%;top:35%;animation-duration:31s;opacity:.22}
@keyframes drift{to{transform:translate3d(-8vw,6vh,0) scale(1.12)}}
.ftg__bolt{position:absolute;right:12%;top:8%;height:84%;width:auto;fill:var(--accent);opacity:0;filter:drop-shadow(0 0 30px rgba(255,255,255,.5));animation:strike 7s linear infinite 1.5s}
@keyframes strike{0%,88%,100%{opacity:0}89%{opacity:.55}90%{opacity:.08}91.5%{opacity:.4}96%{opacity:0}}
.ftg__streaks{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.035) 0 1px,transparent 1px 4px)}
.hero__word{position:absolute;left:var(--pad-x);right:var(--pad-x);top:20%;font-family:var(--f-display);font-size:clamp(4rem,17vw,22rem);line-height:.82;text-transform:uppercase;color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.22);white-space:nowrap;transform-origin:0 0;pointer-events:none}
.hero__txt{position:relative;z-index:2}
.hero__ctas{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;margin-top:2rem}
.pause{display:none;position:absolute;z-index:3;right:var(--pad-x);bottom:1.25rem;align-items:center;gap:.5rem;min-height:44px;min-width:44px;padding:0 .5rem;background:none;border:0;color:var(--bone);font:500 var(--fs-label)/1 var(--f-mono);letter-spacing:var(--track-label);text-transform:uppercase}
.js:not(.rm) .pause{display:inline-flex}
.pause__ico{width:10px;height:12px;border-left:3px solid currentColor;border-right:3px solid currentColor}
.pause[aria-pressed="true"]{color:var(--accent)}
.scroll-cue{position:absolute;left:var(--pad-x);bottom:1.6rem;font:500 var(--fs-label)/1 var(--f-mono);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ash)}
.ch--intro .hero__ctas{margin-bottom:2.5rem}
html.paused *,html.rm *{animation-play-state:paused!important}
html.rm .ftg__bolt{opacity:.25;animation:none}

/* reveal on scroll */
.js:not(.rm) .rv{opacity:0;transform:translateY(40px);transition:opacity var(--d3) var(--ease-out),transform var(--d3) var(--ease-out)}
.js:not(.rm) .rv-wipe{clip-path:polygon(0 0,0 0,-30% 100%,-30% 100%);transition:opacity var(--d3),transform var(--d3) var(--ease-out),clip-path var(--d4) var(--ease-out)}
.js:not(.rm) .rv.is-in{opacity:1;transform:none}
.js:not(.rm) .rv-wipe.is-in{clip-path:polygon(0 0,130% 0,100% 100%,0 100%)}

/* work bands: full-bleed vertical, image is a fixed "window" so the FLIP grow is seamless */
.bands{width:100%}
.band{width:100%}
.band__link{position:relative;display:flex;align-items:flex-end;width:100%;min-height:100vh;min-height:100svh;text-decoration:none;clip-path:inset(0 0 0 0);color:var(--bone)}
.band__media{position:absolute;inset:0}
.band__img{position:fixed;left:0;top:0;width:100vw;height:100vh;object-fit:cover}
.band__media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.15) 0%,rgba(0,0,0,0) 40%,rgba(0,0,0,.8) 100%)}
.band__txt{position:relative;z-index:1;display:flex;flex-direction:column;gap:.4rem;padding-block:2.5rem}
.band__top{display:flex;gap:1.25rem;font:500 var(--fs-label)/1 var(--f-mono);letter-spacing:var(--track-label);text-transform:uppercase}
.band__label{color:var(--accent)}
.band__title{font-family:var(--f-display);font-size:clamp(3rem,11vw,12rem);line-height:.9;text-transform:uppercase}
.band__meta{font-family:var(--f-mono);font-size:.85rem;letter-spacing:.04em}
.band__cta{margin-top:1rem;align-self:flex-start}
.band__link:focus-visible{outline:none}.band__link:focus-visible .band__cta{outline:2px solid var(--white);outline-offset:4px}
.band__link:active .band__cta{transform:scale(.97);background:#262626}
.js.is-leaving main > *:not(.is-flip-src),.js.is-leaving .ftr{opacity:0;transition:opacity var(--d1)}
.flip{position:fixed;inset:0;z-index:18;pointer-events:none}
.flip img{width:100%;height:100%;object-fit:cover}

/* making */
.chain{display:flex;flex-direction:column;gap:clamp(1.5rem,4vh,3rem)}
.chain__i{display:grid;grid-template-columns:3.5rem 1fr;gap:.25rem 1rem;max-width:62rem}
.chain__i:nth-child(2){margin-left:6vw}.chain__i:nth-child(3){margin-left:12vw}.chain__i:nth-child(4){margin-left:18vw}.chain__i:nth-child(5){margin-left:24vw}
.chain__n,.step__n{font:500 var(--fs-label)/2.4 var(--f-mono);color:var(--accent);letter-spacing:var(--track-label)}
.chain__t{font-family:var(--f-display);font-weight:400;font-size:var(--fs-h3);line-height:1.05;text-transform:uppercase}
.chain__d{grid-column:2;color:var(--bone);max-width:36rem}
@media (max-width:699px){.chain__i:nth-child(n){margin-left:0}}

/* services: large typographic list, no lines */
.svc{display:flex;flex-direction:column;gap:clamp(1.5rem,5vh,3.5rem)}
.svc__t{font-family:var(--f-display);font-weight:400;font-size:clamp(3rem,10vw,10rem);line-height:.9;text-transform:uppercase}
.svc__d{max-width:40rem;margin-top:.5rem;color:var(--bone)}
.svc__i:nth-child(even){text-align:right}.svc__i:nth-child(even) .svc__d{margin-left:auto}

/* plans: consecutive typographic rows, no prices, no boxes */
.plans{display:flex;flex-direction:column;gap:clamp(2.5rem,7vh,5rem)}
.plan__t{font-family:var(--f-display);font-weight:400;font-size:clamp(3rem,9vw,9rem);line-height:.9;text-transform:uppercase}
.plan__d{max-width:52rem;margin:.75rem 0 1rem}
.plan__a{margin-top:.25rem}

.plans__note{margin-top:2.5rem;color:var(--ash);font-size:.95rem}

/* process */
.steps{display:flex;flex-direction:column;gap:clamp(2rem,6vh,4rem)}
.step{max-width:40rem}
.step:nth-child(even){margin-left:auto}
.step__t{font-family:var(--f-display);font-weight:400;font-size:clamp(2.5rem,7vw,7rem);line-height:.95;text-transform:uppercase}
.step__n{display:block}

/* rights */
.rights{display:grid;gap:clamp(1.5rem,4vh,3rem);max-width:70rem}
.right__t{font-family:var(--f-display);font-weight:400;font-size:var(--fs-h3);text-transform:uppercase;line-height:1.05;color:var(--accent)}
.right__d{max-width:40rem;margin-top:.35rem}
@media (min-width:900px){.rights{grid-template-columns:1fr 1fr;column-gap:6vw}}

/* faq */
.faq{max-width:64rem}
.faq__i{margin-bottom:1.25rem}
.faq__q{display:flex;justify-content:space-between;align-items:center;gap:1rem;min-height:44px;list-style:none;font-family:var(--f-display);font-size:clamp(1.4rem,2.6vw,2.4rem);line-height:1.1;text-transform:uppercase}
.faq__q::-webkit-details-marker{display:none}
.faq__m{position:relative;flex:0 0 22px;height:22px}
.faq__m::before,.faq__m::after{content:"";position:absolute;left:0;right:0;top:10px;height:2px;background:var(--accent)}
.faq__m::after{transform:rotate(90deg);transition:transform var(--d2) var(--ease-out)}
.faq__i[open] .faq__m::after{transform:rotate(0)}
.faq__a{max-width:46rem;padding:.75rem 0 .5rem}

/* form (inputs are the only bordered elements, for usability) */
.form{max-width:64rem}
.form__setup{display:flex;gap:.75rem;align-items:flex-start;margin-bottom:1.5rem;color:var(--accent);font-weight:600}
.form__dot{flex:0 0 .7rem;height:.7rem;margin-top:.45rem;background:var(--accent)}
.form__req{color:var(--ash);font-size:.9rem;margin-bottom:1rem}
.form__grid{display:grid;gap:1.25rem 2rem}
@media (min-width:768px){.form__grid{grid-template-columns:1fr 1fr}.fld--wide{grid-column:1/-1}}
.fld label{display:block;font:500 var(--fs-label)/1.4 var(--f-mono);letter-spacing:var(--track-label);text-transform:uppercase;margin-bottom:.35rem}
.fld input,.fld select,.fld textarea{width:100%;min-height:48px;padding:.65rem 0;background:transparent;color:var(--bone);font:inherit;border:0;border-bottom:2px solid var(--ash);border-radius:0}
.fld select option{background:var(--night);color:var(--bone)}
.fld textarea{resize:vertical}
.fld [aria-invalid="true"]{border-bottom:3px dashed var(--white)}
.fld__e{color:var(--white);font-size:.9rem;font-weight:600;margin-top:.3rem}
.fld__e::before{content:"Error: "}
.fld__h{color:var(--ash);font-size:.9rem;margin-top:.3rem}
.req{color:var(--accent)}
.chk{display:flex;gap:.75rem;align-items:flex-start;margin-top:2rem}
.chk input{flex:0 0 24px;width:24px;height:24px;margin:.15rem 0 0;accent-color:var(--accent)}
.form__privacy{margin-top:1.5rem;color:var(--bone)}
.form__actions{margin-top:2rem}
.form__err{margin-bottom:1.5rem;color:var(--white)}
.form__err ul{list-style:disc;padding-left:1.25rem}

/* footer */
/* Footer v2 (2026-10-27): CTA, grouped columns, disabled newsletter, giant wordmark, bottom bar. Full-bleed, hairline rules only. */
.ftr{padding:0 0 1rem;overflow:hidden;border-top:1px solid var(--line);background:var(--ink)}
.ftr__cta{padding-block:clamp(4.5rem,16vh,10rem) clamp(3.5rem,10vh,6rem)}
.ftr__ctah{font-size:clamp(2.75rem,8vw,7.5rem);max-width:14ch}
.ftr__cta .lead{margin-bottom:2rem}
.ftr__grid{display:grid;grid-template-columns:minmax(0,1fr);gap:2.75rem 2rem;padding-block:3rem 3.5rem;border-top:1px solid var(--line)}
.ftr__h{font:500 .875rem/1.4 var(--f-mono);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ash);margin:0 0 .75rem}
.ftr__p{font-size:1rem;line-height:1.55;color:var(--bone);max-width:34rem}
.ftr__note{font-size:.875rem;color:var(--ash);margin-top:.75rem}
.ftr__note a{display:inline-flex;align-items:center;min-height:44px;color:var(--bone)}
.ftr__list{list-style:none;margin:0;padding:0}
.ftr__list a{display:inline-flex;align-items:center;min-height:44px;font-size:1rem;color:var(--white);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.3em;text-decoration-color:var(--ash)}
.ftr__list a[aria-current="page"]{text-decoration-thickness:2px;text-decoration-color:var(--white)}
.ftr__soon{min-height:44px;display:flex;align-items:center;flex-wrap:wrap;gap:0 .4rem;color:var(--bone);font-size:1rem}
.ftr__soon span{color:var(--ash);font-size:.875rem}
.ftr__nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem}
.ftr__news .fld{margin-top:1.25rem}
.ftr__news .chk{margin-top:1.25rem}
.ftr__news .chk label{font-size:.9375rem;line-height:1.5;color:var(--bone)}
.ftr__news :disabled{opacity:.55}
.ftr__sub{margin-top:1.25rem}
.ftr__mark{padding-block:1rem 2rem}
.ftr__mark img{display:block;width:100%;height:auto}
.ftr__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.25rem 2rem;padding-top:1rem;border-top:1px solid var(--line);font-size:.875rem;color:var(--ash)}
.ftr__bar p{margin:0;padding-block:.5rem}
.ftr__list--row{display:flex;flex-wrap:wrap;gap:0 1.5rem}
.ftr__bar .ftr__list a{font-size:.875rem}
@media (min-width:768px){.ftr__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.ftr__grid{grid-template-columns:1.1fr 1.6fr .9fr 1.6fr}}

/* project pages: a sequence of full-screen, full-bleed scenes (100svh x 100vw). No inset frames.
   Overlaid text sits on a black gradient: bottom 40% of each scene is >= 85% black, so #EDEDED text stays >= 15:1. */
.p-hero,.scene{position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:100vh;min-height:100svh;padding-block:var(--hd-top) var(--hd-bottom);overflow:hidden}
.p-hero__media,.scene__media{position:absolute;inset:0;overflow:hidden}
.p-hero__img,.scene__img{width:100%;height:100%;object-fit:cover}
.p-hero__media::after,.scene__media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.45) 0%,rgba(0,0,0,.1) 28%,rgba(0,0,0,.6) 52%,rgba(0,0,0,.88) 68%,#000 100%)}
.p-hero__txt,.scene__txt{position:relative;z-index:1}
.p-hero__meta{font-family:var(--f-mono);letter-spacing:.04em}
.p-hero__back{margin-bottom:var(--hd-s3)}
.badge{font:500 var(--fs-label)/1 var(--f-mono);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--white)}
.scene__h{font-family:var(--f-display);font-weight:400;font-size:var(--fs-h2);line-height:.95;text-transform:uppercase;color:var(--white)}
.scene__p{max-width:44rem;margin-top:1rem;font-size:clamp(1.1rem,1.6vw,1.5rem);line-height:1.5;color:var(--bone)}
.scene--center{justify-content:center;align-items:center;text-align:center}
.scene--center .scene__p{margin-inline:auto}
.scene--center .scene__media::after{background:rgba(0,0,0,.72)}
.scene--video .scene__img{filter:grayscale(1)}
.p-info{display:flex;flex-direction:column;justify-content:center;gap:clamp(2.5rem,7vh,5rem)}
.facts{display:grid;gap:1.25rem 3rem}
@media (min-width:768px){.facts{grid-template-columns:repeat(3,1fr)}}
.fact dt{font:500 var(--fs-label)/1.4 var(--f-mono);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ash)}
.fact dd{margin:.25rem 0 0}
.p-info__notes{display:flex;flex-direction:column;gap:1rem;max-width:52rem;color:var(--bone)}
.p-next{padding-block:0;min-height:auto}
.p-cta{min-height:70svh;display:flex;align-items:center}
.prose{max-width:52rem}
.prose .h3{margin:2.5rem 0 .75rem}
.prose .h2{margin:1rem 0}
.sep{color:var(--accent)}
.stub__main{min-height:100vh;display:flex;flex-direction:column;justify-content:center;gap:1rem;padding:var(--pad-x)}
.ftr .eyebrow,.ftr .fld label{font-size:.875rem}
.ftr__news .chk input{width:28px;height:28px;flex-basis:28px}

/* ---------- page-header system (2026-10-27): 3 sizes, 1 spacing scale, left alignment, 2 anchors, 1 entrance family ---------- */
.hd{display:flex;align-items:flex-end;min-height:100svh;padding-block:var(--hd-top) var(--hd-bottom)}
.hd--top{align-items:flex-start}
.ch--contact,.p-text{padding-top:var(--hd-top)}
.ch--contact .hd__in{margin-bottom:clamp(2rem,6vh,4rem)}
.hd__h{font-family:var(--f-display);font-weight:400;line-height:var(--hd-lh);text-transform:uppercase;letter-spacing:.005em;margin:var(--hd-s1) 0 var(--hd-s2);overflow-wrap:break-word}
.hd__h--xl{font-size:var(--hd-xl);max-width:13ch}
.hd__h--l{font-size:var(--hd-l);max-width:12ch}
.hd__h--m{font-size:var(--hd-m);max-width:16ch}
.hd__p{max-width:40rem}
.hd__in > .hero__ctas{margin-top:var(--hd-s3)}
.p-hero__meta.hd__p{font-size:1rem}
.w{display:inline-block}
/* entrance: eyebrow slate-wipe, H1 words rise through a mask, intro and actions settle. CSS only; starts once the loader opens. */
@keyframes hd-wipe{from{clip-path:inset(-.3em 100% -.3em -.2em)}to{clip-path:inset(-.3em -.2em -.3em -.2em)}}
@keyframes hd-rise{from{transform:translateY(100%);clip-path:inset(-.15em -.1em 100% -.1em)}to{transform:none;clip-path:inset(-.15em -.1em -.15em -.1em)}}
@keyframes hd-up{from{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:none}}
.js:not(.rm):is(.hd-wait,.intro-pending) :is(.hd-e,.hd__h .w,.hd-p,.hd-a){opacity:0}
.js:not(.rm):not(.hd-wait):not(.intro-pending) .hd-e{animation:hd-wipe 700ms var(--ease-out) 60ms backwards}
.js:not(.rm):not(.hd-wait):not(.intro-pending) .hd__h .w{animation:hd-rise 900ms cubic-bezier(.16,1,.3,1) 160ms backwards}
.js:not(.rm):not(.hd-wait):not(.intro-pending) .hd__h .w:nth-child(2){animation-delay:230ms}
.js:not(.rm):not(.hd-wait):not(.intro-pending) .hd__h .w:nth-child(3){animation-delay:300ms}
.js:not(.rm):not(.hd-wait):not(.intro-pending) .hd__h .w:nth-child(4){animation-delay:370ms}
.js:not(.rm):not(.hd-wait):not(.intro-pending) .hd__h .w:nth-child(n+5){animation-delay:440ms}
.js:not(.rm):not(.hd-wait):not(.intro-pending) .hd-p{animation:hd-up 800ms var(--ease-out) 560ms backwards}
.js:not(.rm):not(.hd-wait):not(.intro-pending) .hd-a{animation:hd-up 800ms var(--ease-out) 700ms backwards}
/* page-to-page: same-origin navigations cross-fade (no JS); the fixed nav holds still. */
@view-transition{navigation:auto}
.hdr{view-transition-name:hdr}
::view-transition-old(root){animation:vt-out 260ms var(--ease-inout) both}
::view-transition-new(root){animation:vt-in 420ms var(--ease-out) 120ms both}
@keyframes vt-out{to{opacity:0}}
@keyframes vt-in{from{opacity:0}}
@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}.ch--intro .hd__h--xl{max-width:16ch}

/* contact by email (2026-10-27) */
.mail{overflow-wrap:anywhere}
.mailbox{display:grid;gap:1rem;max-width:64rem;padding-block:clamp(2rem,6vh,4rem);margin-bottom:clamp(2rem,6vh,4rem);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.mailbox__p{font-size:clamp(1.05rem,1.4vw,1.4rem);color:var(--bone)}
.mail--big{display:inline-block;margin-top:.5rem;font-family:var(--f-display);font-size:clamp(1.6rem,4.2vw,3.75rem);line-height:1.05;text-transform:uppercase;color:var(--white);text-decoration-thickness:2px;text-underline-offset:.15em}
.mailbox__tips{max-width:40rem;color:var(--bone)}
.adr{font-style:normal;color:var(--bone);line-height:1.55}
.mailbox__adr{font-size:.9375rem;color:var(--ash)}
.form__h{margin-bottom:1.5rem}
.ftr__h--sub{margin-top:1.5rem;margin-bottom:.25rem}
.ftr__about .mail{display:inline-flex;align-items:center;min-height:44px;color:var(--white)}

/* price signal (placeholder until prices are confirmed) */
.price{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem;margin-top:.75rem;font-size:1rem}
.price__l{font-family:var(--f-mono,inherit);font-size:.875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--bone)}
.price--tbc .price__l{color:var(--ash);border-bottom:1px dashed var(--ash);padding-bottom:.1rem}
.price__v{font-family:var(--f-display);font-size:clamp(1.75rem,3.5vw,3rem);line-height:1;color:var(--white)}
.price__u{color:var(--bone)}
.psteps{display:grid;gap:clamp(1.5rem,4vh,3rem);counter-reset:none}
.pstep{border-top:1px solid var(--line);padding-top:1rem;max-width:30rem}
.pstep__n{display:block;font-size:.875rem;color:var(--ash);letter-spacing:.08em}
.pstep__t{font-family:var(--f-display);font-weight:400;font-size:var(--fs-h3);text-transform:uppercase;line-height:1.05;margin-top:.35rem}
.pstep__d{margin-top:.35rem;color:var(--bone)}
@media (min-width:768px){.psteps{grid-template-columns:repeat(3,1fr);column-gap:4vw}}
/* trust: team + commitments, typographic rows, no boxes */
.trust{display:grid;gap:clamp(2rem,6vh,4rem)}
.team__tbc{margin-top:.75rem;font-size:clamp(1.15rem,1.8vw,1.6rem);line-height:1.35;color:var(--bone);max-width:24ch}
.pledges{margin-top:.75rem}
.pledge{display:grid;gap:.25rem;padding-block:1rem;border-top:1px solid var(--line)}
.pledge:last-child{border-bottom:1px solid var(--line)}
.pledge__t{font-family:var(--f-display);font-weight:400;font-size:var(--fs-h3);text-transform:uppercase;line-height:1.05}
.pledge__d{color:var(--bone);max-width:40rem}
@media (min-width:900px){.trust{grid-template-columns:1fr 2fr;column-gap:6vw}.pledge{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);column-gap:2rem;align-items:baseline}}
.reply{margin-top:.5rem;color:var(--bone);font-size:1rem}

/* reel: kinds of commercial (placeholder slots, no stand-in video) */
.kinds{display:flex;flex-direction:column}
.kind{display:grid;gap:.4rem;padding-block:clamp(1.5rem,4vh,2.5rem);border-top:1px solid var(--line)}
.kind:last-child{border-bottom:1px solid var(--line)}
.kind__n{font-size:.875rem;color:var(--ash);letter-spacing:.08em}
.kind__t{font-family:var(--f-display);font-weight:400;font-size:clamp(2.5rem,7vw,7rem);line-height:.95;text-transform:uppercase}
.kind__d{color:var(--bone);max-width:36rem}
.kind__s .price__l{color:var(--ash);border-bottom:1px dashed var(--ash);padding-bottom:.1rem}
.kind__near{color:var(--bone)}
.kind__near a{display:inline-flex;align-items:center;min-height:44px;color:var(--white)}
@media (min-width:900px){.kind{grid-template-columns:4rem minmax(0,1.3fr) minmax(0,1fr);column-gap:2rem;align-items:baseline}.kind__d,.kind__s,.kind__near{grid-column:3}.kind__t{grid-column:2;grid-row:1/span 3}}

/* newsletter page (designed 2026-10-27; sign-up disabled) */
.ftr__more{display:inline-flex;align-items:center;min-height:44px;color:var(--white)}
.issue{max-width:38rem;padding-block:clamp(1.5rem,4vh,2.5rem);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.issue__k{font:500 .875rem/1.4 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ash)}
.issue__h{font-family:var(--f-display);font-weight:400;font-size:clamp(2rem,5vw,3.25rem);line-height:1;text-transform:uppercase;margin:.5rem 0 1rem}
.issue__p{color:var(--bone);margin-bottom:1rem}
.issue__i{padding-block:1.25rem;border-top:1px solid var(--line)}
.issue__i:last-of-type{border-bottom:1px solid var(--line);margin-bottom:1.25rem}
.issue__t{font-family:var(--f-display);font-weight:400;font-size:var(--fs-h3);line-height:1.05;text-transform:uppercase;margin:.35rem 0 .5rem}
.issue__i a{display:inline-flex;align-items:center;min-height:44px;color:var(--white)}
.issue__f{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--line);display:grid;gap:.5rem;font-size:.875rem;color:var(--ash)}
.signup{display:grid;gap:clamp(2rem,6vh,4rem)}
.signup .ftr__news{max-width:36rem}
.signup .ftr__news .h2{margin-bottom:.75rem}
.signup__notes{display:grid;gap:.5rem;align-content:start;color:var(--bone);max-width:30rem}
.signup__notes .eyebrow{margin-top:1rem}
.signup__notes .mail{display:inline-flex;align-items:center;min-height:44px;color:var(--white)}
@media (min-width:900px){.signup{grid-template-columns:3fr 2fr;column-gap:6vw}}

/* ---------- phone spacing system (Round 5, 2026-10-27): mobile only, desktop untouched ----------
   1 gutter (--pad-x, safe-area aware), 1 section padding (--pad-y), 1 measure (65ch), 1 heading-to-text gap (--gap-hp).
   Content sections size to their content instead of a forced 100svh; opening scenes stay full-height (svh with vh fallback). */
.hdr{padding-top:max(.75rem,env(safe-area-inset-top,0px))}
.ftr{padding-bottom:max(1rem,env(safe-area-inset-bottom,0px))}
@media (max-width:767px){
  .ch{min-height:0}
  .ch--intro,.p-hero,.scene{min-height:100vh;min-height:100svh}
  .hd{min-height:70vh;min-height:70svh}
  .p-cta{min-height:0}
  .ch--about{display:block}
  /* one left edge: no alternating right alignment or list indents on phones */
  .svc__i:nth-child(even){text-align:left}.svc__i:nth-child(even) .svc__d{margin-left:0}
  .step:nth-child(even){margin-left:0}
  .chain__i{grid-template-columns:minmax(0,1fr);gap:0}.chain__d{grid-column:1}
  /* measure + consistent heading-to-text spacing */
  main :is(p,li,dd,address),.ftr__p{max-width:min(100%,var(--measure))}
  .lead,.hd__p,.scene__p,.mailbox__p,.plan__d,.prose{max-width:min(100%,var(--measure))}
  .svc__d,.plan__d,.step__d,.chain__d,.right__d,.pstep__d,.pledge__d,.kind__d,.scene__p{margin-top:var(--gap-hp)}
  .ch__head{margin-bottom:2.5rem}
  .ch__head .h2{margin:.75rem 0 var(--gap-hp)}
  .svc,.steps,.chain,.plans{gap:2.5rem}
  .rights{gap:1.5rem}
  /* footer: same section padding as the page above it */
  .ftr__cta{padding-block:var(--pad-y)}
  .ftr__grid{padding-block:var(--pad-y);gap:2.5rem 2rem}
  .ftr__mark{padding-block:1rem 1.5rem}
  /* text floor: nothing readable under 14px on phones */
  .band__meta,.fld label{font-size:.875rem}
  /* JS off: the header shows its full nav (wraps to 2-3 rows), so it takes its own space instead of covering the H1 */
  html:not(.js) .hdr{position:relative}
  html:not(.js) main > :first-child{padding-top:var(--pad-y)}
}
