/* Nashville Railing — ink / paper / oxide. Tokens live in tokens.css. */

/* Base */
*,*::before,*::after{box-sizing:border-box}
html,body{overflow-x:clip}
html{scroll-behavior:smooth;scroll-padding-top:var(--space-md);background:var(--color-ink);color-scheme:dark;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--color-ink);color:var(--color-paper);font-family:var(--font-body);font-size:var(--text-body);line-height:1.45}
body.drawer-open{overflow:hidden}
img{display:block;width:100%;height:auto}
picture{display:block}
figure,h1,h2,h3,p,ol,ul{margin:0}
h1,h2,h3{min-width:0;font-family:var(--font-display);font-weight:500;letter-spacing:-.05em;text-wrap:balance}
p{max-width:60ch;text-wrap:balance}
figcaption,summary,.btn{text-wrap:balance}
a{color:inherit;text-decoration:none}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a,button,summary,label{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.icon{width:1.15em;height:1.15em;flex:none}
.skip-link{position:fixed;z-index:100;top:var(--space-sm);left:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--color-paper);color:var(--color-ink);transform:translateY(-200%)}
.skip-link:focus{transform:none}
.section-note{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.12em}
.lede{max-width:38ch;font-size:var(--text-lede);line-height:1.25;letter-spacing:-.02em}
.section-title{font-size:var(--text-heading);line-height:.88}
.section-head{display:grid;gap:var(--space-lg)}
main>section{padding:var(--section-pad) max(var(--page-gutter),calc((100% - var(--content-max))/2))}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:space-between;gap:var(--space-lg);min-height:3rem;padding:var(--space-xs) var(--space-md);border:1px solid var(--color-accent);background:var(--color-accent);color:var(--color-accent-ink);font-weight:500;line-height:1.2;transition:background .2s,color .2s,border-color .2s}
.btn:hover{background:var(--color-paper-bright);border-color:var(--color-paper-bright)}
.btn-ink{border-color:var(--color-ink);background:var(--color-ink);color:var(--color-paper)}
.btn-ink:hover{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-accent-ink)}
.btn:active{opacity:.75}
.call-link{display:inline-flex;align-items:center;gap:var(--space-2xs);min-height:2.75rem;border-bottom:1px solid transparent}
.call-link:hover span{border-bottom:1px solid currentColor}

/* Header */
.site-header{position:absolute;z-index:20;top:0;left:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto;align-items:start;gap:var(--space-xl);width:100%;padding:var(--space-md) max(var(--page-gutter),env(safe-area-inset-right)) var(--space-md) max(var(--page-gutter),env(safe-area-inset-left));color:var(--color-paper);font-size:var(--text-small);line-height:1.2}
.wordmark{display:flex;align-items:center;gap:var(--space-sm);min-height:2.75rem;font-weight:500}
.wordmark>span:first-child{display:grid;place-items:center;width:2.75rem;height:2.75rem;border:1px solid currentColor;font-family:var(--font-display);letter-spacing:-.06em}
.header-service{justify-self:center}
.header-phone{display:inline-flex;align-items:center;min-height:2.75rem;border-bottom:1px solid transparent}
.header-phone:hover{border-color:currentColor}
.primary-nav{display:flex;align-items:center;gap:var(--space-lg)}
.primary-nav a{display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;min-height:2.75rem;border-bottom:1px solid transparent}
.primary-nav a:hover{border-color:currentColor}
.header-call,.menu-button,.mobile-nav{display:none}
.header-call,.menu-button{align-items:center;justify-content:center;gap:var(--space-2xs);min-width:2.75rem;min-height:2.75rem;padding:0 var(--space-xs);border:1px solid rgba(250,249,245,.4);background:rgba(16,17,15,.35);color:inherit;font-size:var(--text-small)}

/* Hero */
.hero{position:relative;min-height:100svh;background:var(--color-ink)}
main>.hero{padding:0}
.hero-media,.hero-shade{position:absolute;inset:0}
.hero-media img{width:100%;height:100%;object-fit:cover}
.hero-media::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(150deg,var(--color-ink) 0%,var(--color-accent) 130%);mix-blend-mode:color;opacity:.3;pointer-events:none}
.hero-shade{background:linear-gradient(180deg,rgba(6,8,9,.45) 0%,rgba(6,8,9,.2) 40%,rgba(6,8,9,.72) 100%)}
.hero-content{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;min-height:100svh;padding:8rem max(var(--page-gutter),calc((100% - var(--content-max))/2)) var(--space-2xl)}
.hero-kicker{margin-bottom:var(--space-sm);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.14em}
.hero h1{font-size:var(--text-display);line-height:.76;text-transform:uppercase;letter-spacing:-.065em;word-spacing:.2em;text-wrap:initial}
.hero h1 .line{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.hero h1 .line-inner{display:block}
.hero h1 .line:nth-child(2){margin-left:18%;font-size:.56em}
.hero h1 .line:nth-child(3){font-size:.58em;color:var(--color-paper-bright);white-space:nowrap}
.hero h1.is-variant .line:first-child{font-size:.58em;white-space:nowrap}
.hero-bottom{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--space-xl);margin-top:var(--space-xl);margin-left:19%}
.hero-actions{display:grid;justify-items:start;gap:var(--space-xs)}
.hero-cta{min-width:16rem}

/* Hero entrance — CSS only, gated on JS so content is never hidden without it */
@keyframes rise{from{transform:translateY(115%)}to{transform:none}}
@keyframes fadeUp{from{opacity:0;transform:translateY(1.5rem)}to{opacity:1;transform:none}}
.js .hero h1 .line-inner{animation:rise 1s var(--ease-out) both}
.js .hero h1 .line:nth-child(1) .line-inner{animation-delay:.1s}
.js .hero h1 .line:nth-child(2) .line-inner{animation-delay:.22s}
.js .hero h1 .line:nth-child(3) .line-inner{animation-delay:.34s}
@keyframes slideUp{from{transform:translateY(1.5rem)}to{transform:none}}
.js .hero-kicker{animation:fadeUp .8s var(--ease-out) both}
.js .hero-bottom{animation:slideUp .8s var(--ease-out) both}

/* Proof strip */
.proof{display:grid;gap:var(--space-lg);background:var(--color-ink-soft)}
main>.proof{padding-block:var(--space-xl)}
.proof-list{display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-xl);padding:0;list-style:none}
.proof-list li{display:flex;align-items:center;gap:var(--space-2xs)}
.proof-list .icon{color:var(--color-accent)}
.proof-line{max-width:none;padding-top:var(--space-lg);border-top:var(--rule);font-family:var(--font-display);font-size:clamp(1.5rem,3.2vw,2.75rem);line-height:1.05;letter-spacing:-.04em;text-wrap:balance}

/* Work */
.work{background:var(--color-paper);color:var(--color-ink)}
.work-lead{margin-top:var(--space-2xl)}
.work-lead img{height:min(72svh,46rem);object-fit:cover}
.work figcaption{display:flex;justify-content:space-between;gap:var(--space-md);padding-top:var(--space-xs);font-size:var(--text-small)}
.work-lead figcaption span:first-child{font-family:var(--font-display);font-size:var(--text-lede);letter-spacing:-.03em}
.work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-lg);margin-top:var(--space-lg)}
.work-grid img{aspect-ratio:4/3;object-fit:cover}

/* Duotone photos */
.duotone{position:relative;overflow:hidden}
.duotone img{filter:saturate(.9) contrast(1.04)}
.duotone::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(150deg,var(--color-ink) 0%,var(--color-accent) 115%);mix-blend-mode:color;opacity:.12;pointer-events:none}

/* Styles */
.styles{background:var(--color-ink)}
.systems-compare{display:grid;grid-template-columns:minmax(0,1fr) minmax(20rem,.85fr);gap:var(--space-2xl);align-items:start;margin-top:var(--space-2xl)}
.system-list{border-top:var(--rule)}
.system-list button{display:grid;gap:var(--space-2xs);width:100%;min-height:2.75rem;padding:var(--space-lg) var(--space-sm);border:0;border-bottom:var(--rule);background:none;text-align:left;transition:background .2s}
.system-list button:hover{background:var(--color-ink-soft)}
.system-list button[aria-selected="true"]{background:var(--color-secondary);color:var(--color-paper-bright)}
.system-list strong{font-family:var(--font-display);font-size:clamp(2.25rem,4.4vw,5rem);font-weight:500;letter-spacing:-.06em;line-height:.9}
.system-list small{font-size:var(--text-small)}
.system-diagram{display:grid;justify-items:start;gap:var(--space-lg);position:sticky;top:var(--space-xl);padding-top:var(--space-xl);border-top:var(--rule)}
.system-svg{width:100%;height:auto;color:var(--color-paper)}
.sys-post{stroke:currentColor;stroke-width:3}
.sys-cap{stroke:currentColor;stroke-width:4}
.sys-fill{opacity:0;transition:opacity .5s var(--ease-out)}
.sys-fill-cable{stroke:var(--color-accent);stroke-width:2.5}
.sys-fill-glass{fill:var(--color-accent);fill-opacity:.14;stroke:var(--color-accent);stroke-width:1.5}
.sys-fill-glass circle{fill:var(--color-accent);fill-opacity:1}
.sys-fill-steel{stroke:var(--color-accent);stroke-width:5}
.system-diagram[data-system-active="cable"] .sys-fill-cable,.system-diagram[data-system-active="glass"] .sys-fill-glass,.system-diagram[data-system-active="steel"] .sys-fill-steel{opacity:1}
.system-readout-text{max-width:32ch;font-family:var(--font-display);font-size:var(--text-lede);line-height:1.15;letter-spacing:-.03em}

/* What you get */
.value{background:var(--color-paper);color:var(--color-ink)}
.value-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md);margin-top:var(--space-2xl)}
.value-grid img{aspect-ratio:1;object-fit:cover}
.value-grid figcaption{padding-top:var(--space-xs);font-size:var(--text-small)}

/* How it works */
.how{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-2xl);align-items:center;background:var(--color-ink-soft)}
.how-media img{aspect-ratio:4/5;object-fit:cover}
.how-copy{display:grid;justify-items:start;gap:var(--space-xl)}
.steps{width:100%;padding:0;border-top:var(--rule);list-style:none}
.steps li{display:grid;grid-template-columns:3rem minmax(0,1fr);gap:var(--space-sm);padding:var(--space-md) 0;border-bottom:var(--rule)}
.step-num{font-family:var(--font-display);font-size:1.5rem;color:var(--color-accent);line-height:1.1}
.steps h3{font-size:clamp(1.375rem,2.2vw,1.75rem);letter-spacing:-.03em;line-height:1.1}
.steps p{margin-top:var(--space-2xs);color:var(--color-muted)}
.price-stance{font-size:var(--text-lede);line-height:1.25;letter-spacing:-.02em;max-width:34ch}

/* Tension widget */
.tension-demo{display:grid;justify-items:start;gap:var(--space-xl);background:var(--color-paper);color:var(--color-ink)}
.tension-stage{width:100%;padding-top:var(--space-lg);border-top:1px solid var(--color-ink)}
.tension-svg{width:100%;height:auto;touch-action:none}
.tension-post{stroke:var(--color-ink);stroke-width:3}
.tension-cable{fill:none;stroke:var(--color-ink);stroke-width:2.5}
.tension-hit{fill:transparent;cursor:grab}
.tension-handle{fill:var(--color-accent);stroke:var(--color-ink);stroke-width:1.5;cursor:grab}
.tension-handle:focus-visible{outline:none;stroke-width:4}
.tension-readout{display:grid;gap:var(--space-2xs);max-width:none;margin-top:var(--space-md)}
#tensionLabel{font-family:var(--font-display);font-size:var(--text-lede);letter-spacing:-.03em}
[data-reveal] .line{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
[data-reveal] .line-inner{display:block;transform:translateY(115%);transition:transform 1s var(--ease-out)}
[data-reveal].in-view .line-inner{transform:none}

/* FAQ */
.faq{background:var(--color-ink)}
.faq-list{margin-top:var(--space-2xl);border-top:var(--rule)}
.faq-list details{border-bottom:var(--rule)}
.faq-list summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);min-height:2.75rem;padding:var(--space-lg) 0;cursor:pointer;list-style:none}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary span{font-family:var(--font-display);font-size:clamp(1.375rem,2.6vw,2.1rem);letter-spacing:-.03em;line-height:1.1;text-wrap:balance}
.faq-list summary:hover span{color:var(--color-accent)}
.faq-list summary i{position:relative;flex:none;width:1.5rem;height:1.5rem}
.faq-list summary i::before,.faq-list summary i::after{content:"";position:absolute;top:50%;left:50%;background:currentColor;transform:translate(-50%,-50%)}
.faq-list summary i::before{width:100%;height:1px}
.faq-list summary i::after{width:1px;height:100%;transition:transform var(--duration) var(--ease-out)}
.faq-list details[open] summary i::after{transform:translate(-50%,-50%) scaleY(0)}
.faq-list details p{margin:0 0 var(--space-lg);color:var(--color-muted);font-size:1.125rem}

/* Closing + form */
.closing{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,34rem);gap:var(--space-2xl);align-items:start;background:var(--color-accent);color:var(--color-accent-ink)}
.closing-head{display:grid;justify-items:start;gap:var(--space-lg)}
.closing h2{font-size:var(--text-heading);line-height:.88;text-transform:uppercase}
.lead-card{padding:var(--space-lg);background:var(--color-paper);color:var(--color-ink);color-scheme:light}
form{display:grid;gap:var(--space-md)}
form[hidden]{display:none}
.field{display:grid;gap:var(--space-2xs)}
label,legend{font-size:var(--text-small);font-weight:500}
label>span,legend>span{color:#5d5e57;font-weight:400}
input,textarea{width:100%;min-width:0;min-height:3rem;padding:var(--space-xs);border:1px solid var(--color-ink);border-radius:0;background:var(--color-paper-bright);font-size:1rem}
textarea{min-height:4.5rem;resize:vertical}
input::placeholder,textarea::placeholder{color:#6f7068}
input:focus-visible,textarea:focus-visible{outline:2px solid var(--color-ink);outline-offset:1px}
[aria-invalid="true"]{border-color:var(--color-error);box-shadow:inset 0 0 0 1px var(--color-error)}
.field-error{color:var(--color-error);font-size:var(--text-small)}
.field-error:empty{display:none}
.form-summary{padding:var(--space-xs) var(--space-sm);border-left:3px solid var(--color-error);background:#f6e3de;color:var(--color-error);font-size:var(--text-small)}
.chips{display:flex;flex-wrap:wrap;gap:var(--space-2xs);margin:0;padding:0;border:0}
.chips legend{width:100%;margin-bottom:var(--space-2xs);padding:0}
.chips label{position:relative}
.chips input{position:absolute;inset:0;opacity:0;min-height:0;margin:0;cursor:pointer}
.chips label span{display:inline-flex;align-items:center;min-height:2.75rem;padding:0 var(--space-sm);border:1px solid var(--color-ink);color:var(--color-ink);font-weight:400}
.chips input:hover+span{background:var(--color-paper)}
.chips input:checked+span{background:var(--color-ink);color:var(--color-paper)}
.chips input:focus-visible+span{outline:2px solid var(--color-ink);outline-offset:2px}
.honeypot{position:absolute;left:-9999px}
.submit-button{width:100%;min-height:3.25rem}
.submit-button:disabled{cursor:progress;opacity:.7}
.form-trust{color:#4f504a;font-size:var(--text-small)}
.form-fail{padding:var(--space-xs) var(--space-sm);border-left:3px solid var(--color-error);background:#f6e3de;color:var(--color-error)}
.form-fail a{border-bottom:1px solid currentColor;font-weight:500;white-space:nowrap}
.form-done{display:grid;gap:var(--space-sm);padding-block:var(--space-lg)}
.form-done[hidden]{display:none}
.form-done .icon{width:3rem;height:3rem;color:var(--color-success)}
.form-done h3{font-size:clamp(2rem,4vw,3rem);line-height:1}
.form-done:focus{outline:none}

/* Footer */
.site-footer{display:grid;grid-template-columns:2fr 1fr 2fr auto;gap:var(--space-md);align-items:center;padding:var(--space-md) max(var(--page-gutter),calc((100% - var(--content-max))/2));background:var(--color-ink);font-size:var(--text-small)}
.site-footer a{display:inline-flex;align-items:center;min-height:2.75rem}
.site-footer a:hover{text-decoration:underline}
.footer-contact{display:flex;flex-wrap:wrap;gap:0 var(--space-md)}

/* Drawer */
.drawer-backdrop{position:fixed;z-index:59;inset:0;background:var(--color-backdrop);opacity:0;visibility:hidden;transition:opacity var(--duration) var(--ease-out),visibility 0s var(--duration)}
.inquiry-drawer{position:fixed;z-index:60;top:0;right:0;width:min(36rem,100%);height:100dvh;overflow-y:auto;overscroll-behavior:contain;padding:var(--space-md) var(--page-gutter) max(var(--space-xl),env(safe-area-inset-bottom));background:var(--color-paper);color:var(--color-ink);color-scheme:light;visibility:hidden;transform:translateX(100%);transition:transform var(--duration) var(--ease-out),visibility 0s var(--duration)}
body.drawer-open .drawer-backdrop{opacity:1;visibility:visible;transition-delay:0s}
body.drawer-open .inquiry-drawer{visibility:visible;transform:none;transition-delay:0s}
.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-ink)}
.drawer-head h2{font-size:clamp(1.75rem,4vw,2.5rem);letter-spacing:-.04em}
.drawer-head button{min-width:2.75rem;min-height:2.75rem;padding:0 var(--space-xs);border:1px solid var(--color-ink);background:none}
.drawer-slot .lead-card{padding:var(--space-lg) 0 0}
.drawer-head button:focus-visible{outline-color:var(--color-ink)}

/* Signature: cable thread, parallax, magnetic, grain */
.cable-thread{position:fixed;z-index:5;top:0;left:calc(var(--page-gutter) - .6rem);bottom:0;width:1px;opacity:.55;background:var(--color-thread);pointer-events:none;mix-blend-mode:difference}
.cable-thread-fill{position:absolute;inset:0;background:var(--color-paper-bright);transform:scaleY(0);transform-origin:top;will-change:transform}
.thread-node{position:absolute;left:50%;width:5px;height:5px;margin-left:-2px;background:var(--color-paper-bright);border-radius:50%;transform:translateY(-50%);animation:threadPulse 3.8s ease-in-out infinite}
@keyframes threadPulse{0%,100%{opacity:.3}50%{opacity:.65}}
[data-parallax]{overflow:hidden}
[data-magnetic]{transition:transform .35s var(--ease-out),box-shadow .5s var(--ease-out),background .2s,color .2s}
[data-magnetic] span{display:inline-block;transition:transform .35s var(--ease-out)}
.grain-overlay{position:fixed;z-index:6;inset:0;opacity:.05;mix-blend-mode:overlay;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.mobile-cta-bar{display:none}

/* Desktop only: parallax needs extra image for travel */
@media(min-width:50.01rem) and (prefers-reduced-motion:no-preference){[data-parallax] img{transform:scale(1.32);will-change:transform}}

/* Tablet */
@media(max-width:64rem){
  .site-header{grid-template-columns:minmax(0,1fr) auto auto}
  .header-service,.primary-nav{display:none}
  .menu-button{display:inline-flex}
  .mobile-nav{position:absolute;top:4.75rem;right:var(--page-gutter);display:grid;width:min(20rem,calc(100% - 2*var(--page-gutter)));padding:var(--space-xs) var(--space-md);background:var(--color-paper);color:var(--color-ink);font-size:1rem}
  .site-header:not([data-menu="open"]) .mobile-nav{display:none}
  .mobile-nav a{display:flex;align-items:center;gap:var(--space-2xs);min-height:3rem;border-bottom:1px solid #d6d3c8}
  .mobile-nav a:last-child{border:0}
  .cable-thread{display:none}
  .systems-compare,.how,.closing{grid-template-columns:minmax(0,1fr)}
  .system-diagram{position:static;padding-top:0;border-top:0}
  .how-media img{aspect-ratio:3/2}
}

/* Phone */
@media(max-width:50rem){
  .site-header{grid-template-columns:minmax(0,1fr) auto auto;gap:var(--space-2xs);padding-top:max(var(--space-sm),env(safe-area-inset-top))}
  .inquiry-trigger{display:none}
  .header-call{display:inline-flex}
  .hero-content{padding-top:7rem;padding-bottom:var(--space-xl)}
  .hero h1{font-size:clamp(3.4rem,17vw,7rem)}
  .hero h1 .line:nth-child(2){margin-left:0}
  .hero h1 .line:nth-child(3),.hero h1.is-variant .line:first-child{font-size:.52em}
  .hero-bottom{grid-template-columns:minmax(0,1fr);margin-left:0}
  .hero-actions{justify-items:stretch}
  .hero-cta{min-width:0}
  .proof-list{display:grid;gap:var(--space-xs)}
  .work-grid{gap:var(--space-sm)}
  .work-grid figcaption{font-size:var(--text-caption)}
  .work-lead img{height:auto;aspect-ratio:4/3}
  .work-lead figcaption{flex-direction:column;gap:var(--space-3xs)}
  .system-list button{padding-block:var(--space-md)}
  .value-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-lg)}
  .value-grid img{aspect-ratio:3/2}
  .closing-head .call-link{font-size:1.125rem}
  .lead-card{padding:var(--space-md)}
  .site-footer{grid-template-columns:minmax(0,1fr);gap:0;padding-block:var(--space-lg)}
  .mobile-cta-bar{position:fixed;z-index:50;left:0;right:0;bottom:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-xs);padding:var(--space-xs) max(var(--page-gutter),env(safe-area-inset-right)) max(var(--space-xs),env(safe-area-inset-bottom)) max(var(--page-gutter),env(safe-area-inset-left));background:var(--color-ink);border-top:var(--rule);transition:transform .25s var(--ease-out)}
  .hero .call-link{display:none}
  .hero-content{padding-bottom:calc(var(--space-xl) + 4.5rem)}
  .mobile-cta-bar>a{white-space:nowrap;display:flex;align-items:center;justify-content:center;gap:var(--space-2xs);min-height:3rem;padding:0 var(--space-md);font-weight:500}
  .mobile-cta-bar>a:first-child{border:1px solid rgba(250,249,245,.4)}
  body{padding-bottom:calc(4.5rem + env(safe-area-inset-bottom))}
  body.drawer-open .mobile-cta-bar,body:has(:is(input:not([type=radio]),textarea):focus) .mobile-cta-bar{transform:translateY(110%)}
}
@media(max-width:25rem){
  .work-grid{grid-template-columns:minmax(0,1fr)}
  .chips label span{padding:0 var(--space-xs)}
}

/* Short landscape phones */
@media(max-height:30rem) and (orientation:landscape){
  .hero,.hero-content{min-height:auto}
  .hero-content{padding-top:6rem}
  .hero h1{font-size:clamp(3rem,10vw,5.5rem)}
  .work-lead img{height:80svh}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  [data-reveal] .line-inner{transform:none}
}

/* Utility pages — privacy policy, 404 */
.utility-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);padding:var(--space-md) var(--page-gutter);background:var(--color-ink);color:var(--color-paper);font-size:var(--text-small)}
.utility-header-actions{display:flex;align-items:center;gap:var(--space-lg)}
.utility-header-actions a{display:inline-flex;align-items:center;min-height:2.75rem;border-bottom:1px solid transparent}
.utility-header-actions a:hover{border-color:currentColor}
.legal-page{max-width:46rem;margin:0 auto;padding:var(--space-3xl) var(--page-gutter) var(--space-4xl);background:var(--color-paper);color:var(--color-ink)}
.legal-page h1{font-size:clamp(2.5rem,5.5vw,4.25rem);line-height:.95;letter-spacing:-.04em;margin-bottom:var(--space-xs)}
.legal-page .legal-updated{color:#4f504a;font-size:var(--text-small);margin-bottom:var(--space-2xl)}
.legal-page h2{font-size:1.4rem;letter-spacing:-.02em;margin-top:var(--space-2xl);margin-bottom:var(--space-sm)}
.legal-page p,.legal-page li{font-size:1.0625rem;line-height:1.6;margin:0 0 var(--space-sm)}
.legal-page ul{margin:0 0 var(--space-sm);padding-left:1.25rem}
.legal-page a{border-bottom:1px solid currentColor}
.legal-page a:hover{color:var(--color-error)}
.legal-page .legal-contact{margin-top:var(--space-2xl);padding-top:var(--space-xl);border-top:1px solid var(--color-rule)}
.error-page{display:grid;place-items:center;min-height:calc(100svh - 4.5rem);padding:var(--space-2xl) var(--page-gutter);text-align:center}
.error-page .error-code{font-family:var(--font-display);font-size:clamp(6rem,18vw,13rem);line-height:.8;letter-spacing:-.05em;color:var(--color-accent)}
.error-page h1{margin-top:var(--space-md);font-size:clamp(1.75rem,3.6vw,2.5rem);letter-spacing:-.03em}
.error-page p{margin:var(--space-md) auto 0;font-size:1.125rem;color:var(--color-muted)}
.error-page .error-actions{display:flex;flex-wrap:wrap;gap:var(--space-md);justify-content:center;margin-top:var(--space-xl)}
@media(max-width:50rem){.legal-page{padding-block:var(--space-2xl) var(--space-3xl)}}
