:root{--bg:#070a14;--panel:#0e1424cc;--line:#ffffff14;--text:#e7eaf3;--muted:#8d97ad;--a1:#7c5cff;--a2:#22d3ee;--a3:#f59e0b;--bad:#f43f5e;--ok:#34d399;--r:16px}
*{box-sizing:border-box}html,body{margin:0}body{font:15px/1.55 "Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden}
.aurora{position:fixed;inset:-20% -10% auto -10%;height:80vh;background:radial-gradient(40% 50% at 20% 30%,#7c5cff40,transparent 70%),radial-gradient(35% 45% at 80% 20%,#22d3ee30,transparent 70%),radial-gradient(30% 40% at 60% 80%,#f59e0b18,transparent 70%);filter:blur(30px);pointer-events:none;z-index:0}
body>*{position:relative;z-index:1}.hidden{display:none!important}
.top{display:flex;justify-content:space-between;align-items:center;padding:18px clamp(16px,4vw,40px);border-bottom:1px solid var(--line);backdrop-filter:blur(10px);background:#070a14aa;position:sticky;top:0;z-index:5}
.brand{font-size:19px;letter-spacing:.02em}.word{font-weight:800;letter-spacing:.24em}.word2{font-weight:500;background:linear-gradient(90deg,#c4b5fd,#67e8f9);-webkit-background-clip:text;background-clip:text;color:transparent}
.top-right{display:flex;gap:10px;align-items:center}.pill{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);color:var(--muted);background:#ffffff08}.pill.ok{color:var(--ok);border-color:#34d39955}
.landing{max-width:1180px;margin:auto;padding:clamp(32px,7vw,88px) clamp(16px,4vw,40px) 40px}
.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:11px;color:var(--a2);margin:0 0 8px}
h1{font-size:clamp(32px,5.4vw,60px);line-height:1.05;margin:0 0 18px;letter-spacing:-.02em;max-width:880px}.grad{background:linear-gradient(90deg,#a78bfa,#22d3ee 60%,#fbbf24);-webkit-background-clip:text;background-clip:text;color:transparent}
.lede{font-size:clamp(16px,1.6vw,19px);color:#b8c0d4;max-width:760px}
.cta{display:flex;flex-wrap:wrap;gap:12px;margin:28px 0 12px;align-items:center}.inline{display:flex;gap:8px;flex-wrap:wrap}.keyrow{margin-top:6px}
input,select,textarea{font:inherit;color:var(--text);background:#0a0f1d;border:1px solid #ffffff1f;border-radius:10px;padding:10px 12px;min-width:0;outline:none;transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{border-color:#7c5cffaa;box-shadow:0 0 0 3px #7c5cff26}textarea{width:100%;font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical}
button{font:inherit;cursor:pointer;border-radius:10px;padding:10px 16px;border:1px solid transparent;color:var(--text);transition:transform .1s,background .15s,border-color .15s}button:active{transform:translateY(1px)}
.primary{background:linear-gradient(135deg,#7c5cff,#4f7dff 55%,#22d3ee);font-weight:600;box-shadow:0 8px 30px -10px #7c5cffaa}.primary:hover{filter:brightness(1.1)}
.ghost{background:#ffffff0a;border-color:#ffffff1f}.ghost:hover{border-color:#a78bfa88}.small{padding:6px 12px;font-size:13px}
.msg{color:var(--muted);min-height:1.5em}.msg.err{color:#fda4af}
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-top:48px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px;backdrop-filter:blur(12px);box-shadow:0 20px 50px -30px #000}
.feat h3{margin:0 0 6px;font-size:16px}.feat p{margin:0;color:var(--muted);font-size:14px}.feat{background:linear-gradient(160deg,#141b33cc,#0b1020cc)}
.console{display:grid;grid-template-columns:280px minmax(0,1fr);gap:18px;padding:18px clamp(12px,3vw,32px);max-width:1500px;margin:auto}
.side{align-self:start;position:sticky;top:76px}.side-head{display:flex;justify-content:space-between;align-items:baseline}.side h2{margin:0 0 10px;font-size:16px}
.stack{display:flex;flex-direction:column;gap:10px}.muted{color:var(--muted)}.center{text-align:center;padding:60px 0}.small-text{font-size:12px;margin:8px 0 0}
.case-list{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.case-list button{width:100%;text-align:left;background:#ffffff06;border:1px solid var(--line);padding:10px 12px}.case-list button.active{border-color:#7c5cffaa;background:#7c5cff1c}.case-list small{display:block;color:var(--muted);font-size:12px}
.keybox{margin-top:16px;padding:12px;border-radius:12px;border:1px dashed #fbbf2466;background:#fbbf240d;display:flex;flex-direction:column;gap:6px;font-size:13px}.keybox code{word-break:break-all;color:#fde68a}
.main{min-width:0;display:flex;flex-direction:column;gap:14px}.case-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}.case-head h2{margin:0;font-size:22px}.exports{display:flex;gap:8px;flex-wrap:wrap}
.tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.tab{background:transparent;border:1px solid var(--line);color:var(--muted);white-space:nowrap}.tab.active{color:var(--text);border-color:#7c5cffaa;background:#7c5cff1f}
.pane{display:flex;flex-direction:column;gap:14px}.controls{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.controls label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}.controls .grow{flex:1 1 220px}
label{font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:6px}
.graph-wrap{padding:12px}.graph{width:100%;overflow:auto;border-radius:12px;background:radial-gradient(120% 120% at 50% 0%,#111a33,#070a14);border:1px solid var(--line);min-height:320px}
.graph svg{display:block}.node rect{fill:#0f1730;stroke:#ffffff2a;stroke-width:1.2;transition:stroke .15s}.node{cursor:pointer}.node:hover rect,.node.sel rect{stroke:#c4b5fd;stroke-width:2}
.node text{fill:#e7eaf3;font:600 11.5px ui-monospace,Menlo,monospace}.node .sub{fill:#8d97ad;font:500 10px Inter,system-ui,sans-serif}
.edge{fill:none;stroke-linecap:round;opacity:.75}.elabel{fill:#cbd5e1;font:600 10.5px Inter,system-ui,sans-serif;paint-order:stroke;stroke:#070a14;stroke-width:4px}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin:0 0 10px}.lg::before{content:"";display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:6px;vertical-align:middle;background:#64748b}
.lg.origin::before{background:#a78bfa}.lg.victim::before{background:#34d399}.lg.suspect::before{background:#f43f5e}.lg.exchange::before{background:#22d3ee}
.flag{border-left:3px solid var(--a3)}.flag.medium{border-left-color:#fb7185}.flag h4{margin:0 0 4px;font-size:15px;text-transform:capitalize}.flag code,.mono{font:12px ui-monospace,Menlo,monospace;word-break:break-all;color:#c7d2fe}
.badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;background:#ffffff10;color:var(--muted);margin-left:6px;text-transform:uppercase;letter-spacing:.08em}.badge.ind{background:#f59e0b1f;color:#fcd34d}
.tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:6px;background:#22d3ee1f;color:#67e8f9;margin-left:6px}.tag.suspect{background:#f43f5e22;color:#fda4af}.tag.victim{background:#34d39922;color:#6ee7b7}
.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th,.tbl td{padding:8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.tbl td{word-break:break-all}.tbl th{color:var(--muted);font-weight:600;font-size:12px}.scroll{overflow:auto;max-height:70vh}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:12px 0}.stat{background:#ffffff06;border:1px solid var(--line);border-radius:12px;padding:10px 12px}.stat b{display:block;font-size:17px}.stat span{color:var(--muted);font-size:12px}
.result{font-size:13px}.result .ok{color:var(--ok)}.result .err{color:#fda4af}.file input{padding:8px}
.disclaimer{font-size:12px;color:var(--muted);border:1px solid #7c5cff33;background:#7c5cff0d;border-radius:12px;padding:10px 12px;margin:0}
.foot{text-align:center;color:#5d6780;font-size:12px;padding:30px 16px}
@media (max-width:860px){.console{grid-template-columns:1fr}.side{position:static}.controls>*{flex:1 1 100%}.controls button{width:100%}.cta .inline,.keyrow{width:100%}.inline input{flex:1}}
