*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#08090c; --bg2:#0d0e12; --panel:#111218; --panel2:#15161d;
  --ink:#eceef4; --muted:#8a8d9c; --faint:#787d8d;
  --line:rgba(255,255,255,.07); --line2:rgba(255,255,255,.13);
  --acc:#4ef0a7; --acc-2:#67e8f9; --acc-dim:rgba(78,240,167,.12); --acc-ink:#052318;
  --amber:#f5c451;
  --sans:'Space Grotesk',system-ui,sans-serif;
  --serif:'Instrument Serif',Georgia,'Times New Roman',serif;
  --body:'Inter',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --ease:cubic-bezier(.4,0,.2,1); --spring:cubic-bezier(.33,1.3,.5,1);
  --wrap:1180px;
}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden;line-height:1.5}
a{color:inherit;text-decoration:none}
button{font-family:inherit;color:inherit;background:none;border:none;cursor:pointer}
img{max-width:100%;display:block}
::selection{background:var(--acc);color:var(--acc-ink)}
::-webkit-scrollbar{height:8px;width:9px}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.13);border-radius:20px}
::-webkit-scrollbar-track{background:transparent}
.mono{font-family:var(--mono)}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
@media(max-width:600px){.wrap{padding:0 18px}}

/* backdrop */
.field{position:fixed;inset:0;z-index:0;pointer-events:none}
.field canvas{width:100%;height:100%;opacity:.55}
.grid-bg{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.5;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:64px 64px;mask-image:radial-gradient(130% 90% at 50% 0%,#000 10%,transparent 70%)}
.glow{position:fixed;top:-260px;left:50%;transform:translateX(-50%);width:900px;height:600px;z-index:0;pointer-events:none;
  background:radial-gradient(circle,rgba(78,240,167,.14),transparent 62%);filter:blur(30px)}
.page{position:relative;z-index:1}

/* nav */
.nav{position:sticky;top:0;z-index:80;backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);
  background:rgba(8,9,12,.6);border-bottom:1px solid var(--line)}
.nav-in{max-width:var(--wrap);margin:0 auto;padding:12px max(24px,env(safe-area-inset-right)) 12px max(24px,env(safe-area-inset-left));display:flex;align-items:center;gap:20px}
.brand{display:flex;align-items:center;gap:9px;font-family:var(--sans);font-weight:700;letter-spacing:.5px;font-size:16px}
.brand .m{width:22px;height:22px;border-radius:6px;background:var(--acc);color:var(--acc-ink);display:grid;place-items:center;font-size:14px;font-weight:700}
.nav-links{margin-left:auto;display:flex;align-items:center;gap:4px}
.nav-links a{font-family:var(--mono);font-size:12.5px;color:var(--muted);padding:7px 12px;border-radius:8px;transition:.15s}
.nav-links a:hover{color:var(--ink);background:var(--panel)}
.nav-links a.cta{color:var(--acc-ink);background:var(--acc);font-weight:600}
.nav-links a.cta:hover{background:#6bf6b8}
@media(max-width:600px){.nav-in{padding:11px 18px;gap:10px}.nav-links a{padding:6px 9px;font-size:11.5px}.nav-links a.hideS{display:none}}

/* hero */
.hero{padding:clamp(56px,10vw,120px) 0 clamp(40px,6vw,70px)}
.kick{font-family:var(--mono);font-size:12px;letter-spacing:2px;color:var(--acc);text-transform:uppercase;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.kick .dot{width:7px;height:7px;border-radius:50%;background:var(--acc);box-shadow:0 0 10px var(--acc);animation:pulse 2.4s var(--ease) infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.hero h1{font-family:var(--sans);font-weight:700;font-size:clamp(34px,7vw,74px);line-height:1.02;letter-spacing:-1.8px;margin:22px 0 0;max-width:16ch}
.hero h1 .g{background:linear-gradient(100deg,var(--ink) 40%,var(--acc));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hero p{color:var(--muted);font-size:clamp(15px,2vw,18px);line-height:1.6;margin-top:22px;max-width:60ch}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-weight:600;font-size:14px;padding:12px 20px;border-radius:11px;transition:.16s var(--ease)}
.btn.p{background:var(--acc);color:var(--acc-ink)}
.btn.p:hover{transform:translateY(-2px);box-shadow:0 10px 24px -8px var(--acc)}
.btn.s{border:1px solid var(--line2);color:var(--ink)}
.btn.s:hover{background:var(--panel);border-color:var(--acc)}
/* stat strip */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-top:clamp(40px,6vw,64px);background:var(--line);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.stat{background:var(--bg2);padding:22px 20px}
.stat .n{font-family:var(--sans);font-weight:700;font-size:clamp(26px,4vw,40px);letter-spacing:-1px;line-height:1}
.stat .n .u{color:var(--acc);font-size:.6em}
.stat .l{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:8px;letter-spacing:.4px;text-transform:uppercase}
@media(max-width:680px){.stats{grid-template-columns:repeat(2,1fr)}.stat{padding:18px 16px}}

/* section heading */
.sec{padding:clamp(40px,7vw,80px) 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:28px}
.sec-tag{font-family:var(--mono);font-size:12px;color:var(--acc);letter-spacing:1.5px;text-transform:uppercase;display:flex;align-items:center;gap:9px}
.sec-tag::before{content:'';width:20px;height:1px;background:var(--acc)}
.sec-head h2{font-family:var(--sans);font-weight:700;font-size:clamp(24px,4vw,38px);letter-spacing:-.8px;margin-top:10px}
.sec-head .meta{font-family:var(--mono);font-size:12px;color:var(--faint)}

/* filters */
.filters{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:22px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.filters::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;font-family:var(--mono);font-size:12.5px;color:var(--muted);padding:8px 14px;border:1px solid var(--line2);border-radius:9px;transition:.15s;white-space:nowrap;display:flex;align-items:center;gap:7px}
.chip:hover{color:var(--ink);border-color:var(--muted)}
.chip.on{background:var(--acc);color:var(--acc-ink);border-color:var(--acc);font-weight:600}
.chip .ct{opacity:.6;font-size:11px}
.chip.on .ct{opacity:.8}

/* product grid */
.uni{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:16px}
@media(max-width:560px){.uni{grid-template-columns:1fr;gap:13px}}
.card{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px;cursor:pointer;overflow:hidden;
  transition:transform .28s var(--spring),border-color .2s,background .2s;display:flex;flex-direction:column;min-height:220px}
.card::after{content:'';position:absolute;inset:0;border-radius:16px;pointer-events:none;opacity:0;transition:.3s;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--cc) 55%,transparent),0 20px 50px -22px color-mix(in srgb,var(--cc) 70%,transparent)}
.card:hover{transform:translateY(-4px);background:var(--panel2)}
.card:hover::after{opacity:1}
.card:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.card-top{display:flex;align-items:center;gap:13px}
.card-idx{position:absolute;top:18px;right:20px;font-family:var(--mono);font-size:12px;color:var(--faint)}
.card-ico{width:46px;height:46px;border-radius:12px;flex:0 0 auto;display:grid;place-items:center;font-size:24px;overflow:hidden;
  background:color-mix(in srgb,var(--cc) 16%,var(--panel2));border:1px solid var(--line2)}
.card-ico img{width:100%;height:100%;object-fit:cover}
.card h3{font-family:var(--sans);font-weight:600;font-size:19px;letter-spacing:-.3px;display:flex;align-items:center;gap:8px}
.status{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.status.live{background:var(--acc);box-shadow:0 0 8px var(--acc)}
.status.dev{background:var(--amber);box-shadow:0 0 8px var(--amber)}
.card .kind{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:2px}
.card .tl{color:var(--muted);font-size:13.5px;line-height:1.5;margin-top:14px;flex:1}
.card .badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:16px}
.card .badges span{font-family:var(--mono);font-size:10.5px;color:#c3c6d6;background:rgba(255,255,255,.04);border:1px solid var(--line);padding:3px 7px;border-radius:6px}
.card .open{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.card .open .arw{color:var(--cc);transition:transform .2s}
.card:hover .open .arw{transform:translateX(4px)}
.card.hide{display:none}

/* about */
.about-grid{display:grid;grid-template-columns:300px 1fr;gap:clamp(24px,4vw,48px);align-items:start}
@media(max-width:820px){.about-grid{grid-template-columns:1fr}}
.about-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:26px;position:sticky;top:80px}
@media(max-width:820px){.about-card{position:static}}
.about-card img{width:88px;height:88px;border-radius:16px;object-fit:cover;border:1px solid var(--line2)}
.about-card h3{font-family:var(--sans);font-weight:700;font-size:22px;margin-top:16px;letter-spacing:-.4px}
.about-card .rl{color:var(--acc);font-family:var(--mono);font-size:12px;margin-top:6px;line-height:1.5}
.about-card .bio{color:var(--muted);font-size:13.5px;line-height:1.6;margin-top:14px}
.about-card .lk{display:flex;flex-direction:column;gap:8px;margin-top:18px}
.about-card .lk a{font-family:var(--mono);font-size:12.5px;color:var(--ink);border:1px solid var(--line2);border-radius:9px;padding:9px 12px;display:flex;justify-content:space-between;transition:.15s}
.about-card .lk a:hover{border-color:var(--acc);color:var(--acc)}
.spec{border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-bottom:16px;background:var(--panel)}
.spec-h{font-family:var(--mono);font-size:11.5px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);padding:14px 20px;border-bottom:1px solid var(--line);background:var(--bg2)}
.spec-h b{color:var(--acc);font-weight:600}
.spec-b{padding:8px 20px 18px}
.job{padding:16px 0;border-bottom:1px solid var(--line)}
.job:last-child{border-bottom:none}
.job .jt{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:baseline}
.job h4{font-family:var(--sans);font-weight:600;font-size:16px}
.job .jd{font-family:var(--mono);font-size:11.5px;color:var(--faint);white-space:nowrap}
.job .co{color:var(--muted);font-size:13px;margin-top:2px}
.job ul{margin:10px 0 0;padding-left:16px}
.job li{color:#c3c6d6;font-size:13px;line-height:1.55;margin-bottom:4px}
.skill{display:flex;align-items:center;gap:12px;padding:7px 0}
.skill .sn{flex:1;font-size:13.5px}
.skill .sb{width:120px;height:5px;border-radius:20px;background:rgba(255,255,255,.07);overflow:hidden;flex:0 0 auto}
.skill .sf{display:block;height:100%;background:var(--acc);border-radius:20px;width:0;transition:width 1s var(--ease)}
.skill .sp{font-family:var(--mono);font-size:11px;color:var(--muted);width:36px;text-align:right}
.tagwrap{display:flex;flex-wrap:wrap;gap:6px;padding:14px 20px 20px}
.tagwrap span{font-family:var(--mono);font-size:11px;color:#c3c6d6;background:rgba(255,255,255,.04);border:1px solid var(--line);padding:5px 9px;border-radius:7px}
.certs{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px;padding:8px 20px 20px}
.cert{display:flex;gap:9px;align-items:center;font-size:12.5px;color:#c9ccdb;background:var(--bg2);border:1px solid var(--line);border-radius:9px;padding:9px 11px;line-height:1.35}
.miscgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;padding:14px 20px 20px}
.misc{background:var(--bg2);border:1px solid var(--line);border-radius:11px;padding:13px 15px}
.misc .k{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--acc)}
.misc .v{font-size:13px;color:#cbcedd;margin-top:6px;line-height:1.5}

/* contact */
.contact{border:1px solid var(--line2);border-radius:22px;padding:clamp(32px,6vw,64px);text-align:center;background:
  radial-gradient(120% 120% at 50% 0%,var(--acc-dim),transparent 60%),var(--panel)}
.contact .kick{justify-content:center}
.contact h2{font-family:var(--sans);font-weight:700;font-size:clamp(28px,5vw,48px);letter-spacing:-1px;margin-top:16px}
.contact p{color:var(--muted);max-width:48ch;margin:14px auto 0;font-size:15px}
.contact .cl{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:30px}

footer{border-top:1px solid var(--line);margin-top:40px;padding:30px 0}
.foot-in{max-width:var(--wrap);margin:0 auto;padding:0 max(24px,env(safe-area-inset-right)) 0 max(24px,env(safe-area-inset-left));display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:var(--faint)}

/* ===== DEEP DIVE ===== */
.dd-scrim{position:fixed;inset:0;z-index:200;background:rgba(4,5,8,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}
.dd-scrim.on{opacity:1;visibility:visible}
.dd{position:fixed;z-index:201;top:0;right:0;height:100dvh;width:min(760px,100vw);background:var(--bg2);border-left:1px solid var(--line2);
  transform:translateX(100%);visibility:hidden;transition:transform .38s var(--spring),visibility 0s linear .38s;display:flex;flex-direction:column;overflow:hidden}
.dd.on{transform:none;visibility:visible;transition:transform .38s var(--spring),visibility 0s linear 0s}
.dd-bar{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line);background:var(--bg2)}
.dd-bar .di{width:30px;height:30px;border-radius:8px;overflow:hidden;display:grid;place-items:center;font-size:16px;background:var(--panel2);border:1px solid var(--line2)}
.dd-bar .di img{width:100%;height:100%;object-fit:cover}
.dd-bar .dn{font-family:var(--sans);font-weight:600;font-size:15px}
.dd-bar .dx{margin-left:auto;width:34px;height:34px;border-radius:9px;border:1px solid var(--line2);display:grid;place-items:center;color:var(--muted);transition:.15s}
.dd-bar .dx:hover{background:var(--panel);color:var(--ink)}
.dd-body{flex:1;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
.dd-hero{padding:30px 30px 24px;position:relative;overflow:hidden;background:radial-gradient(120% 120% at 100% 0%,color-mix(in srgb,var(--cc) 20%,transparent),transparent 60%)}
.dd-badge{font-family:var(--mono);font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--cc);border:1px solid color-mix(in srgb,var(--cc) 40%,transparent);background:color-mix(in srgb,var(--cc) 10%,transparent);padding:4px 10px;border-radius:20px;display:inline-block;margin-bottom:14px}
.dd-hero h2{font-family:var(--sans);font-weight:700;font-size:clamp(26px,5vw,34px);letter-spacing:-.6px}
.dd-hero .tl{color:var(--muted);font-size:15px;margin-top:5px}
.dd-plat{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}
.dd-plat span{font-family:var(--mono);font-size:10.5px;color:#cdd0df;background:rgba(255,255,255,.04);border:1px solid var(--line);padding:4px 8px;border-radius:6px}
.dd-links{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}
.dd-links a{font-family:var(--sans);font-weight:600;font-size:12.5px;padding:9px 14px;border-radius:9px;transition:.16s}
.dd-links a.p{background:var(--cc);color:#06130d}
.dd-links a.p:hover{filter:brightness(1.1)}
.dd-links a.s{border:1px solid var(--line2)}
.dd-links a.s:hover{background:var(--panel)}
.dd-sec{padding:24px 30px;border-top:1px solid var(--line)}
.dd-sec h3{font-family:var(--mono);font-size:11.5px;letter-spacing:1.5px;text-transform:uppercase;color:var(--cc);margin-bottom:13px}
.dd-sec p{color:#cbcedb;font-size:14px;line-height:1.72}
.dd-sec p+p{margin-top:11px}
.dd-sec b,.dd-sec strong{color:#fff;font-weight:600}
.dd-sec code{font-family:var(--mono);font-size:.86em;background:rgba(255,255,255,.06);padding:1px 5px;border-radius:5px}
.dd-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.dd-pills span{font-family:var(--mono);font-size:11px;color:#cdd0df;background:rgba(255,255,255,.04);border:1px solid var(--line);padding:5px 9px;border-radius:7px}
.dd-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:16px}
@media(max-width:520px){.dd-stats{grid-template-columns:repeat(2,1fr)}}
.dd-stat{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:13px 10px;text-align:center}
.dd-stat .n{font-family:var(--sans);font-weight:700;font-size:21px;color:var(--cc)}
.dd-stat .l{font-size:10px;color:var(--muted);margin-top:4px}
.sw{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}
.sw .c{width:84px}
.sw .c .b{height:52px;border-radius:10px;border:1px solid rgba(255,255,255,.14)}
.sw .c .n{font-size:11px;color:#d3d6e4;margin-top:6px;line-height:1.2}
.sw .c .h{font-family:var(--mono);font-size:10px;color:var(--muted)}
.tf{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.tf .t{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:11px 14px}
.tf .t .k{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
.tf .t .v{font-family:var(--sans);font-weight:600;font-size:15px;margin-top:4px}
@property --a{syntax:'<angle>';inherits:false;initial-value:0deg}
/* architecture diagram — animated & interactive */
.diagram{position:relative;margin-top:16px;border:1px solid var(--line);border-radius:14px;padding:18px 16px;overflow:hidden;
  background:radial-gradient(120% 80% at 50% -12%,color-mix(in srgb,var(--cc) 9%,transparent),transparent 62%),var(--bg2)}
.diagram.reveal > *{opacity:0;transform:translateY(15px);transition:opacity .55s var(--ease),transform .55s var(--ease)}
.diagram.reveal.in > *{opacity:1;transform:none}
.diagram.reveal.in > *:nth-child(1){transition-delay:.03s}
.diagram.reveal.in > *:nth-child(2){transition-delay:.10s}
.diagram.reveal.in > *:nth-child(3){transition-delay:.17s}
.diagram.reveal.in > *:nth-child(4){transition-delay:.24s}
.diagram.reveal.in > *:nth-child(5){transition-delay:.31s}
.diagram.reveal.in > *:nth-child(6){transition-delay:.38s}
.diagram.reveal.in > *:nth-child(7){transition-delay:.45s}
.diagram.reveal.in > *:nth-child(8){transition-delay:.52s}
.diagram.reveal.in > *:nth-child(n+9){transition-delay:.60s}
.layer-label{font-family:var(--mono);font-size:10px;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:8px}
.layer-label::before{content:'';width:6px;height:6px;border-radius:2px;background:var(--cc);flex:0 0 auto;animation:dotp 2.4s var(--ease) infinite}
@keyframes dotp{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--cc) 55%,transparent)}50%{box-shadow:0 0 7px 1px color-mix(in srgb,var(--cc) 50%,transparent)}}
.layer-row{display:flex;gap:9px;flex-wrap:wrap}
.node{position:relative;flex:1 1 150px;min-width:0;background:var(--panel);border:1px solid var(--line2);border-radius:10px;padding:11px 13px;cursor:pointer;
  transition:transform .22s var(--spring),border-color .2s,box-shadow .2s,opacity .25s,background .2s}
.node.ext{border-style:dashed}
.node.acc{border-color:color-mix(in srgb,var(--cc) 55%,transparent);background:color-mix(in srgb,var(--cc) 12%,var(--panel));animation:accp 2.8s var(--ease) infinite}
@keyframes accp{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--cc) 26%,transparent)}50%{box-shadow:0 0 17px -1px color-mix(in srgb,var(--cc) 32%,transparent)}}
.diagram:hover .node,.diagram:has(.node.lit) .node,.diagram:has(.node.trace) .node{opacity:.4}
.diagram .node:hover,.diagram .node.lit,.diagram .node.trace{opacity:1!important;transform:translateY(-3px);border-color:color-mix(in srgb,var(--cc) 75%,transparent);
  box-shadow:0 12px 28px -12px color-mix(in srgb,var(--cc) 85%,transparent),0 0 0 1px color-mix(in srgb,var(--cc) 42%,transparent);animation:none;z-index:2}
.node .nt{font-family:var(--sans);font-weight:600;font-size:13px;line-height:1.2;transition:color .2s}
.node.has-d .nt{padding-right:18px}
.node .ns{font-family:var(--mono);font-size:10px;color:var(--muted);margin-top:4px;line-height:1.3}
.node:hover .nt,.node.lit .nt,.node.trace .nt{color:var(--cc)}
.node .xp{position:absolute;top:10px;right:12px;font-family:var(--mono);font-size:14px;line-height:1;color:var(--faint);transition:transform .25s var(--spring),color .2s}
.node.has-d:hover .xp{color:var(--cc)}
.node.lit .xp{transform:rotate(45deg);color:var(--cc)}
.node .nd{max-height:0;opacity:0;overflow:hidden;color:#cbcedb;font-size:11.5px;line-height:1.5;transition:max-height .34s var(--ease),opacity .25s,margin .3s}
.node.lit .nd{max-height:120px;opacity:1;margin-top:9px;padding-top:9px;border-top:1px solid color-mix(in srgb,var(--cc) 22%,var(--line))}
.dg-trace{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--muted);border:1px solid var(--line2);border-radius:7px;padding:5px 11px;cursor:pointer;transition:.16s}
.dg-trace:hover{color:var(--cc);border-color:color-mix(in srgb,var(--cc) 55%,transparent);background:color-mix(in srgb,var(--cc) 8%,transparent)}
.dg-trace.run{color:var(--cc);border-color:color-mix(in srgb,var(--cc) 55%,transparent)}
/* animated data-flow rail */
.flow{position:relative;height:30px}
.flow::before{content:'';position:absolute;left:50%;top:2px;bottom:7px;width:2px;transform:translateX(-50%);border-radius:2px;
  background:linear-gradient(color-mix(in srgb,var(--cc) 10%,transparent),color-mix(in srgb,var(--cc) 42%,transparent))}
.flow::after{content:'';position:absolute;left:50%;bottom:2px;width:7px;height:7px;margin-left:-4px;transform:rotate(45deg);
  border-right:2px solid color-mix(in srgb,var(--cc) 55%,transparent);border-bottom:2px solid color-mix(in srgb,var(--cc) 55%,transparent)}
.flow i{position:absolute;left:50%;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:var(--cc);box-shadow:0 0 10px 1px var(--cc);animation:pkt 1.9s linear infinite}
.flow i:nth-child(2){animation-delay:.95s}
@keyframes pkt{0%{top:-3px;opacity:0}16%{opacity:1}80%{opacity:1}100%{top:23px;opacity:0}}
/* v2 — self-drawing rails, spinning ring on unique nodes, cursor glow, reactive speed */
.diagram.reveal .flow::before{transform:translateX(-50%) scaleY(0);transform-origin:top center;transition:transform .55s var(--ease) .15s}
.diagram.reveal.in .flow::before{transform:translateX(-50%) scaleY(1)}
.node::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .25s;
  background:radial-gradient(150px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--cc) 17%,transparent),transparent 60%)}
.node:hover::after{opacity:1}
.node.acc::before{content:'';position:absolute;inset:-1px;border-radius:11px;padding:1.5px;pointer-events:none;
  background:conic-gradient(from var(--a),transparent 0deg,color-mix(in srgb,var(--cc) 90%,transparent) 46deg,transparent 132deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;
  animation:ring 3.6s linear infinite}
@keyframes ring{to{--a:360deg}}
.diagram:hover .flow i{animation-duration:1.05s}
.dg-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px;font-family:var(--mono);font-size:10px;color:var(--faint)}
.dg-legend span{display:flex;align-items:center;gap:6px}
.dg-legend i{width:16px;height:10px;border-radius:3px;border:1px solid var(--line2);display:inline-block}
.dg-legend i.e{border-style:dashed}
.dg-legend i.a{border-color:color-mix(in srgb,var(--cc) 60%,transparent);background:color-mix(in srgb,var(--cc) 12%,transparent)}
.unique{margin-top:16px;display:flex;flex-direction:column;gap:8px}
.uq{padding:11px 14px;border:1px solid var(--line);border-left:2px solid var(--cc);border-radius:0 9px 9px 0;background:var(--panel)}
.uq b{color:#fff;font-weight:600;font-size:13.5px}
.uq span{display:block;color:var(--muted);font-size:12.5px;line-height:1.55;margin-top:3px}
.eng-h{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:1.2px;color:#e6e8f2;margin:22px 0 0;display:flex;align-items:center;gap:9px}
.eng-h:first-of-type{margin-top:2px}
.eng-h::before{content:'';width:14px;height:1px;background:var(--cc)}
.lstack{margin-top:12px;display:flex;flex-direction:column;gap:6px}
.lband{display:flex;gap:14px;align-items:baseline;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--cc);border-radius:8px;padding:11px 14px;transition:transform .2s var(--spring),border-color .2s}
.lband:hover{transform:translateX(3px);border-left-color:var(--cc)}
.lband .li{font-family:var(--mono);font-size:10.5px;color:var(--cc);flex:0 0 96px;text-transform:uppercase;letter-spacing:.4px}
.lband .lx{font-size:12.5px;color:#cbcedb;line-height:1.5}
.apis{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.api{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:11px 14px;transition:border-color .2s,background .2s}
.api:hover{border-color:color-mix(in srgb,var(--cc) 45%,transparent)}
.api .an{font-family:var(--mono);font-size:12px;color:var(--cc);margin-bottom:5px;display:flex;align-items:center;gap:8px}
.api .an::before{content:'{ }';opacity:.55;font-size:11px}
.api .ah{font-size:12.5px;color:#cbcedb;line-height:1.55}
@media(max-width:520px){.lband{flex-direction:column;gap:4px}.lband .li{flex-basis:auto}}
.gal{display:flex;gap:14px;overflow-x:auto;padding-bottom:10px;margin-top:16px;scroll-snap-type:x mandatory}
.gal figure{flex:0 0 auto;scroll-snap-align:start}
.gal img{height:380px;width:auto;border-radius:20px;border:1px solid var(--line2);background:#0c0e16}
.gal figure.wide img{height:270px;border-radius:12px}
.gal figcaption{font-family:var(--mono);font-size:10.5px;color:var(--muted);text-align:center;margin-top:8px}
.notebox{margin-top:16px;display:flex;gap:11px;background:var(--acc-dim);border:1px solid color-mix(in srgb,var(--acc) 26%,transparent);border-radius:12px;padding:13px 15px}
.notebox p{font-size:12.5px;color:#cbcedb;line-height:1.55;margin:0}
@media(max-width:600px){.dd-hero,.dd-sec{padding-left:20px;padding-right:20px}.gal img{height:320px}}

/* ===== engagement layer ===== */
.progress{position:fixed;top:0;left:0;height:2px;width:0;z-index:120;background:linear-gradient(90deg,var(--acc),var(--acc-2));box-shadow:0 0 10px var(--acc);transition:width .1s linear}
.hero .kick,.hero h1,.hero p,.hero-cta,.scrollcue,.stats{opacity:0;transform:translateY(22px)}
body.loaded .hero .kick{animation:rise .9s var(--ease) .05s forwards}
body.loaded .hero h1{animation:unmask 1.2s var(--ease) .2s forwards}
@keyframes unmask{0%{opacity:0;transform:translateY(30px);clip-path:inset(0 0 108% 0);filter:blur(6px)}55%{opacity:1;filter:blur(0)}100%{opacity:1;transform:none;clip-path:inset(-.14em -.14em -.2em -.14em);filter:blur(0)}}
body.loaded .hero p{animation:rise .9s var(--ease) .4s forwards}
body.loaded .hero-cta{animation:rise .9s var(--ease) .56s forwards}
body.loaded .scrollcue{animation:rise .9s var(--ease) .68s forwards}
body.loaded .stats{animation:rise .9s var(--ease) .78s forwards}
@keyframes rise{to{opacity:1;transform:none}}
.hero h1 .g{background:linear-gradient(100deg,#fff 16%,var(--acc) 40%,var(--acc-2) 56%,#fff 80%);background-size:220% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shine 7s linear infinite}
@media(forced-colors:active){.hero h1 .g{-webkit-text-fill-color:currentColor;background:none;color:currentColor}}
@keyframes shine{to{background-position:-220% center}}
.nav-links a.on{color:var(--acc)}
.uni.anim .card{opacity:0}
.uni.anim.in .card{animation:cardin .6s var(--spring) forwards}
@keyframes cardin{from{opacity:0;transform:translateY(24px) scale(.985)}to{opacity:1;transform:none}}
.uni.anim.in .card:nth-child(1){animation-delay:.03s}.uni.anim.in .card:nth-child(2){animation-delay:.09s}.uni.anim.in .card:nth-child(3){animation-delay:.15s}.uni.anim.in .card:nth-child(4){animation-delay:.21s}.uni.anim.in .card:nth-child(5){animation-delay:.27s}.uni.anim.in .card:nth-child(6){animation-delay:.33s}.uni.anim.in .card:nth-child(7){animation-delay:.39s}.uni.anim.in .card:nth-child(8){animation-delay:.45s}.uni.anim.in .card:nth-child(9){animation-delay:.51s}.uni.anim.in .card:nth-child(n+10){animation-delay:.57s}
.card::before{content:'';position:absolute;inset:0;border-radius:16px;pointer-events:none;opacity:0;transition:opacity .3s;z-index:0;
  background:radial-gradient(230px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--cc) 14%,transparent),transparent 62%)}
.card:hover::before{opacity:1}
.card-top,.card .tl,.card .badges,.card .open,.card-idx{position:relative;z-index:1}
.ticker{position:relative;overflow:hidden;border-block:1px solid var(--line);padding:13px 0;margin-top:6px;
  -webkit-mask:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.ticker-in{display:flex;width:max-content;animation:tick 44s linear infinite}
.ticker:hover .ticker-in{animation-play-state:paused}
.ticker-item{font-family:var(--mono);font-size:13px;color:var(--muted);white-space:nowrap;display:flex;align-items:center}
.ticker-item::after{content:'✦';color:var(--acc);opacity:.5;margin:0 22px;font-size:9px}
@keyframes tick{to{transform:translateX(-50%)}}
/* scroll reveal */
.rev{opacity:0;transform:translateY(24px);filter:blur(9px);transition:opacity .75s var(--ease),transform .75s var(--ease),filter .75s var(--ease)}
.rev.vis{opacity:1;transform:none;filter:blur(0)}
/* animated nav underline */
.nav-links a:not(.cta){position:relative}
.nav-links a:not(.cta)::after{content:'';position:absolute;left:12px;right:12px;bottom:3px;height:1px;background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease)}
.nav-links a:not(.cta):hover::after,.nav-links a.on::after{transform:scaleX(1)}
/* toast */
.toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%) translateY(22px);z-index:9998;background:rgba(16,18,26,.97);border:1px solid var(--line2);border-radius:12px;padding:12px 20px;font-family:var(--sans);font-size:13.5px;color:var(--ink);opacity:0;transition:opacity .3s,transform .3s var(--spring);pointer-events:none;box-shadow:0 14px 34px -12px rgba(0,0,0,.7)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast .ok{color:var(--acc)}
.cursor-toggle{font-family:var(--mono);font-size:11px;color:var(--muted);background:none;border:1px solid var(--line2);border-radius:7px;padding:4px 10px;cursor:pointer;transition:.15s}
.cursor-toggle:hover{color:var(--acc);border-color:color-mix(in srgb,var(--acc) 45%,transparent)}
@media(pointer:coarse){.cursor-toggle{display:none}}
/* custom cursor (desktop only) */
@media(pointer:fine){
  body.has-cursor,body.has-cursor *{cursor:none!important}
  .cursor{position:fixed;top:0;left:0;width:7px;height:7px;border-radius:50%;background:#fff;z-index:10000;pointer-events:none;mix-blend-mode:difference;will-change:transform}
  .cursor-ring{position:fixed;top:0;left:0;width:30px;height:30px;border-radius:50%;border:1px solid rgba(255,255,255,.55);z-index:10000;pointer-events:none;mix-blend-mode:difference;transition:transform .14s ease-out,width .22s,height .22s,background .22s,border-color .22s;will-change:transform}
  .cursor-ring.big{width:54px;height:54px;background:rgba(255,255,255,.10);border-color:transparent}
}
/* ===== credentials ===== */
.cred-h{font-family:var(--mono);font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--acc);margin:36px 0 2px;display:flex;align-items:center;gap:9px}
.cred-h::before{content:'';width:16px;height:1px;background:var(--acc)}
.cred-h:first-of-type{margin-top:10px}
.quotes{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;margin-top:16px}
@media(max-width:560px){.quotes{grid-template-columns:1fr}}
.quote{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px;display:flex;flex-direction:column;transition:border-color .2s,transform .25s var(--spring)}
.quote:hover{border-color:var(--line2);transform:translateY(-3px)}
.quote blockquote{margin:0;font-family:var(--serif);font-size:18px;line-height:1.5;color:var(--ink);flex:1}
.quote blockquote::before{content:'\201C';color:var(--acc);font-family:var(--serif);font-size:30px;line-height:0;margin-right:3px;vertical-align:-8px}
.quote figcaption{margin-top:18px}
.quote .qn{display:block;font-family:var(--sans);font-weight:600;font-size:14px}
.quote .qt{display:block;font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:3px;line-height:1.45}
.quote .qread{align-self:flex-start;margin-top:15px;font-family:var(--mono);font-size:11.5px;color:var(--acc);background:none;border:1px solid color-mix(in srgb,var(--acc) 30%,transparent);border-radius:8px;padding:6px 11px;cursor:pointer;transition:.15s}
.quote .qread:hover{background:var(--acc-dim);border-color:var(--acc)}
.certgal{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-top:16px}
@media(max-width:520px){.certgal{grid-template-columns:repeat(2,1fr)}}
.certcard{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px;cursor:pointer;text-align:left;transition:border-color .2s,transform .25s var(--spring);display:flex;flex-direction:column;gap:9px;color:inherit}
.certcard:hover{border-color:var(--acc);transform:translateY(-3px)}
.certcard img{width:100%;aspect-ratio:4/3;object-fit:cover;object-position:top;border-radius:7px;background:#fff;border:1px solid var(--line)}
.certcard .cc-n{font-family:var(--sans);font-weight:600;font-size:12.5px;line-height:1.3}
.certcard .cc-y{font-family:var(--mono);font-size:10.5px;color:var(--muted)}
.edu{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-top:16px}
.edu .ed{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--acc);border-radius:10px;padding:16px 18px}
.edu .ed .ed-d{font-family:var(--sans);font-weight:600;font-size:15px}
.edu .ed .ed-s{font-family:var(--mono);font-size:11.5px;color:var(--muted);margin-top:5px}
/* lightbox */
.lb{position:fixed;inset:0;z-index:300;background:rgba(4,5,8,.9);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:clamp(16px,4vw,40px);opacity:0;visibility:hidden;transition:opacity .28s,visibility .28s}
.lb.on{opacity:1;visibility:visible}
.lb-fig{margin:0;max-width:min(940px,94vw);display:flex;flex-direction:column;align-items:center;gap:12px}
.lb-fig img{max-width:100%;max-height:82vh;object-fit:contain;border-radius:10px;box-shadow:0 30px 80px -20px rgba(0,0,0,.85);background:#fff}
.lb-fig figcaption{font-family:var(--mono);font-size:12px;color:var(--muted);text-align:center;max-width:60ch}
.lb-x{position:fixed;top:18px;right:20px;width:42px;height:42px;border-radius:11px;border:1px solid var(--line2);background:rgba(16,18,26,.85);color:var(--ink);font-size:16px;cursor:pointer;z-index:301;transition:.15s}
.lb-x:hover{background:var(--panel);border-color:var(--acc)}
@media(prefers-reduced-motion:reduce){.rev{opacity:1!important;transform:none!important;filter:none!important}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.001s!important;transition-duration:.05s!important}html{scroll-behavior:auto}.hero .kick,.hero h1,.hero p,.hero-cta,.scrollcue,.stats,.uni.anim .card{opacity:1!important;transform:none!important}}
/* ===== cinematic layer ===== */
#preload{position:fixed;inset:0;z-index:9999;background:radial-gradient(120% 100% at 50% 38%,#0c1119,var(--bg) 72%);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .9s var(--ease),visibility .9s}
#preload.done{opacity:0;visibility:hidden;pointer-events:none}
.pl-mark{width:56px;height:56px;border-radius:15px;background:var(--acc);color:var(--acc-ink);display:grid;place-items:center;font-family:var(--sans);font-weight:700;font-size:32px;box-shadow:0 0 60px -6px var(--acc);animation:plfloat 3s var(--ease) infinite}
@keyframes plfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
.pl-word{font-family:var(--mono);font-size:11px;letter-spacing:6px;text-transform:uppercase;color:var(--muted);margin-top:24px}
.pl-count{font-family:var(--serif);font-size:clamp(64px,13vw,128px);line-height:1;color:var(--ink);margin-top:2px;font-variant-numeric:tabular-nums}
.pl-count .pct{font-size:.36em;color:var(--muted);margin-left:2px}
.pl-bar{width:min(240px,58vw);height:1px;background:var(--line2);margin-top:24px;overflow:hidden}
.pl-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--acc),var(--acc-2));box-shadow:0 0 10px var(--acc);transition:width .2s linear}
/* cinematic hero + serif display */
.hero{position:relative}
.hero h1{font-family:var(--serif);font-weight:400;font-size:clamp(46px,9vw,108px);line-height:1.0;letter-spacing:-.5px;max-width:15ch;margin-top:20px}
.hero h1 em,.hero h1 .g{font-style:italic}
.sec-head h2{font-family:var(--serif);font-weight:400;letter-spacing:-.5px;font-size:clamp(30px,5vw,50px)}
.contact h2{font-family:var(--serif);font-weight:400;letter-spacing:-.6px}
.about-card h3,.dd-hero h2{font-family:var(--serif);font-weight:400;letter-spacing:-.4px}
.dd-hero h2{font-size:clamp(30px,5vw,40px)}
/* scroll cue */
.scrollcue{display:inline-flex;align-items:center;gap:11px;margin-top:36px;font-family:var(--mono);font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--faint)}
.scrollcue .ln{width:38px;height:1px;background:var(--line2);position:relative;overflow:hidden}
.scrollcue .ln::after{content:'';position:absolute;top:0;left:0;height:100%;width:45%;background:var(--acc);animation:cue 1.9s var(--ease) infinite}
@keyframes cue{0%{transform:translateX(-110%)}100%{transform:translateX(320%)}}
/* cinematic chapter / statement moment */
.chapter{min-height:84vh;display:flex;align-items:center;padding:clamp(60px,10vw,110px) 0;position:relative}
.chapter .sec-tag{margin-bottom:26px}
.chapter-h{font-family:var(--serif);font-weight:400;font-size:clamp(34px,6vw,76px);line-height:1.04;letter-spacing:-.6px;max-width:19ch}
.chapter-h em{font-style:italic;background:linear-gradient(100deg,var(--acc),var(--acc-2));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.chapter-p{color:var(--muted);font-size:clamp(15px,2vw,19px);line-height:1.65;margin-top:28px;max-width:52ch}
.chapter-big{min-height:92vh}
.chapter-h.big{font-size:clamp(38px,7.2vw,90px);line-height:1.02;max-width:16ch}
@media(prefers-reduced-motion:reduce){#preload{transition:none}.pl-mark{animation:none}.scrollcue .ln::after{animation:none}}
