:root{
  --black:#000000;
  --white:#ffffff;
  --gray-950:#0a0a0a;
  --gray-900:#121212;
  --gray-800:#1c1c1c;
  --gray-700:#2b2b2b;
  --gray-600:#454545;
  --gray-500:#6b6b6b;
  --gray-400:#8f8f8f;
  --gray-300:#b3b3b3;
  --gray-200:#d4d4d4;
  --gray-100:#e8e8e8;
  --gray-50:#f4f4f4;
  --text-secondary:var(--gray-400);
  --text-tertiary:var(--gray-600);
  --border-subtle:var(--gray-800);
  --border-default:var(--gray-700);
  --border-strong:var(--gray-500);
  --font-display:'Space Grotesk',ui-sans-serif,system-ui,sans-serif;
  --font-body:'Inter',ui-sans-serif,system-ui,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,monospace;
  --text-display-1:clamp(2.5rem,6vw,6rem);
  --text-display-2:clamp(2.25rem,5vw,5.5rem);
  --text-h2:clamp(1.75rem,2.6vw,2.5rem);
  --text-h3:1.5rem;
  --gutter:clamp(1.25rem,4vw,4rem);
  --ease-out-expo:cubic-bezier(0.19,1,0.22,1);
  --founder-img:none;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--black);color:var(--white);font-family:var(--font-body);margin:0;overflow-x:hidden}
::selection{background:var(--white);color:var(--black)}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}
.eyebrow{font-family:var(--font-mono);font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:2rem}

/* ---------- BOOT INTRO (see js/app.js) ----------
   Full-screen "power on" moment, first visit only. html.boot-skip (set
   synchronously in <head>, before paint) skips it entirely for repeat
   visits in this tab and for reduced-motion users — no flash either way. */
.boot{
  position:fixed;inset:0;z-index:100;background:var(--black);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:32px;
  transition:opacity .6s var(--ease-out-expo),visibility 0s .6s;
}
html.boot-skip .boot{display:none}
.boot.hide{opacity:0;visibility:hidden;pointer-events:none}
.boot-brand{
  display:flex;flex-direction:column;align-items:center;gap:20px;
  opacity:0;transform:scale(.85);animation:bootMarkIn .7s var(--ease-out-expo) .2s forwards;
}
@keyframes bootMarkIn{to{opacity:1;transform:scale(1)}}
.boot-mark{
  position:relative;width:clamp(90px,14vw,160px);height:clamp(90px,14vw,160px);
  border:2px solid var(--white);display:flex;align-items:center;justify-content:center;overflow:hidden;
  font-family:var(--font-display);font-weight:700;font-size:clamp(46px,7vw,80px);color:var(--white);
}
.boot-mark img{width:100%;height:100%;object-fit:contain;display:block}
.boot-mark .boot-mark-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.boot-mark.has-logo .boot-mark-fallback{display:none}
.boot-word{font-family:var(--font-display);font-weight:700;font-size:clamp(1.5rem,3vw,2.5rem);letter-spacing:-0.02em;color:var(--white)}
.boot-bar{width:220px;height:1px;background:var(--border-default);position:relative;overflow:hidden}
.boot-bar::after{
  content:'';position:absolute;inset:0;background:var(--white);
  transform:scaleX(0);transform-origin:left;animation:bootBarFill 1.6s var(--ease-out-expo) .5s forwards;
}
@keyframes bootBarFill{to{transform:scaleX(1)}}

/* ---------- SCROLL PROGRESS ---------- */
.scroll-progress{position:fixed;top:0;left:0;height:3px;width:0%;background:var(--white);z-index:60;transition:width .1s linear}

/* ---------- CUSTOM CURSOR (see js/cursor.js) ----------
   Fine-pointer + hover-capable devices only; native cursor stays put on
   touch/coarse pointers (html never gets .has-custom-cursor there). */
.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;pointer-events:none;z-index:99;border-radius:50%;transform:translate(-50%,-50%);opacity:0}
.cursor-dot{width:6px;height:6px;background:var(--white);transition:opacity .3s ease}
.cursor-ring{
  width:32px;height:32px;border:1px solid rgba(255,255,255,.5);
  transition:opacity .3s ease,width .3s var(--ease-out-expo),height .3s var(--ease-out-expo),background-color .3s ease,border-color .3s ease;
}
.cursor-dot.visible,.cursor-ring.visible{opacity:1}
.cursor-ring.hover{width:52px;height:52px;background-color:rgba(255,255,255,.12);border-color:rgba(255,255,255,.85)}
html.has-custom-cursor,html.has-custom-cursor *{cursor:none!important}

/* ---------- NAV ---------- */
nav{
  position:fixed;top:0;left:0;right:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;
  padding:20px var(--gutter);
  background:rgba(255,255,255,0.04);
  backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(255,255,255,0.1);
  transition:background .4s var(--ease-out-expo),border-color .4s var(--ease-out-expo);
}
nav.scrolled{background:rgba(0,0,0,0.55);border-bottom-color:rgba(255,255,255,0.16)}
.logo{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:700;font-size:18px;letter-spacing:-0.02em}
.logo-mark{position:relative;width:22px;height:22px;border:1.5px solid var(--white);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:13px;font-weight:700;overflow:hidden}
.logo-mark img{width:100%;height:100%;object-fit:contain;display:block}
.logo-mark .logo-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.logo-mark.has-logo .logo-fallback{display:none}
.nav-links{display:flex;align-items:center;gap:36px;font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary)}
.nav-links span{cursor:pointer;position:relative}
.nav-links span::after{content:'';position:absolute;left:0;bottom:-4px;width:100%;height:1px;background:var(--white);transform:scaleX(0);transform-origin:right;transition:transform .3s var(--ease-out-expo)}
.nav-links span:hover{color:var(--white)}
.nav-links span:hover::after{transform:scaleX(1);transform-origin:left}
.btn{
  display:inline-block;padding:12px 24px;border-radius:2px;font-size:13px;letter-spacing:.02em;
  font-family:var(--font-mono);text-transform:uppercase;border:1px solid var(--border-strong);
  background:transparent;color:var(--white);transition:all .25s var(--ease-out-expo);
}
.btn:hover{background:var(--white);color:var(--black)}
.btn-primary{background:var(--white);color:var(--black)}
.btn-primary:hover{background:var(--gray-200)}
.btn-sm{padding:9px 18px;font-size:11px}

/* ---------- HERO ---------- */
#hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:0 var(--gutter);position:relative}
.grid-bg{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(ellipse at center,black,transparent 75%);animation:gridDrift 22s linear infinite;opacity:.85}
#hero-canvas{position:absolute;inset:0;width:100%;height:100%}
@keyframes gridDrift{0%{background-position:0 0,0 0}100%{background-position:64px 64px,64px 64px}}

/* Minimalist drifting aurora — pure CSS, always on (no WebGL cost), sits
   behind the icosahedron canvas. Monochrome to match the brand.
   Each .aurora-layer also tracks the cursor (parallax, set via JS custom
   properties --mx/--my on #hero-aurora), while its inner <span> keeps its
   own independent drift animation — the two transforms compose since
   they live on separate elements. */
.hero-aurora{position:absolute;inset:0;overflow:hidden;pointer-events:none;--mx:0;--my:0}
.aurora-layer{position:absolute;inset:0;transition:transform .6s var(--ease-out-expo)}
.aurora-layer[data-depth="1"]{transform:translate(calc(var(--mx) * 22px), calc(var(--my) * 16px))}
.aurora-layer[data-depth="2"]{transform:translate(calc(var(--mx) * 38px), calc(var(--my) * 28px))}
.aurora-layer[data-depth="3"]{transform:translate(calc(var(--mx) * 56px), calc(var(--my) * 42px))}
.hero-aurora span{
  position:absolute;border-radius:50%;
  background:radial-gradient(closest-side, rgba(255,255,255,.30), transparent 72%);
  filter:blur(42px);
  mix-blend-mode:screen;
  will-change:transform;
}
.aurora-layer[data-depth="1"] span{width:64vw;height:26vw;min-width:520px;min-height:220px;top:-10%;left:-15%;animation:auroraDrift1 26s ease-in-out infinite}
.aurora-layer[data-depth="2"] span{width:50vw;height:20vw;min-width:420px;min-height:180px;bottom:-15%;right:-10%;animation:auroraDrift2 32s ease-in-out infinite}
.aurora-layer[data-depth="3"] span{width:34vw;height:34vw;min-width:340px;min-height:340px;top:28%;left:38%;background:radial-gradient(closest-side, rgba(255,255,255,.20), transparent 72%);animation:auroraDrift3 40s ease-in-out infinite}
@keyframes auroraDrift1{0%,100%{transform:translate(0,0) rotate(-18deg)}50%{transform:translate(6vw,4vh) rotate(-10deg)}}
@keyframes auroraDrift2{0%,100%{transform:translate(0,0) rotate(16deg)}50%{transform:translate(-5vw,-3vh) rotate(24deg)}}
@keyframes auroraDrift3{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-3vw,3vh) scale(1.15)}}

.hero-inner{position:relative;max-width:1500px;opacity:0;transform:translateY(60px);animation:reveal 1s var(--ease-out-expo) 0.15s forwards}
@keyframes reveal{to{opacity:1;transform:translateY(0)}}

.badge{
  display:inline-flex;align-items:center;gap:9px;
  padding:8px 16px;margin-bottom:28px;border:1px solid var(--border-default);border-radius:100px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--gray-200);
  background:rgba(255,255,255,.03);
}
.badge-mark{color:var(--white);font-size:12px}

h1.display{font-family:var(--font-display);font-weight:700;font-size:var(--text-display-1);line-height:1.02;letter-spacing:-0.04em;margin:0}
h1.display span{color:var(--white)}
h1.display{text-wrap:balance}
h1.display .hl{position:relative;color:var(--white)}
h1.display .hl::after{
  content:'';position:absolute;left:0;bottom:-0.05em;width:100%;height:0.05em;background:var(--white);
  transform:scaleX(0);transform-origin:left;transition:transform 1s var(--ease-out-expo) .9s;
}
.hero-inner .hl::after{transform:scaleX(1)}

.hero-sub{font-family:var(--font-body);font-size:clamp(1rem,1.4vw,1.25rem);color:var(--text-secondary);max-width:640px;margin:32px 0 0;line-height:1.5}
.hero-ctas{display:flex;gap:16px;margin-top:48px;flex-wrap:wrap}
.btn-arrow{display:inline-block;margin-left:2px;transition:transform .25s var(--ease-out-expo)}
.btn-primary:hover .btn-arrow{transform:translate(2px,-2px)}

/* ---------- SECTIONS ---------- */
section{padding:8rem var(--gutter);position:relative}
section:not(#hero)::before{
  content:'';position:absolute;top:0;left:var(--gutter);right:var(--gutter);height:1px;
  background:var(--border-subtle);transform-origin:left;transform:scaleX(0);
  transition:transform 1.1s var(--ease-out-expo);
}
section:not(#hero).line-in::before{transform:scaleX(1)}

.reveal{opacity:0;transform:translateY(50px);transition:opacity .8s var(--ease-out-expo),transform .8s var(--ease-out-expo)}
.reveal.in{opacity:1;transform:translateY(0)}

.clip-reveal{clip-path:inset(0 0 100% 0);transition:clip-path 1s var(--ease-out-expo)}
.reveal.in .clip-reveal,
.reveal.in.clip-reveal{clip-path:inset(0 0 0% 0)}

#services h2{font-family:var(--font-display);font-weight:700;font-size:var(--text-h2);letter-spacing:-0.02em;margin:0 0 20px;max-width:720px}
.services-sub{color:var(--text-secondary);line-height:1.6;max-width:560px;margin:0 0 2rem}

/* ---------- SERVICES: minimalist accordion list ----------
   No cards, no boxes — a hairline list where each row expands in place.
   The expand/collapse uses the grid-template-rows 0fr→1fr technique:
   a real height transition with no JS measuring, no jump, no
   max-height guesswork. Everything else (number/title colour, the
   toggle glyph rotating into an ×) is a plain CSS transition keyed off
   .open, so the whole interaction stays smooth without a single
   rAF loop. */
.services-list{margin-top:.5rem}
.service-item{border-top:1px solid var(--border-subtle)}
.service-item:last-child{border-bottom:1px solid var(--border-subtle)}

.service-head{
  all:unset;box-sizing:border-box;width:100%;cursor:pointer;
  display:grid;grid-template-columns:52px 1fr auto 32px;align-items:center;column-gap:20px;
  padding:24px 4px;
}
.service-n{font-family:var(--font-mono);font-size:13px;color:var(--text-tertiary);transition:color .4s var(--ease-out-expo)}
.service-title{font-family:var(--font-display);font-weight:700;font-size:clamp(1.05rem,2.2vw,1.5rem);letter-spacing:-0.01em;color:var(--text-secondary);transition:color .4s var(--ease-out-expo)}
.service-tag{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);border:1px solid var(--border-subtle);border-radius:100px;padding:5px 12px;white-space:nowrap}
.service-tag:empty{display:none}
.service-toggle{
  position:relative;width:26px;height:26px;border:1px solid var(--border-default);border-radius:50%;flex-shrink:0;
  transition:transform .5s var(--ease-out-expo),border-color .3s var(--ease-out-expo);
}
.service-toggle::before,.service-toggle::after{
  content:'';position:absolute;top:50%;left:50%;width:9px;height:1px;background:var(--text-tertiary);
  transform:translate(-50%,-50%);transition:background .3s var(--ease-out-expo);
}
.service-toggle::after{transform:translate(-50%,-50%) rotate(90deg)}

.service-item:hover .service-n,.service-item:hover .service-title{color:var(--white)}
.service-item:hover .service-toggle{border-color:var(--border-strong)}
.service-item.open .service-n,.service-item.open .service-title{color:var(--white)}
.service-item.open .service-toggle{transform:rotate(135deg);border-color:var(--white)}
.service-item.open .service-toggle::before,.service-item.open .service-toggle::after{background:var(--white)}

.service-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease-out-expo)}
.service-item.open .service-body{grid-template-rows:1fr}
.service-body-inner{overflow:hidden}
.service-body-inner p{margin:0 0 1.25rem;padding:0 40px 0 72px;color:var(--text-secondary);line-height:1.6;font-size:14px;max-width:600px}
.service-proof{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:0 40px 1.5rem 72px;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em}
.service-proof>span:first-child{color:var(--text-tertiary);text-transform:uppercase}
.service-proof a{color:var(--white);border:1px solid var(--border-strong);border-radius:100px;padding:5px 12px;transition:background .25s var(--ease-out-expo),color .25s var(--ease-out-expo)}
.service-proof a:hover{background:var(--white);color:var(--black)}
.service-proof .proof-item{color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:100px;padding:5px 12px}

.service-item-cta .service-head{grid-template-columns:52px 1fr;cursor:pointer}
.service-item-cta .service-title{color:var(--text-secondary)}
.service-item-cta:hover .service-n,.service-item-cta:hover .service-title{color:var(--white)}

.services-list .service-item:nth-child(1){transition-delay:0s}
.services-list .service-item:nth-child(2){transition-delay:.04s}
.services-list .service-item:nth-child(3){transition-delay:.08s}
.services-list .service-item:nth-child(4){transition-delay:.12s}
.services-list .service-item:nth-child(5){transition-delay:.16s}
.services-list .service-item:nth-child(6){transition-delay:.2s}
.services-list .service-item:nth-child(7){transition-delay:.24s}
.services-list .service-item:nth-child(8){transition-delay:.28s}
.services-list .service-item:nth-child(9){transition-delay:.32s}

@media (max-width:800px){
  .service-head{grid-template-columns:36px 1fr 32px;column-gap:12px}
  .service-tag{display:none}
  .service-body-inner p,.service-proof{padding-left:48px}
}

/* Timeline rail above the 3 steps — draws in left-to-right, reusing the
   same #how.line-in state the generic section-divider already toggles
   (see the lineIo observer in js/app.js), so no extra JS is needed. */
.steps-line{
  height:8px;margin:0 0 3rem;
  background:
    radial-gradient(circle, var(--white) 0 3px, transparent 3.5px) 0% 50%/8px 8px no-repeat,
    radial-gradient(circle, var(--white) 0 3px, transparent 3.5px) 50% 50%/8px 8px no-repeat,
    radial-gradient(circle, var(--white) 0 3px, transparent 3.5px) 100% 50%/8px 8px no-repeat,
    linear-gradient(var(--border-strong), var(--border-strong)) 0 calc(50% - .5px)/100% 1px no-repeat;
  clip-path:inset(0 100% 0 0);
  transition:clip-path 1.3s var(--ease-out-expo) .1s;
}
#how.line-in .steps-line{clip-path:inset(0 0 0 0)}

#how .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border-subtle)}
#how .step{background:#000;padding:2.5rem}
#how .step:nth-child(1){transition-delay:0s}
#how .step:nth-child(2){transition-delay:.12s}
#how .step:nth-child(3){transition-delay:.24s}
#how .step .n{font-family:var(--font-mono);font-size:12px;color:var(--text-tertiary);margin-bottom:16px}
#how .step h3{font-family:var(--font-display);font-weight:700;font-size:var(--text-h3);margin:0 0 12px}
#how .step p{color:var(--text-secondary);line-height:1.5;margin:0}

#founder{display:grid;grid-template-columns:min(520px,46%) 1fr;gap:4rem;align-items:center}
.founder-photo{position:relative;width:100%;max-width:520px;aspect-ratio:4/5;background:var(--gray-900);border:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:center;overflow:hidden}
.founder-photo .founder-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.3);opacity:0;transition:opacity .6s var(--ease-out-expo)}
.founder-photo.has-photo .founder-img{opacity:1}
.founder-photo .placeholder-label{position:relative;font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary);text-align:center;padding:1rem;transition:opacity .4s}
.founder-photo.has-photo .placeholder-label{opacity:0;pointer-events:none}
.founder-photo .grain{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen;opacity:.5;background:repeating-linear-gradient(0deg,rgba(255,255,255,.03) 0px,transparent 2px,transparent 4px)}

/* Subtle glitch: two colour-split layers of the same photo, hidden until a real photo loads */
.founder-photo .glitch-layer{
  position:absolute;inset:0;background-image:var(--founder-img);background-size:cover;background-position:center;
  filter:grayscale(1) contrast(1.3);mix-blend-mode:screen;opacity:0;pointer-events:none;
}
.founder-photo.has-photo .glitch-layer{opacity:0}
.founder-photo .glitch-r{filter:grayscale(1) contrast(1.3) sepia(1) saturate(6) hue-rotate(-40deg)}
.founder-photo .glitch-b{filter:grayscale(1) contrast(1.3) sepia(1) saturate(6) hue-rotate(160deg)}
.founder-photo.glitching .glitch-r{opacity:.7;animation:glitchSliceR .32s steps(2,end)}
.founder-photo.glitching .glitch-b{opacity:.7;animation:glitchSliceB .32s steps(2,end)}
.founder-photo.glitching .founder-img{animation:glitchShake .32s steps(2,end)}
@keyframes glitchSliceR{
  0%{transform:translate(0,0);clip-path:inset(10% 0 60% 0)}
  35%{transform:translate(-6px,2px);clip-path:inset(40% 0 20% 0)}
  70%{transform:translate(4px,-1px);clip-path:inset(65% 0 5% 0)}
  100%{transform:translate(0,0);clip-path:inset(0 0 0 0);opacity:0}
}
@keyframes glitchSliceB{
  0%{transform:translate(0,0);clip-path:inset(55% 0 10% 0)}
  35%{transform:translate(6px,-2px);clip-path:inset(15% 0 55% 0)}
  70%{transform:translate(-4px,1px);clip-path:inset(2% 0 70% 0)}
  100%{transform:translate(0,0);clip-path:inset(0 0 0 0);opacity:0}
}
@keyframes glitchShake{
  0%{transform:translate(0,0)}
  35%{transform:translate(2px,0)}
  70%{transform:translate(-2px,0)}
  100%{transform:translate(0,0)}
}

#founder blockquote{font-family:var(--font-display);font-weight:700;font-size:var(--text-h2);letter-spacing:-0.02em;margin:0 0 20px}
#founder p{color:var(--text-secondary);line-height:1.7;max-width:520px}
#founder .sig{margin-top:28px;font-family:var(--font-display);font-weight:700;font-size:20px}

.founder-principles{margin-top:2.5rem;padding-top:1.75rem;border-top:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:14px}
.principle{display:flex;align-items:baseline;gap:16px;font-family:var(--font-body);font-size:14px;color:var(--text-secondary)}
.principle span{font-family:var(--font-mono);font-size:12px;color:var(--text-tertiary);flex-shrink:0}

#portfolio h2{font-family:var(--font-display);font-weight:700;font-size:var(--text-h2);margin:0}
.portfolio-sub{color:var(--text-secondary);line-height:1.6;max-width:520px;margin:1rem 0 3rem}
.portfolio-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}
.portfolio-card{
  display:block;background:var(--gray-900);border:1px solid var(--border-default);border-radius:4px;overflow:hidden;
  opacity:0;transform:translateY(28px);
  transition:border-color .3s var(--ease-out-expo),transform .3s var(--ease-out-expo),opacity .6s var(--ease-out-expo);
}
.portfolio-card.in{opacity:1}
a.portfolio-card:hover{border-color:var(--border-strong);transform:translateY(-4px)}
.portfolio-grid .portfolio-card:nth-child(1){transition-delay:0s}
.portfolio-grid .portfolio-card:nth-child(2){transition-delay:.08s}
.portfolio-grid .portfolio-card:nth-child(3){transition-delay:.16s}
.portfolio-thumb{position:relative;aspect-ratio:16/10;background:linear-gradient(135deg,var(--gray-800),var(--gray-950));overflow:hidden}
.portfolio-thumb img{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;object-position:top;opacity:0;transition:opacity .5s var(--ease-out-expo)}
.portfolio-thumb img.loaded{opacity:1}
.portfolio-thumb-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary);text-align:center;padding:0 1rem}
.portfolio-info{padding:18px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.portfolio-info .tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:6px}
.portfolio-info .name{font-family:var(--font-display);font-weight:700;font-size:18px}
.portfolio-link{font-family:var(--font-mono);font-size:12px;color:var(--text-secondary);white-space:nowrap;transition:color .25s var(--ease-out-expo)}
a.portfolio-card:hover .portfolio-link{color:var(--white)}

/* ---------- FAQ ---------- */
.faq-list{display:flex;flex-direction:column;gap:1px;background:var(--border-subtle);margin-top:2.5rem}
.faq-item{background:#000;padding:1.5rem;opacity:0;transform:translateY(20px);transition:opacity .6s var(--ease-out-expo),transform .6s var(--ease-out-expo)}
.faq-item.in{opacity:1;transform:translateY(0)}
.faq-item summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:1rem;font-family:var(--font-display);font-weight:700;font-size:1.05rem}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:'+';font-family:var(--font-mono);font-size:20px;color:var(--text-tertiary);flex-shrink:0}
.faq-item[open] summary::after{content:'\2212'}
.faq-item p{margin:14px 0 0;color:var(--text-secondary);line-height:1.6;max-width:640px}
.faq-list .faq-item:nth-child(1){transition-delay:0s}
.faq-list .faq-item:nth-child(2){transition-delay:.05s}
.faq-list .faq-item:nth-child(3){transition-delay:.1s}
.faq-list .faq-item:nth-child(4){transition-delay:.15s}
.faq-list .faq-item:nth-child(5){transition-delay:.2s}
.faq-list .faq-item:nth-child(6){transition-delay:.25s}

/* ---------- CTA + lead form ---------- */
#cta{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:start}
#cta h2{font-family:var(--font-display);font-weight:700;font-size:var(--text-display-2);letter-spacing:-0.04em;line-height:1.02;margin:0 0 20px}
.cta-copy p{color:var(--text-secondary);line-height:1.6;max-width:420px;margin:0}
.cta-form{background:var(--gray-900);border:1px solid var(--border-default);border-radius:4px;padding:2rem;display:flex;flex-direction:column;gap:1.25rem}
.cta-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}
.cta-form label{display:flex;flex-direction:column;gap:8px;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-tertiary)}
.cta-form input,.cta-form textarea{
  font-family:var(--font-body);font-size:14px;color:var(--white);background:var(--gray-950);
  border:1px solid var(--border-default);border-radius:2px;padding:12px 14px;resize:vertical;
  transition:border-color .25s var(--ease-out-expo);
}
.cta-form input::placeholder,.cta-form textarea::placeholder{color:var(--text-tertiary)}
.cta-form input:focus,.cta-form textarea:focus{outline:none;border-color:var(--border-strong)}
.btn-block{width:100%;text-align:center}
.form-note{margin:0;font-size:12px;color:var(--text-tertiary);text-align:center}

footer{padding:3rem var(--gutter);border-top:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;font-family:var(--font-mono);font-size:12px;color:var(--text-tertiary);flex-wrap:wrap;gap:1rem}
footer .logo{font-size:14px}
.footer-links{display:flex;gap:24px}
.footer-links a{color:var(--text-tertiary);transition:color .25s var(--ease-out-expo)}
.footer-links a:hover{color:var(--white)}

@media (max-width:800px){
  #founder{grid-template-columns:1fr}
  .founder-photo{max-width:340px;margin:0 auto}
  #how .steps{grid-template-columns:1fr}
  #cta{grid-template-columns:1fr}
  .cta-form .form-row{grid-template-columns:1fr}
  .nav-links{display:none}
}
@media (prefers-reduced-motion: reduce){
  .hero-inner,.reveal,.clip-reveal,section::before,.glitch-layer,.founder-img,
  .hero-aurora span,.aurora-layer,h1.display .hl::after,.grid-bg,
  .steps-line,.scroll-progress,.portfolio-card,.faq-item{
    animation:none!important;transition:none!important;
  }
  .hero-inner,.reveal{opacity:1!important;transform:none!important}
  .clip-reveal{clip-path:inset(0 0 0 0)!important}
  section:not(#hero)::before{transform:scaleX(1)!important}
  h1.display .hl::after{transform:scaleX(1)!important}
}
