:root{--bg: #090b11;--panel: #0e1219;--panel-2: #131822;--panel-3: #182030;--line: #212a3a;--line-soft: #1a2130;--text: #dde5f2;--text-2: #9aa7bd;--text-3: #67738a;--accent: #6ea8ff;--ok: #35c2a5;--run: #62d17a;--warn: #f2b544;--bad: #f2545b;--info: #4b8dff;--violet: #8f7bff;--orange: #ff9d5c;--s-EMPTY: #303a4c;--s-STARTING: #f2b544;--s-READY: #35c2a5;--s-CLAIMED: #8f7bff;--s-ALLOCATED: #4b8dff;--s-RUNNING: #62d17a;--s-DRAINING: #ff9d5c;--s-TERMINATED: #46506a;--s-FAILED: #f2545b;--radius: 8px;--mono: "SF Mono", "JetBrains Mono", "Cascadia Mono", ui-monospace, Menlo, Consolas, monospace;--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:13px;overflow:hidden;-webkit-font-smoothing:antialiased}button{font-family:inherit;color:inherit}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:#232c3c;border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#2e3849}::-webkit-scrollbar-track{background:transparent}.app{display:grid;grid-template-rows:52px 1fr;grid-template-columns:296px 1fr 372px;grid-template-areas:"top top top" "rail main side";height:100%}.topbar{grid-area:top;display:flex;align-items:center;gap:12px;padding:0 12px;overflow:hidden;background:linear-gradient(180deg,#0f141d,#0b0f16);border-bottom:1px solid var(--line);z-index:10}.brand{display:flex;align-items:baseline;gap:9px;padding-right:2px;flex:none}.brand b{font-size:14px;letter-spacing:-.2px;font-weight:650}.brand span{font-size:10.5px;color:var(--text-3);letter-spacing:.06em;text-transform:uppercase}.rail{grid-area:rail;background:var(--panel);border-right:1px solid var(--line);overflow-y:auto;padding:12px 12px 40px}.main{grid-area:main;display:grid;grid-template-rows:1fr 168px;min-width:0;background:radial-gradient(1100px 620px at 55% 32%,#0f1520,#090b11 72%)}.side{grid-area:side;background:var(--panel);border-left:1px solid var(--line);overflow-y:auto;padding:12px 12px 40px}.seg{display:inline-flex;background:var(--panel-2);border:1px solid var(--line);border-radius:7px;padding:2px;gap:2px}.seg{flex:none}.seg button{background:none;border:0;padding:5px 9px;font-size:11.5px;border-radius:5px;cursor:pointer;color:var(--text-2);white-space:nowrap;transition:background .13s,color .13s}.seg button:hover{color:var(--text);background:#1b2231}.seg button.on{background:#253048;color:#fff;box-shadow:inset 0 0 0 1px #33415f}.seg button.on[data-accent]{box-shadow:inset 0 0 0 1px currentColor}.seg button:disabled{opacity:.32;cursor:not-allowed}.btn{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:6px 10px;font-size:11.5px;cursor:pointer;color:var(--text-2);transition:.13s}.btn:hover{background:#1d2534;color:var(--text);border-color:#2e3849}.btn.primary{background:#172b4d;border-color:#26467e;color:#cfe0ff}.btn.primary:hover{background:#1d3760}.btn.danger{background:#2b1519;border-color:#59262c;color:#ffc4c8}.btn.danger:hover{background:#3a1a20}.btn:disabled{opacity:.35;cursor:not-allowed}.railsec{margin-bottom:16px}.railsec>h4{margin:0 0 8px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-weight:600}.card{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px 11px;margin-bottom:10px}.card h5{margin:0 0 7px;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);font-weight:600;display:flex;justify-content:space-between;align-items:center}.scenario-btn{display:block;width:100%;text-align:left;background:var(--panel-2);border:1px solid var(--line);border-radius:7px;padding:8px 10px;margin-bottom:6px;cursor:pointer;transition:.14s}.scenario-btn:hover{background:#1a2333;border-color:#2f3b52;transform:translate(1px)}.scenario-btn .t{font-size:12px;color:var(--text);font-weight:550;display:flex;align-items:center;gap:7px}.scenario-btn .d{font-size:10.5px;color:var(--text-3);margin-top:3px;line-height:1.4}.scenario-btn .num{width:17px;height:17px;flex:none;border-radius:4px;background:#1e2942;color:#7ea6e8;font-size:10px;display:grid;place-items:center;font-family:var(--mono)}.toggle{display:flex;align-items:center;justify-content:space-between;padding:6px 2px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle .lab{font-size:11.5px;color:var(--text-2)}.toggle .lab small{display:block;color:var(--text-3);font-size:10px;margin-top:2px}.toggle:hover .lab{color:var(--text)}.sw{width:30px;height:17px;border-radius:9px;background:#222b3b;position:relative;transition:background .16s;flex:none;border:1px solid #2b3547}.sw:after{content:"";position:absolute;top:1.5px;left:2px;width:12px;height:12px;border-radius:50%;background:#6b788f;transition:.16s}.sw.on{background:#1b3a5c;border-color:#2c5f96}.sw.on:after{transform:translate(12px);background:#63b3ff}.slider{width:100%;margin:5px 0 2px;accent-color:#4b8dff;height:3px}.slider-row{display:flex;justify-content:space-between;font-size:11px;color:var(--text-2)}.slider-row b{font-family:var(--mono);color:var(--text);font-weight:500}.canvas-wrap{position:relative;overflow:hidden}.canvas-head{position:absolute;top:12px;left:16px;right:16px;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none;z-index:3}.canvas-title{font-size:13.5px;font-weight:600;letter-spacing:-.1px}.canvas-sub{font-size:11px;color:var(--text-3);margin-top:2px;max-width:640px;line-height:1.45}.persp-hint{text-align:right;max-width:330px;font-size:10.5px;color:var(--text-3);line-height:1.5;background:#0a0d13b8;padding:7px 9px;border-radius:6px;border:1px solid var(--line-soft);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.persp-hint b{display:block;color:var(--text-2);font-size:11px;margin-bottom:3px}svg.diagram{width:100%;height:100%;display:block}svg.diagram text{pointer-events:none;-webkit-user-select:none;user-select:none}.n-hit{cursor:grab}.n-hit.is-drag{cursor:grabbing}svg.diagram.dragging,svg.diagram.panning{cursor:grabbing}.node-body{transition:opacity .3s ease,filter .3s ease}.breadcrumb{display:flex;align-items:center;gap:2px;font-size:11.5px;flex:none;white-space:nowrap}.breadcrumb button{background:none;border:0;color:var(--text-3);cursor:pointer;padding:4px 6px;white-space:nowrap;border-radius:5px;font-size:11.5px}.breadcrumb button:hover{background:#1a2130;color:var(--text)}.breadcrumb button.on{color:var(--text);background:#1e2739}.breadcrumb .sep{color:#38425a}.metrics{border-top:1px solid var(--line);background:var(--panel);display:grid;grid-template-columns:1fr 380px;min-height:0}.charts{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-soft)}.chart{background:var(--panel);padding:8px 10px 4px;min-width:0;position:relative}.chart .lab{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.chart .val{font-family:var(--mono);font-size:17px;font-weight:500;margin-top:1px;letter-spacing:-.4px}.chart .val small{font-size:10px;color:var(--text-3);margin-left:3px;font-family:var(--sans)}.chart svg{position:absolute;left:0;right:0;bottom:0;width:100%;height:46px}.logpane{border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.logpane header{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-bottom:1px solid var(--line-soft);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3)}.loglist{overflow-y:auto;flex:1;padding:2px 0 6px;font-family:var(--mono);font-size:10.5px}.logline{padding:2px 10px;display:flex;gap:7px;line-height:1.45;border-left:2px solid transparent}.logline:hover{background:#12172169}.logline .t{color:#4b5568;flex:none}.logline .n{color:#6f83a3;flex:none}.logline .m{color:#97a6bd}.logline.error{border-left-color:var(--bad);background:#2010141f}.logline.error .m{color:#ffb3b8}.logline.warn{border-left-color:var(--warn)}.logline.warn .m{color:#f5d08a}.logline .ids{color:#4e6b8f}.kv{display:grid;grid-template-columns:96px 1fr;gap:3px 8px;font-size:11.5px}.kv dt{color:var(--text-3)}.kv dd{margin:0;font-family:var(--mono);font-size:11px;color:var(--text);word-break:break-word}.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 7px;border-radius:4px;font-size:10px;font-family:var(--mono);letter-spacing:.03em;border:1px solid currentColor;background:color-mix(in srgb,currentColor 12%,transparent)}.dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.bar{height:5px;border-radius:3px;background:#1b2231;overflow:hidden;margin-top:4px}.bar>i{display:block;height:100%;border-radius:3px;transition:width .3s ease}.timeline{position:relative;margin-top:6px}.tl-item{display:grid;grid-template-columns:46px 1fr;gap:8px;padding:3px 0;position:relative}.tl-item .tt{font-family:var(--mono);font-size:10px;color:var(--text-3);text-align:right;padding-top:1px}.tl-item .tb{border-left:1px solid var(--line);padding-left:10px;position:relative}.tl-item .tb:before{content:"";position:absolute;left:-3.5px;top:5px;width:6px;height:6px;border-radius:50%;background:var(--text-3);box-shadow:0 0 0 2px var(--panel-2)}.tl-item.good .tb:before{background:var(--ok)}.tl-item.warn .tb:before{background:var(--warn)}.tl-item.bad .tb:before{background:var(--bad)}.tl-item .lab{font-size:11px;color:var(--text);line-height:1.4}.tl-item.bad .lab{color:#ffc0c4}.tl-item .det{font-size:10px;color:var(--text-3);margin-top:1px;line-height:1.4}.narr{border-left:2px solid var(--accent)}.narr .concept{font-size:10px;color:var(--text-3);font-family:var(--mono);margin:-3px 0 8px;letter-spacing:.01em}.narr ul{margin:0;padding-left:15px}.narr li{font-size:11.5px;line-height:1.55;color:var(--text-2);margin-bottom:5px}.narr li::marker{color:#3c485f}.narr li.good{color:#a5e5cf}.narr li.bad{color:#ffb3b8}.narr li.warn{color:#f7d79b}.racegrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.raceside{background:var(--panel-3);border:1px solid var(--line);border-radius:6px;padding:8px}.raceside.win{border-color:#2c6a56;background:#10241f}.raceside.lose{border-color:#6a4a24;background:#241c10}.raceside.err{border-color:#6a2c33;background:#241014}.raceside .who{font-size:11px;font-weight:600;margin-bottom:4px}.raceside .l{font-size:10px;color:var(--text-3);font-family:var(--mono);line-height:1.5}.legend{display:flex;flex-wrap:wrap;gap:4px 10px}.legend span{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--text-3);font-family:var(--mono)}.legend i{width:8px;height:8px;border-radius:2px;display:block}.empty{color:var(--text-3);font-size:11.5px;line-height:1.55;padding:4px 0}.hint-key{font-family:var(--mono);font-size:10px;background:#1a2130;border:1px solid var(--line);padding:1px 4px;border-radius:3px;color:var(--text-2)}.spark{display:block;width:100%;height:26px;margin-top:4px}.tabs{display:flex;gap:2px;margin-bottom:10px;border-bottom:1px solid var(--line)}.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:6px 9px;font-size:11.5px;color:var(--text-3);cursor:pointer}.tabs button.on{color:var(--text);border-bottom-color:var(--accent)}.tabs button:hover{color:var(--text-2)}@keyframes pulse{0%,to{opacity:.35}50%{opacity:1}}.pulse{animation:pulse 1.6s ease-in-out infinite}@keyframes dash{to{stroke-dashoffset:-14}}.flowline{animation:dash .9s linear infinite}@media (max-width: 1560px){.brand span{display:none}.seg button{padding:5px 7px;font-size:11px}}@media (max-width: 1360px){.app{grid-template-columns:268px 1fr 340px}.breadcrumb button{font-size:11px;padding:4px}}.tipped{border-bottom:1px dotted #46536b;cursor:help}.tipped:hover{border-bottom-color:var(--accent);color:var(--text)}.infodot{width:13px;height:13px;flex:none;border-radius:50%;border:1px solid #2f3b52;background:#161d2a;color:#6c7a94;font-size:8.5px;font-family:var(--mono);font-style:italic;line-height:1;padding:0;cursor:help;display:inline-grid;place-items:center;transition:.13s;vertical-align:middle}.infodot:hover,.infodot.on{border-color:var(--accent);color:#cfe0ff;background:#1a2740}.tipcard{position:fixed;z-index:900;width:352px;max-height:72vh;display:flex;flex-direction:column;background:#0f141e;border:1px solid #253145;border-radius:9px;box-shadow:0 14px 40px #0000008c,0 0 0 1px #78a0ff0f;font-size:11.5px;animation:tipin .12s ease-out}.tipcard.pinned{border-color:#33507f}@keyframes tipin{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.tipcard>header{display:flex;align-items:center;gap:7px;padding:9px 10px 8px;border-bottom:1px solid var(--line-soft);flex:none}.tipcard>header .tt{flex:1;min-width:0}.tipcard>header b{font-size:12.5px;color:var(--text);display:block;letter-spacing:-.1px}.tipcard>header .kind{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-family:var(--mono)}.tipnav{background:#161d2a;border:1px solid #26314a;color:#8b99b3;border-radius:5px;width:20px;height:20px;flex:none;cursor:pointer;font-size:12px;line-height:1;padding:0}.tipnav:hover{background:#1e2739;color:#fff}.tipbody{overflow-y:auto;padding:10px}.tipbody p{margin:0;line-height:1.55;color:var(--text-2)}.tipbody .what{color:#cdd7e7}.tipsec{margin-top:11px}.tipsec h6{margin:0 0 4px;font-size:9px;letter-spacing:.11em;text-transform:uppercase;color:var(--text-3);font-weight:600}.tipsec.tone-why h6{color:#7fa6e8}.tipsec.tone-fail h6{color:#e8896f}.tipsec.tone-watch h6{color:#5ec2a8}.tipsec.tone-say h6{color:#c69bff}.tipsec.tone-say p{color:#cbb8ee;font-style:italic}.alt{border-left:2px solid #2b3a55;padding:2px 0 2px 8px;margin-bottom:6px}.alt .opt{color:#dbe3f0;font-size:11px}.alt .tro{color:var(--text-3);font-size:10.5px;line-height:1.5;margin-top:2px}.related .chips{display:flex;flex-wrap:wrap;gap:4px}.chip{background:#17202f;border:1px solid #26314a;color:#8fa4c4;border-radius:5px;padding:3px 7px;font-size:10.5px;cursor:pointer;transition:.12s}.chip:hover{background:#1f2b40;color:#cfe0ff;border-color:#35507d}.tiphint{padding:5px 10px;border-top:1px solid var(--line-soft);font-size:9.5px;color:#4b5570;font-family:var(--mono);flex:none}.chips{display:flex;flex-wrap:wrap;gap:4px}.tipToggle{display:inline-flex;align-items:center;gap:6px;flex:none}.tipToggle i{width:13px;height:13px;border-radius:50%;border:1px solid currentColor;font-size:8.5px;font-style:italic;display:grid;place-items:center;font-family:var(--mono);line-height:1}.tipToggle.on{color:#9ec2ff;border-color:#2d456d;background:#141d2c}.tipToggle:not(.on){opacity:.55;text-decoration:line-through}.canvas-title{display:flex;align-items:center;gap:9px}.relayout{background:#17202f;border:1px solid #26314a;color:#8fa4c4;border-radius:5px;padding:2px 7px;font-size:10px;cursor:pointer;font-weight:400;letter-spacing:.02em}.relayout:hover{background:#1f2b40;color:#cfe0ff;border-color:#35507d}.zoombar{position:absolute;right:14px;bottom:12px;z-index:4;display:flex;align-items:center;gap:2px;background:#0e1219e0;border:1px solid var(--line);border-radius:7px;padding:2px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.zoombar button{background:none;border:0;color:var(--text-3);cursor:pointer;font-size:11.5px;padding:4px 8px;border-radius:5px;min-width:26px;font-family:var(--mono)}.zoombar button:hover{background:#1b2231;color:var(--text)}.zoombar .pct{min-width:48px}.zoombar .sep{width:1px;height:14px;background:var(--line);margin:0 2px}.focusbar{display:inline-flex;align-items:center;gap:5px;margin-top:7px;font-size:10.5px;font-family:var(--mono);color:var(--text-2);background:#0e1219e6;border:1px solid var(--line);border-radius:6px;padding:3px 4px 3px 8px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.focusbar .fdot{width:7px;height:7px;border-radius:2px;display:inline-block}.focusbar button{background:#17202f;border:1px solid #26314a;color:#8fa4c4;border-radius:4px;padding:2px 6px;font-size:10px;cursor:pointer;margin-left:6px;font-family:var(--sans)}.focusbar button:hover{background:#1f2b40;color:#cfe0ff}.rellist{display:flex;flex-direction:column;gap:3px}.relrow{display:flex;align-items:center;gap:7px;padding:4px 6px;border-radius:5px;cursor:pointer;font-size:11px}.relrow:hover{background:#1a2333}.relrow .arrow{font-family:var(--mono);font-size:10px;width:14px;flex:none}.relrow .nm{color:var(--text)}.relrow .lb{color:var(--text-3);font-family:var(--mono);font-size:10px;margin-left:auto}
