/* Studio chrome — matches workspace reference */
:root{--bg:#f4f1ea;--paper:#fbf9f4;--ink:#1a1a1a;--ink-2:#4a4a4a;--ink-3:#8a857c;--line:rgba(0,0,0,.09);--line-2:rgba(0,0,0,.06);--c-accent:#3a5bd9;--c-mint:#1aa37a;--c-peach:#e08658;--c-pink:#d65082;--c-amber:#c89020;--c-red:#d04040;--mono:"JetBrains Mono","SF Mono",ui-monospace,Menlo,monospace;--sans:-apple-system,BlinkMacSystemFont,"SF Pro Display",Inter,system-ui,sans-serif;--shadow:0 1px 2px rgba(0,0,0,.04),0 12px 30px rgba(0,0,0,.06);--ease:cubic-bezier(.32,.72,0,1);--spring:cubic-bezier(.2,.9,.3,1.2);}
*{box-sizing:border-box;-webkit-font-smoothing:antialiased;}
html,body{margin:0;height:100%;}
body{font-family:var(--sans);color:var(--ink);background:radial-gradient(900px 600px at 8% 6%,rgba(58,91,217,.06),transparent 60%),radial-gradient(700px 500px at 92% 96%,rgba(26,163,122,.06),transparent 60%),var(--bg);height:100vh;padding:24px;overflow:hidden;}
.preview{max-width:1500px;margin:0 auto;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;height:calc(100vh - 48px);max-height:calc(100vh - 48px);min-height:0;}
.pv-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,rgba(0,0,0,.015),transparent);gap:12px;flex-wrap:wrap;}
.dots{display:inline-flex;gap:6px;}
.dots span{width:11px;height:11px;border-radius:50%;background:#e5b7b7;}
.dots span:nth-child(2){background:#e8d294;}
.dots span:nth-child(3){background:#a8d3a3;}
.mono{font-family:var(--mono);font-size:11.5px;}
.tab{color:var(--ink-3);padding:4px 10px;border-radius:6px;background:rgba(0,0,0,.03);border:1px solid var(--line-2);}
.pv-tabs{display:inline-flex;background:rgba(0,0,0,.04);border-radius:8px;padding:3px;border:1px solid var(--line-2);}
.pv-tab{font-family:var(--mono);font-size:11px;padding:6px 12px;border-radius:6px;color:var(--ink-3);cursor:pointer;transition:all .2s var(--ease);user-select:none;}
.pv-tab.active{background:var(--paper);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.06);}
.pv-tab:not(.active):hover{color:var(--ink-2);}
.tool-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.chip{font-family:var(--mono);font-size:11px;padding:6px 10px;border-radius:7px;background:var(--paper);border:1px solid var(--line);color:var(--ink-2);cursor:pointer;transition:all .15s var(--ease);display:inline-flex;align-items:center;gap:5px;}
.chip:hover{background:#fff;border-color:rgba(0,0,0,.16);color:var(--ink);}
.chip.live{background:rgba(208,64,64,.08);border-color:rgba(208,64,64,.3);color:var(--c-red);}
.pv-body{display:grid;grid-template-columns:230px minmax(0,1fr) minmax(240px,300px);flex:1;min-height:0;overflow:hidden;align-items:stretch;}
.pv-side{border-right:1px solid var(--line);padding:0;background:linear-gradient(180deg,rgba(0,0,0,.012),transparent);display:flex;flex-direction:column;min-height:0;overflow:hidden;}
.ws-file-nav{flex:1;min-height:0;max-height:100%;display:flex;flex-direction:column;padding:14px 12px 10px;overflow:hidden;}
.ws-file-nav h6{flex-shrink:0;}
.ws-file-nav-search{width:100%;flex-shrink:0;margin:0 0 10px;padding:7px 10px;font:500 12px var(--sans);color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:7px;outline:none;}
.ws-file-nav-search:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px rgba(58,91,217,.1);}
.ws-file-tree{flex:1 1 auto;min-height:0;max-height:100%;overflow-x:hidden;overflow-y:auto;padding-right:2px;-webkit-overflow-scrolling:touch;}
.ws-file-tree-empty{padding:8px 10px;font-size:12px;color:var(--ink-3);line-height:1.45;}
.ws-tree-row{display:flex;align-items:center;gap:4px;padding:5px 8px;margin-bottom:1px;font-size:12.5px;color:var(--ink-2);border-radius:6px;cursor:pointer;transition:background .12s var(--ease),color .12s;}
.ws-tree-row:hover{background:rgba(0,0,0,.035);color:var(--ink);}
.ws-tree-row.active{background:rgba(58,91,217,.09);color:var(--c-accent);font-weight:500;}
.ws-tree-toggle{appearance:none;border:0;background:transparent;width:18px;height:18px;padding:0;margin:0;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-size:9px;line-height:1;color:var(--ink-3);cursor:pointer;border-radius:4px;transition:color .12s var(--ease),background .12s var(--ease);}
.ws-tree-toggle:hover{background:rgba(0,0,0,.06);color:var(--ink);}
.ws-tree-toggle--spacer{pointer-events:none;opacity:0;}
.ws-tree-children{min-width:0;}
.ws-flat-row{display:flex;align-items:center;gap:8px;padding:5px 8px;margin-bottom:1px;font-size:12.5px;color:var(--ink-2);border-radius:6px;cursor:pointer;transition:background .12s var(--ease),color .12s;}
.ws-flat-row:hover{background:rgba(0,0,0,.035);color:var(--ink);}
.ws-flat-row.active{background:rgba(58,91,217,.09);color:var(--c-accent);font-weight:500;}
.ws-flat-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ws-cat-chip{position:relative;display:inline-flex;align-items:center;flex-shrink:0;}
.ws-cat-dot{width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 1px rgba(0,0,0,.08);flex-shrink:0;transition:transform .15s var(--ease);}
.ws-cat-tip{position:absolute;left:calc(100% + 6px);top:50%;transform:translateY(-50%) scale(.92);opacity:0;pointer-events:none;white-space:nowrap;font-family:var(--mono);font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink);background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:5px;padding:3px 7px;box-shadow:0 4px 12px rgba(0,0,0,.08);transition:opacity .15s var(--ease),transform .15s var(--ease);z-index:5;}
.ws-cat-chip:hover .ws-cat-dot{transform:scale(1.12);}
.ws-cat-chip:hover .ws-cat-tip{opacity:1;transform:translateY(-50%) scale(1);}
.ws-flat-row .ws-cat-chip:hover .ws-cat-tip,.ws-tree-row .ws-cat-chip:hover .ws-cat-tip{left:auto;right:calc(100% + 6px);}
.ws-difficulty-section[hidden]{display:none!important;}
.ws-side-foot{flex:0 0 auto;flex-shrink:0;padding:12px 12px 16px;border-top:1px solid var(--line);background:rgba(255,255,255,.55);overflow:visible;}
.ws-side-foot h6{margin-bottom:8px;flex-shrink:0;}
.ws-cat-types{display:flex;flex-direction:column;gap:2px;max-height:108px;overflow:auto;flex-shrink:0;}
.ws-difficulty-stats{display:flex;flex-direction:column;gap:2px;flex-shrink:0;}
.ws-cat-type-item{display:flex;align-items:center;gap:8px;padding:6px 8px!important;cursor:pointer;}
.ws-cat-type-item.active{background:rgba(58,91,217,.09)!important;color:var(--c-accent)!important;font-weight:500;}
.ws-cat-type-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;}
.ws-side-foot .item.ws-foot-stat{cursor:default;}
.ws-side-foot .item.ws-foot-stat:hover{background:transparent;color:var(--ink-2);}
.ws-overall-stat{padding:8px 10px;font-family:var(--mono);font-size:11px;color:var(--ink-3);display:flex;justify-content:space-between;align-items:center;gap:8px;}
.ws-overall-stat b{color:var(--ink);font-weight:600;}
.ws-file-nav-flash{outline:2px solid rgba(58,91,217,.45)!important;outline-offset:2px;border-radius:6px;transition:outline-color .4s;}
.ws-linear-path-active{outline:2px solid rgba(58,91,217,.35);outline-offset:2px;border-radius:8px;background:rgba(58,91,217,.04)!important;}
.pv-canvas-wrap{position:relative;min-width:0;min-height:0;flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%;}
body.ws-repr-orbital .pv-canvas-wrap,
body.ws-repr-linear .pv-canvas-wrap{overflow:hidden;}
body.ws-repr-orbital .ws-shared-canvas,
body.ws-repr-linear .ws-shared-canvas{flex:1;min-height:0;height:100%;display:flex;flex-direction:column;}
.ws-shared-canvas{
  display:flex;
  flex-direction:column;
  flex:1;
  min-height:0;
  height:100%;
  align-items:stretch;
  justify-content:stretch;
  --ws-canvas-chrome-top:46px;
  --ws-canvas-chrome-bot:34px;
}
.pv-canvas.ws-shared-canvas{min-height:0!important;}
.ws-graph-layer{position:absolute;inset:0;display:flex;flex-direction:column;min-height:0;overflow:hidden;}
body.ws-repr-orbital .ws-graph-layer--linear{visibility:hidden;pointer-events:none;z-index:0;}
body.ws-repr-linear .ws-graph-layer--orbital{visibility:hidden;pointer-events:none;z-index:0;}
body.ws-repr-orbital .ws-graph-layer--orbital{z-index:2;}
body.ws-repr-linear .ws-graph-layer--linear{z-index:2;}
.ws-graph-layer--orbital{align-items:stretch;justify-content:stretch;}
.ws-graph-layer--orbital .pv-svg{
  position:absolute;inset:0;
  width:100%;height:100%;
  flex:none;min-height:0;
}
body.ws-canvas-resizing,body.ws-canvas-resizing .pv-svg{cursor:default!important;user-select:auto;}
.canvas-resize-handle{display:none!important;}
.ws-focus-toast{position:fixed;z-index:9999;pointer-events:none;max-width:min(280px,calc(100vw - 28px));padding:8px 12px;border-radius:8px;font-family:var(--mono);font-size:11px;line-height:1.35;color:var(--ink);background:rgba(255,255,255,.96);border:1px solid var(--line);box-shadow:0 8px 24px rgba(0,0,0,.12);opacity:0;transform:translateY(4px) scale(.98);transition:opacity .18s var(--ease),transform .18s var(--ease);}
.ws-focus-toast.show{opacity:1;transform:translateY(0) scale(1);}
.ws-cat-node-list{position:absolute;left:16px;bottom:16px;z-index:20;width:min(320px,calc(100% - 32px));max-height:min(340px,46vh);background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 32px rgba(0,0,0,.12);backdrop-filter:blur(8px);display:flex;flex-direction:column;overflow:hidden;pointer-events:auto;}
.ws-cat-node-list[hidden]{display:none!important;}
.ws-cat-node-list-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:11px;font-weight:600;color:var(--ink);}
.ws-cat-node-list-close{appearance:none;border:0;background:transparent;cursor:pointer;font-size:18px;line-height:1;color:var(--ink-3);padding:4px 6px;pointer-events:auto;flex-shrink:0;}
.ws-cat-node-list-close:hover{color:var(--c-red);}
.ws-cat-node-list-body{overflow:auto;padding:6px;display:flex;flex-direction:column;gap:2px;}
.ws-cat-node-list-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;appearance:none;border:0;background:transparent;cursor:pointer;padding:7px 8px;border-radius:7px;font-size:12.5px;color:var(--ink-2);}
.ws-cat-node-list-item:hover{background:rgba(0,0,0,.04);color:var(--ink);}
.ws-cat-node-list-item-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ws-cat-node-list-empty{padding:10px 8px;font-size:12px;color:var(--ink-3);}
.pv-node.ws-cat-match .ring{stroke-width:2.2;filter:drop-shadow(0 0 6px rgba(58,91,217,.35));}
h6{font-family:var(--mono);font-size:10.5px;font-weight:500;color:var(--ink-3);margin:0 0 10px;padding-left:8px;display:flex;align-items:center;justify-content:space-between;}
h6 .add{cursor:pointer;color:var(--c-accent);padding:0 6px;border-radius:4px;font-weight:600;}
h6 .add:hover{background:rgba(58,91,217,.1);}
.item{display:flex;align-items:center;gap:9px;padding:7px 10px;margin-bottom:2px;font-size:13px;color:var(--ink-2);border-radius:7px;cursor:pointer;transition:all .15s var(--ease);}
.item:hover{background:rgba(0,0,0,.035);color:var(--ink);}
.item.active{background:rgba(58,91,217,.08);color:var(--c-accent);font-weight:500;}
.item .count{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--ink-3);background:rgba(0,0,0,.04);padding:2px 6px;border-radius:4px;}
.item.active .count{background:rgba(58,91,217,.12);color:var(--c-accent);}
body.ws-repr-orbital #tabs .pv-tab[data-mode="topic"]{display:none!important;}
.pv-canvas{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;min-height:min(62vh,640px);background-color:#eaf1f5;background-image:linear-gradient(to right,rgba(148,163,184,.12) 1px,transparent 1px),linear-gradient(to bottom,rgba(148,163,184,.12) 1px,transparent 1px),linear-gradient(120deg,#e6eef3 0%,#e8f0f2 40%,#e4f1ea 100%);background-size:32px 32px,32px 32px,100% 100%;}
.pv-canvas::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(circle at 15% 20%,rgba(220,232,240,.6) 0%,transparent 45%),radial-gradient(circle at 90% 90%,rgba(225,240,232,.5) 0%,transparent 50%);}
.pv-canvas .corner{position:absolute;top:10px;left:14px;z-index:3;font-family:var(--mono);font-size:10px;color:var(--ink-3);letter-spacing:.08em;background:rgba(255,255,255,.5);padding:4px 8px;border-radius:6px;backdrop-filter:blur(6px);border:1px solid var(--line-2);}
.ws-shared-canvas .canvas-tools{
  position:absolute;top:8px;left:auto;right:14px;z-index:4;
  display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end;
  max-width:min(72%,520px);min-height:0;
  padding:0;margin:0;
  background:transparent;
  border:0;
  backdrop-filter:none;
  box-sizing:border-box;
  pointer-events:none;
}
.ws-shared-canvas .canvas-tools > *{pointer-events:auto;}
.ws-shared-canvas .canvas-tools .chip,
.ws-shared-canvas .canvas-tools .zoom-ctrl{
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(10px);
  box-shadow:0 1px 4px rgba(0,0,0,.08);
}
.canvas-tools{position:absolute;top:14px;right:14px;z-index:2;display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end;max-width:60%;}
.canvas-tools .chip{background:rgba(255,255,255,.7);backdrop-filter:blur(6px);box-shadow:0 1px 3px rgba(0,0,0,.04);}
.zoom-ctrl{display:inline-flex;align-items:stretch;background:rgba(255,255,255,.7);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:7px;overflow:hidden;font-family:var(--mono);box-shadow:0 1px 3px rgba(0,0,0,.04);}
.zoom-ctrl button{appearance:none;border:0;background:transparent;cursor:pointer;width:26px;font-size:14px;color:var(--ink-2);transition:all .15s var(--ease);font-family:var(--mono);}
.zoom-ctrl button:hover{background:rgba(0,0,0,.05);color:var(--ink);}
.zoom-ctrl span{font-size:10.5px;color:var(--ink-2);padding:0 8px;border-left:1px solid var(--line);border-right:1px solid var(--line);min-width:46px;text-align:center;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;}
.zoom-ctrl span:hover{background:rgba(0,0,0,.04);}
.breadcrumb{position:absolute;top:calc(var(--ws-canvas-chrome-top,46px) + 6px);left:50%;transform:translateX(-50%);z-index:4;display:none;align-items:center;gap:6px;background:rgba(255,255,255,.85);border:1px solid var(--line);border-radius:8px;padding:5px 10px;font-family:var(--mono);font-size:11px;color:var(--ink-2);box-shadow:0 4px 12px rgba(0,0,0,.06);backdrop-filter:blur(6px);max-width:70%;}
.breadcrumb.show{display:flex;}
.breadcrumb .crumb{cursor:pointer;color:var(--ink-3);transition:color .15s;}
.breadcrumb .crumb:hover{color:var(--c-accent);}
.breadcrumb .crumb.current{color:var(--ink);font-weight:600;}
.breadcrumb .sep{color:var(--ink-3);opacity:.5;}
.breadcrumb .exit{cursor:pointer;color:var(--ink-3);padding:0 6px;border-radius:4px;margin-left:4px;border-left:1px solid var(--line);}
.breadcrumb .exit:hover{color:var(--c-red);}
.pv-canvas .legend-bot{position:absolute;bottom:14px;left:16px;right:16px;z-index:2;display:flex;gap:14px;font-family:var(--mono);font-size:10px;color:var(--ink-3);flex-wrap:wrap;align-items:center;}
.ws-shared-canvas .legend-bot{
  bottom:10px;left:14px;right:14px;z-index:4;
  min-height:0;padding:0;margin:0;
  background:transparent;
  border:0;
  backdrop-filter:none;
  box-sizing:border-box;
}
.ws-shared-canvas .legend-bot .legend-tone{
  padding:4px 8px;border-radius:6px;
  background:rgba(255,255,255,.78);
  backdrop-filter:blur(8px);
  border:1px solid var(--line-2);
  box-shadow:0 1px 3px rgba(0,0,0,.06);
}
.ws-shared-canvas #hint-text{
  display:inline-block;
  padding:5px 10px;border-radius:7px;
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(10px);
  border:1px solid var(--line-2);
  box-shadow:0 1px 4px rgba(0,0,0,.08);
  color:var(--ink-2);
  font-weight:500;
}
.ws-shared-canvas .ws-canvas-tools,
.ws-shared-canvas .ws-canvas-legend,
.ws-shared-canvas #meta-corner,
.ws-shared-canvas #breadcrumb{z-index:4;}
.legend-tone{font-family:var(--mono);font-size:9px;color:var(--ink-2);text-transform:uppercase;letter-spacing:0.06em;}
.orb-row-tone{display:inline-block;vertical-align:middle;min-height:14px;border-radius:1px;}
.pv-svg{width:100%;height:100%;display:block;position:relative;z-index:1;cursor:grab;}
.pv-svg.panning{cursor:grabbing;}
.pv-edge{fill:none;stroke:rgba(0,0,0,.28);stroke-width:1.4;stroke-linecap:round;transition:opacity .25s var(--ease),stroke .25s var(--ease),stroke-width .25s var(--ease);}
.pv-edge.active{stroke:url(#cEdgeGrad);stroke-width:1.8;}
.pv-edge.pv-edge-problem{stroke:rgba(214,80,130,.52);}
.pv-edge.pv-edge-problem.active,.pv-edge.pv-edge-problem.sel-ring{stroke:url(#cEdgeGrad);}
.pv-edge.sel-ring{stroke:url(#cEdgeGrad);stroke-width:1.85;opacity:1;}
.pv-edge.dim:not(.sel-ring){opacity:0.32;}
.pv-node.ws-problem-node .ring{stroke:rgba(214,80,130,.45);}
.pv-node.ws-problem-node .problem-dot{pointer-events:none;}
#svg[data-zoom-tier="far"] .pv-node.ws-problem-node .ring{opacity:.55;}
#svg[data-zoom-tier="mid"] .pv-node.ws-problem-node .node-title{font-family:var(--mono);font-weight:700;}
.pv-node{cursor:pointer;transition:opacity .35s var(--ease);}
body.mode-customize .pv-node{cursor:grab;}
body.mode-customize .pv-node.dragging{cursor:grabbing;}
.pv-node .ring{fill:var(--paper);stroke:rgba(0,0,0,.22);stroke-width:1.4;transition:all .25s var(--ease);filter:drop-shadow(0 2px 6px rgba(0,0,0,.06));}
.pv-node.prev-selected:not(.selected) .ring{fill:var(--prev-ring-fill);stroke:var(--prev-ring-stroke);stroke-width:1.05;}
.pv-node .prog-track{fill:none;stroke:rgba(0,0,0,.07);stroke-width:2.5;transition:stroke .25s var(--ease);}
.pv-node .prog-arc{fill:none;stroke-width:3;stroke-linecap:round;transition:stroke-dasharray .6s var(--spring),stroke .25s var(--ease);}
.pv-node text{font-family:var(--sans);font-size:11.5px;font-weight:600;fill:var(--ink);text-anchor:middle;dominant-baseline:central;pointer-events:none;paint-order:stroke;stroke:var(--paper);stroke-width:3;stroke-linejoin:round;}
.pv-node text.node-title{font-size:11.5px;}
.pv-node text.sub{font-family:var(--mono);font-size:9px;font-weight:400;fill:var(--ink-3);letter-spacing:.02em;paint-order:stroke;stroke:var(--paper);stroke-width:3;transition:opacity .2s;}
.pv-node text.hbadge{font-size:9px;font-weight:700;fill:#fff;stroke:none;}
.pv-node:hover .ring{stroke:var(--ink);stroke-width:2;}
.pv-node:hover .prog-track{stroke:rgba(0,0,0,.12);}
.pv-node.active .ring{stroke-width:2;}
.pv-node.selected .ring{stroke-width:2.5;}
.pv-node.selected.accent .ring{fill:var(--c-accent);stroke:var(--c-accent);}
.pv-node.selected.mint .ring{fill:var(--c-mint);stroke:var(--c-mint);}
.pv-node.selected.peach .ring{fill:var(--c-peach);stroke:var(--c-peach);}
.pv-node.selected.amber .ring{fill:var(--c-amber);stroke:var(--c-amber);}
.pv-node.selected.pink .ring{fill:var(--c-pink);stroke:var(--c-pink);}
.pv-node.selected.red .ring{fill:var(--c-red);stroke:var(--c-red);}
.pv-node.selected .prog-track{stroke:rgba(255,255,255,.3);}
.pv-node.selected .prog-arc{stroke:#fff !important;}
.pv-node.selected text,.pv-node.selected text.sub,.pv-node.selected text tspan{fill:#fff;stroke:none;}
.pv-node.dim{opacity:0.32;}
.pv-node.selected{opacity:1;}
.node-chips{position:absolute;display:none;pointer-events:none;z-index:5;transform:translate(-50%,-100%);padding-bottom:10px;}
body.mode-customize .node-chips.show{display:flex;gap:4px;pointer-events:auto;}
.node-chip{background:var(--paper);border:1px solid var(--line);width:26px;height:26px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink-2);box-shadow:0 4px 12px rgba(0,0,0,.1);transition:all .15s var(--ease);font-size:13px;}
.node-chip:hover{background:#fff;transform:translateY(-1px);color:var(--ink);}
.node-chip.danger:hover{color:var(--c-red);border-color:rgba(208,64,64,.3);}
.node-chip.add:hover{color:var(--c-accent);border-color:rgba(58,91,217,.3);}
.node-chip.focus:hover{color:var(--c-mint);border-color:rgba(26,163,122,.3);}
.minimap{position:absolute;bottom:40px;right:14px;width:130px;height:110px;background:rgba(255,255,255,.85);border:1px solid var(--line);border-radius:8px;backdrop-filter:blur(6px);box-shadow:0 4px 12px rgba(0,0,0,.06);overflow:hidden;z-index:4;}
.minimap svg{width:100%;height:100%;display:block;}
.minimap .vp{fill:rgba(58,91,217,.08);stroke:var(--c-accent);stroke-width:2;}
.pv-right{min-width:0;min-height:0;border-left:1px solid var(--line);padding:18px 16px;background:linear-gradient(180deg,rgba(0,0,0,.012),transparent);overflow-y:auto;display:flex;flex-direction:column;gap:12px;}
#right-panel{display:flex;flex-direction:column;gap:12px;flex:1;min-height:0;}
.pv-detail{padding:14px;background:var(--paper);border:1px solid var(--line);border-radius:10px;}
.pv-detail .name{font-size:13.5px;font-weight:600;color:var(--ink);display:flex;align-items:center;flex-wrap:wrap;gap:6px;}
.pv-detail .meta{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);margin-top:4px;line-height:1.5;}
.orb-cat-pill{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:600;padding:2px 8px;border-radius:4px;background:rgba(0,0,0,.05);}
.prog{height:5px;background:rgba(0,0,0,.06);border-radius:99px;overflow:hidden;margin:14px 0 12px;}
.prog i{display:block;height:100%;background:linear-gradient(90deg,var(--c-accent),var(--c-mint));border-radius:99px;transition:width .8s var(--ease);}
.pv-mini-stat{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;color:var(--ink-3);padding:5px 0;}
.pv-mini-stat b{color:var(--ink);font-weight:500;}
.field{margin-bottom:12px;}
.field label{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-bottom:6px;letter-spacing:.04em;text-transform:uppercase;}
.field label b{font-family:var(--mono);font-size:11px;color:var(--ink);font-weight:600;text-transform:none;}
.field input[type="text"],.field input[type="number"]{width:100%;padding:7px 10px;font:500 12.5px var(--sans);color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:7px;outline:none;transition:all .15s var(--ease);}
.field input:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px rgba(58,91,217,.12);}
.field input[type="range"]{width:100%;height:6px;border-radius:99px;background:rgba(0,0,0,.06);outline:none;appearance:none;-webkit-appearance:none;}
.field input[type="range"]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--c-accent);cursor:pointer;border:2px solid #fff;box-shadow:0 2px 6px rgba(58,91,217,.4);}
.swatches{display:flex;gap:6px;flex-wrap:wrap;}
.swatch{width:22px;height:22px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:all .15s var(--ease);box-shadow:0 1px 3px rgba(0,0,0,.1);}
.swatch.on{border-color:var(--ink);transform:scale(1.1);}
.seg{display:inline-flex;background:rgba(0,0,0,.04);border-radius:7px;padding:2px;border:1px solid var(--line-2);width:100%;}
.seg button{flex:1;appearance:none;border:0;background:transparent;cursor:pointer;padding:6px 8px;border-radius:5px;font:600 11px var(--sans);color:var(--ink-3);transition:all .2s var(--ease);display:inline-flex;align-items:center;justify-content:center;gap:5px;}
.seg button.on{background:var(--paper);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.06);}
.form-actions{display:flex;gap:8px;margin-top:8px;}
.btn{appearance:none;border:0;cursor:pointer;flex:1;padding:9px 12px;border-radius:8px;font:600 11.5px var(--sans);transition:all .15s var(--ease);}
.btn.primary{background:var(--c-accent);color:#fff;box-shadow:0 4px 12px rgba(58,91,217,.25);}
.btn.primary:hover{background:#2f4dc6;transform:translateY(-1px);}
.btn.danger{background:rgba(208,64,64,.08);color:var(--c-red);border:1px solid rgba(208,64,64,.2);}
.btn.danger:hover{background:rgba(208,64,64,.14);}
.kbd-row{margin-top:10px;padding-top:12px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:6px;}
.kbd-row div{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10.5px;color:var(--ink-3);}
.kbd{background:rgba(0,0,0,.06);padding:1px 6px;border-radius:4px;font-family:var(--mono);font-size:10px;color:var(--ink-2);}
.ws-graph-layer--linear{align-items:stretch;justify-content:stretch;}
.ws-graph-layer--linear .ws-graph-embed{
  position:absolute;inset:0;
  display:flex;flex-direction:column;min-height:0;
}
.ws-graph-layer--linear .dsa-mind-scroll{
  position:absolute;inset:0;overflow:auto;
  width:100%!important;max-width:none!important;
  min-height:0!important;height:auto!important;
  padding:52px 12px 42px!important;
  margin:0!important;
  background:transparent!important;
  -webkit-overflow-scrolling:touch;
}
.ws-hidden-mode-seg{display:none!important;}
.ws-graph-layer--linear .ws-graph-viewport,
.ws-graph-layer--linear .dsa-graph-viewport{flex:1;min-height:0;height:100%;display:flex;flex-direction:column;position:relative;padding:0!important;margin:0!important;overflow:hidden!important;background:transparent!important;}
.ws-graph-layer--linear .dsa-graph-layer{flex:1;min-height:0;display:flex;flex-direction:column;background:transparent!important;}
.ws-graph-layer--linear .dsa-graph-panel{flex:1;min-height:0;display:flex;flex-direction:column;margin-top:0!important;background:transparent!important;}
.ws-graph-layer--linear .dsa-graph-hint{display:none!important;}
.ws-graph-layer--linear .dsa-mind-canvas{flex:1;min-height:0;height:100%;display:flex;flex-direction:column;position:relative;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;}
.ws-graph-layer--linear .dsa-mind-canvas-body{flex:1;min-height:0!important;position:relative;overflow:hidden;background:transparent!important;}
.ws-offscreen-toolbar-host{position:fixed;left:-9999px;top:0;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);visibility:hidden;pointer-events:none;}
.ws-json-panel textarea{width:100%;min-height:220px;font-family:var(--mono);font-size:12px;padding:10px;border-radius:8px;border:1px solid var(--line);}
.ws-json-panel .form-actions{display:flex;gap:8px;margin-top:10px;}
.ws-json-panel .btn{flex:0 auto;padding:9px 14px;}
.ws-status{max-width:1500px;margin:10px auto 0;font-size:12px;color:var(--ink-2);}
body.mode-json .pv-canvas-wrap{display:none;}
body.mode-json .pv-body{grid-template-columns:230px 1fr;}
body.mode-json .pv-right{border-left:0;}
#right-panel-json{display:none;}
body.mode-json #right-panel-json{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0;}
body.mode-json #right-panel-inspector{display:none;}
body.mode-json #right-panel{display:none!important;}
body.ws-repr-linear:not(.mode-json) .pv-body{grid-template-columns:230px minmax(0,1fr);}
body.ws-repr-linear:not(.mode-json) .pv-right{display:none!important;}
body.ws-repr-linear:not(.mode-json) #right-panel{display:none!important;}
body.ws-repr-linear:not(.mode-json) #right-panel-inspector{display:none!important;}
body.ws-repr-orbital #right-panel-inspector{display:none!important;}
body.ws-repr-orbital:not(.mode-json) #right-panel-json{display:none!important;}
body.ws-repr-orbital:not(.mode-json) #right-panel{display:flex!important;}
@media (max-width:1100px){body{height:auto;min-height:100vh;overflow:auto;}.preview{height:auto;max-height:none;min-height:calc(100vh - 48px);}.pv-body{grid-template-columns:1fr;}.pv-side,.pv-right{border:0;border-bottom:1px solid var(--line);}.ws-file-tree{max-height:min(320px,42vh);}.pv-canvas{min-height:480px;}.minimap{display:none;}body.mode-json .pv-body{grid-template-columns:1fr;}}
