@font-face{font-family:"General Sans";src:url("../fonts/GeneralSans-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"General Sans";src:url("../fonts/GeneralSans-500.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@property --t{syntax:"<number>";inherits:false;initial-value:1}
@property --reveal{syntax:"<length>";inherits:false;initial-value:0px}

:root{
  /* Harbour night (dark sections) */
  --bg:#0c181e; --surface:#13232b; --line:#1f333c; --line-strong:#2c444e;
  --ink:#e9eeec; --ink-2:#a8b8bb; --ink-3:#7f9398;
  --copper:#d8703a; --copper-hover:#e47f49; --on-copper:#13232b;
  --focus:#83a9af; --hover:rgba(233,238,236,.06);
  --sea-glass:#648a91; --deep-sea:#2f5a62;
  /* Paper (light sections) */
  --paper:#f3f5f4; --paper-line:#dde3e2; --paper-line-strong:#c9d3d2;
  --p-ink:#13232b; --p-ink-2:#4a5c62; --p-ink-3:#56686d;
  --p-copper:#b0532a; --p-copper-hover:#9d4823;

  --shadow-button:inset 0 1px 0 rgba(255,255,255,.16),0 1px 2px rgba(0,0,0,.4);
  --shadow-pressed:inset 0 1px 2px rgba(0,0,0,.35);
  --sans:"General Sans",ui-sans-serif,system-ui,-apple-system,sans-serif;
  --ease-press:cubic-bezier(.22,1,.36,1);
  --ease:cubic-bezier(.4,0,.2,1);
  --gutter:clamp(16px,5.6vw,80px);
  --pad-l:max(var(--gutter),env(safe-area-inset-left,0px));
  --pad-r:max(var(--gutter),env(safe-area-inset-right,0px));
  --max:1280px;
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{background:var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--sans);font-size:16px;line-height:24px;font-weight:400;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;font-kerning:normal;overflow-x:clip;
}
::selection{background:rgba(131,169,175,.32);color:inherit}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
img,svg,canvas{max-width:100%}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:-1px}
.wrap{max-width:calc(var(--max) + var(--gutter) * 2);margin:0 auto;padding-left:var(--pad-l);padding-right:var(--pad-r)}

/* ---------- Shared type ---------- */
.h2{margin:0;font-weight:500;font-size:clamp(32px,3.6vw,52px);line-height:1.06;letter-spacing:-.03em;text-wrap:balance}
.sub{margin:0;max-width:30em;font-size:17px;line-height:27px;color:var(--ink-2);text-wrap:pretty}

/* ---------- Buttons ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:44px;padding:0 20px;border-radius:10px;border:0;cursor:pointer;white-space:nowrap;
  font:500 14px/20px var(--sans);-webkit-tap-highlight-color:transparent;
  transition:background-color 150ms var(--ease),color 150ms var(--ease),transform 220ms var(--ease-press),box-shadow 150ms var(--ease);
}
.btn--primary{background:var(--copper);color:var(--on-copper);box-shadow:var(--shadow-button)}
.btn--primary:hover{background:var(--copper-hover)}
.btn--primary:active{transform:scale(.97) translateY(.5px);box-shadow:var(--shadow-pressed)}
.btn--text{padding:0 4px;color:var(--ink);background:none}
.btn--text svg{transition:transform 220ms var(--ease-press)}
.btn--text:hover{color:#fff}
.btn--text:hover svg{transform:translateX(3px)}
.btn--text:active{transform:scale(.97) translateY(.5px)}

/* =====================================================================
   1. Hero: light through the slats
   ===================================================================== */
.hero{
  position:relative;isolation:isolate;overflow:hidden;
  min-height:100vh;min-height:100svh;
  display:grid;grid-template-rows:auto 1fr auto;
  background:var(--bg);
}
.hero__fallback{
  position:absolute;inset:0;z-index:-3;
  background:radial-gradient(120% 90% at 0% 0%, rgba(47,90,98,.22), transparent 60%),linear-gradient(160deg,#10222a 0%,#0c181e 55%,#0a141a 100%);
}
.hero__slats{position:absolute;inset:0;z-index:-2;opacity:0;filter:blur(5px);transition:opacity 1200ms var(--ease)}
.no-gl .hero__slats{opacity:.9}
.hero__gl{position:absolute;inset:0;z-index:-2;width:100%;height:100%;display:block;opacity:0;transition:opacity 500ms var(--ease)}
.hero.gl-ready .hero__gl{opacity:1}
.hero__shade{
  position:absolute;z-index:-1;pointer-events:none;left:-10%;bottom:-20%;width:85%;height:85%;
  background:radial-gradient(closest-side, rgba(10,20,26,.55), rgba(10,20,26,0));
}
.grain{position:absolute;inset:-100px;z-index:3;pointer-events:none;opacity:.55;background-size:160px 160px;animation:grain 1.1s steps(1) infinite}
@keyframes grain{
  0%{transform:translate3d(0,0,0)} 16%{transform:translate3d(-37px,21px,0)} 33%{transform:translate3d(23px,-49px,0)}
  50%{transform:translate3d(-61px,-13px,0)} 66%{transform:translate3d(47px,57px,0)} 83%{transform:translate3d(-11px,-71px,0)}
}

.nav{position:relative;z-index:4;display:flex;align-items:center;justify-content:space-between;padding:max(28px,calc(env(safe-area-inset-top) + 12px)) var(--pad-r) 0 var(--pad-l)}
.nav__brand{display:block;border-radius:6px;line-height:0}
.nav__brand img{width:132px;height:auto;display:block}
.nav__brand:focus-visible{outline-offset:6px}
.nav__links{display:flex;align-items:center;gap:6px;margin:0;padding:0;list-style:none}
.nav__link{display:inline-flex;align-items:center;height:36px;padding:0 12px;border-radius:8px;font-size:14px;line-height:20px;color:var(--ink-2);transition:color 150ms var(--ease)}
.nav__link:hover{color:var(--ink)}
.nav__cta{
  margin-left:10px;display:inline-flex;align-items:center;height:36px;padding:0 14px;border-radius:8px;
  font-size:14px;font-weight:500;color:var(--ink);border:1px solid var(--line-strong);background:rgba(12,24,30,.35);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  transition:border-color 150ms var(--ease),background-color 150ms var(--ease),transform 220ms var(--ease-press);
}
.nav__cta:hover{border-color:#3d5a65;background:rgba(19,35,43,.6)}
.nav__cta:active{transform:scale(.97) translateY(.5px)}

.hero__copy{position:relative;z-index:4;align-self:end;padding:0 var(--pad-r) clamp(40px,6.2vh,64px) var(--pad-l);max-width:1280px}
.h1{margin:0;font-weight:500;font-size:clamp(40px,5.05vw,76px);line-height:1.04;letter-spacing:-.035em}
.h1__line{display:block;overflow:hidden;padding:0 .06em .1em;margin:0 -.06em -.1em}
.h1__inner{display:inline-block;text-wrap:balance}
.h1__line--dim .h1__inner{color:var(--ink-3)}
.h1__line--lit .h1__inner{color:var(--ink)}
.hero__lede{margin:28px 0 0;max-width:34em;font-size:17px;line-height:27px;color:var(--ink-2);text-wrap:pretty}
.hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;margin-top:34px}

/* Hero on desktop: the light is shot through a lens (hero-focus.js).
   Only the light changes; the words are DOM text and are never filtered. */

/* The first frame is already soft, so it can arrive a little sooner. */
.hero.is-focus .hero__gl{transition:opacity 420ms var(--ease)}

/* No WebGL: the CSS slats read as out of focus light, never as a smear on the words. */
.hero.is-focus.no-gl .hero__slats{filter:blur(3px)}

.base{
  position:relative;z-index:4;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 32px;align-items:start;
  margin:0 var(--pad-r) 0 var(--pad-l);padding:18px 0 22px;border-top:1px solid rgba(233,238,236,.09);
}
.step{display:flex;gap:12px;align-items:baseline;min-width:0;border-radius:4px}
.step__n{font-size:12px;line-height:20px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-variant-numeric:tabular-nums}
.step__t{font-size:14px;line-height:20px;color:var(--ink-2);transition:color 150ms var(--ease)}
.step:hover .step__t{color:var(--ink)}

/* Arrival: only when JS runs, so the page is never blank without it */
.js .hero .reveal{opacity:0;transform:translate3d(0,14px,0)}
.js .h1__inner{transform:translate3d(0,105%,0)}
.js .h1__line--lit .h1__inner{color:var(--ink-3)}
.is-in .reveal{opacity:1!important;transform:none!important;transition:opacity 600ms var(--ease),transform 800ms var(--ease-press);transition-delay:var(--d,0ms)}
.is-in .h1__inner{transform:none;transition:transform 850ms var(--ease-press),color 600ms var(--ease),text-shadow 600ms var(--ease);transition-delay:var(--d,0ms)}
.is-lit .h1__line--lit .h1__inner{color:var(--ink);text-shadow:0 0 42px rgba(240,222,204,.10);transition-delay:0ms}

/* =====================================================================
   2. How we work: light through the letters
   ===================================================================== */
.how{position:relative;background:var(--paper);color:var(--p-ink);padding:clamp(96px,14vh,160px) 0 clamp(88px,12vh,140px);color-scheme:light}
.how__head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 48px;align-items:end;margin-bottom:clamp(40px,7vh,80px)}
.how__head .sub{color:var(--p-ink-2);justify-self:end}
.how__head .h2{margin-top:0}
.rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--paper-line)}
.row{
  display:grid;grid-template-columns:72px minmax(0,1fr) minmax(0,340px);gap:0 32px;align-items:end;
  padding:clamp(20px,3vh,32px) 0 clamp(24px,3.6vh,40px);border-bottom:1px solid var(--paper-line);
}
.row__n{align-self:start;padding-top:14px;font-size:12px;line-height:16px;font-weight:500;letter-spacing:.08em;color:var(--p-ink-3);font-variant-numeric:tabular-nums}
.big{
  margin:0;font-weight:500;font-size:clamp(64px,calc(22.6vw - 124px),204px);line-height:.9; /* sized so the longest word, Maintain., fits its column */
  letter-spacing:-.05em;color:var(--p-ink);
  margin-left:-.055em; /* optical: pull the side bearing back onto the grid */
  white-space:nowrap;
}
.big .dot{color:var(--p-copper)}
.row__t{margin:0 0 .4em;font-size:17px;line-height:27px;color:var(--p-ink-2);text-wrap:pretty}
.row__t b{font-weight:500;color:var(--p-ink)}

/* A letter that is lit shows the light passing through it as lines.
   Every letter is padded with a matching negative margin, so the lines are
   painted across the whole glyph, overhangs included, and nothing is clipped. */
.ch{display:inline;padding:.14em .16em .22em;margin:-.14em -.16em -.22em}
.ch.lit{
  --p:max(4px,.064em);
  --edge:.45px;
  -webkit-text-fill-color:transparent;
  background-image:repeating-linear-gradient(
    32deg,
    currentColor 0,
    currentColor calc(var(--t) * (var(--p) + 1px) - .5px - var(--edge)),
    transparent calc(var(--t) * (var(--p) + 1px) - .5px + var(--edge)),
    transparent var(--p)
  );
  background-size:3200px 3200px;
  background-position:calc(var(--x,0) * -1px) calc(var(--y,0) * -1px);
  -webkit-background-clip:text;background-clip:text;
}

/* =====================================================================
   3. What we build: from sketch to one system
   ===================================================================== */
.build{position:relative;background:var(--paper);color:var(--p-ink);color-scheme:light;height:250vh;height:250svh;border-top:1px solid var(--paper-line)}
.build__stage{position:sticky;top:0;height:100vh;height:100svh;min-height:600px;display:grid;grid-template-rows:auto minmax(0,1fr);padding-top:clamp(56px,10vh,104px);padding-bottom:clamp(24px,4vh,40px)}
.build__head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px 48px;flex-wrap:wrap}
.build__head .h2{margin-top:0;max-width:13em}
.build__head .sub{color:var(--p-ink-2);margin-top:16px}
.toggle{
  position:relative;display:inline-grid;grid-template-columns:1fr 1fr;padding:3px;border-radius:10px;
  background:rgba(19,35,43,.05);box-shadow:inset 0 0 0 1px var(--paper-line);flex:none;
}
.toggle__pill{
  position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:7px;background:#fff;
  box-shadow:0 1px 2px rgba(19,35,43,.12),0 0 0 1px rgba(19,35,43,.06);
  transform:translateX(calc(var(--k,0) * 100%));transition:transform 420ms var(--ease-press);
}
.toggle button{
  position:relative;z-index:1;height:36px;padding:0 16px;border:0;background:none;cursor:pointer;border-radius:7px;
  font-size:14px;font-weight:500;color:var(--p-ink-3);white-space:nowrap;transition:color 200ms var(--ease);
}
.toggle button[aria-pressed="true"]{color:var(--p-ink)}
.toggle button:focus-visible{outline:2px solid var(--deep-sea);outline-offset:1px}
.board{position:relative;min-height:0;margin-top:clamp(16px,3vh,32px)}
.board svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;display:block}
.board text{font-family:var(--sans)}
.board__cap{position:absolute;margin:0;display:grid;gap:4px;text-align:center;font-size:15px;line-height:21px;opacity:0;pointer-events:none;text-wrap:balance}
.board__cap-t{font-size:13px;line-height:18px;color:var(--p-ink-3)}
.board__cap-t::after{content:" \2192"}
.board__cap-a{font-weight:500;color:var(--p-ink)}
.board__cap.is-narrow{font-size:13px;line-height:18px}
.board__cap.is-narrow .board__cap-t{font-size:12px;line-height:16px}
.node__label{font-size:14px;font-weight:500;fill:var(--p-ink)}
.node__sub{font-weight:400;fill:var(--p-ink-3)}
.node__sub--ai{font-weight:500;fill:var(--deep-sea)}
.hub__label{font-size:14px;font-weight:500;fill:#fff1de}
.hub__kicker{font-size:11px;font-weight:500;letter-spacing:.08em;fill:#a8b8bb}

/* =====================================================================
   4. Where we are: the valley
   ===================================================================== */
.where-sec{position:relative;min-height:100vh;min-height:100svh;overflow:hidden;isolation:isolate;background:radial-gradient(120% 90% at 66% 58%, #13232b 0%, #102027 42%, #0c181e 78%)}
.where-sec canvas,.where-sec .layer{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}
#relief{
  opacity:0;
  -webkit-mask-image:radial-gradient(circle at var(--ax,60%) var(--ay,65%), #000 calc(var(--reveal) - 260px), transparent var(--reveal));
          mask-image:radial-gradient(circle at var(--ax,60%) var(--ay,65%), #000 calc(var(--reveal) - 260px), transparent var(--reveal));
}
#relief.is-revealing{opacity:1;animation:reveal 1.5s var(--ease-press) .1s both}
#relief.is-shown{opacity:1;-webkit-mask-image:none;mask-image:none}
@keyframes reveal{from{--reveal:0px}to{--reveal:2200px}}
#lamp{opacity:0;transition:opacity .6s var(--ease);
  -webkit-mask-image:radial-gradient(circle 230px at var(--mx,-999px) var(--my,-999px), #000 0%, rgba(0,0,0,.55) 38%, transparent 100%);
          mask-image:radial-gradient(circle 230px at var(--mx,-999px) var(--my,-999px), #000 0%, rgba(0,0,0,.55) 38%, transparent 100%);
}
.where-sec.is-lamp #lamp{opacity:1}
.scrim{background:linear-gradient(0deg, rgba(12,24,30,.88) 0, rgba(12,24,30,.6) 56px, rgba(12,24,30,0) 150px), linear-gradient(90deg, rgba(12,24,30,.94) 0%, rgba(12,24,30,.86) 24%, rgba(12,24,30,.5) 40%, rgba(12,24,30,0) 54%)}
.where-sec .grain{inset:0;opacity:.07;animation:none;mix-blend-mode:soft-light;background-size:220px 220px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.marks{position:absolute;inset:0;pointer-events:none}
.mk{position:absolute;left:0;top:0;opacity:0;transition:opacity .7s var(--ease)}
.mk.on{opacity:1}
.cap{font-size:11px;line-height:16px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap}
.place{display:flex;align-items:center;gap:7px;font-size:13px;line-height:16px;color:var(--ink-2);white-space:nowrap}
.place i{width:4px;height:4px;border-radius:50%;background:var(--ink-2);flex:none}
.place.l{flex-direction:row-reverse}
.peak{display:flex;align-items:baseline;gap:6px;font-size:13px;line-height:16px;color:var(--ink-2);white-space:nowrap}
.peak svg{width:8px;height:7px;flex:none;transform:translateY(-1px)}
.peak.l2{flex-direction:row-reverse}
.peak b{font-weight:400;color:var(--ink-3);font-variant-numeric:tabular-nums}
.pin{width:0;height:0}
.pin .dot{position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;background:var(--copper);box-shadow:0 0 0 2px #0f1e25,0 0 18px 2px rgba(216,112,58,.35)}
.pin .ring{position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;border:1px solid var(--copper);opacity:0}
.pin.on .ring{animation:ping 6s var(--ease-press) .2s infinite}
@keyframes ping{0%{transform:scale(1);opacity:.9}28%{transform:scale(4.2);opacity:0}100%{transform:scale(4.2);opacity:0}}
.pin .lbl{position:absolute;left:14px;top:6px;white-space:nowrap}
.pin .lbl strong{display:block;font-weight:500;font-size:13px;line-height:16px;color:var(--ink)}
.pin .lbl span{display:block;margin-top:3px}
.pin.l .lbl{left:auto;right:14px;text-align:right}
.pin.b .lbl{left:0;top:14px;transform:translateX(-50%);text-align:center}
#riverName{position:absolute;inset:0;width:100%;height:100%;overflow:visible;opacity:0;transition:opacity .9s var(--ease)}
#riverName.on{opacity:1}
#riverName text{font:500 11px/1 var(--sans);letter-spacing:.34em;text-transform:uppercase;fill:var(--sea-glass)}
.grat{position:absolute;font-size:11px;line-height:16px;font-weight:500;letter-spacing:.06em;color:rgba(127,147,152,.62);font-variant-numeric:tabular-nums;white-space:nowrap}
.reticle{position:absolute;left:0;top:0;width:36px;height:36px;margin:-18px 0 0 -18px;opacity:0;transition:opacity .3s var(--ease);pointer-events:none}
.where-sec.is-lamp .reticle{opacity:1}
.reticle svg{display:block;width:100%;height:100%;overflow:visible}
.where__copy{position:absolute;z-index:4;left:var(--pad-l);top:50%;transform:translateY(-54%);width:min(520px,40vw)}
.where__copy .h2{margin-top:0}
.where__copy .sub{margin-top:22px}
.osm{position:absolute;z-index:5;right:var(--pad-r);bottom:calc(14px + env(safe-area-inset-bottom));font-size:10px;line-height:14px;letter-spacing:.02em;color:var(--ink-3);opacity:.5;text-decoration:none;transition:opacity .2s cubic-bezier(.4,0,.2,1)}
.osm:hover,.osm:focus-visible{opacity:1}

/* =====================================================================
   5. Contact and footer
   ===================================================================== */
.contact{position:relative;background:var(--bg);padding:clamp(96px,16vh,168px) 0 clamp(64px,10vh,112px);border-top:1px solid var(--line)}
.contact__inner{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:32px 64px;align-items:end}
.contact .h2{font-size:clamp(40px,5.05vw,76px);line-height:1.02;letter-spacing:-.035em}
.contact__side .sub{margin-bottom:28px}
/* Footer: the brand book's copper glow, breathing slowly behind a full-width wordmark, with grain on top */
.foot{position:relative;overflow:hidden;isolation:isolate;padding:28px 0 calc(clamp(40px,7vw,96px) + env(safe-area-inset-bottom));background:linear-gradient(180deg,#0c181e 0%,#0c181e 12%,#122a33 55%,#26373f 100%)}
.foot__glow{position:absolute;inset:0;z-index:-1;pointer-events:none;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 clamp(120px,30%,260px));mask-image:linear-gradient(180deg,transparent 0,#000 clamp(120px,30%,260px))}
.foot__glow>div{position:absolute;inset:0}
.foot__sun{background:radial-gradient(125% 74% at 50% 116%,#ffd9a8 0%,#f0954a 22%,#c8632f 38%,rgba(120,70,60,.5) 54%,rgba(40,60,70,0) 74%);transform-origin:50% 100%;animation:breathe 7s var(--ease) infinite alternate;will-change:transform,opacity}
.foot__haze{inset:-30%!important;background:radial-gradient(55% 50% at 22% 20%,rgba(80,130,140,.55) 0%,rgba(80,130,140,0) 70%);animation:drift 11s var(--ease) infinite alternate}
.foot__grain{opacity:.32;mix-blend-mode:overlay;background-size:220px 220px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@keyframes breathe{from{transform:scale(1,.9);opacity:.78}to{transform:scale(1.08,1.12);opacity:1}}
@keyframes drift{from{transform:translate3d(0,0,0);opacity:.7}to{transform:translate3d(4%,6%,0);opacity:1}}
.foot__inner{display:flex;align-items:center;justify-content:space-between;gap:16px 32px;flex-wrap:wrap}
.foot__brand{padding-top:clamp(72px,12vw,176px)}
.foot__word{display:block;width:100%;height:auto}
.foot p{margin:0;font-size:13px;line-height:20px;color:var(--ink-3)}
.foot__meta{display:flex;gap:8px 28px;flex-wrap:wrap}
.foot a{color:var(--ink-2);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px;transition:color 150ms var(--ease)}
.foot a:hover{color:var(--ink)}
.proof{background:var(--bg);border-top:1px solid var(--line);padding:clamp(72px,12vh,128px) 0}
.proof__inner{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:28px 72px;align-items:end}
.proof__big{margin:0;font-weight:500;font-size:clamp(30px,3.4vw,48px);line-height:1.08;letter-spacing:-.03em;color:var(--ink);text-wrap:balance;max-width:16em}
.proof__side .sub a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px}
.proof__side .sub a:hover{text-decoration-color:var(--copper)}
.proof__link{display:inline-flex;align-items:center;gap:8px;margin-top:20px;font-size:14px;font-weight:500;color:var(--ink-2);transition:color 150ms var(--ease)}
.proof__link:hover{color:var(--ink)}
.proof__link svg{transition:transform 220ms var(--ease-press)}
.proof__link:hover svg{transform:translate(2px,-2px)}
@media (max-width:820px){.proof__inner{grid-template-columns:minmax(0,1fr)}}

/* =====================================================================
   Tablet and phone
   ===================================================================== */
@media (max-height:700px) and (min-width:821px){ .base{display:none} }
@media (max-width:1180px){
  .row{grid-template-columns:56px minmax(0,1fr) minmax(0,300px)}
  .big{font-size:clamp(64px,calc(22.6vw - 108px),204px)}
}
@media (max-width:820px){
  .grain,.foot__grain{display:none} /* no grain on phones */
  .nav{padding-top:20px}
  .nav__brand img{width:112px}
  .nav__links .nav__link{display:none}
  .nav__cta{margin-left:0}
  .hero__copy{padding-bottom:calc(34px + env(safe-area-inset-bottom))}
  .h1{font-size:clamp(34px,9.6vw,44px);line-height:1.06;letter-spacing:-.03em}
  .hero__lede{margin-top:20px;font-size:16px;line-height:24px}
  .hero__actions{margin-top:26px;gap:8px 20px}
  .base{display:none}
  .hero__shade{left:-30%;width:160%;height:75%;bottom:-10%}

  .sub{font-size:16px;line-height:24px}
  .how__head{grid-template-columns:1fr;gap:16px}
  .how__head .sub{justify-self:start}
  .row{grid-template-columns:1fr;gap:10px;padding:20px 0 26px}
  .row__n{padding-top:0}
  .big{font-size:clamp(56px,calc(25vw - 14px),120px)}
  .row__t{margin:6px 0 0;font-size:16px;line-height:24px}

  .build{height:230vh;height:230svh}
  .build__stage{padding-top:48px;min-height:640px}
  .build__head .h2{max-width:none}
  .toggle{width:100%}

  .where-sec{min-height:780px}
  .scrim{background:linear-gradient(0deg, rgba(12,24,30,.88) 0, rgba(12,24,30,.6) 48px, rgba(12,24,30,0) 120px), linear-gradient(180deg, rgba(12,24,30,.96) 0%, rgba(12,24,30,.9) 40%, rgba(12,24,30,.35) 54%, rgba(12,24,30,0) 62%)}
  .where__copy{top:clamp(72px,12vh,104px);transform:none;width:auto;right:var(--pad-r)}

  .contact__inner{grid-template-columns:1fr}
  .contact .h2{font-size:clamp(36px,10.4vw,48px)}
}

/* Reduced motion: complete and still */
@media (prefers-reduced-motion:reduce){
  .grain,.foot__sun,.foot__haze{animation:none}
  .js .hero .reveal,.js .h1__inner{opacity:1;transform:none}
  .js .h1__line--lit .h1__inner{color:var(--ink)}
  .build{height:auto}
  .build__stage{position:relative;height:auto;min-height:0}
  .board{height:min(620px,80vh)}
  .pin.on .ring{animation:none!important}
  *,*::before,*::after{transition-duration:1ms!important;transition-delay:0ms!important;animation-duration:1ms!important;animation-delay:0s!important;animation-iteration-count:1!important}
}
