.web-wrap{background:var(--surface);border:1px solid var(--rule);box-shadow:var(--shadow);border-radius:8px;margin-bottom:20px;padding:8px 8px 0}#web{touch-action:manipulation;width:100%;max-width:100%;height:auto;display:block}.backdrop{fill:#0000;cursor:default}.silk{stroke:var(--rule);stroke-width:1px;fill:none}.silk.ring{stroke-dasharray:2 5;opacity:.85}.thread{stroke:var(--gold);stroke-width:1.6px;fill:none;opacity:.8}.thread.live{stroke-dasharray:5 7;animation:1.4s linear infinite crawl}@keyframes crawl{to{stroke-dashoffset:-24px}}.bead{fill:var(--c,var(--gold))}.tether{stroke:var(--rule);stroke-width:1.2px}.tether.hot{stroke:var(--gold);stroke-width:1.6px;opacity:.75}.node .drift{animation:7s ease-in-out infinite sway;animation-delay:calc(var(--i,0) * -1.3s);transform-origin:0 0}@keyframes sway{0%,to{transform:translate(0)}33%{transform:translate(1.6px,-1.8px)}66%{transform:translate(-1.4px,1.5px)}}.node{cursor:pointer;transition:opacity .35s}.node:focus{outline:none}.node:focus-visible .disc,.node:focus-visible rect{stroke:var(--gold);stroke-width:2.5px}.node.dimmed{opacity:.28}.node.open{opacity:1}.node .halo{fill:var(--surface);stroke:var(--rule);stroke-width:1px}.node .disc{fill:var(--c);opacity:.92;transition:opacity .2s}.node:hover .disc{opacity:1}.node .glyph{fill:#fff;text-anchor:middle;pointer-events:none;font-family:Sora,sans-serif;font-size:17px;font-weight:700}.node .glyph.lg{font-size:24px}.node .nm{fill:var(--ink);text-anchor:middle;pointer-events:none;font-family:Sora,sans-serif;font-size:13px;font-weight:600}.node .sm{fill:var(--ink-3);text-anchor:middle;pointer-events:none;letter-spacing:.04em;font-family:JetBrains Mono,monospace;font-size:10px}.node .plate{fill:var(--surface);stroke:var(--rule);stroke-width:1px}.node .nm.on,.node .sm.on,.node .cgo.on{pointer-events:none}.node.off .disc{opacity:.3}.node.off .nm,.node.off .sm{opacity:.5}.node.off .halo{stroke-dasharray:3 3}.node .pulse{fill:none;stroke:var(--c);stroke-width:2px;opacity:0;animation:2.4s ease-out infinite ping}.node .pulse.d2{animation-delay:1.2s}@keyframes ping{0%{r:24;opacity:.55}70%{opacity:0}to{r:46;opacity:0}}.node.flash .disc,.node.flash rect{animation:1.3s ease-out 2 flashring}@keyframes flashring{0%{stroke:var(--gold);stroke-width:4px}to{stroke:var(--gold);stroke-width:0}}.roster .agent.flash{animation:1.3s ease-out 2 cardflash}@keyframes cardflash{0%{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft,#f3e4c6)}to{border-color:var(--rule);box-shadow:none}}.node.card rect{fill:var(--surface);stroke:var(--rule);stroke-width:1.2px;transition:width .3s,height .3s,x .3s,y .3s}.node.card text{fill:var(--ink-2);text-anchor:middle;pointer-events:none;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:500}.node.card.hot rect{stroke:var(--gold);stroke-width:1.8px}.node.card.stage-po_review rect{stroke:var(--gold);stroke-width:2px}.node.card:hover rect{stroke:var(--gold)}.node.card.more rect{fill:#0000;stroke-dasharray:3 3}.node.card.open rect{stroke:var(--gold);stroke-width:2px;filter:drop-shadow(0 4px 14px #00000024)}.node.card .ckey{text-anchor:start;fill:var(--gold);font-weight:600;transform:translate(-88px)}.node.card .cstage{text-anchor:end;fill:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;font-size:9.5px}.node.card .ctitle{fill:var(--ink);text-anchor:start;font-family:Atkinson Hyperlegible,sans-serif;font-size:12.5px;transform:translate(-88px)}.node .cgo{fill:var(--ink-3);letter-spacing:.04em;font-size:9.5px}.web-bar{flex-wrap:wrap;align-items:center;gap:18px;padding:2px 10px 12px;display:flex}.web-legend{color:var(--ink-3);flex-wrap:wrap;gap:18px;font-size:12px;display:flex}.web-legend i.k{vertical-align:0;border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}.web-legend i.run{background:var(--gold)}.web-legend i.idle{background:var(--ink-3)}.web-legend i.off{border:1px dashed var(--ink-3);background:0 0}.web-legend i.card{background:var(--rule);border-radius:2px}.web-hint{color:var(--ink-3);margin-left:auto;font-size:12px;font-style:italic}.roster{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;display:grid}.roster .agent{background:var(--surface);border:1px solid var(--rule);color:inherit;border-radius:8px;padding:16px;text-decoration:none;transition:border-color .15s,transform .15s;display:block}.roster .agent:hover{border-color:var(--gold);transform:translateY(-1px)}.roster .agent.off{opacity:.55}.roster .agent .top{align-items:center;gap:11px;margin-bottom:9px;display:flex}.roster .agent .glyph.lg{color:#fff;border-radius:8px;flex:none;place-items:center;width:34px;height:34px;font-family:Sora,sans-serif;font-size:15px;font-weight:700;display:grid}.roster .agent .glyph.lg.busy{animation:2s ease-in-out infinite busyglow}@keyframes busyglow{0%,to{box-shadow:0 0 0 0 var(--gold-soft,#f3e4c6)}50%{box-shadow:0 0 0 5px var(--gold-soft,#f3e4c6)}}.roster .agent .who h2{margin:0;font-family:Sora,sans-serif;font-size:15.5px;font-weight:600}.roster .agent .role{color:var(--ink-3);font-size:12.5px}.roster .agent .pill{text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;border-radius:3px;margin-left:auto;padding:3px 7px;font-family:JetBrains Mono,monospace;font-size:10px}.roster .agent .pill.run{background:var(--gold-soft,#f3e4c6);color:var(--gold)}.roster .agent .pill.idle{background:var(--rule);color:var(--ink-3)}.roster .agent .pill.off{border:1px dashed var(--rule);color:var(--ink-3);background:0 0}.roster .agent .status{color:var(--ink-2);min-height:40px;font-size:13.5px;line-height:1.5}.roster .agent .status .doing{color:var(--ink);margin-top:4px;font-style:italic}.roster .agent .chips{flex-wrap:wrap;gap:6px;margin:10px 0 8px;display:flex}.roster .agent .chip{background:var(--rule);color:var(--ink-2);border-radius:3px;padding:2px 7px;font-family:JetBrains Mono,monospace;font-size:10.5px}.roster .agent .chip.warn{background:var(--warn-soft,#f7e9cc);color:var(--warn,#9a6b14)}.roster .agent .chip.hold{background:var(--gold-soft,#f3e4c6);color:var(--gold)}.roster .agent .stats{color:var(--ink-3);border-top:1px solid var(--rule);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:14px;padding-top:9px;font-size:11.5px;display:flex}@media (prefers-reduced-motion:reduce){.thread.live,.node .drift,.node .pulse,.node.flash .disc,.node.flash rect,.roster .agent.flash,.roster .agent .glyph.lg.busy{animation:none}.node .pulse{opacity:.3}.bead{display:none}}
