:root{--font:system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", Ubuntu, sans-serif;--bg:#f4f6f9;--dots:#dde2ea;--surface:#fff;--surface-2:#f7f8fa;--border:#dfe3ea;--text:#1d2430;--muted:#5f6878;--accent:#2563eb;--accent-soft:#2563eb24;--warn:#e8590c;--edge:#a3acba;--pill:#fff4cc;--pill-text:#5c4600;--root:#dbe7ff;--inner:#fff;--leaf:#e3f5e6;--bar:#2563eb;--track:#1d243014;--sim:#d97706;--sim-soft:#d977064d;--sim-text:#fff;--shadow:0 1px 2px #10182814, 0 2px 6px #1018280f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#11151c;--dots:#232a35;--surface:#1a1f28;--surface-2:#212733;--border:#2f3744;--text:#e6e9ef;--muted:#9aa3b2;--accent:#5b8cff;--accent-soft:#5b8cff33;--warn:#ff8a4c;--edge:#556072;--pill:#3a3220;--pill-text:#f6dd9a;--root:#1f2f4f;--inner:#1c222c;--leaf:#1b3326;--bar:#5b8cff;--track:#ffffff14;--sim:#fbbf24;--sim-soft:#fbbf244d;--sim-text:#1d2430;--shadow:0 1px 2px #0006, 0 2px 8px #00000040;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px/1.4 var(--font);flex-direction:column;display:flex;overflow:hidden}button{font:inherit;color:inherit}.toolbar{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 12px;display:flex}.brand{align-items:center;gap:8px;margin-right:4px;font-size:14px;font-weight:650;display:flex}.group{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;gap:2px;padding:2px;display:flex}.group button{cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:6px;padding:4px 8px}.group button:hover:not(:disabled){background:var(--accent-soft)}.group button:disabled{opacity:.4;cursor:default}.group button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.zoom #zoom-level{font-variant-numeric:tabular-nums;min-width:52px}main{flex:1;min-height:0;display:flex}.canvas{background-color:var(--bg);background-image:radial-gradient(var(--dots) 1px, transparent 1px);background-size:22px 22px;flex:1;min-width:0;position:relative;overflow:hidden}.canvas svg{touch-action:none;-webkit-user-select:none;user-select:none;cursor:default;width:100%;height:100%;position:absolute;inset:0}.canvas svg.panning{cursor:grabbing}#viewport{transform-origin:0 0}#viewport.animate{transition:transform .25s}.splitter{cursor:col-resize;background:var(--border);opacity:.6;width:5px}.splitter:hover{background:var(--accent)}.panel{background:var(--surface);flex-direction:column;gap:14px;width:380px;padding:14px;display:flex;overflow:hidden}.panel section{flex-direction:column;min-height:0;display:flex}.panel section.grow{flex:1}.panel h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px;font-size:12px;font-weight:650}.scroll{border:1px solid var(--border);border-radius:8px;min-height:60px;overflow:auto}.dist{background:var(--track);border-radius:5px;gap:2px;height:10px;margin-bottom:8px;display:flex;overflow:hidden}.dist span{min-width:2px}.dist span.none{background:repeating-linear-gradient(45deg, var(--edge) 0 3px, transparent 3px 6px)}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}th{background:var(--surface);text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:5px 8px;font-size:12px;font-weight:600;position:sticky;top:0}td{border-bottom:1px solid var(--border);vertical-align:top;padding:5px 8px}tbody tr{cursor:pointer}tbody tr:hover{background:var(--surface-2)}tbody tr.selected{background:var(--accent-soft)}.num{text-align:right;white-space:nowrap}td.path .crumbs{color:var(--muted);font-size:11.5px}.swatch{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:7px;display:inline-block}.chip{white-space:nowrap;color:var(--text);background:color-mix(in srgb, var(--c) 22%, transparent);border:1px solid color-mix(in srgb, var(--c) 55%, transparent);border-radius:9px;padding:0 7px;font-size:12px;display:inline-block}.muted{color:var(--muted);margin:6px 0 0}.total{margin:8px 0 0;font-weight:650}.warnings{color:var(--warn)}.warnings ul{margin:4px 0 0;padding-left:18px}.statusbar{background:var(--surface);border-top:1px solid var(--border);color:var(--muted);white-space:nowrap;justify-content:space-between;gap:16px;padding:5px 12px;display:flex;overflow:hidden}#status{max-width:100%;color:var(--text);text-overflow:ellipsis;flex:none;overflow:hidden}#status.warn{color:var(--warn)}.hints{text-align:right;text-overflow:ellipsis;flex:1 1 0;min-width:0;overflow:hidden}svg text{font-family:var(--font);fill:var(--text)}.edge{fill:none;stroke:var(--edge);stroke-linecap:round}.pill rect{fill:var(--pill)}.pill text{fill:var(--pill-text);text-anchor:middle;dominant-baseline:central;font-size:11px;font-weight:600}.link path{fill:none;stroke:var(--c);stroke-linejoin:round}.link path.head{fill:var(--c);stroke:none}.link{cursor:pointer}.link path.hit{stroke:#0000;stroke-width:14px;stroke-linecap:round}.link:hover path.hit{stroke:var(--c);opacity:.15}.link.selected path.hit{stroke:var(--accent);opacity:.3}.junction{fill:var(--c)}.jump{cursor:pointer}.jump path.wire{fill:none;stroke:var(--edge);stroke-dasharray:7 5;stroke-linecap:round}.jump path.head{fill:var(--edge)}.jump path.hit{fill:none;stroke:#0000;stroke-width:14px;stroke-linecap:round}.jump:hover path.hit{stroke:var(--edge);opacity:.2}.jump.strong path.wire{stroke:var(--accent)}.jump.strong path.head{fill:var(--accent)}.jump.selected path.hit{stroke:var(--accent);opacity:.3}.stripe.jump-stripe{fill:var(--edge)}.link.faded,.junction.faded{opacity:.2}.node,.exit,.pill{cursor:pointer}.card{stroke:var(--border);stroke-width:1.25px;filter:drop-shadow(0 1px 2px #1018281f)}.node.root .card{fill:var(--root)}.node.inner .card{fill:var(--inner)}.node.leaf .card{fill:var(--leaf)}.node:hover .card,.exit:hover .card{stroke:var(--accent)}.halo{fill:none;stroke:none}.selected .halo{stroke:var(--accent-soft);stroke-width:6px}.selected .card,.selected:hover .card{stroke:var(--accent);stroke-width:2px}.node.incomplete:not(.selected) .card{stroke:var(--warn);stroke-width:1.75px;stroke-dasharray:5 3}.node .label,.exit .label{font-size:13px;font-weight:600}.node .reach{font-variant-numeric:tabular-nums;font-size:11.5px}.node.leaf .reach{font-weight:650}.node .reach .dim{fill:var(--muted);font-weight:400}.bar-track{fill:var(--track)}.bar{fill:var(--bar)}.node[style] .bar,.stripe{fill:var(--c)}.caption{text-anchor:end;fill:var(--muted);font-size:10.5px}.caption.warn{fill:var(--warn)}.caption.routes{text-anchor:start}td.path .crumbs .routes{white-space:nowrap}.exit .card{fill:var(--surface);stroke:var(--c);stroke-width:2px}.exit:hover .card{stroke:var(--c)}.exit .tint{fill:var(--c);opacity:.14;pointer-events:none}.exit.unlinked .card{stroke-dasharray:5 3}.exit .dot{fill:var(--c)}.exit .prob{font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}.node.drop-target .halo{stroke:var(--accent);stroke-width:6px;opacity:.5}#svg.picking,#svg.picking .node{cursor:crosshair}.exit.drop-target .halo{stroke:var(--c);stroke-width:6px;opacity:.5}.dragline{fill:none;stroke:var(--accent);stroke-width:2px;stroke-dasharray:6 4;pointer-events:none}#overlay{pointer-events:none}.node,.exit,.edge,.pill,.link,.jump{transition:opacity .2s}#svg.simulating .node:not(.sim),#svg.simulating .exit:not(.sim){opacity:.35}#svg.simulating .edge:not(.sim),#svg.simulating .pill:not(.sim){opacity:.25}#svg.simulating .link:not(.sim),#svg.simulating .junction{opacity:.12}#svg.simulating .link.sim{opacity:1}#svg.simulating .jump:not(.sim){opacity:.2}.jump.sim path.wire{stroke:var(--sim);stroke-width:4px}.jump.sim path.head{fill:var(--sim)}.edge.sim{stroke:var(--sim);stroke-width:4px}.pill.sim rect{fill:var(--sim)}.pill.sim text{fill:var(--sim-text)}.link.sim path.wire{stroke-width:4px}.node.sim .card,.node.sim:hover .card,.exit.sim .card,.exit.sim:hover .card{stroke:var(--sim);stroke-width:2.5px;stroke-dasharray:none}.sim .halo{stroke:var(--sim-soft);stroke-width:6px}.sim-now .halo{stroke:var(--sim);animation:.7s ease-out infinite alternate sim-pulse}@keyframes sim-pulse{0%{stroke-width:3px;opacity:.9}to{stroke-width:12px;opacity:.25}}@media (prefers-reduced-motion:reduce){.sim-now .halo{animation:none}}.menu{z-index:10;background:var(--surface);border:1px solid var(--border);border-radius:8px;min-width:200px;padding:5px;position:fixed;box-shadow:0 8px 24px #1018282e}.menu button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;width:100%;padding:5px 10px 5px 26px;display:block;position:relative}.menu button:hover:not(:disabled),.menu button:focus-visible{background:var(--accent-soft);outline:none}.menu button:disabled{color:var(--muted);opacity:.6;cursor:default}.menu button.checked:before{content:"✓";position:absolute;left:9px}.menu hr{border:0;border-top:1px solid var(--border);margin:4px 0}.menu .heading{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:4px 10px 2px;font-size:11px;font-weight:650}dialog{border:1px solid var(--border);background:var(--surface);width:min(400px,100vw - 32px);color:var(--text);border-radius:12px;padding:0;box-shadow:0 16px 48px #10182840}dialog::backdrop{background:#10182859}dialog form{flex-direction:column;gap:10px;padding:18px;display:flex}dialog h2{margin:0 0 2px;font-size:15px}dialog p{margin:0}dialog label{flex-direction:column;gap:4px;font-size:12px;font-weight:600;display:flex}dialog input{font:inherit;color:inherit;border:1px solid var(--border);background:var(--surface-2);border-radius:7px;padding:7px 9px;font-size:13px;font-weight:400}dialog input:focus{outline:2px solid var(--accent);outline-offset:-1px}dialog input:disabled{opacity:.6}dialog fieldset{border:0;margin:0;padding:0}dialog legend{margin-bottom:6px;padding:0;font-size:12px;font-weight:600}.swatches{flex-wrap:wrap;gap:6px;display:flex}dialog label.swatch-option{cursor:pointer;display:block;position:relative}.swatch-option input[type=radio]{opacity:0;pointer-events:none;position:absolute}.swatch-option span{border:2px solid var(--surface);width:26px;height:26px;box-shadow:0 0 0 1px var(--border);background:var(--c);border-radius:50%;display:block}.swatch-option span.auto{background:linear-gradient(135deg, var(--c) 0 44%, var(--surface) 44% 56%, var(--c) 56%)}.swatch-option.custom span:not(.picked){background:conic-gradient(#e11d48,#d97706,#16a34a,#0d9488,#2563eb,#8b5cf6,#e11d48)}.swatch-option.custom input[type=color]{opacity:0;cursor:pointer;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.swatch-option input:checked+span{box-shadow:0 0 0 2px var(--accent)}.swatch-option input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}dialog .hint{color:var(--muted);margin-top:-4px;font-size:12px}dialog .error{color:var(--warn);min-height:1em}dialog .error:empty{display:none}.buttons{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.buttons button{border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:7px;padding:6px 14px}.buttons button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.buttons button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (max-width:760px){main{flex-direction:column}.splitter,.hints,.brand{display:none}.panel{border-top:1px solid var(--border);height:38%;overflow:auto;width:auto!important}.toolbar{gap:6px;padding:6px}}
