@font-face{
  font-family:"Geist";
  src:url("/assets/fonts/Geist-Variable.woff2") format("woff2");
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:"Geist Mono";
  src:url("/assets/fonts/GeistMono-Variable.woff2") format("woff2");
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}

:root{
  --bg:#0a0a0b;
  --bg-soft:#0e0e10;
  --surface:#131315;
  --surface-2:#18181b;
  --text:#f3f2ee;
  --muted:#a7a5a0;
  --muted-2:#726f6a;
  --border:rgba(255,255,255,.09);
  --border-strong:rgba(255,255,255,.17);
  --accent:#e8a13c;
  --accent-strong:#ffc06b;
  --accent-soft:rgba(232,161,60,.14);
  --accent-ink:#241503;
  --good:#7fd8a8;
  --warn:#ff9d72;
  --radius-lg:22px;
  --radius-md:16px;
  --radius-sm:11px;
  --radius-pill:999px;
  --shadow:0 24px 60px rgba(0,0,0,.45);
  --shadow-accent:0 18px 46px rgba(232,161,60,.14);
  --max:1180px;
  --ease-out:cubic-bezier(.23,1,.32,1);
  --ease-in-out:cubic-bezier(.77,0,.175,1);
  --dur-fast:140ms;
  --dur-base:220ms;
  --dur-slow:420ms;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--bg);color-scheme:dark}
body{
  margin:0;min-width:320px;color:var(--text);
  background:
    radial-gradient(circle at 82% 0%,rgba(232,161,60,.09),transparent 34rem),
    var(--bg);
  font-family:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  font-feature-settings:"ss01" 1,"cv01" 1;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.35;background-image:linear-gradient(rgba(255,255,255,.022) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.022) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to bottom,black,transparent 60%)}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
img,svg{display:block;max-width:100%}
h1,h2,h3,p{margin-top:0}
h1,h2,h3{letter-spacing:-.03em;line-height:1.04;text-wrap:balance;font-weight:600}
h1{font-size:clamp(2.5rem,4.4vw,3.9rem);font-weight:620;margin-bottom:1.3rem}
h2{font-size:clamp(1.9rem,3.6vw,3.1rem);font-weight:600}
h3{font-size:1.2rem;font-weight:600}
p{color:var(--muted)}
strong{color:var(--text);font-weight:600}
.mono{font-family:"Geist Mono",ui-monospace,"SFMono-Regular",Menlo,monospace}
.shell{width:min(calc(100% - 36px),var(--max));margin-inline:auto}
.skip-link{position:fixed;left:1rem;top:-5rem;z-index:100;background:var(--text);color:#0a0a0b;padding:.8rem 1.1rem;border-radius:10px;font-weight:600;transition:top var(--dur-base) var(--ease-out)}.skip-link:focus{top:1rem}

/* Scroll progress */
.scroll-progress{position:fixed;top:0;left:0;height:2px;width:100%;background:linear-gradient(90deg,var(--accent),var(--accent-strong));transform:scaleX(0);transform-origin:0 0;z-index:60;pointer-events:none;box-shadow:0 0 10px rgba(232,161,60,.55)}
.motion .scroll-progress{transition:transform 120ms linear}

/* Header */
.site-header{position:sticky;top:0;z-index:50;border-bottom:1px solid transparent;background:rgba(10,10,11,.7);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:border-color var(--dur-base) ease,background var(--dur-base) ease,padding var(--dur-base) var(--ease-out)}
.site-header.scrolled{border-color:var(--border);background:rgba(10,10,11,.88)}
.header-inner{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:2rem;transition:min-height var(--dur-base) var(--ease-out)}
.site-header.scrolled .header-inner{min-height:58px}
.brand{display:flex;align-items:center;gap:.75rem;font-weight:600;letter-spacing:-.02em;font-size:.96rem}
.brand-mark{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--border-strong);border-radius:10px;background:linear-gradient(150deg,rgba(232,161,60,.16),rgba(232,161,60,.03));box-shadow:inset 0 1px 0 rgba(255,255,255,.08);transition:border-color var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}
.brand-mark span{font-family:"Geist Mono";font-size:.72rem;font-weight:600;color:var(--accent-strong)}
.brand:hover .brand-mark{border-color:var(--accent);transform:rotate(-6deg) scale(1.05)}
.nav{display:flex;align-items:center;gap:.15rem;position:relative}
.nav-highlight{position:absolute;top:0;left:0;height:100%;border-radius:var(--radius-sm);background:rgba(255,255,255,.055);opacity:0;pointer-events:none;z-index:-1}
.motion .nav-highlight{transition:transform var(--dur-base) var(--ease-out),width var(--dur-base) var(--ease-out),opacity var(--dur-fast) ease}
.nav a{position:relative;color:var(--muted);font-size:.87rem;font-weight:500;padding:.6rem .75rem;border-radius:var(--radius-sm);transition:color var(--dur-fast) ease}.nav a:hover,.nav a[aria-current="page"]{color:var(--text)}
.nav:hover .nav-highlight{opacity:1}
.nav .nav-cta{border:1px solid var(--border-strong);margin-left:.3rem;color:var(--text);transition:border-color var(--dur-fast) ease,background var(--dur-fast) ease,color var(--dur-fast) ease}.nav .nav-cta:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}
.menu-toggle{display:none;background:none;border:0;color:var(--text);font:inherit;font-weight:500;padding:.6rem;cursor:pointer}

/* Hero */
.hero{position:relative;overflow:hidden;padding:clamp(3.6rem,8vw,6.5rem) 0 4.5rem}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.9fr);align-items:center;gap:3.5rem}
.eyebrow{display:inline-flex;align-items:center;gap:.55rem;margin-bottom:1.4rem;color:var(--muted);font-size:.78rem;font-weight:500;letter-spacing:.06em;font-family:"Geist Mono"}
.eyebrow:before{content:"";width:6px;height:6px;border-radius:999px;background:var(--good);box-shadow:0 0 14px rgba(127,216,168,.6)}
.motion .eyebrow:before{animation:pulseDot 2.4s ease-in-out infinite}
.gradient-text{background:linear-gradient(95deg,#fff 25%,var(--accent-strong) 115%);-webkit-background-clip:text;background-clip:text;color:transparent}
.motion .gradient-text{background-size:220% auto;animation:shimmer 6s ease-in-out infinite}
.hero-copy{max-width:23ch}.hero-lead{max-width:560px;font-size:clamp(1.02rem,1.7vw,1.18rem);line-height:1.6;color:var(--muted)}
.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem}
.button{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;min-height:46px;padding:.7rem 1.1rem;border-radius:var(--radius-pill);font-weight:600;font-size:.88rem;border:1px solid var(--border-strong);white-space:nowrap;position:relative;overflow:hidden;isolation:isolate;transition:transform var(--dur-fast) var(--ease-out),border-color var(--dur-fast) ease,background var(--dur-fast) ease,box-shadow var(--dur-fast) ease}
.button:active{transform:scale(.97)}
.button.primary{background:var(--text);color:#0a0a0b;border-color:var(--text)}.button.primary:hover{background:#fff;box-shadow:0 10px 28px rgba(0,0,0,.28)}
.button.ghost{background:rgba(255,255,255,.03)}.button.ghost:hover{border-color:var(--accent);color:var(--accent-strong);background:var(--accent-soft)}
.button span{transition:transform var(--dur-fast) var(--ease-out)}.button:hover span{transform:translateX(2px)}
.button.primary:before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(100deg,transparent 40%,rgba(232,161,60,.35) 50%,transparent 60%);transform:translateX(-120%)}
.motion .button.primary:hover:before{transform:translateX(120%);transition:transform .6s var(--ease-in-out)}
.hero-visual{position:relative;min-height:400px;display:grid;place-items:center}
.orbit{position:relative;width:min(400px,90vw);aspect-ratio:1;border:1px solid var(--border);border-radius:50%;background:radial-gradient(circle at center,rgba(232,161,60,.07),transparent 55%)}
.orbit:before,.orbit:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.06);border-radius:50%;inset:13%}.orbit:after{inset:29%;border-style:dashed;border-color:rgba(255,255,255,.08);animation:spin 30s linear infinite}
.core{position:absolute;inset:36%;display:grid;place-items:center;border:1px solid var(--border-strong);border-radius:24px;background:linear-gradient(150deg,rgba(24,24,27,.96),rgba(10,10,11,.98));box-shadow:0 0 60px rgba(232,161,60,.12),inset 0 1px 0 rgba(255,255,255,.1)}.core span{font-family:"Geist Mono";font-size:1.5rem;font-weight:600;color:var(--accent-strong)}
.motion .core{animation:corePulse 4.5s ease-in-out infinite}
.orbit-node{position:absolute;padding:.5rem .7rem;border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:rgba(19,19,21,.92);backdrop-filter:blur(8px);font-size:.7rem;font-weight:500;color:var(--muted);box-shadow:var(--shadow);transition:color var(--dur-fast) ease,border-color var(--dur-fast) ease,transform var(--dur-fast) var(--ease-out)}.orbit-node:hover{color:var(--text);border-color:var(--border-strong);transform:scale(1.08)}.node-a{top:3%;left:41%}.node-b{right:-2%;top:41%}.node-c{bottom:7%;right:14%}.node-d{bottom:12%;left:4%}.node-e{left:-2%;top:33%}
.motion .node-a{animation:float 7s ease-in-out infinite}.motion .node-b{animation:float 8s ease-in-out infinite .4s}.motion .node-c{animation:float 6.5s ease-in-out infinite .8s}.motion .node-d{animation:float 7.5s ease-in-out infinite .2s}.motion .node-e{animation:float 6s ease-in-out infinite .6s}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes float{0%,100%{translate:0 0}50%{translate:0 -7px}}
@keyframes shimmer{0%,100%{background-position:0% center}50%{background-position:100% center}}
@keyframes pulseDot{0%,100%{opacity:1;box-shadow:0 0 14px rgba(127,216,168,.6)}50%{opacity:.55;box-shadow:0 0 4px rgba(127,216,168,.3)}}
@keyframes corePulse{0%,100%{box-shadow:0 0 60px rgba(232,161,60,.12),inset 0 1px 0 rgba(255,255,255,.1)}50%{box-shadow:0 0 84px rgba(232,161,60,.22),inset 0 1px 0 rgba(255,255,255,.14)}}
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.motion .hero .eyebrow,.motion .hero .hero-copy,.motion .hero .hero-lead,.motion .hero .actions,.motion .hero-visual{opacity:0;animation:fadeUp .75s var(--ease-out) forwards}
.motion .hero .eyebrow{animation-delay:.05s}
.motion .hero .hero-copy{animation-delay:.14s}
.motion .hero .hero-lead{animation-delay:.24s}
.motion .hero .actions{animation-delay:.32s}
.motion .hero-visual{animation-delay:.2s}

/* Sections */
.section{padding:clamp(3.8rem,7.5vw,6.5rem) 0;border-top:1px solid var(--border)}
.section-head{margin-bottom:2.3rem;max-width:640px}.section-head h2{margin-bottom:.7rem}.section-head p{font-size:1.02rem}
.kicker{color:var(--accent-strong);font-size:.74rem;letter-spacing:.08em;font-weight:600;margin-bottom:.75rem;font-family:"Geist Mono"}

/* Bento */
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:1rem}
.card{position:relative;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.6rem;background:linear-gradient(160deg,rgba(21,21,24,.9),rgba(11,11,13,.95));transition:transform var(--dur-base) var(--ease-out),border-color var(--dur-base) ease,box-shadow var(--dur-base) ease}
.card:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:var(--shadow)}
.card:before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(280px circle at var(--mx,50%) var(--my,50%),rgba(232,161,60,.16),transparent 72%);opacity:0;transition:opacity var(--dur-base) ease;pointer-events:none}
@media(hover:hover) and (pointer:fine){.card:hover:before{opacity:1}}
.card h3{margin-bottom:.6rem}.card p:last-child{margin-bottom:0}
.span-7{grid-column:span 7}.span-5{grid-column:span 5}.span-4{grid-column:span 4}.span-8{grid-column:span 8}.span-6{grid-column:span 6}.span-12{grid-column:span 12}
.card-top{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2.1rem}
.icon{width:38px;height:38px;border:1px solid var(--border-strong);border-radius:11px;display:grid;place-items:center;background:rgba(255,255,255,.025);color:var(--accent-strong);font-family:"Geist Mono";font-size:.85rem}
.badge{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(--border);border-radius:var(--radius-pill);padding:.4rem .65rem;font-size:.68rem;font-weight:500;color:var(--muted);background:rgba(255,255,255,.02);font-family:"Geist Mono"}.badge.dot:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--good)}
.card.accent{background:linear-gradient(160deg,rgba(232,161,60,.09),rgba(11,11,13,.95));border-color:rgba(232,161,60,.22)}
.card.image{background-size:cover;background-position:center}.card.image:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,11,.05),rgba(10,10,11,.88));pointer-events:none}.card.image>*{position:relative;z-index:1}

.project-card{min-height:290px;display:flex;flex-direction:column;justify-content:space-between}.project-title{font-size:clamp(1.55rem,2.6vw,2.15rem);margin-bottom:.75rem}.project-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.4rem}.tag{font-size:.68rem;font-family:"Geist Mono";color:var(--muted);border:1px solid var(--border);padding:.35rem .55rem;border-radius:8px}
.link-arrow{display:inline-flex;align-items:center;gap:.5rem;font-weight:600;font-size:.86rem;color:var(--text)}.link-arrow span{transition:transform var(--dur-fast) var(--ease-out)}.link-arrow:hover span{transform:translateX(4px)}
.stat{font-size:clamp(2.2rem,5vw,4.2rem);line-height:.95;letter-spacing:-.04em;font-weight:650;margin:.9rem 0}.stat.gradient{background:linear-gradient(95deg,var(--accent),var(--accent-strong));-webkit-background-clip:text;background-clip:text;color:transparent}
.tech-list{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:1.8rem}.tech-pill{padding:.48rem .68rem;border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--muted);font-size:.72rem;font-family:"Geist Mono";background:rgba(255,255,255,.015)}

.timeline{display:grid;gap:.8rem;position:relative}
.timeline:before{content:"";position:absolute;left:16px;top:34px;bottom:34px;width:1px;background:var(--border);transform-origin:top;transform:scaleY(0)}
.timeline.visible:before{transform:scaleY(1)}
.motion .timeline:before{transition:transform 1.1s var(--ease-in-out)}
.timeline-item{display:grid;grid-template-columns:34px 1fr;gap:1rem;align-items:start;position:relative}.timeline-dot{width:34px;height:34px;border-radius:11px;border:1px solid var(--border-strong);display:grid;place-items:center;color:var(--accent-strong);font-size:.76rem;font-family:"Geist Mono";font-weight:600;background:var(--bg);transition:border-color var(--dur-base) ease,transform var(--dur-base) var(--ease-out)}.timeline-item:hover .timeline-dot{border-color:var(--accent);transform:scale(1.08)}.timeline-item p{margin-bottom:0;font-size:.9rem}

/* Sub-page hero */
.subhero{padding:clamp(3.4rem,6.5vw,5.2rem) 0 3.5rem}.subhero h1{font-size:clamp(2.2rem,4vw,3.3rem);max-width:34ch}.subhero .lead{font-size:1.08rem;max-width:680px}
.breadcrumb{display:flex;align-items:center;gap:.5rem;color:var(--muted-2);font-size:.78rem;font-family:"Geist Mono";margin-bottom:1.8rem}.breadcrumb a{transition:color var(--dur-fast) ease}.breadcrumb a:hover{color:var(--text)}
.content-grid{display:grid;grid-template-columns:minmax(0,.68fr) minmax(0,1.32fr);gap:3.5rem;align-items:start}.side-label{position:sticky;top:104px}.side-label h2{font-size:clamp(1.5rem,2.6vw,2.15rem)}
.prose{max-width:740px}.prose h2{font-size:1.7rem;margin-top:2.4rem;font-weight:600}.prose h3{margin-top:1.8rem}.prose p,.prose li{color:#b4b2ac}.prose ul,.prose ol{padding-left:1.15rem}.prose a{color:var(--text);text-decoration:underline;text-decoration-color:rgba(232,161,60,.45);text-underline-offset:.18em;transition:text-decoration-color var(--dur-fast) ease}.prose a:hover{text-decoration-color:var(--accent)}
.notice{border:1px solid rgba(255,157,114,.28);border-radius:var(--radius-md);padding:1.15rem 1.25rem;background:rgba(255,157,114,.05);margin:1.3rem 0}.notice strong{color:#ffbfa0}.notice p:last-child{margin-bottom:0}.notice.info{border-color:rgba(232,161,60,.28);background:var(--accent-soft)}.notice.info strong{color:var(--accent-strong)}.notice.good{border-color:rgba(127,216,168,.28);background:rgba(127,216,168,.05)}.notice.good strong{color:var(--good)}
.policy-meta{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.4rem}.policy-meta span{font-size:.72rem;font-family:"Geist Mono";color:var(--muted);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.42rem .68rem}
.data-table{width:100%;border-collapse:collapse;margin:1.4rem 0;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;display:block}.data-table tbody{display:table;width:100%}.data-table th,.data-table td{text-align:left;vertical-align:top;padding:.95rem 1rem;border-bottom:1px solid var(--border)}.data-table tr:last-child th,.data-table tr:last-child td{border-bottom:0}.data-table th{width:28%;color:var(--text);font-size:.79rem;font-weight:600}.data-table td{color:var(--muted);font-size:.85rem}

.app-hero-card{margin-top:2.5rem;border:1px solid var(--border);border-radius:26px;padding:clamp(1.4rem,3.6vw,2.8rem);background:radial-gradient(circle at 75% 15%,rgba(232,161,60,.08),transparent 24rem),linear-gradient(160deg,rgba(21,21,24,.94),rgba(9,9,10,.97));box-shadow:var(--shadow)}
.app-grid{display:grid;grid-template-columns:1fr .9fr;gap:2.6rem;align-items:center}.app-screen{min-height:310px;border:1px solid var(--border);border-radius:18px;background:#0a0a0b;padding:1rem;box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}.screen-bar{display:flex;gap:.4rem;padding-bottom:.9rem;border-bottom:1px solid var(--border)}.screen-bar i{width:7px;height:7px;border-radius:50%;background:#2d2d31}.screen-body{display:grid;gap:.7rem;padding-top:.9rem}.screen-row{display:flex;gap:.75rem;align-items:center;padding:.75rem;border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.015);transition:border-color var(--dur-base) ease,background var(--dur-base) ease}.screen-row:hover{border-color:var(--border-strong)}.screen-icon{width:32px;height:32px;border-radius:9px;background:linear-gradient(150deg,rgba(232,161,60,.16),rgba(232,161,60,.04));border:1px solid var(--border);display:grid;place-items:center;font-size:.72rem;font-family:"Geist Mono";color:var(--accent-strong);transition:border-color var(--dur-base) ease,box-shadow var(--dur-base) ease}
.motion .app-screen.visible .screen-row{animation:stepCycle 8s ease-in-out infinite}
.motion .app-screen.visible .screen-row:nth-child(1){animation-delay:0s}
.motion .app-screen.visible .screen-row:nth-child(2){animation-delay:2s}
.motion .app-screen.visible .screen-row:nth-child(3){animation-delay:4s}
.motion .app-screen.visible .screen-row:nth-child(4){animation-delay:6s}
@keyframes stepCycle{0%,8%{border-color:var(--accent);background:var(--accent-soft)}22%,100%{border-color:var(--border);background:rgba(255,255,255,.015)}}.screen-row p{margin:0;font-size:.74rem}.screen-row strong{display:block;font-size:.8rem}.legal-links{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.3rem}

/* Scrolltelling: sticky network map + steps */
.story{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:4rem;align-items:start;margin-top:1rem}
.story-visual{position:sticky;top:110px}
.story-step{padding:clamp(2.5rem,12vh,7rem) 0;border-top:1px solid var(--border);opacity:.3;transition:opacity var(--dur-slow) var(--ease-out)}
.story-step:first-child{border-top:0;padding-top:.5rem}
.story-step.is-active{opacity:1}
.story-step h3{font-size:clamp(1.5rem,2.4vw,2rem);margin:1.2rem 0 .7rem}
.story-step p{max-width:46ch;font-size:1.02rem}
.story-step .link-arrow{margin-top:1.2rem}
.netmap{position:relative;width:min(440px,100%);aspect-ratio:1;margin-inline:auto;border-radius:50%;background:radial-gradient(circle at center,rgba(232,161,60,.08),transparent 62%)}
.netmap:before{content:"";position:absolute;inset:6%;border:1px solid rgba(255,255,255,.06);border-radius:50%}
.netmap-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.netmap .link{stroke:rgba(255,255,255,.16);stroke-width:1.5;stroke-dasharray:6 8;transition:stroke var(--dur-slow) ease}
.net-hub{position:absolute;left:50%;top:50%;translate:-50% -50%;width:94px;height:94px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--border-strong);background:linear-gradient(150deg,rgba(24,24,27,.98),rgba(10,10,11,.98));box-shadow:0 0 50px rgba(232,161,60,.14),inset 0 1px 0 rgba(255,255,255,.1);font-family:"Geist Mono";font-size:.72rem;font-weight:600;color:var(--accent-strong)}
.net-node{position:absolute;translate:-50% -50%;display:grid;justify-items:center;gap:.1rem;padding:.75rem .9rem;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:rgba(19,19,21,.95);box-shadow:var(--shadow);text-align:center;min-width:132px;opacity:.45;transition:opacity var(--dur-slow) ease,border-color var(--dur-slow) ease,transform var(--dur-slow) var(--ease-out)}
.net-node strong{font-size:.82rem;line-height:1.2}.net-node small{font-size:.66rem;color:var(--muted);font-family:"Geist Mono"}
.net-icon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-family:"Geist Mono";font-size:.66rem;font-weight:600;color:var(--accent-strong);border:1px solid var(--border);background:var(--accent-soft);margin-bottom:.35rem}
.node-laptop{left:50%;top:17%}.node-pi{left:21%;top:78%}.node-vps{left:79%;top:78%}
.netmap[data-active="laptop"] .node-laptop,.netmap[data-active="pi"] .node-pi,.netmap[data-active="vps"] .node-vps{opacity:1;border-color:var(--accent);transform:scale(1.04)}
.netmap[data-active="laptop"] .link-laptop,.netmap[data-active="pi"] .link-pi,.netmap[data-active="vps"] .link-vps{stroke:var(--accent)}
.motion .netmap[data-active="laptop"] .link-laptop,.motion .netmap[data-active="pi"] .link-pi,.motion .netmap[data-active="vps"] .link-vps{animation:flow 1.1s linear infinite}
@keyframes flow{to{stroke-dashoffset:-28}}

/* Project index list */
.index-list{display:grid;border-top:1px solid var(--border)}
.index-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.7fr) auto auto;gap:1.5rem;align-items:center;padding:1.5rem 0;border-bottom:1px solid var(--border);color:inherit}
.index-name{font-size:clamp(1.2rem,2vw,1.6rem);font-weight:600;letter-spacing:-.02em;transition:color var(--dur-fast) ease}
.index-desc{color:var(--muted);font-size:.95rem;margin:0}
.index-row .arrow{font-size:1.15rem;color:var(--muted);transition:transform var(--dur-fast) var(--ease-out),color var(--dur-fast) ease}
.index-row:hover .index-name{color:var(--accent-strong)}.index-row:hover .arrow{transform:translateX(6px);color:var(--accent-strong)}

.contact-card{display:grid;grid-template-columns:1fr auto;gap:2rem;align-items:center;border:1px solid var(--border);border-radius:var(--radius-lg);padding:clamp(1.4rem,4.5vw,2.8rem);background:linear-gradient(115deg,rgba(232,161,60,.07),rgba(255,255,255,.015))}.contact-card h2{margin-bottom:.55rem}.contact-card p{margin-bottom:0;max-width:620px}

.site-footer{border-top:1px solid var(--border);padding:2.8rem 0 2.2rem;background:#08080a}.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2.8rem}.footer-brand p{max-width:420px;font-size:.85rem}.footer-title{font-size:.72rem;letter-spacing:.08em;font-weight:600;color:var(--text);margin-bottom:.9rem;font-family:"Geist Mono"}.footer-links{display:grid;gap:.5rem}.footer-links a{font-size:.82rem;color:var(--muted);transition:color var(--dur-fast) ease}.footer-links a:hover{color:var(--text)}.footer-bottom{display:flex;justify-content:space-between;gap:2rem;border-top:1px solid var(--border);padding-top:1.3rem;margin-top:2rem;color:var(--muted-2);font-size:.72rem;font-family:"Geist Mono"}

.reveal{opacity:1}.js .reveal{opacity:0;transform:translateY(10px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}.js .reveal.visible{opacity:1;transform:none}

/* Scroll-driven motion (progressive enhancement over the IntersectionObserver reveal) */
@supports (animation-timeline: view()){
  .motion .reveal{transition:none;animation:sdRise linear both;animation-timeline:view();animation-range:entry 0% entry 55%}
  .motion .reveal:nth-child(3n+2){animation-range:entry 6% entry 61%}
  .motion .reveal:nth-child(3n){animation-range:entry 12% entry 67%}
  .motion .hero-content{animation:heroExit linear both;animation-timeline:scroll(root);animation-range:0 70vh}
  .motion .orbit{animation:orbitExit linear both;animation-timeline:scroll(root);animation-range:0 80vh}
  .motion .story-visual{animation:visualExit linear both;animation-timeline:view();animation-range:exit 0% exit 100%}
}
@media(min-width:900px){@supports (animation-timeline: view()){.motion .reveal{animation-name:sdRiseBlur}}}
@keyframes sdRise{from{opacity:0;transform:translateY(36px) scale(.97)}to{opacity:1;transform:none}}
@keyframes sdRiseBlur{from{opacity:0;transform:translateY(36px) scale(.97);filter:blur(5px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes heroExit{to{transform:translateY(-48px);opacity:0}}
@keyframes orbitExit{to{transform:translateY(-110px) scale(.9);opacity:0}}
@keyframes visualExit{to{opacity:0;transform:translateY(-30px) scale(.96)}}

@media(max-width:900px){.hero-grid,.app-grid,.content-grid{grid-template-columns:1fr}.hero-visual{min-height:360px}.side-label{position:static}.span-7,.span-5,.span-8,.span-4,.span-6{grid-column:span 12}.footer-grid{grid-template-columns:1fr 1fr}.footer-brand{grid-column:1/-1}.story{grid-template-columns:1fr;gap:2.5rem}.story-visual{position:static;animation:none}.story-step{opacity:1;padding:2rem 0}.story-step:first-child{padding-top:0}.netmap{width:min(360px,100%)}}
@media(max-width:720px){.header-inner{min-height:62px;flex-wrap:wrap}.menu-toggle{display:none}.nav{width:100%;display:flex;flex-wrap:wrap;padding-bottom:.6rem}.js .menu-toggle{display:block}.js .nav{position:absolute;top:62px;left:18px;right:18px;width:auto;display:none;flex-direction:column;align-items:stretch;padding:.65rem;border:1px solid var(--border);border-radius:16px;background:rgba(14,14,16,.98);box-shadow:var(--shadow)}.js .nav.open{display:flex}.nav .nav-cta{margin-left:0}.hero{padding-top:3.2rem}.hero-grid{gap:1.8rem}.hero-copy{max-width:12ch}.orbit{width:min(320px,86vw)}.hero-visual{min-height:320px}.node-b{right:0}.node-e{left:0}.section{padding:3.6rem 0}.contact-card{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr}.footer-brand{grid-column:auto}.footer-bottom{flex-direction:column;gap:.5rem}.data-table{overflow-x:auto}.data-table tbody{min-width:540px}.index-row{grid-template-columns:1fr auto;gap:.5rem 1rem}.index-row .arrow{grid-column:2;grid-row:1}.index-desc,.index-row .badge{grid-column:1/-1}.index-row .badge{justify-self:start}.net-node{min-width:110px;padding:.6rem .7rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.orbit:after{animation:none}.reveal{opacity:1;transform:none;transition:none}.button,.card,.link-arrow span,.button span,.story-step,.net-node,.netmap .link{transition:none}.timeline:before{transition:none}.scroll-progress{transition:none}}
