:root{--bg:#05090d;--bg2:#08111a;--panel:rgba(9,18,26,.82);--line:#16293a;--line2:#21394c;--ink:#e8f2f6;--ink2:#a7bcc7;--mute:#6c8594;
--cyan:#3fe0f0;--amber:#f0b54a;--red:#ff5468;--ice:#e9f3f7;--hub:#7d8f9b;--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;--sans:Inter,system-ui,-apple-system,Segoe UI,sans-serif}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;background:var(--bg);color:var(--ink);font:14px/1.45 var(--sans);-webkit-font-smoothing:antialiased;overflow:hidden}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
a{color:var(--cyan);text-decoration:none}a:hover{text-decoration:underline}
.mono{font-family:var(--mono)}.muted{color:var(--mute);font-size:13px}
body::before{content:"";position:fixed;inset:0;background:radial-gradient(1200px 700px at 52% 46%,#0b2130 0%,transparent 60%),radial-gradient(900px 600px at 90% 0%,#1a1508 0%,transparent 55%);pointer-events:none;z-index:0}
/* ---------- top bar */
#bar{position:relative;z-index:5;height:58px;display:flex;align-items:center;gap:18px;padding:0 18px;border-bottom:1px solid var(--line);background:rgba(5,9,13,.86);backdrop-filter:blur(10px)}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:800;letter-spacing:.24em;font-size:15px;white-space:nowrap}.brand b{color:var(--cyan);font-weight:800}.brand:hover{text-decoration:none}
#q{flex:1;max-width:680px;margin:0 auto;display:flex;align-items:center;gap:8px;height:40px;padding:0 6px 0 14px;border:1px solid var(--line2);border-radius:10px;background:#07101799;transition:border-color .2s,box-shadow .2s}
#q:focus-within{border-color:#2b6c78;box-shadow:0 0 0 3px #3fe0f01a}
#q .qi{color:var(--mute);flex:none}
#qin{flex:1;min-width:0;height:100%;background:none;border:0;outline:0;color:var(--ink);font:500 13.5px var(--mono)}
#qin::placeholder{color:#4f6876;font-family:var(--sans)}
#qgo{height:30px;padding:0 16px;border-radius:7px;background:var(--cyan);color:#021014;font-weight:700;letter-spacing:.02em;transition:filter .15s}#qgo:hover{filter:brightness(1.12)}#qgo:disabled{opacity:.5;cursor:wait}
#net{display:flex;align-items:center;gap:8px;font:500 11.5px var(--mono);color:var(--ink2);white-space:nowrap}
.dot{width:7px;height:7px;border-radius:50%;background:var(--mute);box-shadow:0 0 0 0 transparent}.dot.ok{background:#45e58f;box-shadow:0 0 10px #45e58f88}.dot.warn{background:var(--amber)}
.ghost{height:34px;padding:0 14px;border:1px solid var(--line2);border-radius:8px;font-weight:600;font-size:13px;color:var(--ink2);white-space:nowrap}.ghost:hover{border-color:var(--cyan);color:var(--ink)}
.ghost.holder{border-color:var(--amber);color:var(--amber)}
/* ---------- layout */
#term{position:relative;z-index:1;height:calc(100% - 58px);display:grid;grid-template-columns:300px 1fr 380px}
.panel{background:var(--panel);backdrop-filter:blur(8px);display:flex;flex-direction:column;min-height:0}
#left{border-right:1px solid var(--line)}#right{border-left:1px solid var(--line)}
#caseHead{padding:18px 18px 14px;border-bottom:1px solid var(--line)}
.eyebrow{font:600 10.5px var(--mono);letter-spacing:.18em;color:var(--cyan)}
#caseTitle{font-size:21px;font-weight:800;margin:6px 0 4px;letter-spacing:-.01em;line-height:1.2;word-break:break-word}
#caseSub{font-size:11.5px;color:var(--ink2);word-break:break-all}
.stamp{margin-top:10px;display:inline-flex;align-items:center;gap:7px;padding:4px 9px;border:1px solid var(--line2);border-radius:6px;font:500 10.5px var(--mono);color:var(--ink2)}
.stamp.live{border-color:#1f5f45;color:#7ff0b5}.stamp.hist{border-color:#4a3c1a;color:#e9c77a}
.sect{padding:14px 18px;border-bottom:1px solid var(--line)}.sect.grow{flex:1;min-height:180px;overflow:auto}
.sect-h{font:600 10.5px var(--mono);letter-spacing:.16em;color:var(--mute);text-transform:uppercase;margin-bottom:9px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;font-size:12px}.kv dt{color:var(--mute)}.kv dd{color:var(--ink2);font-family:var(--mono);text-align:right}
#timeline .row{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:8px;padding:5px 6px;border-radius:6px;font:12px var(--mono);color:var(--ink2);cursor:pointer;transition:background .15s}
#timeline .row:hover,#timeline .row.sel{background:#10202c}
#timeline .rk{color:var(--mute);font-size:11px}
#timeline .w{display:flex;align-items:center;gap:6px;min-width:0}#timeline .w span{overflow:hidden;text-overflow:ellipsis}
#timeline .t{font-size:11px;color:var(--mute)}
.tag{font:600 9.5px var(--mono);letter-spacing:.05em;padding:1px 5px;border-radius:4px;border:1px solid}
.tag.s0{color:var(--red);border-color:#5a2230}.tag.dev{color:var(--red);border-color:#5a2230}.tag.lk{color:var(--amber);border-color:#5a4520}.tag.fr{color:var(--cyan);border-color:#1d4b55}
#recent .r{display:block;padding:6px 0;border-bottom:1px dashed #12222e;font-size:12px;color:var(--ink2);cursor:pointer}#recent .r:last-child{border:0}
#recent .r b{color:var(--ink);font-weight:600}#recent .r small{display:block;color:var(--mute);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* ---------- stage */
#stage{position:relative;min-width:0;overflow:hidden}
#mhead{display:none}
#graph{position:absolute;inset:0;width:100%;height:100%;cursor:grab;touch-action:none}#graph.drag{cursor:grabbing}
#legend{position:absolute;left:16px;top:14px;display:flex;flex-wrap:wrap;gap:6px}
#legend button{display:flex;align-items:center;gap:7px;padding:5px 10px;border:1px solid var(--line2);border-radius:999px;background:#07101bcc;font:500 11.5px var(--sans);color:var(--mute);transition:all .15s}
#legend button.on{color:var(--ink2);border-color:#2a4558}
.lg{width:16px;height:2px;border-radius:2px}.lg.fund{background:var(--amber)}.lg.buy{background:var(--cyan)}.lg.hub{background:repeating-linear-gradient(90deg,var(--hub) 0 3px,transparent 3px 5px)}.lg.hop{background:linear-gradient(90deg,#f0b54a55,var(--amber))}
#progress{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);width:min(520px,80%);padding:12px 16px;border:1px solid var(--line2);border-radius:12px;background:#06101acc;backdrop-filter:blur(8px)}
.pbar{height:3px;background:#12222e;border-radius:3px;overflow:hidden}.pbar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cyan),var(--amber));transition:width .4s}
#ptext{margin-top:8px;font-size:11.5px;color:var(--ink2)}
#tip{position:absolute;pointer-events:none;padding:8px 10px;border:1px solid var(--line2);border-radius:8px;background:#06101ae6;font:11.5px var(--mono);color:var(--ink2);max-width:280px;z-index:4}
#tip b{color:var(--ink);font-weight:600}
#zoom{position:absolute;right:14px;bottom:14px;display:flex;flex-direction:column;gap:4px}#zoom button{width:32px;height:32px;border:1px solid var(--line2);border-radius:8px;background:#07101bcc;color:var(--ink2);font-size:16px}#zoom button:hover{color:var(--ink);border-color:var(--cyan)}
#empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:30px;color:var(--ink2)}
#empty .box{max-width:420px;padding:22px 24px;border:1px solid var(--line2);border-radius:14px;background:#06101acc}
#empty h3{font-size:17px;margin-bottom:6px;color:var(--ink)}
/* ---------- right */
#tabs{display:flex;border-bottom:1px solid var(--line)}
#tabs button{flex:1;padding:14px 0 12px;font-weight:600;font-size:13px;color:var(--mute);border-bottom:2px solid transparent}#tabs button.on{color:var(--ink);border-color:var(--cyan)}
.pane{display:none;flex:1;min-height:0;overflow:auto;padding:14px}.pane.on{display:flex;flex-direction:column}
#findings{display:flex;flex-direction:column;gap:10px}
.fd{border:1px solid var(--line2);border-radius:12px;padding:13px 14px 12px;background:#07111a;cursor:pointer;transition:border-color .2s,background .2s;animation:rise .5s both}
.fd:hover{border-color:#2d5566}.fd.sel{border-color:var(--cyan);background:#0a1a24}
.fd .lv{display:flex;align-items:center;gap:8px;font:600 10px var(--mono);letter-spacing:.14em}
.fd .lv.fact{color:var(--cyan)}.fd .lv.pattern{color:var(--amber)}.fd .lv i{width:6px;height:6px;border-radius:50%;background:currentColor}
.fd .ti{font-weight:700;font-size:14.5px;margin:6px 0 5px;line-height:1.3}
.fd .tx{font-size:12.5px;color:var(--ink2)}
.fd .cv{margin-top:8px;font-size:11.5px;color:var(--mute);font-style:italic}
.fd .ac{display:flex;gap:8px;margin-top:10px}
.fd .ac button{font:600 11px var(--mono);letter-spacing:.06em;padding:5px 9px;border:1px solid var(--line2);border-radius:6px;color:var(--ink2)}.fd .ac button:hover{border-color:var(--cyan);color:var(--ink)}
.fd .ac .share{border-color:#1d4b55;color:var(--cyan)}
.fd.none{cursor:default}.fd.none .ti{color:var(--ink2)}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
#inspector h4{font-size:15px;margin-bottom:2px}#inspector .addr{font:11.5px var(--mono);color:var(--ink2);word-break:break-all;margin-bottom:10px}
#inspector .roles{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
#inspector .ev{border:1px solid var(--line2);border-radius:10px;padding:10px 12px;margin-bottom:8px;font-size:12.5px;background:#07111a}
#inspector .ev .h{display:flex;justify-content:space-between;gap:10px;color:var(--ink)}#inspector .ev .h b{font-family:var(--mono);font-weight:600}
#inspector .ev .m{color:var(--mute);font:11px var(--mono);margin-top:4px;word-break:break-all}
#inspector .ev a{font:600 11px var(--mono)}
#inspector .links{display:flex;gap:12px;margin:6px 0 14px;font:600 11.5px var(--mono)}
#chat{flex:1;display:flex;flex-direction:column;gap:10px;overflow:auto;padding-bottom:10px}
.sugg{display:flex;flex-direction:column;gap:6px;margin-top:4px}.sugg button{text-align:left;padding:8px 11px;border:1px solid var(--line2);border-radius:8px;font-size:12.5px;color:var(--ink2)}.sugg button:hover{border-color:var(--cyan);color:var(--ink)}
.msg{padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.5}.msg.q{align-self:flex-end;background:#0e2633;max-width:88%}.msg.a{background:#07111a;border:1px solid var(--line2)}
.msg .cites{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.msg .cites button{font:600 10.5px var(--mono);padding:2px 7px;border:1px solid #1d4b55;border-radius:5px;color:var(--cyan)}
.msg .chk{margin-top:6px;font:10.5px var(--mono);color:#5fd49a}
#askf{display:flex;gap:6px;padding-top:10px;border-top:1px solid var(--line)}#askf input{flex:1;height:38px;border:1px solid var(--line2);border-radius:8px;background:#07101b;color:var(--ink);padding:0 12px;font:13px var(--sans);outline:0}#askf input:focus{border-color:#2b6c78}
#askf button{padding:0 14px;border-radius:8px;background:var(--cyan);color:#021014;font-weight:700}
/* ---------- modal */
#modal{position:fixed;inset:0;z-index:20;background:#020507cc;backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px}
.mbox{position:relative;width:min(760px,100%);max-height:92vh;overflow:auto;border:1px solid var(--line2);border-radius:16px;background:#07111a;padding:22px}
.mbox .x{position:absolute;right:12px;top:8px;font-size:24px;color:var(--mute)}
.mbox h3{font-size:18px;margin-bottom:4px}.mbox img{width:100%;border-radius:10px;border:1px solid var(--line2);margin:14px 0;background:#05090d;aspect-ratio:1200/630}
.mrow{display:flex;gap:8px;flex-wrap:wrap}.mrow .btn{padding:10px 16px;border-radius:9px;font-weight:700;font-size:13px;border:1px solid var(--line2)}.mrow .btn.p{background:var(--cyan);color:#021014;border-color:var(--cyan)}
.wl{display:flex;flex-direction:column;gap:8px;margin-top:14px}.wl button{display:flex;justify-content:space-between;padding:12px 14px;border:1px solid var(--line2);border-radius:10px;font-weight:600}.wl button:hover{border-color:var(--cyan)}
/* ---------- responsive */
@media (max-width:1180px){#term{grid-template-columns:260px 1fr 340px}#net span{display:none}#bar{gap:12px}}
@media (max-width:900px){
  html,body{overflow:auto}
  #bar{height:auto;flex-wrap:wrap;padding:10px 12px;gap:10px}#q{order:3;flex-basis:100%;max-width:none}#net{margin-left:auto}#net span{display:none}
  #term{height:auto;display:flex;flex-direction:column}
  #stage{order:1;height:56vh;min-height:360px;border-bottom:1px solid var(--line)}
  #right{order:2;border:0;min-height:60vh}#left{order:3;border:0}
  #mhead{display:block;order:0;background:var(--panel);border-bottom:1px solid var(--line)}#mhead #caseHead{padding:12px 14px 10px;border:0}#caseTitle{font-size:18px}
  #legend{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}#legend::-webkit-scrollbar{display:none}#legend button{flex:none}
  #legend{left:10px;top:10px;right:10px}#legend button{padding:4px 8px;font-size:11px}
  .sect.grow{max-height:none}
}
#xlink{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--line2);border-radius:8px;color:var(--ink2)}#xlink:hover{color:var(--ink);border-color:var(--cyan)}
#ca{display:flex;align-items:center;gap:8px;height:34px;padding:0 6px 0 12px;border:1px solid #5a4520;border-radius:8px;font-size:12px;color:var(--amber);white-space:nowrap}#ca b{font-weight:800;letter-spacing:.04em}
#caCopy{font-size:11.5px;color:var(--ink2);padding:4px 7px;border-radius:5px;background:#0e1a24}#caCopy:hover{color:var(--ink)}#ca a{font:600 11.5px var(--mono);color:var(--amber);padding-right:6px}
@media (max-width:900px){#ca{order:4;flex-basis:100%;justify-content:center}}
[hidden]{display:none!important}
