:root{color-scheme:dark;--bg-0: #070a14;--bg-1: #0d1326;--ink: #eef2fb;--ink-dim: #97a3c4;--ink-faint: #5b678f;--line: rgba(150, 170, 220, .16);--line-hot: rgba(190, 210, 255, .6);--glass: rgba(18, 24, 44, .72);--r-spreadsure: #ffc46b;--r-platform: #7c9cff;--r-lw: #6fe3a3}:root{--ink-faint: #5b678f}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{height:100dvh;overflow:hidden;color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:radial-gradient(1100px 760px at 22% -8%,#1a2b4a,transparent 60%),radial-gradient(1000px 720px at 92% 108%,#14243f,transparent 58%),linear-gradient(180deg,var(--bg-1),var(--bg-0));-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.5;background-image:radial-gradient(1px 1px at 20% 30%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 70% 60%,rgba(255,255,255,.35),transparent),radial-gradient(1px 1px at 40% 80%,rgba(255,255,255,.3),transparent),radial-gradient(1.5px 1.5px at 85% 25%,rgba(255,255,255,.4),transparent),radial-gradient(1px 1px at 55% 15%,rgba(255,255,255,.3),transparent)}#stage{position:fixed;inset:0}#topbar{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;padding:clamp(.9rem,2.5vw,1.4rem) clamp(1rem,3vw,1.8rem);pointer-events:none}.brand{font-size:clamp(1.05rem,3.4vw,1.4rem);font-weight:650;letter-spacing:-.01em}.brand span{color:var(--ink-dim);font-weight:400}.hint{font-size:.8rem;color:var(--ink-dim)}#graph{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab}#graph.grabbing{cursor:grabbing}#viewport{transform-box:view-box;transform-origin:0 0}.edge{stroke:var(--line);stroke-width:1.4;fill:none;transition:stroke .4s,stroke-width .4s,opacity .4s}.edge.hot{stroke:var(--line-hot);stroke-width:2}.node{cursor:pointer}.node-fx{opacity:0;transform:scale(.6);transform-box:fill-box;transform-origin:center;animation:pop .5s cubic-bezier(.2,.8,.3,1) forwards;animation-delay:var(--d, 0ms)}@keyframes pop{to{opacity:1;transform:scale(1)}}.node .hit{fill:transparent;pointer-events:all}.node .halo{fill:var(--c);opacity:.14;transition:opacity .35s,r .35s}.node .ring{fill:#0c1222eb;stroke:var(--c);stroke-width:2;transition:stroke-width .3s,r .3s}.node .label{fill:var(--ink);font-size:13px;font-weight:550;text-anchor:middle;paint-order:stroke;stroke:#070a14eb;stroke-width:3.5px;stroke-linejoin:round}.node .lock{font-size:15px;text-anchor:middle;dominant-baseline:central}.node:hover .halo{opacity:.26}.node:hover .ring{stroke-width:3}.node.locked .ring{stroke-dasharray:3 4}.node.locked .label{fill:var(--ink-dim)}.node.active .halo{opacity:.34}.node.active .ring{stroke-width:3.5}.node.dim{opacity:.28}#legend{position:absolute;left:clamp(1rem,3vw,1.8rem);bottom:clamp(5.2rem,16vh,6.5rem);z-index:5;display:flex;flex-direction:column;gap:.35rem;pointer-events:none}#legend .row{display:flex;align-items:center;gap:.5rem;font-size:.78rem;color:var(--ink-dim)}#legend .swatch{width:9px;height:9px;border-radius:50%;box-shadow:0 0 8px 1px currentColor}#zoom{position:absolute;right:clamp(1rem,3vw,1.6rem);bottom:clamp(5.2rem,16vh,6.5rem);z-index:6;display:flex;flex-direction:column;gap:.4rem}#zoom button{width:38px;height:38px;border-radius:11px;border:1px solid rgba(150,170,220,.2);background:var(--glass);color:var(--ink);font-size:1.15rem;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .2s,border-color .2s}#zoom button:hover{background:#283456cc;border-color:#96aadc66}#trackbar{position:absolute;left:0;right:0;bottom:0;z-index:7;display:flex;align-items:center;justify-content:center;gap:.6rem;flex-wrap:wrap;padding:.8rem clamp(1rem,3vw,1.8rem) calc(.8rem + env(safe-area-inset-bottom));background:linear-gradient(0deg,rgba(7,10,20,.85),transparent)}.pill{border:1px solid rgba(150,170,220,.22);background:#141c3499;color:var(--ink);padding:.5rem .95rem;border-radius:999px;font-size:.82rem;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:all .2s;white-space:nowrap}.pill:hover{border-color:#96aadc80}.pill.active{background:var(--ink);color:#0a0e1a;border-color:var(--ink);font-weight:600}#stepper{display:none;align-items:center;gap:.7rem}#stepper.on{display:flex}#stepper .nav{width:36px;height:36px;border-radius:50%;border:1px solid rgba(150,170,220,.3);background:#141c34b3;color:var(--ink);font-size:1.1rem;cursor:pointer}#stepper .count{font-size:.82rem;color:var(--ink-dim);min-width:3.2rem;text-align:center}#stepper .x{background:none;border:none;color:var(--ink-dim);cursor:pointer;font-size:.8rem;text-decoration:underline}#panel{position:absolute;z-index:8;background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(150,170,220,.18);box-shadow:0 24px 60px #00000080;transition:transform .5s cubic-bezier(.22,.61,.36,1),opacity .4s;opacity:0}#panel[aria-hidden=true]{pointer-events:none}@media(min-width:760px){#panel{top:50%;right:clamp(1rem,3vw,1.8rem);width:min(360px,38vw);transform:translateY(-50%) translate(28px);border-radius:20px;padding:1.5rem 1.6rem}#panel.open{opacity:1;transform:translateY(-50%) translate(0)}}@media(max-width:759px){#panel{left:0;right:0;bottom:4.2rem;border-radius:20px 20px 0 0;padding:1.3rem 1.4rem 1.5rem;transform:translateY(110%);border-bottom:none}#panel.open{opacity:1;transform:translateY(0)}}#panel .ptag{display:inline-flex;align-items:center;gap:.45rem;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:.7rem}#panel .ptag .swatch{width:8px;height:8px;border-radius:50%;box-shadow:0 0 8px 1px currentColor}#panel h2{font-size:1.4rem;line-height:1.15;letter-spacing:-.01em;margin-bottom:.6rem}#panel p{color:var(--ink-dim);line-height:1.55;font-size:.96rem}#panel .locked-tag{margin-top:.9rem;display:inline-flex;gap:.4rem;align-items:center;font-size:.8rem;color:#ffd27d;background:#ffc46b1a;border:1px solid rgba(255,196,107,.25);padding:.4rem .7rem;border-radius:10px}#panel .rel{margin-top:1.1rem;display:flex;flex-wrap:wrap;gap:.4rem}#panel .rel .chip{font-size:.76rem;color:var(--ink);background:#96aadc1f;border:1px solid rgba(150,170,220,.18);padding:.32rem .6rem;border-radius:8px;cursor:pointer;transition:background .2s}#panel .rel .chip:hover{background:#96aadc3d}#panel .close{position:absolute;top:.9rem;right:1rem;background:none;border:none;color:var(--ink-dim);font-size:1.3rem;cursor:pointer;line-height:1}
