/* ============================================================
   SORAS CORP — Multi-page site stylesheet
   Built on the Soras Corp design system tokens.
   ============================================================ */

:root{
  --bg:#050505; --bg-2:#080808; --bg-card:#0c0c0c; --border:#161616; --border-2:#1f1f1f;
  --green:#00ff41; --green-dim:#00cc33; --red:#ff0040; --cyan:#00d4ff;
  --white:#efefef; --muted:#686868; --dim:#333;
  --mono:'Share Tech Mono','Fira Code',monospace; --code:'Fira Code',monospace;
  --ease:cubic-bezier(0.16,1,0.3,1);
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{font-family:var(--mono);background:var(--bg);color:var(--white);line-height:1.6;overflow-x:hidden;}
a{color:inherit;text-decoration:none;}
::selection{background:var(--green);color:#000;}
::-webkit-scrollbar{width:4px;}::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--dim);}::-webkit-scrollbar-thumb:hover{background:var(--green-dim);}

body::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:9000;
  background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.06) 2px,rgba(0,0,0,.06) 4px);}
#bg-canvas{position:fixed;inset:0;z-index:0;pointer-events:none;}
#bg-overlay{position:fixed;inset:0;z-index:1;pointer-events:none;background:rgba(5,5,5,.84);}

/* ── NAV ── */
nav{position:fixed;top:0;left:0;right:0;z-index:1000;height:60px;display:flex;align-items:center;justify-content:space-between;
  padding:0 clamp(24px,6vw,96px);background:rgba(5,5,5,.9);backdrop-filter:blur(24px) saturate(180%);border-bottom:1px solid var(--border);}
.nav-brand{display:flex;align-items:center;gap:12px;}
.nav-brand img{width:26px;height:26px;filter:drop-shadow(0 0 8px rgba(0,255,65,.35));}
.nav-brand-name{font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--white);}
.nav-brand-name em{color:var(--green);font-style:normal;}
.nav-links{display:flex;gap:36px;list-style:none;}
.nav-links a{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);transition:color .2s;}
.nav-links a:hover,.nav-links a.active{color:var(--green);}
.nav-right{display:flex;align-items:center;gap:8px;}
.nav-dot{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);animation:pulse-dot 2s ease-in-out infinite;}
.nav-status{font-size:9px;letter-spacing:.18em;color:var(--muted);text-transform:uppercase;}
.nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:6px;}
.nav-toggle span{width:20px;height:1.5px;background:var(--green);display:block;transition:.2s;}
@keyframes pulse-dot{0%,100%{opacity:1}50%{opacity:.3}}

/* ── BUTTONS ── */
.btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;border:1px solid;background:transparent;cursor:pointer;transition:color .22s,border-color .22s,box-shadow .22s;white-space:nowrap;padding:13px 28px;}
.btn::before{content:'';position:absolute;inset:0;transform:translateX(-102%);transition:transform .38s var(--ease);z-index:0;}
.btn:hover::before{transform:translateX(0);}
.btn-label,.btn-arrow{position:relative;z-index:1;}
.btn-arrow{font-size:14px;opacity:0;transform:translateX(-8px);transition:opacity .22s,transform .22s;}
.btn:hover .btn-arrow{opacity:1;transform:translateX(0);}
.btn-ghost{color:rgba(240,240,240,.5);border-color:rgba(240,240,240,.15);padding:13px 24px;}
.btn-ghost::before{background:rgba(255,255,255,.04);}
.btn-ghost:hover{color:var(--white);border-color:rgba(240,240,240,.4);}
.btn-ghost .btn-arrow{color:rgba(240,240,240,.5);}
.btn-green{color:var(--green);border-color:rgba(0,255,65,.45);}
.btn-green::before{background:rgba(0,255,65,.07);}
.btn-green:hover{border-color:var(--green);box-shadow:0 0 22px rgba(0,255,65,.22),0 0 48px rgba(0,255,65,.08),inset 0 0 18px rgba(0,255,65,.03);}
.btn-green .btn-arrow{color:var(--green);}
.btn-cyan{color:var(--cyan);border-color:rgba(0,212,255,.45);}
.btn-cyan::before{background:rgba(0,212,255,.07);}
.btn-cyan:hover{border-color:var(--cyan);box-shadow:0 0 22px rgba(0,212,255,.22),0 0 48px rgba(0,212,255,.08),inset 0 0 18px rgba(0,212,255,.03);}
.btn-cyan .btn-arrow{color:var(--cyan);}
.btn-lg{padding:15px 36px;}
/* Coming-soon: disabled, dashed, faint pulse */
.btn-soon{color:var(--muted);border-color:rgba(104,104,104,.3);border-style:dashed;cursor:not-allowed;letter-spacing:.22em;}
.btn-soon::before{display:none;}
.btn-soon .dotpulse{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);animation:pulse-dot 1.6s ease-in-out infinite;position:relative;z-index:1;}

/* ── SECTIONS ── */
section{position:relative;z-index:2;}
.sec{padding:clamp(70px,11vw,130px) clamp(24px,6vw,96px);}
.sec-inner{max-width:1180px;margin:0 auto;}
.sec-eyebrow{font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--green);opacity:.65;margin-bottom:14px;}
.sec-eyebrow::before{content:'// ';}
.sec-title{font-size:clamp(1.7rem,3.5vw,2.7rem);font-weight:400;letter-spacing:.15em;color:var(--white);margin-bottom:16px;}
.sec-title .accent{color:var(--green);}.sec-title .c-accent{color:var(--cyan);}
.sec-desc{font-size:13px;color:var(--muted);line-height:1.9;max-width:520px;}
hr.div{border:none;border-top:1px solid var(--border);}

/* ── TERMINAL WINDOW ── */
.terminal-win{background:var(--bg-card);border:1px solid var(--border-2);box-shadow:0 24px 56px rgba(0,0,0,.55),0 0 0 1px var(--border),0 0 50px rgba(0,255,65,.03);}
.tw-bar{display:flex;align-items:center;gap:8px;padding:9px 14px;background:#090909;border-bottom:1px solid var(--border);}
.tw-dots{display:flex;gap:6px;}
.tw-dots span{width:10px;height:10px;border-radius:50%;}
.tw-dots span:nth-child(1){background:#ff5f56;}.tw-dots span:nth-child(2){background:#ffbd2e;}.tw-dots span:nth-child(3){background:#27c93f;}
.tw-title{flex:1;text-align:center;font-size:10px;color:var(--dim);letter-spacing:.1em;font-family:var(--code);}
.tw-body{padding:20px 22px;font-family:var(--code);font-size:12px;line-height:1.9;}
.tw-row{display:flex;gap:10px;}
.tw-p{color:var(--green);white-space:nowrap;font-size:11px;}
.tw-c{color:var(--muted);font-size:12px;}
.tw-out{padding-top:10px;}
.tw-out p{color:#555;}
.tw-out p .hl{color:var(--green);}.tw-out p .hlc{color:var(--cyan);}
.tw-badge{display:inline-flex;align-items:center;gap:6px;margin-top:14px;padding:4px 12px;border:1px solid rgba(0,255,65,.15);font-size:10px;color:rgba(0,255,65,.6);letter-spacing:.1em;}
.tw-badge::before{content:'●';animation:pulse-dot 2s ease-in-out infinite;}

/* ── FOOTER ── */
footer{position:relative;z-index:2;background:var(--bg);border-top:1px solid var(--border);padding:36px clamp(24px,6vw,96px);}
.foot-inner{max-width:1180px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px;}
.foot-brand{display:flex;align-items:center;gap:10px;}
.foot-brand img{width:22px;height:22px;opacity:.4;}
.foot-brand span{font-size:10px;color:var(--dim);letter-spacing:.22em;text-transform:uppercase;}
.foot-copy{text-align:center;}
.foot-copy p{font-size:10px;color:var(--dim);letter-spacing:.06em;}
.foot-copy p.it{margin-top:3px;font-style:italic;color:#262626;}
.foot-links{display:flex;gap:20px;}
.foot-links a{font-size:10px;color:var(--dim);letter-spacing:.15em;text-transform:uppercase;transition:color .2s;}
.foot-links a:hover{color:var(--green);}

/* ── PAGE TRANSITIONS ── */
@keyframes page-enter{
  from{opacity:0;}
  to{opacity:1;}
}
body{animation:page-enter 0.4s ease both;}
body.page-exit{
  animation:none !important;
  opacity:0 !important;
  transition:opacity 0.26s ease !important;
  pointer-events:none;
}

/* ── REVEAL ── */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .65s var(--ease),transform .65s var(--ease);}
.reveal.vis{opacity:1;transform:translateY(0);}
.rd1{transition-delay:.08s;}.rd2{transition-delay:.16s;}.rd3{transition-delay:.24s;}.rd4{transition-delay:.32s;}
@keyframes fadeUp{from{opacity:0;transform:translateY(22px);}to{opacity:1;transform:translateY(0);}}
@keyframes blink{0%,49%{opacity:1}50%,100%{opacity:0}}

/* ════════════════════════════════════════════════════════════
   HOME — hero / products / roadmap
   ════════════════════════════════════════════════════════════ */
#home{position:relative;z-index:2;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:100px clamp(24px,8vw,120px) 80px;text-align:center;}
#home::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(ellipse 70% 70% at 50% 50%,rgba(0,255,65,.025) 0%,transparent 70%),radial-gradient(ellipse 100% 100% at 50% 50%,transparent 50%,rgba(5,5,5,.6) 100%);}
.hero-wrap{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;max-width:860px;width:100%;}
.hero-terminal-line{font-size:12px;color:var(--green);letter-spacing:.1em;margin-bottom:36px;display:flex;align-items:center;justify-content:center;}
.hterm-path{color:var(--muted);}
.hterm-cursor{width:7px;height:13px;background:var(--green);display:inline-block;vertical-align:middle;animation:blink 1s step-end infinite;}
.hero-logo{margin-bottom:48px;}
.hero-logo img{width:clamp(280px,46vw,540px);height:auto;filter:drop-shadow(0 0 32px rgba(0,255,65,.22)) drop-shadow(0 0 80px rgba(0,255,65,.08));animation:breathe 5s ease-in-out infinite;}
@keyframes breathe{0%,100%{filter:drop-shadow(0 0 28px rgba(0,255,65,.18)) drop-shadow(0 0 60px rgba(0,255,65,.06));}50%{filter:drop-shadow(0 0 48px rgba(0,255,65,.32)) drop-shadow(0 0 100px rgba(0,255,65,.12));}}
.hero-title{font-size:clamp(1.5rem,3.4vw,2.8rem);font-weight:400;letter-spacing:.28em;line-height:1.15;color:rgba(240,240,240,.72);margin-bottom:28px;}
.hero-sub{font-size:13px;color:rgba(0,255,65,.55);letter-spacing:.06em;min-height:20px;margin-bottom:56px;}
.type-cursor{display:inline-block;width:7px;height:1em;background:var(--green);vertical-align:text-bottom;animation:blink .8s step-end infinite;margin-left:1px;}
.hero-cta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:center;}

/* products grid (home) */
#products{background:var(--bg-2);}
.prod-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,3vw,28px);margin-top:56px;}
.prod-card{position:relative;overflow:hidden;border:1px solid var(--border-2);background:var(--bg-card);padding:clamp(32px,4.5vw,52px);display:flex;flex-direction:column;gap:22px;transition:border-color .3s,box-shadow .3s;}
.prod-card::before,.prod-card::after{content:'';position:absolute;left:0;right:0;height:1px;opacity:0;transition:opacity .3s;}
.prod-card::before{top:0;}.prod-card::after{bottom:0;}
.prod-card.p-green::before,.prod-card.p-green::after{background:linear-gradient(90deg,transparent,rgba(0,255,65,.3),transparent);}
.prod-card.p-cyan::before,.prod-card.p-cyan::after{background:linear-gradient(90deg,transparent,rgba(0,212,255,.3),transparent);}
.prod-card:hover::before,.prod-card:hover::after{opacity:1;}
.prod-card.p-green:hover{border-color:rgba(0,255,65,.2);box-shadow:0 0 60px rgba(0,255,65,.05),inset 0 0 40px rgba(0,255,65,.015);}
.prod-card.p-cyan:hover{border-color:rgba(0,212,255,.2);box-shadow:0 0 60px rgba(0,212,255,.05),inset 0 0 40px rgba(0,212,255,.015);}
.crnr{position:absolute;width:14px;height:14px;border-style:solid;opacity:0;transition:opacity .3s;}
.prod-card:hover .crnr{opacity:.35;}
.crnr-tl{top:10px;left:10px;border-width:1px 0 0 1px;}.crnr-tr{top:10px;right:10px;border-width:1px 1px 0 0;}
.crnr-bl{bottom:10px;left:10px;border-width:0 0 1px 1px;}.crnr-br{bottom:10px;right:10px;border-width:0 1px 1px 0;}
.p-green .crnr{border-color:var(--green);}.p-cyan .crnr{border-color:var(--cyan);}.p-dim .crnr{border-color:var(--muted);}
.prod-tag{display:inline-flex;align-items:center;gap:6px;padding:3px 12px;font-size:9px;letter-spacing:.22em;text-transform:uppercase;width:fit-content;}
.prod-tag.g{border:1px solid rgba(0,255,65,.2);color:rgba(0,255,65,.7);}
.prod-tag.c{border:1px solid rgba(0,212,255,.2);color:rgba(0,212,255,.7);}
.prod-tag.d{border:1px solid rgba(104,104,104,.3);color:var(--muted);}
.prod-tag::before{content:'■';font-size:5px;}
.prod-title{font-size:clamp(1.5rem,2.8vw,2.2rem);font-weight:400;letter-spacing:.1em;line-height:1.15;color:var(--white);}
.prod-title .g{color:var(--green);}.prod-title .c{color:var(--cyan);}
.prod-desc{font-size:12px;color:var(--muted);line-height:1.9;}
.prod-features{list-style:none;display:flex;flex-direction:column;gap:7px;}
.prod-features li{font-size:11px;color:#6f6f6f;letter-spacing:.04em;display:flex;align-items:baseline;gap:10px;}
.prod-features li::before{content:'›';font-size:14px;flex-shrink:0;}
.p-green .prod-features li::before{color:var(--green);}.p-cyan .prod-features li::before{color:var(--cyan);}.p-dim .prod-features li::before{color:var(--muted);}

/* ════════════════════════════════════════════════════════════
   ROADMAP / NEXT — "we never stop" + proposal CTA + coming soon
   ════════════════════════════════════════════════════════════ */
#next{background:var(--bg);border-top:1px solid var(--border);}
.next-wrap{position:relative;border:1px solid var(--border-2);background:linear-gradient(180deg,#0b0b0b,#070707);padding:clamp(40px,6vw,72px);margin-top:48px;overflow:hidden;}
.next-wrap::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(0,255,65,.4),transparent);}
.next-glyphs{position:absolute;inset:0;opacity:.05;font-family:var(--code);font-size:11px;color:var(--green);line-height:1.5;letter-spacing:.1em;white-space:pre-wrap;pointer-events:none;padding:14px;overflow:hidden;}
.next-inner{position:relative;z-index:1;display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(36px,5vw,72px);align-items:center;}
.next-h{font-size:clamp(1.5rem,3vw,2.3rem);letter-spacing:.12em;line-height:1.2;color:var(--white);margin-bottom:20px;}
.next-h .accent{color:var(--green);}
.next-p{font-size:13px;color:var(--muted);line-height:1.95;margin-bottom:18px;max-width:560px;}
.next-cta{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:28px;}
.next-mail{display:inline-flex;align-items:center;gap:10px;border:1px solid var(--border-2);background:var(--bg-2);padding:14px 20px;font-family:var(--code);font-size:13px;color:var(--green);letter-spacing:.04em;transition:border-color .2s,box-shadow .2s;}
.next-mail:hover{border-color:rgba(0,255,65,.4);box-shadow:0 0 18px rgba(0,255,65,.1);}
.next-mail .lbl{color:var(--muted);}
.next-side{border-left:1px solid var(--border);padding-left:clamp(24px,3vw,40px);}
.next-stat{margin-bottom:26px;}
.next-stat:last-child{margin-bottom:0;}
.next-stat .k{font-size:9px;letter-spacing:.25em;text-transform:uppercase;color:rgba(0,255,65,.5);margin-bottom:7px;}
.next-stat .k::before{content:'> ';}
.next-stat .v{font-size:13px;color:var(--muted);line-height:1.7;}

/* ════════════════════════════════════════════════════════════
   PRODUCT DETAIL PAGES
   ════════════════════════════════════════════════════════════ */
.p-hero{position:relative;z-index:2;padding:150px clamp(24px,6vw,96px) clamp(60px,8vw,100px);}
.p-hero-inner{max-width:1180px;margin:0 auto;}
.p-breadcrumb{display:flex;align-items:center;gap:10px;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-bottom:34px;}
.p-breadcrumb a{color:var(--muted);transition:color .2s;}
.p-breadcrumb a:hover{color:var(--green);}
.p-breadcrumb .sep{color:var(--dim);}
.p-hero-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(40px,6vw,80px);align-items:center;}
.p-tag{display:inline-flex;align-items:center;gap:7px;padding:4px 14px;font-size:9px;letter-spacing:.22em;text-transform:uppercase;width:fit-content;margin-bottom:26px;}
.p-tag::before{content:'■';font-size:5px;}
.p-tag.g{border:1px solid rgba(0,255,65,.25);color:rgba(0,255,65,.75);}
.p-tag.c{border:1px solid rgba(0,212,255,.25);color:rgba(0,212,255,.75);}
.p-name{font-size:clamp(2.2rem,5.2vw,4rem);font-weight:400;letter-spacing:.06em;line-height:1.06;color:var(--white);margin-bottom:22px;}
.p-name .g{color:var(--green);}.p-name .c{color:var(--cyan);}
.p-lede{font-size:14px;color:var(--muted);line-height:1.95;max-width:560px;margin-bottom:36px;}
.p-hero-cta{display:flex;flex-wrap:wrap;gap:14px;align-items:center;}
.p-hero-visual{position:relative;}

/* spec / feature grid on product pages */
.spec-sec{padding:clamp(60px,8vw,110px) clamp(24px,6vw,96px);background:var(--bg-2);position:relative;z-index:2;}
.spec-inner{max-width:1180px;margin:0 auto;}
.spec-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--border);background:var(--border);gap:1px;margin-top:52px;}
.spec-card{background:var(--bg-card);padding:clamp(26px,3vw,40px);position:relative;overflow:hidden;transition:background .22s;}
.spec-card::after{content:'';position:absolute;top:0;left:0;right:0;height:1px;transform:translateX(-100%);transition:transform .55s var(--ease);}
.spec-card.g::after{background:linear-gradient(90deg,transparent,var(--green),transparent);}
.spec-card.c::after{background:linear-gradient(90deg,transparent,var(--cyan),transparent);}
.spec-card:hover{background:#0f0f0f;}
.spec-card:hover::after{transform:translateX(100%);}
.spec-num{font-size:10px;color:var(--dim);letter-spacing:.25em;margin-bottom:18px;}
.spec-ico{font-size:20px;font-family:var(--code);margin-bottom:16px;}
.spec-card.g .spec-ico{color:var(--green);}.spec-card.c .spec-ico{color:var(--cyan);}
.spec-name{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--white);margin-bottom:12px;}
.spec-text{font-size:11px;color:var(--muted);line-height:1.9;}

/* alternating detail rows */
.detail-sec{padding:clamp(60px,8vw,110px) clamp(24px,6vw,96px);position:relative;z-index:2;}
.detail-inner{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,6vw,90px);align-items:center;}
.detail-inner.rev .detail-text{order:2;}
.detail-list{list-style:none;display:flex;flex-direction:column;gap:16px;margin-top:24px;}
.detail-list li{display:flex;gap:14px;align-items:flex-start;font-size:12px;color:var(--muted);line-height:1.7;}
.detail-list li .mk{font-family:var(--code);flex-shrink:0;}
.detail-list.g li .mk{color:var(--green);}.detail-list.c li .mk{color:var(--cyan);}
.detail-list li strong{color:var(--white);font-weight:400;display:block;letter-spacing:.04em;margin-bottom:3px;}

/* product CTA band */
.p-cta-band{padding:clamp(60px,8vw,100px) clamp(24px,6vw,96px);border-top:1px solid var(--border);position:relative;z-index:2;text-align:center;}
.p-cta-inner{max-width:680px;margin:0 auto;}
.p-cta-h{font-size:clamp(1.5rem,3vw,2.2rem);letter-spacing:.1em;color:var(--white);margin:14px 0 18px;}
.p-cta-band .sec-desc{margin:0 auto 32px;text-align:center;}
.p-cta-row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;}

@media(max-width:980px){.next-inner,.p-hero-grid{grid-template-columns:1fr;}.next-side{border-left:none;border-top:1px solid var(--border);padding-left:0;padding-top:30px;}.spec-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:860px){.prod-grid{grid-template-columns:1fr;}.detail-inner{grid-template-columns:1fr;}.detail-inner.rev .detail-text{order:0;}}
@media(max-width:640px){.spec-grid{grid-template-columns:1fr;}.nav-links{display:none;flex-direction:column;gap:18px;position:absolute;top:60px;left:0;right:0;background:rgba(5,5,5,.97);backdrop-filter:blur(20px);padding:28px clamp(24px,6vw,96px);border-bottom:1px solid var(--border);}.nav-links.open{display:flex;}.nav-toggle{display:flex;}.nav-right{display:none;}.hero-cta,.p-hero-cta{flex-direction:column;align-items:stretch;}}

/* ════════════════════════════════════════════════════════════
   "BREAKTHROUGH" — glitch titles, metric bands, live consoles
   ════════════════════════════════════════════════════════════ */
.glitch{position:relative;display:inline-block;}
.glitch::before,.glitch::after{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;opacity:.85;}
.glitch::before{color:var(--red);clip-path:polygon(0 0,100% 0,100% 44%,0 44%);animation:gx1 5.5s steps(1) infinite;}
.glitch::after{color:var(--cyan);clip-path:polygon(0 56%,100% 56%,100% 100%,0 100%);animation:gx2 6.7s steps(1) infinite;}
@keyframes gx1{0%,82%,100%{transform:translate(0,0);opacity:0}84%{transform:translate(-4px,1px);opacity:.9}88%{transform:translate(5px,-1px);opacity:.9}92%{transform:translate(-2px,0);opacity:.9}95%{opacity:0}}
@keyframes gx2{0%,80%,100%{transform:translate(0,0);opacity:0}83%{transform:translate(4px,-1px);opacity:.85}87%{transform:translate(-5px,1px);opacity:.85}91%{transform:translate(2px,0);opacity:.85}94%{opacity:0}}

/* metrics band */
.metrics{border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:linear-gradient(180deg,#070707,#040404);position:relative;z-index:2;overflow:hidden;}
.metrics::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(0,255,65,.5),transparent);animation:scan-x 6s linear infinite;}
.metrics.c::before{background:linear-gradient(90deg,transparent,rgba(0,212,255,.5),transparent);}
@keyframes scan-x{0%{transform:translateX(-60%)}100%{transform:translateX(160%)}}
.metrics-row{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);}
.metric{padding:clamp(40px,6vw,68px) 22px;text-align:center;border-right:1px solid var(--border);position:relative;}
.metric:last-child{border-right:none;}
.metric-n{font-size:clamp(2.2rem,4.4vw,3.6rem);line-height:1;color:var(--green);letter-spacing:.02em;}
.metrics.c .metric-n{color:var(--cyan);}
.metric-n .u{font-size:.5em;color:var(--muted);margin-left:2px;}
.metric-l{display:block;font-size:9px;color:var(--dim);letter-spacing:.22em;text-transform:uppercase;margin-top:12px;}

/* live console additions */
.live-tag{display:inline-flex;align-items:center;gap:7px;font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--green);}
.live-tag .pip{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);animation:pulse-dot 1.3s ease-in-out infinite;}
.live-tag.c{color:var(--cyan);}.live-tag.c .pip{background:var(--cyan);box-shadow:0 0 8px var(--cyan);}
.stream-line{opacity:0;transform:translateY(6px);animation:streamin .4s var(--ease) forwards;}
@keyframes streamin{to{opacity:1;transform:translateY(0);}}

/* ── Interactive correlation graph (Workbench) ── */
.viz-sec{padding:clamp(60px,8vw,110px) clamp(24px,6vw,96px);position:relative;z-index:2;}
.viz-inner{max-width:1180px;margin:0 auto;}
.graph-wrap{display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(28px,4vw,56px);margin-top:52px;align-items:stretch;}
.graph-stage{position:relative;border:1px solid var(--border-2);background:radial-gradient(ellipse 60% 60% at 50% 50%,rgba(0,255,65,.04),transparent 70%),#080808;min-height:440px;overflow:hidden;}
.graph-stage svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.gnode{position:absolute;transform:translate(-50%,-50%);background:#0c0c0c;border:1px solid var(--border-2);padding:9px 13px;cursor:pointer;transition:border-color .2s,box-shadow .2s,transform .2s;font-family:var(--code);font-size:10px;letter-spacing:.04em;white-space:nowrap;z-index:2;}
.gnode .gk{font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);display:block;margin-bottom:3px;}
.gnode .gv{color:var(--muted);}
.gnode.sev-hi{border-color:rgba(255,0,64,.4);}.gnode.sev-hi .gv{color:var(--red);}
.gnode.sev-md{border-color:rgba(255,189,46,.35);}.gnode.sev-md .gv{color:#ffbd2e;}
.gnode.sev-ok{border-color:rgba(0,255,65,.35);}.gnode.sev-ok .gv{color:var(--green);}
.gnode:hover,.gnode.active{box-shadow:0 0 22px rgba(0,255,65,.18);transform:translate(-50%,-50%) scale(1.06);}
.gnode.active{border-color:var(--green);}
.ghub{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:128px;height:128px;border-radius:50%;border:1px solid rgba(0,255,65,.4);background:radial-gradient(circle,rgba(0,255,65,.08),transparent 70%);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:2;box-shadow:0 0 40px rgba(0,255,65,.12),inset 0 0 30px rgba(0,255,65,.05);animation:hub-pulse 3s ease-in-out infinite;}
@keyframes hub-pulse{0%,100%{box-shadow:0 0 40px rgba(0,255,65,.12),inset 0 0 30px rgba(0,255,65,.05);}50%{box-shadow:0 0 64px rgba(0,255,65,.22),inset 0 0 36px rgba(0,255,65,.09);}}
.ghub .hh{font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--green);}
.ghub .hn{font-size:22px;color:var(--white);line-height:1;margin:6px 0 2px;}
.ghub .hs{font-size:8px;color:var(--muted);letter-spacing:.14em;}
.gline{fill:none;stroke:rgba(0,255,65,.18);stroke-width:1;}
.gflow{fill:none;stroke:var(--green);stroke-width:1.5;stroke-dasharray:4 16;filter:drop-shadow(0 0 4px rgba(0,255,65,.5));animation:flow 1.1s linear infinite;}
@keyframes flow{to{stroke-dashoffset:-20;}}
.gpanel{border:1px solid var(--border-2);background:var(--bg-card);display:flex;flex-direction:column;}
.gpanel-bar{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;background:#090909;border-bottom:1px solid var(--border);font-family:var(--code);font-size:10px;color:var(--dim);letter-spacing:.12em;}
.gpanel-body{padding:20px;font-family:var(--code);font-size:12px;line-height:1.95;flex:1;}
.gpanel-body .pk{font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:rgba(0,255,65,.55);margin-bottom:6px;}
.gpanel-body .pk::before{content:'> ';}
.gpanel-title{font-size:15px;color:var(--white);letter-spacing:.04em;margin-bottom:4px;}
.gpanel-body p{color:#666;margin-bottom:16px;}
.gpanel-body .pv{color:var(--muted);}
.gpanel-body .pv b{color:var(--green);font-weight:400;}

/* ── Interception lanes (Sentinel) ── */
.lanes-wrap{margin-top:52px;border:1px solid var(--border-2);background:#070707;position:relative;overflow:hidden;}
.lanes-head{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;border-bottom:1px solid var(--border);font-family:var(--code);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);}
.lanes-head .ep{color:var(--cyan);}.lanes-head .ex{color:var(--muted);}
.lanes{position:relative;padding:26px 0;}
.lane{position:relative;height:46px;display:flex;align-items:center;}
.lane::before{content:'';position:absolute;left:0;right:0;top:50%;height:1px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 8px,transparent 8px 16px);}
.barrier{position:absolute;left:50%;top:0;bottom:0;width:2px;background:linear-gradient(180deg,transparent,var(--cyan),transparent);box-shadow:0 0 16px rgba(0,212,255,.5);z-index:3;}
.barrier-lbl{position:absolute;left:50%;top:-2px;transform:translate(-50%,-100%);font-family:var(--code);font-size:9px;letter-spacing:.18em;color:var(--cyan);white-space:nowrap;}
.token{position:absolute;left:0;top:50%;transform:translate(0,-50%);font-family:var(--code);font-size:11px;padding:5px 11px;border:1px solid var(--border-2);background:#0d0d0d;color:var(--muted);white-space:nowrap;z-index:2;}
.token.safe{border-color:rgba(0,212,255,.4);color:var(--cyan);}
.token.danger{border-color:rgba(255,0,64,.5);color:var(--red);box-shadow:0 0 14px rgba(255,0,64,.25);}
.lanes-foot{display:flex;border-top:1px solid var(--border);}
.lanes-stat{flex:1;padding:18px 22px;text-align:center;border-right:1px solid var(--border);}
.lanes-stat:last-child{border-right:none;}
.lanes-stat .v{font-size:26px;line-height:1;}
.lanes-stat.block .v{color:var(--red);}.lanes-stat.allow .v{color:var(--cyan);}.lanes-stat.scan .v{color:var(--white);}
.lanes-stat .k{display:block;font-size:8px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin-top:8px;}
.policy-toggle{display:flex;gap:0;border:1px solid var(--border-2);width:fit-content;margin-top:26px;}
.policy-toggle button{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;padding:10px 18px;background:transparent;border:none;border-right:1px solid var(--border-2);color:var(--muted);cursor:pointer;transition:color .2s,background .2s;}
.policy-toggle button:last-child{border-right:none;}
.policy-toggle button.on{background:rgba(0,212,255,.08);color:var(--cyan);}
@media(max-width:980px){.graph-wrap{grid-template-columns:1fr;}}
@media(max-width:640px){.metrics-row{grid-template-columns:1fr 1fr;}.metric:nth-child(2){border-right:none;}.lanes-foot{flex-wrap:wrap;}}
