:root{--bg:#0A0A0A;--panel:#121212;--panel2:#171717;--line:rgba(255,255,255,.08);--text:#F5F5F5;--muted:#8A8A8A;--accent:#E8734A;--green:#34D399;--yellow:#FBBF24;--red:#F87171;--blue:#60A5FA}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:Inter,-apple-system,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.mono{font-family:"JetBrains Mono",ui-monospace,monospace}

#gate{min-height:100vh;display:grid;place-items:center;padding:1.5rem}
.gate-card{width:min(420px,100%);background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:2rem}
.gate-card h1{font-size:1.35rem;margin-bottom:.35rem}
.gate-card p{color:var(--muted);margin-bottom:1.25rem;line-height:1.45}
.gate-card input{width:100%;background:#0d0d0d;border:1px solid var(--line);border-radius:12px;color:var(--text);padding:.9rem 1rem}
.gate-card button{width:100%;margin-top:.85rem;border:0;border-radius:12px;background:linear-gradient(135deg,#E8734A,#c45a36);color:#fff;font-weight:700;padding:.9rem 1rem;cursor:pointer}
.gate-error{color:var(--red);font-size:.85rem;min-height:1.2rem;margin-top:.75rem}

#app{display:none;padding:1.25rem clamp(1rem,3vw,2rem) 3rem}

.top{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1rem}
.brand{display:flex;gap:.75rem;align-items:center}
.brand-mark{width:42px;height:42px;border-radius:12px;background:#1A1A1A;display:grid;place-items:center;color:var(--accent);font-weight:800}
.brand h1{font-size:1.25rem}
.brand .sub{color:var(--muted);font-size:.85rem}
.meta{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end;align-items:center}
.chip{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:.35rem .7rem;font-size:.78rem;color:var(--muted)}
.chip strong{color:var(--text)}

.desk-nav{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1.25rem;border-bottom:1px solid var(--line);padding-bottom:.85rem}
.nav-link{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:.5rem 1rem;font-size:.85rem;font-weight:600;color:var(--muted);text-decoration:none;transition:all .15s ease}
.nav-link:hover{color:var(--text);text-decoration:none;border-color:rgba(255,255,255,.18)}
.nav-link.active{color:#fff;background:linear-gradient(135deg,rgba(232,115,74,.25),rgba(232,115,74,.12));border-color:rgba(232,115,74,.5)}

.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:1rem}
.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:1rem 1.1rem}
.span-8{grid-column:span 8}.span-6{grid-column:span 6}.span-4{grid-column:span 4}.span-12{grid-column:span 12}
@media(max-width:960px){.span-8,.span-6,.span-4{grid-column:span 12}}
.card h2{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.85rem}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.65rem}
.stat{background:var(--panel2);border-radius:12px;padding:.75rem}
.stat .k{color:var(--muted);font-size:.72rem;text-transform:uppercase}
.stat .v{font-size:1.25rem;font-weight:700;margin-top:.25rem}

table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{text-align:left;padding:.7rem .45rem;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--muted);font-size:.72rem;text-transform:uppercase}
.sym{font-weight:700}
.muted{color:var(--muted)}

.badge{display:inline-flex;border-radius:999px;padding:.15rem .55rem;font-size:.72rem;font-weight:600;border:1px solid var(--line);background:#101010;color:var(--muted)}
.badge.notify{color:var(--green);border-color:rgba(52,211,153,.35);background:rgba(52,211,153,.12)}
.badge.watch{color:var(--yellow);border-color:rgba(251,191,36,.3);background:rgba(251,191,36,.08)}
.badge.kill{color:var(--red);border-color:rgba(248,113,113,.3);background:rgba(248,113,113,.08)}
.badge.blue{color:var(--blue);border-color:rgba(96,165,250,.3);background:rgba(96,165,250,.08)}

.pos{color:var(--green)}
.neg{color:var(--red)}
.empty{color:var(--muted);padding:1rem 0}

.footer{margin-top:1.25rem;color:var(--muted);font-size:.8rem;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}

.disclaimer{background:rgba(248,113,113,.06);border:1px solid rgba(248,113,113,.25);border-radius:14px;padding:.85rem 1rem;font-size:.83rem;color:#f0b8b8;line-height:1.5;margin-bottom:1.25rem}
.disclaimer strong{color:var(--red)}

.wallet-chip{display:flex;align-items:center;gap:.5rem;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:.6rem .85rem;font-size:.85rem}
.wallet-chip .addr{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.8rem}
.copy-btn{border:1px solid var(--line);background:#101010;color:var(--muted);border-radius:8px;padding:.25rem .55rem;font-size:.72rem;cursor:pointer}
.copy-btn:hover{color:var(--text)}

/* pie / research */
.pie-wrap{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:center}
.legend{display:grid;gap:.5rem;flex:1;min-width:220px}
.legend-row{display:flex;align-items:center;gap:.55rem;font-size:.87rem}
.swatch{width:12px;height:12px;border-radius:4px;flex-shrink:0}
.legend-label{flex:1;text-transform:capitalize}
.legend-val{color:var(--text);font-weight:600}
.sub-list{margin:.3rem 0 .8rem 1.7rem;color:var(--muted);font-size:.78rem;display:grid;gap:.15rem}

/* markdown / strategy */
.md-article{line-height:1.65;font-size:.95rem}
.md-article h2{font-size:1.4rem;margin:1.4rem 0 .6rem;color:#fff}
.md-article h3{font-size:1.15rem;margin:1.2rem 0 .5rem;color:#fff}
.md-article h4{font-size:1rem;margin:1rem 0 .4rem;color:#eee}
.md-article p{margin:.5rem 0;color:#d7d7d7}
.md-article ul{margin:.4rem 0 .8rem 1.3rem;color:#d7d7d7}
.md-article li{margin:.3rem 0}
.md-article strong{color:#fff}
.md-article code{background:#101010;border:1px solid var(--line);border-radius:6px;padding:.1rem .35rem;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.85em}
.md-article pre{background:#101010;border:1px solid var(--line);border-radius:10px;padding:.8rem;overflow:auto;margin:.6rem 0}
.md-article blockquote{border-left:3px solid var(--accent);padding:.3rem 0 .3rem 1rem;color:var(--muted);margin:.6rem 0;font-style:italic}
.md-article hr{border:none;border-top:1px solid var(--line);margin:1.2rem 0}

/* learnings timeline */
.timeline{display:grid;gap:.9rem}
.tl-item{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:.85rem 1rem}
.tl-head{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.4rem}
.tl-title{font-weight:700;font-size:.95rem}
.tl-date{color:var(--muted);font-size:.78rem}
.tl-row{font-size:.85rem;color:#d7d7d7;margin-top:.25rem;line-height:1.5}
.tl-row .k{color:var(--muted);text-transform:uppercase;font-size:.68rem;letter-spacing:.05em;display:block;margin-bottom:.1rem}
.tl-owner{margin-top:.4rem}

/* positions */
.pos-card{background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:1rem 1.1rem;margin-bottom:.9rem}
.pos-head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.6rem;align-items:baseline;margin-bottom:.6rem}
.pos-head h3{font-size:1.1rem}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:.5rem;margin:.5rem 0}
.kv .cell{background:#101010;border:1px solid var(--line);border-radius:10px;padding:.55rem}
.kv .cell .k{font-size:.66rem;color:var(--muted);text-transform:uppercase}
.kv .cell .v{font-size:.95rem;font-weight:700;margin-top:.15rem}
.pnl-big{font-size:1.4rem;font-weight:800}

@media(max-width:600px){
  .top{flex-direction:column}
  .meta{justify-content:flex-start}
}

/* research tickers */
.token-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin:.45rem 0 .2rem}
.token-chip{display:inline-flex;align-items:center;gap:.35rem;background:#101010;border:1px solid var(--line);border-radius:999px;padding:.22rem .55rem;font-size:.78rem}
.token-chip .chip-meta{color:var(--muted);font-size:.68rem}
.ticker-link{color:var(--accent);font-weight:700;text-decoration:none}
.ticker-link:hover{text-decoration:underline}
.ticker{font-weight:700}
.cat-block{margin-bottom:1.15rem;padding-bottom:.85rem;border-bottom:1px solid var(--line)}
.cat-block:last-child{border-bottom:0}
.cat-head{display:flex;align-items:center;gap:.5rem;font-weight:700;margin-bottom:.25rem}
.cat-name{text-transform:capitalize}
.cat-desc{font-size:.8rem;margin:.15rem 0 .35rem 1.7rem}
.sub-block{margin:.35rem 0 .45rem 1.1rem}
.sub-head{font-size:.82rem;color:var(--muted);margin-bottom:.2rem}
.sub-list{margin-top:.35rem}

/* strategy holdings */
.hold-card{background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:.9rem 1rem;margin-bottom:.75rem}
.hold-top{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.55rem;font-weight:700}

/* expandable positions */
.pos-expand{padding:0;overflow:hidden}
.pos-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:flex-start;padding:1rem 1.1rem}
.pos-summary::-webkit-details-marker{display:none}
.pos-summary-main{min-width:220px;flex:1}
.pos-title-row{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;font-size:1.05rem;font-weight:700}
.pos-thesis{font-size:.82rem;margin-top:.35rem;max-width:42rem}
.pos-summary-side{text-align:right;min-width:140px}
.pos-live{font-size:1rem;font-weight:700}
.pnl-inline{display:block;font-size:1.05rem;font-weight:800;margin-top:.15rem}
.pos-value{font-size:.75rem;margin-top:.15rem}
.expand-hint{display:inline-block;margin-top:.35rem;font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.pos-expand[open] .expand-hint{color:var(--accent)}
.pos-body{padding:0 1.1rem 1.05rem;border-top:1px solid var(--line)}
.pos-links{margin:.55rem 0 .75rem;font-size:.85rem}
.brief-wrap{background:#101010;border:1px solid var(--line);border-radius:12px;padding:.85rem 1rem}
.brief-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.55rem}
.brief-body{max-height:28rem;overflow:auto}
.brief-body.md-article{font-size:.88rem}
.top .chip.mono{font-size:.72rem}

.cat-tickers-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:.45rem 0 .25rem}
.token-chips{display:flex;flex-wrap:wrap;gap:.45rem;margin:.35rem 0 .55rem}
.token-chip{display:inline-flex;align-items:center;gap:.4rem;background:#0d0d0d;border:1px solid rgba(232,115,74,.35);border-radius:999px;padding:.28rem .7rem;font-size:.82rem}
.ticker-link{color:#E8734A;font-weight:800;text-decoration:none}
.ticker-link:hover{text-decoration:underline;color:#ff8f66}


/* research explorer v2 */
.hint-line{margin-top:.85rem;color:var(--muted);font-size:.78rem;line-height:1.45}
.section-head{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:center;margin-bottom:.85rem}
.section-head h2{text-transform:uppercase;letter-spacing:.08em;font-size:.78rem;color:var(--muted)}
.controls{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}
.ctl{display:inline-flex;align-items:center;gap:.35rem;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}
.ctl select{background:#101010;border:1px solid var(--line);color:var(--text);border-radius:8px;padding:.35rem .5rem;font-size:.8rem;text-transform:none;letter-spacing:0}
.ctl-btn{background:#101010;border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.35rem .7rem;font-size:.75rem;cursor:pointer}
.ctl-btn:hover{color:var(--text);border-color:rgba(255,255,255,.18)}
.explorer{display:grid;gap:.55rem}
.cat-acc,.sub-acc{background:var(--panel2);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.cat-sum,.sub-sum{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;padding:.75rem .9rem}
.cat-sum::-webkit-details-marker,.sub-sum::-webkit-details-marker{display:none}
.cat-body{padding:0 .9rem .85rem;border-top:1px solid var(--line)}
.cat-desc{font-size:.8rem;margin:.65rem 0 .55rem;line-height:1.45}
.cat-subcount{font-size:.75rem}
.sub-acc{margin-top:.45rem;background:#0d0d0d}
.sub-name{font-weight:600;text-transform:capitalize;flex:1}
.sub-body{padding:.35rem .75rem .75rem;border-top:1px solid var(--line);display:grid;gap:.35rem}
.tok-row{display:grid;grid-template-columns:minmax(160px,1.4fr) minmax(120px,.9fr) auto;gap:.55rem;align-items:center;padding:.45rem .35rem;border-bottom:1px solid rgba(255,255,255,.04)}
.tok-row:last-child{border-bottom:0}
.tok-main{display:flex;flex-wrap:wrap;gap:.45rem;align-items:baseline}
.tok-name{color:var(--muted);font-size:.8rem}
.tok-meta{color:var(--muted);font-size:.72rem}
.tok-nums{display:flex;gap:.7rem;font-size:.8rem;font-weight:600;justify-content:flex-end}
.compact-table th.th-sort{cursor:pointer;user-select:none}
.compact-table th.th-sort:hover{color:var(--text)}
.compact-table th.th-sort.active{color:var(--accent)}
.compact-table th.th-sort.active::after{content:attr(data-dir);margin-left:.3rem;font-size:.65rem;text-transform:uppercase;opacity:.8}
@media(max-width:720px){
  .tok-row{grid-template-columns:1fr;gap:.2rem}
  .tok-nums{justify-content:flex-start}
}

/* pipeline visualization */
:root{--pl-agent:#E8734A;--pl-store:#60A5FA;--pl-channel:#A78BFA;--pl-kill:#F87171}
.pl-intro{margin-bottom:1.1rem}
.pl-intro p{color:#d7d7d7;font-size:.88rem;line-height:1.55;margin-bottom:.75rem}
.pl-legend{display:flex;flex-wrap:wrap;gap:.9rem;margin-bottom:.9rem}
.pl-legend-item{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--muted)}
.pl-dot{width:11px;height:11px;border-radius:4px;flex-shrink:0}
.pl-dot.agent{background:var(--pl-agent)}
.pl-dot.store{background:var(--pl-store)}
.pl-dot.channel{background:var(--pl-channel)}
.pl-dot.kill{background:var(--pl-kill)}
.pl-controls{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}
.pl-btn{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:999px;padding:.5rem 1rem;font-size:.82rem;font-weight:600;cursor:pointer;transition:all .15s ease}
.pl-btn:hover{border-color:rgba(255,255,255,.25)}
.pl-btn.active{background:linear-gradient(135deg,rgba(232,115,74,.3),rgba(232,115,74,.14));border-color:rgba(232,115,74,.55);color:#fff}
.pl-toggle{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.pl-toggle button{border:0;background:var(--panel2);color:var(--muted);padding:.5rem 1rem;font-size:.82rem;font-weight:600;cursor:pointer}
.pl-toggle button.on{background:linear-gradient(135deg,rgba(232,115,74,.32),rgba(232,115,74,.15));color:#fff}
.pl-toggle button.on.kill-on{background:linear-gradient(135deg,rgba(248,113,113,.32),rgba(248,113,113,.15))}

.pl-node{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:.6rem .75rem;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:all .15s ease}
.pl-node:hover,.pl-node:focus-visible{border-color:rgba(255,255,255,.28);transform:translateY(-1px)}
.pl-node:focus-visible{outline:2px solid var(--pl-agent);outline-offset:2px}
.pl-node .pl-node-title{font-weight:700;font-size:.85rem;display:flex;align-items:center;gap:.4rem}
.pl-node .pl-node-sub{color:var(--muted);font-size:.72rem;margin-top:.2rem;line-height:1.35}
.pl-node.channel .pl-node-title::before{content:"#";color:var(--pl-channel)}
.pl-node.store .pl-node-title::before{content:"◆";color:var(--pl-store);font-size:.7em}

.pl-stage{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:1rem 1.1rem;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:all .15s ease;position:relative}
.pl-stage:hover,.pl-stage:focus-visible{border-color:rgba(232,115,74,.45);box-shadow:0 0 0 1px rgba(232,115,74,.15)}
.pl-stage:focus-visible{outline:2px solid var(--pl-agent);outline-offset:2px}
.pl-stage.pl-hit{border-color:rgba(232,115,74,.8);box-shadow:0 0 0 3px rgba(232,115,74,.22)}
.pl-stage.pl-hit-kill{border-color:rgba(248,113,113,.85);box-shadow:0 0 0 3px rgba(248,113,113,.25)}
.pl-stage.pl-loop{border-style:dashed}
.pl-stage-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.3rem}
.pl-idx{width:26px;height:26px;border-radius:8px;background:#101010;border:1px solid var(--line);display:grid;place-items:center;font-size:.7rem;font-weight:800;color:var(--pl-agent);flex-shrink:0}
.pl-stage-title{font-weight:700;font-size:1rem}
.pl-stage-tag{color:var(--muted);font-size:.72rem}
.pl-stage-role{color:#d7d7d7;font-size:.83rem;line-height:1.45;margin:.3rem 0 .55rem}
.pl-badges{display:flex;flex-wrap:wrap;gap:.35rem}
.pl-badge{display:inline-flex;align-items:center;gap:.25rem;border:1px solid var(--line);background:#101010;border-radius:999px;padding:.15rem .55rem;font-size:.68rem;color:var(--muted)}
.pl-badge.ch{color:var(--pl-channel);border-color:rgba(167,139,250,.3)}
.pl-badge.st{color:var(--pl-store);border-color:rgba(96,165,250,.3)}
.pl-badge.star{color:var(--green);border-color:rgba(52,211,153,.3)}

.pl-edge{display:flex;flex-direction:column;align-items:center;padding:.35rem 0;gap:.2rem}
.pl-edge-line{width:2px;height:14px;background:linear-gradient(var(--line),var(--line));position:relative}
.pl-edge-arrow{color:var(--muted);font-size:.8rem;line-height:1}
.pl-edge-label{border:1px dashed var(--line);background:transparent;color:var(--muted);border-radius:999px;padding:.22rem .65rem;font-size:.7rem;cursor:pointer;font:inherit}
.pl-edge-label:hover,.pl-edge-label:focus-visible{color:var(--text);border-color:rgba(255,255,255,.3)}

.pl-token-chip{position:absolute;display:flex;align-items:center;gap:.3rem;background:linear-gradient(135deg,#E8734A,#c45a36);color:#fff;border-radius:999px;padding:.3rem .65rem;font-size:.72rem;font-weight:800;box-shadow:0 4px 14px rgba(232,115,74,.4);transition:top .55s cubic-bezier(.4,0,.2,1),left .55s cubic-bezier(.4,0,.2,1),opacity .35s ease;z-index:5;pointer-events:none;opacity:0}
.pl-token-chip.kill-mode{background:linear-gradient(135deg,#F87171,#c14545);box-shadow:0 4px 14px rgba(248,113,113,.4)}
.pl-flash{position:absolute;left:0;right:0;text-align:center;font-size:.72rem;font-weight:700;color:var(--green);opacity:0;transition:opacity .35s ease;pointer-events:none;z-index:6}
.pl-flash.kill{color:var(--pl-kill)}

.pl-drawer-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.55);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:40}
.pl-drawer-backdrop.open{opacity:1;pointer-events:auto}
.pl-drawer{position:fixed;top:0;right:0;bottom:0;width:min(420px,100%);background:var(--panel);border-left:1px solid var(--line);box-shadow:-8px 0 30px rgba(0,0,0,.4);transform:translateX(100%);transition:transform .25s ease;z-index:41;display:flex;flex-direction:column}
.pl-drawer.open{transform:translateX(0)}
.pl-drawer-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:1.1rem 1.2rem .85rem;border-bottom:1px solid var(--line)}
.pl-drawer-head h3{font-size:1.15rem}
.pl-drawer-head .pl-drawer-kind{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-top:.25rem}
.pl-drawer-close{border:1px solid var(--line);background:#101010;color:var(--muted);border-radius:10px;width:32px;height:32px;cursor:pointer;font-size:1rem;flex-shrink:0}
.pl-drawer-close:hover{color:var(--text)}
.pl-drawer-body{padding:1rem 1.2rem 2rem;overflow-y:auto}
.pl-dsec{margin-bottom:1.1rem}
.pl-dsec h4{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.4rem}
.pl-dsec p{font-size:.87rem;color:#d7d7d7;line-height:1.55}
.pl-dsec ul{margin:.2rem 0 0 1.1rem;font-size:.85rem;color:#d7d7d7;line-height:1.6}
.pl-dsec code{background:#101010;border:1px solid var(--line);border-radius:6px;padding:.1rem .35rem;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.82em}
.pl-chain{display:flex;flex-wrap:wrap;gap:.3rem}
.pl-chain .pl-badge{cursor:pointer}
.pl-chain .pl-badge:hover{color:var(--text)}

/* wireflow v4 — architecture board: vertical path, side rails, anti-spaghetti */
.wf-view[hidden]{display:none}
.wf-zoombar{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;margin:1rem 0 .55rem}
.wf-zoombar .pl-btn{min-width:2.1rem;padding:.4rem .7rem}
.wf-zoom-pct{min-width:3.2rem;text-align:center;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.8rem;color:var(--text);font-weight:700}
.wf-zoom-hint{color:var(--muted);font-size:.72rem;margin-left:.25rem}
.wf-canvas{position:relative;overflow:hidden;margin-top:.25rem;height:min(92vh,1100px);border:1px solid var(--line);border-radius:16px;background:
  radial-gradient(1200px 500px at 50% -10%,rgba(232,115,74,.06),transparent 60%),
  #0b0b0b;cursor:grab;touch-action:none}
.wf-canvas.panning{cursor:grabbing}
.wf-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.wf-inner{position:relative;width:1180px;min-width:1180px;padding:28px 28px 40px;box-sizing:border-box}
.wf-top{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.6rem;position:relative;z-index:2}
.wf-band-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.55rem}
.wf-band-discord .wf-band-nodes{display:flex;gap:.55rem;flex-wrap:wrap}
.wf-band-stores{margin-top:1.8rem;position:relative;z-index:2}
.wf-band-stores .wf-band-nodes{display:flex;gap:.55rem;flex-wrap:wrap}
.wf-chip{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:.55rem .7rem;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:all .15s ease;min-width:132px;max-width:170px}
.wf-chip:hover,.wf-chip:focus-visible{border-color:rgba(255,255,255,.28);transform:translateY(-1px)}
.wf-chip:focus-visible{outline:2px solid var(--pl-agent);outline-offset:2px}
.wf-chip-title{font-weight:700;font-size:.82rem;line-height:1.2}
.wf-chip-sub{color:var(--muted);font-size:.68rem;margin-top:.2rem;line-height:1.3}
.wf-chip.channel .wf-chip-title::before{content:"#";color:var(--pl-channel);margin-right:.1rem}
.wf-chip.store .wf-chip-title::before{content:"◆ ";color:var(--pl-store);font-size:.72em}
.wf-band-orch{position:relative;z-index:2}
.wf-board{display:grid;grid-template-columns:280px minmax(420px,1fr) 230px;gap:1.5rem;align-items:start;position:relative;z-index:2;min-height:720px}
.wf-rail{position:sticky;top:0}
.wf-rail-left,.wf-rail-kill{padding:1rem;border-radius:16px;min-height:100%}
.wf-rail-left{border:1px dashed rgba(96,165,250,.35);background:linear-gradient(180deg,rgba(96,165,250,.07),rgba(96,165,250,.02));display:flex;flex-direction:column;gap:.55rem}
.wf-rail-left .wf-band-label{color:rgba(147,197,253,.95);margin-bottom:.15rem}
.wf-rail-left .wf-handoff-label{margin-top:.55rem;color:rgba(253,186,140,.95)}
.wf-rail-left .wf-fence-label{margin-top:.45rem;color:rgba(252,165,165,.95)}
.wf-rail-kill{border:1px dashed rgba(248,113,113,.35);background:linear-gradient(180deg,rgba(248,113,113,.07),rgba(248,113,113,.02))}
.wf-rail-kill .wf-band-label{color:rgba(252,165,165,.95)}
.wf-handoff-list{display:flex;flex-direction:column;gap:.35rem}
.wf-list-row{display:flex;align-items:flex-start;gap:.5rem;width:100%;box-sizing:border-box;text-align:left;font:inherit;color:inherit;cursor:pointer;border:1px solid rgba(255,255,255,.08);background:rgba(12,12,12,.72);border-radius:12px;padding:.45rem .55rem;transition:border-color .15s ease,background .15s ease,opacity .15s ease}
.wf-list-row:hover,.wf-list-row:focus-visible{border-color:rgba(232,115,74,.45);background:rgba(20,16,14,.9)}
.wf-list-row:focus-visible{outline:2px solid var(--pl-agent);outline-offset:2px}
.wf-list-row.kill{border-color:rgba(248,113,113,.22)}
.wf-list-row.kill:hover,.wf-list-row.kill:focus-visible{border-color:rgba(248,113,113,.55);background:rgba(28,12,12,.88)}
.wf-list-row.hi{border-color:rgba(232,115,74,.7);box-shadow:0 0 0 1px rgba(232,115,74,.18)}
.wf-list-row.dim{opacity:.28}
.wf-list-idx{flex:0 0 1.2rem;font-size:.68rem;font-weight:800;color:var(--pl-agent);line-height:1.4;padding-top:.05rem}
.wf-list-row.kill .wf-list-idx{color:var(--pl-kill)}
.wf-list-body{display:flex;flex-direction:column;gap:.12rem;min-width:0}
.wf-list-title{font-size:.74rem;font-weight:700;line-height:1.25;color:var(--text)}
.wf-list-detail{font-size:.66rem;line-height:1.3;color:var(--muted)}
.wf-mainpath{padding:1rem 1.1rem 1.25rem;border:1px solid rgba(232,115,74,.18);border-radius:18px;background:linear-gradient(180deg,rgba(232,115,74,.05),rgba(255,255,255,.01))}
.wf-mainpath .wf-band-label{color:rgba(253,186,140,.95)}
.wf-path-col{display:flex;flex-direction:column;align-items:stretch;gap:1.15rem}
.wf-node{display:block;width:100%;box-sizing:border-box;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:.9rem 1rem;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease,opacity .15s ease;position:relative}
.wf-node:hover,.wf-node:focus-visible{border-color:rgba(232,115,74,.55);box-shadow:0 0 0 1px rgba(232,115,74,.16);transform:translateY(-1px)}
.wf-node:focus-visible{outline:2px solid var(--pl-agent);outline-offset:2px}
.wf-node.pl-hit{border-color:rgba(232,115,74,.9);box-shadow:0 0 0 3px rgba(232,115,74,.24)}
.wf-node.pl-hit-kill{border-color:rgba(248,113,113,.9);box-shadow:0 0 0 3px rgba(248,113,113,.28)}
.wf-node.pl-loop{border-style:dashed}
.wf-node.wf-dim{opacity:.28}
.wf-node-kicker{display:flex;align-items:center;gap:.45rem;margin-bottom:.35rem}
.wf-step{width:24px;height:24px;border-radius:8px;display:grid;place-items:center;font-size:.7rem;font-weight:800;color:var(--pl-agent);background:#101010;border:1px solid var(--line);flex-shrink:0}
.wf-step.star{color:#86efac;border-color:rgba(74,222,128,.45)}
.wf-node-tag{color:var(--muted);font-size:.68rem}
.wf-node-title{font-weight:750;font-size:1rem;line-height:1.2;letter-spacing:-.01em}
.wf-node-blurb{color:#cfcfcf;font-size:.78rem;line-height:1.4;margin-top:.35rem}
.wf-pill{display:inline-block;margin-left:.35rem;padding:.08rem .42rem;border-radius:999px;font-size:.62rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;vertical-align:middle;border:1px solid rgba(74,222,128,.35);color:#86efac;background:rgba(74,222,128,.08)}
.wf-pill.bus{margin-left:0;border-color:rgba(96,165,250,.4);color:#93c5fd;background:rgba(96,165,250,.1)}
.wf-pill.kill{margin-left:0;border-color:rgba(248,113,113,.45);color:#fca5a5;background:rgba(248,113,113,.1)}
.wf-node-agent{max-width:560px;margin:0 auto}
.wf-node-conductor{display:flex;gap:1.25rem;align-items:stretch;justify-content:space-between;border-color:rgba(74,222,128,.42);background:linear-gradient(135deg,rgba(14,18,15,.98),rgba(18,32,22,.98));box-shadow:0 0 0 1px rgba(74,222,128,.1)}
.wf-conductor-left{flex:1 1 auto;min-width:0}
.wf-conductor-meta{flex:0 0 280px;border-left:1px solid rgba(74,222,128,.18);padding-left:1rem;display:flex;flex-direction:column;justify-content:center;gap:.35rem;font-size:.72rem;color:#cfead7;line-height:1.35}
.wf-conductor-meta strong{color:#86efac;font-weight:700}
.wf-node-queue{border-style:dashed;border-color:rgba(96,165,250,.5);background:rgba(10,16,26,.96)}
.wf-node-queue .wf-node-blurb{color:#b7d3f5}
.wf-queue-rules{margin-top:.7rem;display:grid;gap:.25rem;font-size:.7rem;color:#9ec5f0;line-height:1.35}
.wf-queue-rules .mono{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.62rem;color:#7dd3fc;opacity:.9;margin-top:.2rem}
.wf-node-kill{border-style:dashed;border-color:rgba(248,113,113,.55);background:rgba(28,12,12,.92);color:#fecaca;text-align:left}
.wf-node-kill .wf-node-title{color:#fca5a5}
.wf-node-kill .wf-node-blurb{color:#f0b4b4}
.wf-kill-list{margin:.75rem 0 0;padding-left:1rem;display:grid;gap:.3rem;font-size:.7rem;color:#f0c4c4;line-height:1.35}
.wf-kill-list strong{color:#fecaca}
.wf-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:visible}
.wf-path{fill:none;stroke:var(--pl-agent);stroke-width:2.4;opacity:.9;transition:opacity .15s ease,stroke-width .15s ease}
.wf-path.secondary{stroke-width:1.35;opacity:.55}
.wf-path.secondary.is-hidden{opacity:0}
.wf-path.gate{stroke:rgba(74,222,128,.8);stroke-width:1.7;opacity:.75;stroke-dasharray:4 5}
.wf-path.to-channel{stroke:var(--pl-channel)}
.wf-path.to-store-write{stroke:var(--pl-store)}
.wf-path.to-store-read{stroke:var(--pl-store);stroke-dasharray:3 4}
.wf-path.kill{stroke:var(--pl-kill);stroke-dasharray:6 4;opacity:.78}
.wf-path.dim{opacity:.07}
.wf-path.hi{opacity:1;stroke-width:3.1}
.wf-path.replay-active{stroke-dasharray:5 4;animation:wf-march .5s linear infinite}
@keyframes wf-march{to{stroke-dashoffset:-18}}
/* floating wire labels removed in v5 — handoff copy lives in left-rail lists */
.wf-edge-label{display:none !important}

.wf-token-chip{position:absolute;display:flex;align-items:center;gap:.3rem;background:linear-gradient(135deg,#E8734A,#c45a36);color:#fff;border-radius:999px;padding:.3rem .65rem;font-size:.72rem;font-weight:800;box-shadow:0 4px 14px rgba(232,115,74,.4);transition:top .55s cubic-bezier(.4,0,.2,1),left .55s cubic-bezier(.4,0,.2,1),opacity .35s ease;z-index:5;pointer-events:none;opacity:0}
.wf-token-chip.kill-mode{background:linear-gradient(135deg,#F87171,#c14545);box-shadow:0 4px 14px rgba(248,113,113,.4)}
.wf-flash{position:absolute;text-align:center;font-size:.72rem;font-weight:700;color:var(--green);opacity:0;transition:opacity .35s ease;pointer-events:none;z-index:6;transform:translate(-50%,0);white-space:nowrap}
.wf-flash.kill{color:var(--pl-kill)}

.wf-seq{position:relative;margin-top:1rem;overflow-x:auto}
.wf-seq-inner{position:relative;min-width:920px}
.wf-seq-head{display:flex;gap:.4rem;position:relative;z-index:2}
.wf-seq-head .wf-lane-hdr{flex:1;text-align:center;font-size:.76rem;font-weight:700;padding:.55rem .3rem;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.wf-seq-head .wf-lane-hdr.discord{color:var(--pl-channel);border-color:rgba(167,139,250,.3)}
.wf-seq-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:visible}
.wf-seq-lifeline{stroke:var(--line);stroke-width:1.5;stroke-dasharray:3 4;fill:none}
.wf-seq-body{position:absolute;inset:0;z-index:2;pointer-events:none}
.wf-seq-msg{position:absolute;transform:translate(-50%,-100%);background:var(--panel2);border:1px dashed var(--line);color:var(--muted);border-radius:999px;padding:.18rem .55rem;font-size:.66rem;cursor:pointer;white-space:nowrap;pointer-events:auto;font:inherit}
.wf-seq-msg:hover{color:var(--text);border-color:rgba(255,255,255,.3)}
.wf-seq-note{position:absolute;transform:translate(-50%,0);background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:.3rem .55rem;font-size:.66rem;color:var(--muted);max-width:180px;line-height:1.35;pointer-events:none}
.wf-seq-note.wf-seq-kill{border-color:rgba(248,113,113,.5);color:var(--pl-kill);cursor:pointer;pointer-events:auto}

.wf-legend-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.9rem;margin-top:1rem}
.wf-legend-card{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:.9rem 1rem}
.wf-legend-card h4{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:.6rem}
.wf-legend-row{display:flex;align-items:center;gap:.55rem;font-size:.8rem;color:#d7d7d7;margin-bottom:.5rem}
.wf-legend-row:last-child{margin-bottom:0}
.wf-legend-line{width:30px;height:0;border-top:2.2px solid var(--pl-agent);flex-shrink:0}
.wf-legend-line.dashed{border-top-style:dashed}
.wf-legend-line.channel{border-top-color:var(--pl-channel)}
.wf-legend-line.store{border-top-color:var(--pl-store)}
.wf-legend-line.kill{border-top-color:var(--pl-kill);border-top-style:dashed}
.wf-legend-swatch{width:14px;height:14px;border-radius:5px;flex-shrink:0}

@media(max-width:1100px){
  .wf-canvas{height:min(88vh,980px)}
  .wf-inner{width:1020px;min-width:1020px;padding:22px}
  .wf-board{grid-template-columns:250px minmax(340px,1fr) 200px;gap:1rem}
  .wf-conductor-meta{flex-basis:220px}
}

@media(max-width:820px){
  .wf-zoom-hint{display:none}
  .wf-canvas{height:min(84vh,900px)}
  .wf-inner{width:720px;min-width:720px}
  .wf-board{grid-template-columns:1fr;gap:1.1rem}
  .wf-node-conductor{flex-direction:column}
  .wf-conductor-meta{flex-basis:auto;border-left:0;border-top:1px solid rgba(74,222,128,.18);padding-left:0;padding-top:.75rem}
  .wf-seq-inner{min-width:0}
  .wf-seq-head .wf-lane-hdr{font-size:.66rem;padding:.4rem .2rem}
}
