/* Root & Range — "Dark precision". Hand-written; tokens first. Direction: DESIGN.md.
   Night-fairway ground. Two lights with fixed meanings: kikuyu glow = below the line (turf, roots),
   charge gold = above the line (cart power). Schibsted Grotesk for words, Martian Mono for numbers only.
   Motion lives in motion.js (GSAP + ScrollTrigger + SplitText + Lenis). Everything here renders finished
   without script; motion.js adds the starting states. */

@font-face{font-family:'Schibsted Grotesk';src:url(../fonts/schibsted-grotesk-latin-wght-normal.woff2) format('woff2-variations'),url(../fonts/schibsted-grotesk-latin-wght-normal.woff2) format('woff2');font-weight:400 900;font-style:normal;font-display:swap}
@font-face{font-family:'Schibsted Grotesk';src:url(../fonts/schibsted-grotesk-latin-wght-italic.woff2) format('woff2-variations'),url(../fonts/schibsted-grotesk-latin-wght-italic.woff2) format('woff2');font-weight:400 900;font-style:italic;font-display:swap}
@font-face{font-family:'Martian Mono';src:url(../fonts/martian-mono-latin-wght-normal.woff2) format('woff2-variations'),url(../fonts/martian-mono-latin-wght-normal.woff2) format('woff2');font-weight:100 800;font-display:swap}
@font-face{font-family:'Schibsted Fallback';src:local('Arial');size-adjust:100.5%;ascent-override:96%;descent-override:25%;line-gap-override:0%}

:root{
  --bg:#09110D;            /* night fairway */
  --bg-2:#0E1813;
  --surface:#13211A;
  --surface-2:#1A2C22;
  --green:#1F4A33;         /* brand fairway: fields, pressed states */
  --line:rgba(214,232,206,.09);
  --line-2:rgba(214,232,206,.18);
  --text:#E7EEE2;
  --text-2:rgba(231,238,226,.66);
  --text-3:rgba(231,238,226,.42);
  --root:#9DD35E;          /* kikuyu, lit: turf, roots, below the line */
  --root-dim:#6E9A3E;
  --charge:#F1B544;        /* gold, lit: power, range, above the line */
  --charge-dim:#8C5E0E;
  --glow-root:drop-shadow(0 0 6px rgba(157,211,94,.55)) drop-shadow(0 0 18px rgba(157,211,94,.25));
  --glow-charge:drop-shadow(0 0 6px rgba(241,181,68,.6)) drop-shadow(0 0 20px rgba(241,181,68,.25));
  /* legacy aliases used in page markup */
  --ink:var(--text);--slate:var(--text);--muted:var(--text-2);--lime:var(--text);--paper:var(--bg);--gold:var(--charge);--kikuyu:var(--root);--kikuyu-ink:var(--root);--dolerite:var(--text);--white:var(--surface);

  --f:'Schibsted Grotesk','Schibsted Fallback',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'Martian Mono',ui-monospace,'Cascadia Mono',Consolas,monospace;

  --t-mega:clamp(3.4rem,.6rem + 10.6vw,12.5rem);
  --t-hero:clamp(3rem,.8rem + 7.6vw,8.75rem);
  --t-h1:clamp(2.75rem,.9rem + 6vw,7rem);
  --t-h2:clamp(2.25rem,1.1rem + 3.9vw,5rem);
  --t-h3:clamp(1.375rem,1.1rem + .9vw,2rem);
  --t-lead:clamp(1.125rem,1rem + .5vw,1.45rem);
  --t-body:1.0625rem;
  --t-small:.875rem;
  --t-label:.75rem;

  --max:1360px;
  --gut:clamp(20px,4.4vw,72px);
  --pad:clamp(96px,12vw,200px);
  --r:8px;
  --r-card:16px;
  --hdr:80px;
  --ease:cubic-bezier(.16,1,.3,1);
  --ease-io:cubic-bezier(.76,0,.24,1);
  color-scheme:dark;
}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--hdr) + 16px);background:var(--bg)}
html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--f);font-size:var(--t-body);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:clip}
img,svg,video,canvas{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-underline-offset:.22em;text-decoration-thickness:1px}
p{margin:0;text-wrap:pretty}
h1,h2,h3,h4{margin:0;font-weight:500;color:var(--text);text-wrap:balance}
h1{font-size:var(--t-h1);line-height:.92;letter-spacing:-.045em}
h2{font-size:var(--t-h2);line-height:.98;letter-spacing:-.04em}
h3{font-size:var(--t-h3);line-height:1.12;letter-spacing:-.02em}
h4{font-size:1rem}
::selection{background:var(--root);color:var(--bg)}
:focus-visible{outline:2px solid var(--root);outline-offset:3px;border-radius:4px}
button,input,select,textarea{font:inherit;color:inherit}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;left:12px;top:-60px;z-index:500;background:var(--root);color:var(--bg);padding:12px 16px;border-radius:999px;text-decoration:none;transition:top .2s var(--ease)}
.skip:focus{top:12px}
.mono,.num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.fig{font-family:var(--mono);color:var(--charge);font-weight:500;letter-spacing:-.03em}
.lead{font-size:var(--t-lead);line-height:1.45;max-width:38ch;color:var(--text-2)}
.muted{color:var(--text-2)}
.small{font-size:var(--t-small)}
.af{font-style:italic}
.tag,.cap{display:none}
.root{color:var(--root)}.charge{color:var(--charge)}
html{scrollbar-color:var(--line-2) var(--bg)}

/* ---------- layout ---------- */
.wrap{width:min(100% - 2*var(--gut),var(--max));margin-inline:auto}
.sec{padding-block:var(--pad);position:relative}
.sec.tight{padding-block:calc(var(--pad) * .6)}
.dark,.on-green,.lime{background:var(--bg-2)}
.grid{display:grid;gap:clamp(24px,3vw,56px)}
.g2{grid-template-columns:1fr}
@media (min-width:900px){.g2{grid-template-columns:1fr 1fr}}
.stack>*+*{margin-top:var(--s,1rem)}
.head{display:grid;gap:22px;margin-bottom:clamp(44px,6vw,96px)}
@media (min-width:960px){.head.split{grid-template-columns:7fr 5fr;align-items:end;gap:56px}}
.head .lead,.head .muted{max-width:40ch}
.ground{height:1px;background:var(--line-2);width:100%}

/* ---------- buttons ---------- */
.btn{--b-bg:var(--text);--b-fg:var(--bg);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:56px;padding:0 28px;border-radius:999px;background:var(--b-bg);color:var(--b-fg);text-decoration:none;font-weight:500;font-size:1rem;line-height:1;border:0;cursor:pointer;overflow:hidden;isolation:isolate;transition:color .45s var(--ease),box-shadow .45s var(--ease)}
.btn::before{content:"";position:absolute;left:50%;top:100%;width:140%;aspect-ratio:1;border-radius:50%;background:var(--root);transform:translate(-50%,0) scale(0);transition:transform .6s var(--ease);z-index:-1}
.btn:hover::before,.btn:focus-visible::before{transform:translate(-50%,-60%) scale(1)}
.btn:hover{color:var(--bg)}
.btn.ghost{--b-bg:transparent;--b-fg:var(--text);box-shadow:inset 0 0 0 1px var(--line-2)}
.btn.ghost:hover{box-shadow:inset 0 0 0 1px var(--root)}
.btn.gold,.btn.charge{--b-bg:var(--charge);--b-fg:var(--bg)}
.btn.gold::before,.btn.charge::before{background:var(--text)}
.btns{display:flex;flex-wrap:wrap;gap:12px}
.link{font-weight:500;text-decoration:none;color:var(--text);background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;padding-bottom:3px;transition:background-size .5s var(--ease),color .3s}
.link:hover{background-size:0 1px;background-position:100% 100%;color:var(--root)}

/* ---------- header ---------- */
.progress{position:fixed;left:0;top:0;height:2px;width:100%;z-index:60;background:var(--root);transform-origin:left;transform:scaleX(0);filter:var(--glow-root)}
.hdr{position:fixed;inset:0 0 auto;z-index:50;height:var(--hdr);display:flex;align-items:center;transition:transform .6s var(--ease),background-color .4s var(--ease)}
.hdr .wrap{display:flex;align-items:center;gap:28px}
.hdr .logo{display:block;flex:none;height:40px}
.hdr .logo img{height:100%;width:auto}
.hdr .logo .on-light{display:none}
.hdr nav{margin-left:auto;display:none;gap:2px}
.hdr nav a{position:relative;text-decoration:none;font-weight:500;font-size:.9375rem;padding:10px 14px;color:var(--text-2);transition:color .3s var(--ease)}
.hdr nav a::after{content:"";position:absolute;left:14px;right:14px;bottom:6px;height:1px;background:var(--root);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
.hdr nav a:hover,.hdr nav a[aria-current="page"]{color:var(--text)}
.hdr nav a:hover::after,.hdr nav a[aria-current="page"]::after{transform:scaleX(1);transform-origin:left}
.hdr .cta{display:none;min-height:44px;padding:0 22px;font-size:.9375rem}
.hdr.solid{background:rgba(9,17,13,.78);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);box-shadow:0 1px 0 var(--line)}
.hdr.hide{transform:translateY(-100%)}
.menu-btn{margin-left:auto;width:48px;height:48px;display:grid;place-items:center;background:transparent;border:0;cursor:pointer;border-radius:999px;box-shadow:inset 0 0 0 1px var(--line-2)}
.menu-btn span{display:block;width:18px;height:1.5px;background:var(--text);position:relative}
.menu-btn span::before,.menu-btn span::after{content:"";position:absolute;left:0;width:18px;height:1.5px;background:var(--text);transition:transform .5s var(--ease)}
.menu-btn span::before{top:-5px}.menu-btn span::after{top:5px}
.menu-open .menu-btn span{background:transparent}
.menu-open .menu-btn span::before{transform:translateY(5px) rotate(45deg)}
.menu-open .menu-btn span::after{transform:translateY(-5px) rotate(-45deg)}
@media (min-width:1080px){.hdr nav{display:flex}.hdr .cta{display:inline-flex}.menu-btn{display:none}}
.mnav{position:fixed;inset:0;z-index:45;background:var(--bg-2);padding:calc(var(--hdr) + 32px) var(--gut) 32px;display:flex;flex-direction:column;gap:4px;clip-path:inset(0 0 100% 0);transition:clip-path .8s var(--ease-io),visibility 0s .8s;visibility:hidden}
.menu-open .mnav{clip-path:inset(0 0 0 0);visibility:visible;transition:clip-path .8s var(--ease-io),visibility 0s}
.menu-open .hdr{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}
.mnav a{text-decoration:none;font-size:clamp(2.4rem,11vw,4rem);font-weight:500;letter-spacing:-.04em;line-height:1.08;opacity:0;transform:translateY(40px);transition:opacity .5s var(--ease),transform .8s var(--ease)}
.menu-open .mnav a{opacity:1;transform:none}
.menu-open .mnav a:nth-child(2){transition-delay:.05s}.menu-open .mnav a:nth-child(3){transition-delay:.1s}.menu-open .mnav a:nth-child(4){transition-delay:.15s}.menu-open .mnav a:nth-child(5){transition-delay:.2s}.menu-open .mnav a:nth-child(6){transition-delay:.25s}.menu-open .mnav a:nth-child(7){transition-delay:.3s}
.mnav .foot{margin-top:auto;display:grid;gap:8px;font-size:1rem;color:var(--text-2)}
.mnav .foot a{font-size:1rem;font-weight:500;letter-spacing:0;opacity:1;transform:none;color:var(--text)}

/* ---------- preloader + page curtain ---------- */
.loader{position:fixed;inset:0;z-index:300;background:var(--bg);display:none;pointer-events:none}
.mo.first .loader{display:grid;grid-template-rows:auto 1fr;padding:var(--gut);pointer-events:auto}
.mo-safe .loader{display:none!important}.mo-safe.cur-in .curtain{visibility:hidden}
.loader .l-mark{height:42px;width:auto;opacity:.9}
.loader .l-count{font-family:var(--mono);font-weight:300;font-size:clamp(5rem,17vw,16rem);line-height:.8;letter-spacing:-.06em;color:var(--text);align-self:end}
.loader .l-count small{font-size:.25em;color:var(--text-3);letter-spacing:0;margin-left:.2em}
.loader .l-bar{position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--root);transform-origin:left;transform:scaleX(0);filter:var(--glow-root)}
.loader .l-note{position:absolute;right:var(--gut);bottom:calc(var(--gut) + 6px);font-family:var(--mono);font-size:var(--t-label);color:var(--text-3);text-align:right}
.curtain{position:fixed;inset:0;z-index:290;background:var(--surface);transform:translateY(100%);pointer-events:none;display:grid;place-items:center}
.mo.cur-in .curtain{transform:none}
.curtain img{height:42px;width:auto;opacity:0}

/* ---------- cursor ---------- */
.cursor{position:fixed;left:0;top:0;z-index:400;pointer-events:none;display:none}
.js-motion.fine .cursor{display:block}
.cursor .dot{position:absolute;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--root);filter:var(--glow-root)}
.cursor .ring{position:absolute;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(231,238,226,.35);display:grid;place-items:center;transition:width .45s var(--ease),height .45s var(--ease),margin .45s var(--ease),background-color .45s var(--ease),box-shadow .45s var(--ease)}
.cursor .ring span{font-family:var(--mono);font-size:10px;color:var(--bg);opacity:0;transition:opacity .3s;white-space:nowrap}
.cursor.hot .ring{width:64px;height:64px;margin:-32px 0 0 -32px;box-shadow:inset 0 0 0 1px var(--root)}
.cursor.label .ring{width:92px;height:92px;margin:-46px 0 0 -46px;background:var(--root);box-shadow:none}
.cursor.label .ring span{opacity:1}
.cursor.hide{opacity:0}

/* ---------- home hero ---------- */
.hero{position:relative;min-height:100svh;display:grid;align-content:start;padding-top:calc(var(--hdr) + clamp(24px,7vh,88px));padding-bottom:min(42svh,480px);overflow:hidden;isolation:isolate}
.hero h1{font-size:var(--t-mega);line-height:.86;letter-spacing:-.055em;font-weight:500}
.hero h1 .l{display:block}
.hero h1 .l2{color:var(--text-3)}
.hero-row{display:grid;gap:28px;margin-top:clamp(28px,4vw,48px)}
@media (min-width:960px){.hero-row{grid-template-columns:1fr auto;align-items:end}}
.hero-intro{font-size:var(--t-lead);line-height:1.45;max-width:36ch;color:var(--text-2)}
.hero-scene{position:absolute;left:0;right:0;bottom:0;height:min(44svh,500px);z-index:-1;pointer-events:none}
.hero-scene svg{width:100%;height:100%;overflow:visible}
.hs-grid line{stroke:var(--line);stroke-width:1}
.hs-ground{stroke:var(--text-3);stroke-width:1}
.hs-root{fill:none;stroke:var(--root);stroke-linecap:round;filter:var(--glow-root)}
.hs-arc{fill:none;stroke:var(--charge);stroke-width:1.5;stroke-dasharray:3 8;stroke-linecap:round;filter:var(--glow-charge)}
.hs-ball{fill:var(--charge);filter:var(--glow-charge)}
.hs-tick line{stroke:var(--text-3);stroke-width:1}
.hs-tick text{font-family:var(--mono);font-size:10px;fill:var(--text-3)}
.hero-specs{position:absolute;right:var(--gut);bottom:clamp(20px,4vh,40px);display:flex;gap:32px;font-family:var(--mono);font-size:var(--t-label);color:var(--text-3);z-index:1}
.hero-specs b{display:block;font-weight:300;font-size:clamp(1.25rem,1rem + .8vw,1.75rem);letter-spacing:-.05em;color:var(--text);margin-bottom:6px}
.hero-specs .charge b{color:var(--charge)}.hero-specs .root b{color:var(--root)}
.scroll-hint{display:none!important;position:absolute;left:var(--gut);bottom:clamp(20px,4vh,40px);font-family:var(--mono);font-size:var(--t-label);color:var(--text-3);display:flex;gap:12px;align-items:center;z-index:1}
.scroll-hint i{display:block;width:1px;height:36px;background:linear-gradient(var(--root),transparent);animation:hint 2.2s var(--ease-io) infinite;transform-origin:top}
@keyframes hint{0%{transform:scaleY(0)}50%{transform:scaleY(1);transform-origin:top}50.1%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
@media (max-width:700px){.hero{padding-bottom:42svh}.hero-specs{left:var(--gut);right:auto;gap:22px}.scroll-hint{display:none}.hero-scene{height:36svh}}

/* ---------- statement ---------- */
.statement p{font-size:clamp(1.9rem,1rem + 3.4vw,4.4rem);line-height:1.08;letter-spacing:-.035em;font-weight:500;max-width:22ch}
.statement em{font-style:normal;color:var(--root)}
.statement strong{font-weight:500;color:var(--charge)}

/* ---------- above / below the line (pinned) ---------- */
.ab{position:relative;height:100svh;overflow:hidden;display:grid;grid-template-rows:1fr 1fr;background:var(--bg)}
.ab .half{position:relative;display:flex;flex-direction:column;justify-content:flex-end;padding:0 var(--gut) clamp(24px,5vh,56px)}
.ab .below{justify-content:flex-start;padding-top:clamp(24px,5vh,56px)}
.ab .line{position:absolute;left:0;right:0;top:50%;height:1px;background:var(--text-3);z-index:2;transform-origin:left}
.ab .k{font-family:var(--mono);font-size:var(--t-label);color:var(--text-3);margin-bottom:14px}
.ab h2{font-size:var(--t-h1);letter-spacing:-.05em;line-height:.9;max-width:9ch}
.ab .above h2 .g{color:var(--charge)}
.ab .below h2 .g{color:var(--root)}
.ab .meter{position:absolute;right:var(--gut);display:grid;gap:10px;justify-items:end;font-family:var(--mono);z-index:1}
.ab .above .meter{bottom:clamp(24px,5vh,56px)}
.ab .below .meter{bottom:clamp(24px,5vh,56px)}
.ab .meter .v{font-size:clamp(2.6rem,1rem + 5vw,6rem);font-weight:300;letter-spacing:-.06em;line-height:.9}
.ab .above .v{color:var(--charge);filter:var(--glow-charge)}
.ab .below .v{color:var(--root);filter:var(--glow-root)}
.ab .meter .u{font-size:var(--t-label);color:var(--text-3)}
.battery{width:min(280px,46vw);height:64px;border:1px solid var(--line-2);border-radius:10px;padding:5px;position:relative}
.battery::after{content:"";position:absolute;right:-7px;top:22px;width:5px;height:18px;border-radius:0 3px 3px 0;background:var(--line-2)}
.battery i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--charge-dim),var(--charge));transform-origin:left;filter:var(--glow-charge)}
.ab .roots{position:absolute;left:0;top:0;width:100%;height:100%;z-index:0;pointer-events:none}
.ab .roots path{fill:none;stroke:var(--root);stroke-linecap:round;filter:var(--glow-root);opacity:.8}
.ab .below>*:not(.roots){position:relative;z-index:1}
.ab .below .meter{position:absolute}
.ab p.muted{max-width:34ch;margin-top:16px}
.ab .go{margin-top:20px}
@media (max-width:700px){.ab .meter{display:none}}

/* ---------- image grows to full bleed ---------- */
.grow{position:relative;height:100svh;overflow:hidden;display:grid}
.grow .frame{position:absolute;inset:0;overflow:hidden}
.grow .frame img{width:100%;height:100%;object-fit:cover}
.grow .frame::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(9,17,13,.9),rgba(9,17,13,.1) 60%,rgba(9,17,13,.3))}
.grow .words{position:relative;z-index:2;width:min(100% - 2*var(--gut),var(--max));margin-inline:auto;align-self:end;padding-bottom:clamp(32px,8vh,96px)}
.grow h2{font-size:var(--t-mega);letter-spacing:-.055em;line-height:.86}
.grow p{margin-top:24px;max-width:40ch;font-size:var(--t-lead);color:var(--text-2)}

/* ---------- horizontal chapters ---------- */
.hz{position:relative;overflow:hidden;background:var(--bg)}
.hz-pin{min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding-top:var(--hdr)}
.hz-track{display:flex;gap:clamp(16px,2vw,28px);padding:0 var(--gut);width:max-content}
.hz-card{width:min(80vw,520px);flex:none;display:grid;gap:22px;align-content:start}
.hz-card .ph{aspect-ratio:5/4;border-radius:var(--r-card);overflow:hidden;background:var(--surface)}
.hz-card .ph img{width:100%;height:100%;object-fit:cover}
.hz-card .n{font-family:var(--mono);font-size:var(--t-small);color:var(--root)}
.hz-card h3{font-size:var(--t-h3)}
.hz-card p{color:var(--text-2);max-width:40ch}
.hz-end{width:min(80vw,520px);flex:none;align-self:center;display:grid;gap:24px;padding-right:var(--gut)}
.hz-end h3{font-size:var(--t-h2);letter-spacing:-.04em}
.hz-bar{height:1px;background:var(--line);margin:clamp(32px,4vw,56px) var(--gut) 0;position:relative}
.hz-bar i{position:absolute;inset:0;background:var(--root);transform-origin:left;transform:scaleX(0);filter:var(--glow-root)}
@media (max-width:760px){.hz-pin{padding:var(--pad) 0}.hz-track{flex-direction:column;width:auto}.hz-card,.hz-end{width:auto}.hz-card .ph{aspect-ratio:4/3}.hz-bar{display:none}.hz-end{padding:24px 0 var(--pad)}}

.hz+.sec{padding-top:calc(var(--pad) * .5)}
/* ---------- hover list with floating photo ---------- */
.plist{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-2)}
.plist li{border-bottom:1px solid var(--line-2)}
.plist a{position:relative;display:grid;grid-template-columns:1fr auto;align-items:center;gap:20px;padding:clamp(22px,2.6vw,36px) 0;text-decoration:none;color:var(--text-2);transition:color .4s var(--ease),padding .6s var(--ease)}
.plist .nm{font-size:clamp(1.8rem,1rem + 3vw,4rem);font-weight:500;letter-spacing:-.04em;line-height:1;transition:color .4s}
.plist .sp{font-family:var(--mono);font-size:var(--t-small);color:var(--text-3);text-align:right;transition:color .4s}
.plist a:hover,.plist a:focus-visible{color:var(--text);padding-left:clamp(12px,2vw,32px)}
.plist a.turf:hover .nm,.plist a.turf:hover .sp{color:var(--root)}
.plist a.power:hover .nm,.plist a.power:hover .sp{color:var(--charge)}
.float-ph{position:fixed;left:0;top:0;width:clamp(220px,22vw,340px);aspect-ratio:4/5;border-radius:var(--r-card);overflow:hidden;pointer-events:none;z-index:30;opacity:0;display:none}
.js-motion.fine .float-ph{display:block}
.float-ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .35s var(--ease)}
.float-ph img.on{opacity:1}

/* ---------- ticker ---------- */
.ticker{overflow:hidden;border-block:1px solid var(--line);padding:clamp(18px,2vw,28px) 0;user-select:none}
.ticker .row{display:flex;gap:clamp(40px,5vw,80px);width:max-content;will-change:transform}
.ticker span{font-family:var(--mono);font-weight:300;font-size:clamp(1.6rem,1rem + 2.4vw,3.4rem);letter-spacing:-.05em;white-space:nowrap;display:flex;gap:18px;align-items:baseline}
.ticker span small{font-family:var(--f);font-size:.8rem;letter-spacing:0;color:var(--text-3)}
.ticker span.p{color:var(--charge)}.ticker span.t{color:var(--root)}

/* ---------- stats ---------- */
.stats{display:grid;grid-template-columns:repeat(2,1fr);border-top:1px solid var(--line-2)}
@media (min-width:900px){.stats{grid-template-columns:repeat(4,1fr)}}
.stats>div{padding:clamp(24px,3vw,44px) 20px clamp(24px,3vw,44px) 0;border-bottom:1px solid var(--line)}
@media (min-width:900px){.stats>div+div{padding-left:24px;border-left:1px solid var(--line)}}
.stats b{display:block;white-space:nowrap;font-family:var(--mono);font-weight:300;font-size:clamp(2.6rem,1.2rem + 4vw,5.5rem);letter-spacing:-.06em;line-height:.9}
.stats b small{font-size:.32em;letter-spacing:-.02em;color:var(--text-3);margin-left:.15em}
.stats span{display:block;margin-top:14px;color:var(--text-2);max-width:22ch}

/* ---------- inner page hero ---------- */
.phero{padding-top:calc(var(--hdr) + clamp(56px,10vw,160px));padding-bottom:clamp(40px,6vw,96px);position:relative}
.phero .crumb{font-family:var(--mono);font-size:var(--t-label);margin-bottom:28px;color:var(--text-3)}
.phero .crumb a{text-decoration:none;color:var(--text-2)}
.phero .crumb a:hover{color:var(--root)}
.phero h1{font-size:var(--t-hero);letter-spacing:-.05em;line-height:.88}
.phero .in{display:grid;gap:32px}
@media (min-width:960px){.phero .in{grid-template-columns:7fr 5fr;align-items:end;gap:56px}}
.phero.snug{padding-bottom:clamp(24px,3vw,48px)}
.phero.contour{overflow:hidden;isolation:isolate}
.phero.contour::before{content:"";position:absolute;z-index:-1;right:-12vw;top:0;width:min(80vw,1100px);aspect-ratio:1;background:url(../img/dome-contours-light.svg) center/contain no-repeat;opacity:.09}

/* ---------- photographs ---------- */
.banner{margin-block:0}
.banner .duo,.bleed .duo{aspect-ratio:21/9;width:100%;overflow:hidden;border-radius:var(--r-card);background:var(--surface);position:relative}
.bleed{margin:0}
.bleed .duo{border-radius:0}
@media (max-width:700px){.banner .duo,.bleed .duo{aspect-ratio:4/3}}
.banner img,.bleed img{width:100%;height:118%;object-fit:cover}
.two{display:grid;gap:clamp(20px,2.4vw,32px)}
@media (min-width:900px){.two{grid-template-columns:1fr 1fr}}
.side{display:grid;gap:22px;align-content:start;text-decoration:none}
.side .im{aspect-ratio:4/3;border-radius:var(--r-card);overflow:hidden;background:var(--surface)}
.side .im img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.side:hover .im img{transform:scale(1.04)}

/* steps */
.steps{list-style:none;padding:0;margin:0;display:grid}
.steps li{display:grid;grid-template-columns:auto 1fr;gap:8px 24px;padding:28px 0;border-top:1px solid var(--line-2)}
.steps li:last-child{border-bottom:1px solid var(--line-2)}
.steps .n{font-family:var(--mono);font-size:var(--t-small);color:var(--root);padding-top:.45em;min-width:2.4ch;grid-row:span 2}
.steps h3{font-size:1.375rem}
.steps .muted{max-width:48ch}
.sticky-ph{position:sticky;top:calc(var(--hdr) + 24px);margin:0}
.sticky-ph .duo{aspect-ratio:4/5;border-radius:var(--r-card);overflow:hidden}
.sticky-ph img{width:100%;height:100%;object-fit:cover}
.callout,.note-box{background:var(--surface);border-radius:var(--r-card);padding:22px 24px;border:1px solid var(--line)}

/* ---------- forms and tools ---------- */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:clamp(22px,3vw,44px)}
.field{display:grid;gap:8px}
.field label,.field .lab{font-family:var(--mono);font-size:var(--t-label);color:var(--text-2)}
.field input,.field select,.field textarea{font-size:1rem;min-height:52px;padding:12px 16px;border:1px solid var(--line-2);border-radius:10px;background:var(--bg);color:var(--text);transition:border-color .25s var(--ease),box-shadow .25s var(--ease);min-width:0;width:100%}
.field select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--text-2) 50%),linear-gradient(135deg,var(--text-2) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:40px}
.field textarea{min-height:130px;resize:vertical}
.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--text-3)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--root);box-shadow:0 0 0 4px rgba(157,211,94,.14)}
.field [aria-invalid="true"]{border-color:#E0795F}
.field .hint{font-size:var(--t-small);color:var(--text-3)}
.form{display:grid;gap:20px}
@media (min-width:640px){.form .two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}}
.seg{display:flex;flex-wrap:wrap;gap:8px}
.seg button{min-height:46px;border:1px solid var(--line-2);background:transparent;border-radius:999px;padding:10px 18px;font-weight:500;font-size:.9375rem;cursor:pointer;color:var(--text-2);transition:background-color .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease)}
.seg button:hover{border-color:var(--text-2);color:var(--text)}
.seg button[aria-pressed="true"]{background:var(--text);color:var(--bg);border-color:var(--text)}
input[type=checkbox]{accent-color:var(--root)}
.result{display:grid}
.result .row{display:flex;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid var(--line)}
.result .row.big{font-size:var(--t-h3);font-weight:500;letter-spacing:-.02em;border-bottom:0;padding-top:22px;align-items:baseline}
.result .row.big .fig{font-size:1.3em;filter:var(--glow-charge)}
.result .row span:first-child{max-width:64%}
.result .row .sku{display:block;font-family:var(--mono);font-size:var(--t-label);color:var(--text-3);margin-top:4px}
.swap{animation:swap .6s var(--ease) both}
@keyframes swap{from{opacity:0;transform:translateY(10px);filter:blur(4px)}}
.note{font-size:var(--t-small);color:var(--text-3);margin-top:16px}
.tco-say{margin-top:26px;font-size:var(--t-h3);font-weight:500;line-height:1.2;letter-spacing:-.02em}
.err{font-size:var(--t-small);color:#F09A80;min-height:1.2em}

/* catalogue */
.filters{display:grid;gap:16px;margin-bottom:36px}
.filters .row{display:flex;flex-wrap:wrap;gap:12px;align-items:end}
.cards{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:24px;display:grid;gap:10px;align-content:start;position:relative;overflow:hidden;transition:border-color .4s var(--ease),transform .5s var(--ease)}
.card::before{content:"";position:absolute;inset:0;background:radial-gradient(260px circle at var(--mx,50%) var(--my,0%),rgba(157,211,94,.10),transparent 70%);opacity:0;transition:opacity .4s;pointer-events:none}
.card:hover{border-color:var(--line-2);transform:translateY(-3px)}
.card:hover::before{opacity:1}
.card .cat{font-family:var(--mono);font-size:var(--t-label);color:var(--root)}
.card h3{font-size:1.125rem;letter-spacing:-.01em;line-height:1.25}
.card .an{font-family:var(--mono);font-weight:300;font-size:1.6rem;letter-spacing:-.05em;line-height:1.05;word-break:break-word}
.card dl{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0;font-size:var(--t-small)}
.card dt{color:var(--text-3)}
.card dd{margin:0;color:var(--text-2)}
.card .ft{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:8px;padding-top:16px;border-top:1px solid var(--line)}
.card .pr .fig{font-size:1.15rem}
.card .pr small{display:block;font-size:var(--t-label);color:var(--text-3);margin-top:4px}
.card .ask{font-size:var(--t-small);font-weight:500;text-decoration:none;min-height:42px;display:inline-flex;align-items:center;padding:0 18px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--line-2);transition:background-color .3s var(--ease),color .3s,box-shadow .3s}
.card .ask:hover{background:var(--root);color:var(--bg);box-shadow:none}
.card.enter{animation:cardin .7s var(--ease) both}
@keyframes cardin{from{opacity:0;transform:translateY(16px)}}
.empty{padding:40px;text-align:center;border:1px dashed var(--line-2);border-radius:var(--r-card)}
.count{font-family:var(--mono);font-size:var(--t-label);color:var(--text-3)}
.probs{margin-bottom:16px}

/* table */
.tbl{width:100%;border-collapse:collapse;font-size:.9375rem}
.tbl th,.tbl td{text-align:left;padding:16px 14px;border-bottom:1px solid var(--line)}
.tbl th{font-family:var(--mono);font-size:var(--t-label);color:var(--text-3);font-weight:400}
.tbl td.r,.tbl th.r{text-align:right;font-family:var(--mono);white-space:nowrap}
.tbl tbody tr{transition:background-color .25s var(--ease)}
.tbl tbody tr:hover{background:var(--surface-2)}
.tscroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface)}

/* season */
.months{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
@media (min-width:760px){.months{grid-template-columns:repeat(12,1fr)}}
.months button{min-height:60px;border:1px solid var(--line);background:transparent;color:var(--text-2);padding:14px 0 10px;border-radius:12px;cursor:pointer;font-family:var(--mono);font-size:.75rem;position:relative;display:grid;gap:8px;justify-items:center;transition:background-color .3s var(--ease),color .3s,border-color .3s}
.months button i{display:block;width:56%;height:30px;background:linear-gradient(to top,var(--root) var(--t),transparent var(--t));border-bottom:1px solid var(--line-2)}
.months button b{display:block;width:56%;height:3px;border-radius:2px;background:var(--charge);opacity:var(--b)}
.months button:hover{border-color:var(--line-2);color:var(--text)}
.months button[aria-pressed="true"]{background:var(--surface-2);color:var(--text);border-color:var(--root)}
.months .now{position:absolute;top:-10px;left:50%;transform:translateX(-50%);font-size:.625rem;background:var(--charge);color:var(--bg);padding:1px 7px;border-radius:999px}
.season-out{display:grid;gap:24px;margin-top:36px}
@media (min-width:860px){.season-out{grid-template-columns:.8fr 1.2fr}}
.season-out h3{font-size:var(--t-h2);letter-spacing:-.04em}
.season-out ul{margin:0;padding-left:1.1em;display:grid;gap:8px;color:var(--text-2)}
.legend{display:flex;gap:20px;font-family:var(--mono);font-size:var(--t-label);color:var(--text-3);margin-top:18px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:8px}

/* map with radar sweep */
.map{position:relative}
.map svg text{font-family:var(--f);fill:var(--text-2)}
.towns{display:grid;gap:26px}
.towns h3{font-size:1.25rem;display:flex;gap:12px;align-items:center}
.towns h3 i{width:8px;height:8px;border-radius:50%;background:var(--root);box-shadow:0 0 12px var(--root)}

/* faq */
.faq{border-top:1px solid var(--line-2)}
.faq details{border-bottom:1px solid var(--line-2)}
.faq summary{list-style:none;cursor:pointer;padding:26px 52px 26px 0;font-weight:500;font-size:clamp(1.15rem,1rem + .5vw,1.5rem);letter-spacing:-.015em;position:relative;transition:color .3s}
.faq summary:hover{color:var(--root)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:8px;top:50%;width:14px;height:14px;margin-top:-7px;background:linear-gradient(currentColor,currentColor) center/14px 1px no-repeat,linear-gradient(currentColor,currentColor) center/1px 14px no-repeat;transition:transform .5s var(--ease)}
.faq details[open] summary::after{transform:rotate(135deg)}
.faq .a{padding:0 0 28px;max-width:62ch;display:grid;gap:10px;color:var(--text-2)}
.faq details::details-content{block-size:0;overflow:clip;transition:block-size .55s var(--ease),content-visibility .55s allow-discrete}
.faq details[open]::details-content{block-size:auto}
@supports (interpolate-size:allow-keywords){:root{interpolate-size:allow-keywords}}

/* close */
.cta-big{display:grid;gap:clamp(32px,4vw,56px)}
.cta-big h2{font-size:var(--t-mega);line-height:.86;letter-spacing:-.055em}
.cta-big h2 .g{color:var(--root)}
.people{display:grid;gap:12px}
@media (min-width:760px){.people{grid-template-columns:1fr 1fr}}
.person{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:24px 26px;border-radius:var(--r-card);background:var(--surface);border:1px solid var(--line);transition:border-color .4s var(--ease)}
.person:hover{border-color:var(--line-2)}
.person b{display:block;font-size:1.125rem;font-weight:500}
.person .role{font-size:var(--t-small);color:var(--text-2)}
.person .acts{display:flex;gap:8px;flex-wrap:wrap}
.person .acts a{font-weight:500;font-size:.9375rem;text-decoration:none;min-height:46px;display:inline-flex;align-items:center;padding:0 18px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--line-2);transition:background-color .3s var(--ease),color .3s,box-shadow .3s}
.person .acts a:hover{background:var(--root);color:var(--bg);box-shadow:none}
.person .acts a[href^="tel"]{font-family:var(--mono);font-size:.8125rem}

/* editorial modules on inner pages */
.pull{margin:0 0 clamp(56px,8vw,120px)}
.pull p{max-width:22ch;font-weight:500;font-size:var(--t-h2);line-height:1.02;letter-spacing:-.04em;text-indent:-.4em}
.pull p::before{content:"\201C"}.pull p::after{content:"\201D"}
.pull footer{margin-top:24px;font-family:var(--mono);font-size:var(--t-label);color:var(--text-3)}
.narrow2{display:grid;gap:28px 56px;border-top:1px solid var(--line-2);padding-top:36px}
@media (min-width:960px){.narrow2{grid-template-columns:5fr 7fr}}
.narrow2 h2{font-size:var(--t-h2)}
.cols{color:var(--text-2);line-height:1.65}
.cols p+p{margin-top:1em}
@media (min-width:720px){.cols{columns:2 28ch;column-gap:44px}.cols p{break-inside:avoid}}
.index3{list-style:none;margin:clamp(36px,4vw,64px) 0 0;padding:0;display:grid;border-top:1px solid var(--line-2)}
@media (min-width:760px){.index3{grid-template-columns:repeat(3,1fr)}.index3 li+li{border-left:1px solid var(--line)}}
.index3 li{border-bottom:1px solid var(--line)}
.index3 a{display:grid;gap:6px;padding:22px 20px 24px 0;text-decoration:none;min-height:44px}
@media (min-width:760px){.index3 li+li a{padding-left:22px}}
.index3 b{font-weight:500;font-size:1.2rem;transition:color .3s}
.index3 a:hover b{color:var(--root)}
.index3 span{font-size:.9375rem;color:var(--text-2)}
.facts{display:grid;gap:0;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));border-top:1px solid var(--line-2)}
.facts>div{padding:26px 24px 26px 0;border-bottom:1px solid var(--line)}
.facts b{display:block;font-weight:500;font-size:var(--t-h3);letter-spacing:-.02em;line-height:1.15;margin-bottom:8px;color:var(--text)!important}
.pill{display:inline-block;font-family:var(--mono);font-size:var(--t-label);padding:3px 10px;border-radius:99px;background:var(--surface-2);color:var(--root)}
.report{background:#F2F4EE;color:#1B2A22;border-radius:var(--r-card);padding:28px;display:grid;gap:12px;font-size:.9375rem;transform:rotate(-1.5deg);box-shadow:0 40px 80px -30px rgba(0,0,0,.7)}
.report b{color:#1F4A33}
.report .hd{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid #1F4A33;padding-bottom:12px}
.report .hd img{height:32px;width:auto}
.report .muted,.report .small{color:#56636C}
.report ol{margin:0;padding-left:1.1em;display:grid;gap:6px}
.report .ph{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.report .ph img{aspect-ratio:4/3;object-fit:cover;width:100%;border-radius:4px}
.prose{max-width:68ch;display:grid;gap:16px;color:var(--text-2)}
.prose h2{font-size:var(--t-h3);margin-top:24px;color:var(--text)}
.duo-people{display:grid;gap:clamp(32px,4vw,56px)}
@media (min-width:760px){.duo-people{grid-template-columns:1fr 1fr}.duo-people .who:nth-child(2){margin-top:clamp(40px,8vw,140px)}}
.who{display:grid;gap:12px;align-content:start}
.who h3{font-size:var(--t-h2);letter-spacing:-.04em}
.who>p{color:var(--text-2);max-width:40ch}
.who .acts{display:flex;flex-wrap:wrap;gap:14px 22px;align-items:center;margin-top:8px}
.portrait{aspect-ratio:4/5;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);position:relative;display:grid;place-items:center;overflow:hidden;margin-bottom:10px}
.portrait::before{content:"";position:absolute;inset:-10%;background:url(../img/dome-contours-light.svg) center/120% no-repeat;opacity:.08}
.portrait span{font-family:var(--mono);font-weight:200;font-size:clamp(6rem,14vw,12rem);color:var(--text-3);line-height:1}
.dome-map img{width:100%;max-width:560px;opacity:.5;filter:drop-shadow(0 0 10px rgba(157,211,94,.35))}

/* ---------- koppies + footer ---------- */
.koppies{height:clamp(46px,7vw,110px);margin-top:-1px;line-height:0;position:relative;z-index:1}
.koppies svg{width:100%;height:100%}
.koppies path{fill:var(--bg-2)}
.koppies .far{fill:var(--surface);opacity:.7}
.ftr{background:var(--bg-2);color:var(--text-2);padding:clamp(40px,6vw,80px) 0 28px;font-size:.9375rem;overflow:hidden}
.ftr .top{display:grid;gap:40px}
@media (min-width:900px){.ftr .top{grid-template-columns:1.4fr 1fr 1fr 1fr}}
.ftr-id{display:grid;gap:18px;align-content:start}
.ftr-id p{max-width:34ch}
.ftr .logo{width:170px}
.ftr h4{font-family:var(--mono);color:var(--text-3);font-size:var(--t-label);font-weight:400;margin-bottom:16px}
.ftr ul{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.ftr a{text-decoration:none;transition:color .3s}
.ftr a:hover{color:var(--root)}
.ftr .bot{display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between;align-items:center;margin-top:24px;padding-top:24px;border-top:1px solid var(--line);font-size:var(--t-label);color:var(--text-3)}
.motion-toggle{font-family:var(--mono);font-size:var(--t-label);background:transparent;border:1px solid var(--line-2);color:var(--text-2);border-radius:999px;min-height:40px;padding:0 16px;cursor:pointer}
.motion-toggle:hover{border-color:var(--root);color:var(--text)}
.vaal{margin:48px 0 0;overflow:hidden}
.vaal svg{width:max(100%,760px);max-width:none;height:auto;margin-left:50%;transform:translateX(-50%)}
.vaal .river{fill:none;stroke:var(--root);stroke-width:2;stroke-linecap:round;filter:var(--glow-root)}
.vaal .bank{fill:none;stroke:var(--line-2);stroke-width:1.2;stroke-dasharray:2 6}
.vaal .isle{fill:var(--surface-2)}
.vaal .town{fill:var(--bg-2);stroke:var(--charge);stroke-width:2.5;filter:var(--glow-charge)}
.vaal text{font-family:var(--mono);fill:var(--text-3)}
.vaal .lbl-river{font-size:15px}
.vaal .lbl-town{font-family:var(--f);font-size:24px;font-weight:500;fill:var(--text)}
.vaal .lbl-note{font-size:13px}
.big-word{margin-top:clamp(48px,6vw,96px);line-height:0}
.big-word img{width:100%;height:auto;opacity:.07}

/* split-text helpers */
.ln{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em}

/* fallback page transitions when motion is off */
@view-transition{navigation:auto}
::view-transition-old(root){animation:.3s ease both vt-out}
::view-transition-new(root){animation:.5s var(--ease) both vt-in}
@keyframes vt-out{to{opacity:0}}
@keyframes vt-in{from{opacity:0}}
html.js-motion{scroll-behavior:auto}
