:root{--paper: #eff1f4;--panel: #fff;--panel-2: #e6eaef;--panel-3: #f6f8fa;--ink: #14181d;--ink-2: #3b454f;--muted: #68737f;--rule: #d2d9e0;--rule-soft: #e4eaef;--amber: #b0590b;--amber-soft: #fbeedd;--pass: #0c6f60;--pass-soft: #dff0ec;--fail: #ab2e28;--fail-soft: #fae7e5;--idle: #98a3ae;--scope: #0d1216;--scope-2: #151c22;--scope-rule: #232d36;--scope-ink: #c9d4de;--scope-dim: #5e6e7c;--pin-idle: #2e3b46;--pin-active: #e19a4e;--pin-current: #e19a4e;--pin-done: #0e7a6b;--pin-bad: #c4413a;--pin-ring: #f3d5ae}@media (prefers-color-scheme: dark){:root{--paper: #0b0f13;--panel: #141a20;--panel-2: #1d242b;--panel-3: #10161b;--ink: #e7ecf1;--ink-2: #b6c1cb;--muted: #8794a1;--rule: #28323b;--rule-soft: #1e262e;--amber: #efa157;--amber-soft: #2a1d0e;--pass: #54c0ac;--pass-soft: #0e2725;--fail: #f3837a;--fail-soft: #2c1615;--idle: #5c6874}}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 IBM Plex Sans,system-ui,-apple-system,sans-serif}code,.ts,.stagemeta,.rail-h,.pinlbl,.armnote{font-family:IBM Plex Mono,ui-monospace,monospace}.app-root{display:flex;flex-direction:column;min-height:100vh}.demobanner,.simbanner{text-align:center;font:600 10.5px/1 IBM Plex Mono,monospace;letter-spacing:.14em;text-transform:uppercase;padding:6px 10px}.demobanner{background:var(--amber);color:#fff}.simbanner{background:var(--amber-soft);color:var(--amber);border-bottom:1px solid var(--rule);display:flex;align-items:center;justify-content:center;gap:16px;position:relative}.guidebtn{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:var(--panel);color:var(--ink);border:1px solid var(--rule);border-radius:4px;padding:3px 10px;font:600 11px IBM Plex Sans,sans-serif;cursor:pointer}.guidebtn:hover{background:var(--panel-2)}.app{display:grid;grid-template-columns:190px minmax(0,1fr) 280px;flex:1;min-height:0}.rail{border-right:1px solid var(--rule);background:var(--panel-3);padding:13px 0;display:flex;flex-direction:column}.rail-h{font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);padding:0 14px;margin:0 0 9px}.rail-h.mt{margin-top:19px}.conn{display:flex;gap:9px;align-items:flex-start;padding:7px 14px;font-size:12.5px;line-height:1.35}.led{width:7px;height:7px;border-radius:50%;margin-top:5px;flex:none;background:var(--idle)}.led.ok{background:var(--pass);box-shadow:0 0 0 3px var(--pass-soft)}.led.live{background:var(--amber);animation:pulse 1.6s ease-in-out infinite}.led.bad{background:var(--fail);box-shadow:0 0 0 3px var(--fail-soft);animation:pulse 1.1s ease-in-out infinite}.conn.danger b{color:var(--fail)}.compact.danger{background:var(--fail-soft);border-color:var(--fail)}.compact.danger .compact-t{color:var(--fail)}@keyframes pulse{0%,to{box-shadow:0 0 0 0 var(--amber-soft)}50%{box-shadow:0 0 0 5px transparent}}.conn b{display:block;font-weight:600;color:var(--ink)}.conn span span{color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:10.5px}.railfoot{margin-top:auto;padding-top:12px;border-top:1px solid var(--rule-soft)}.compact{display:none;align-items:center;gap:8px;padding:6px 12px;background:var(--panel-3);border-bottom:1px solid var(--rule);font:600 11px IBM Plex Mono,monospace;letter-spacing:.06em}@media (max-width: 1100px){.compact{display:flex}}.compact-t{color:var(--ink-2)}.compact-abort{margin-left:auto;background:var(--fail);color:#fff;border:0;border-radius:4px;padding:5px 12px;font:600 12px IBM Plex Sans,sans-serif;cursor:pointer}.stage{background:var(--scope);display:flex;flex-direction:column;min-width:0}.stagebar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--scope-rule);background:var(--scope-2)}.phase{display:flex;gap:2px;background:var(--scope);border:1px solid var(--scope-rule);border-radius:5px;padding:2px}.phase button{font:600 10.5px/1 IBM Plex Mono,monospace;letter-spacing:.11em;text-transform:uppercase;background:none;border:0;color:var(--scope-dim);padding:6px 11px;border-radius:3px}.phase button[aria-selected=true]{background:var(--scope-rule);color:#f3d5ae}.stagemeta{margin-left:auto;display:flex;gap:14px;font-size:10.5px;color:var(--scope-dim);letter-spacing:.06em}.stagemeta b{color:var(--scope-ink);font-weight:500}.canvas{flex:1;display:grid;place-items:center;padding:14px;min-height:380px;position:relative}.pkg{width:min(100%,452px);aspect-ratio:1;height:auto;touch-action:manipulation;-webkit-user-select:none;user-select:none}.pkg:focus{outline:none}.pkg:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:4px}.body{fill:#1a232b;stroke:#2c3843}.dot1{fill:#3a4956}.devname{font:500 13px IBM Plex Mono,monospace;fill:var(--scope-dim);letter-spacing:.1em}.devsub{font:500 10px IBM Plex Mono,monospace;fill:#3e4c58;letter-spacing:.12em}.ping{cursor:pointer}.pinlbl{font-size:8.5px;fill:var(--scope-dim);pointer-events:none}.pinlbl.hot{fill:var(--pin-ring)}.gate{max-width:560px;margin:12vh auto;padding:0 20px}.gate h1{font-size:26px}.gate pre{background:var(--panel-2);border:1px solid var(--rule);border-radius:5px;padding:10px 13px;font-size:12.5px;overflow-x:auto}.demobtn{display:inline-block;background:var(--amber);color:#fff;text-decoration:none;font-weight:600;padding:10px 16px;border-radius:6px}.connectcard{background:var(--scope-2);border:1px solid var(--scope-rule);border-radius:8px;padding:24px 26px;max-width:420px;color:var(--scope-ink)}.connectcard h2{margin:0 0 6px;font-size:18px;color:#e7ecf1}.connectcard .muted{color:var(--scope-dim);font-size:13px}.connectcard code{color:#f3d5ae}.connectbtn{margin-top:14px;background:var(--amber);color:#fff;border:0;border-radius:6px;padding:10px 18px;font:600 14px IBM Plex Sans,sans-serif;cursor:pointer}.errline{color:var(--fail);font-size:12.5px}.errline.float{position:absolute;bottom:10px;left:50%;transform:translate(-50%);background:var(--fail-soft);padding:6px 12px;border-radius:5px}.insp{border-left:1px solid var(--rule);background:var(--panel);display:flex;flex-direction:column;min-width:0}.insp-h-body{flex:1;display:flex;flex-direction:column;min-height:0}.insp-h{padding:11px 14px 9px;border-bottom:1px solid var(--rule-soft)}.insp-h .t{font:600 9.5px IBM Plex Mono,monospace;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}.insp-h .v{font-weight:700;font-size:16px;margin-top:2px}.insp-body{flex:1;overflow-y:auto;padding:12px 14px}.muted{color:var(--muted);font-size:13px}.readout{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px solid var(--rule-soft);font-size:12.5px}.readout .l{color:var(--muted)}.readout .r{font-family:IBM Plex Mono,monospace;color:var(--ink);font-variant-numeric:tabular-nums}.readout .r.bad{color:var(--fail);font-weight:600}.readout .r.mutedv{color:var(--muted)}.devrow{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--rule-soft);padding:8px 4px;cursor:pointer;color:inherit;font:inherit}.devrow:hover{background:var(--panel-2)}.devrow .sw{width:3px;height:26px;border-radius:2px;background:var(--fail);flex:none}.devrow .n{font:600 12px IBM Plex Mono,monospace;min-width:24px}.devrow .d{flex:1;font-size:11.5px;color:var(--muted)}.devrow .m{font:500 11px IBM Plex Mono,monospace;color:var(--fail)}.policynote{font-size:11px;color:var(--muted);margin-top:12px}.policynote.warn{color:var(--fail)}.fplink{display:inline-block;margin-top:10px;color:var(--amber);font-size:13px}.spark{width:100%;height:74px;background:var(--scope);border:1px solid var(--rule);border-radius:4px;margin:0 0 12px}.spark .axis{stroke:var(--scope-rule)}.spark .refline{fill:none;stroke:#5e6e7c;stroke-width:1.3;stroke-dasharray:4 3}.spark .traceline{fill:none;stroke:#54c0ac;stroke-width:1.7}.spark .traceline.bad{stroke:#f3837a}.spark .sparklbl{font:7px IBM Plex Mono,monospace;fill:var(--scope-dim)}.armwrap{padding:11px 14px;border-top:1px solid var(--rule-soft);background:var(--panel-3)}.arm{position:relative;width:100%;border:1px solid var(--amber);background:var(--amber);color:#fff;border-radius:5px;padding:11px 12px;cursor:pointer;overflow:hidden;font:600 13.5px IBM Plex Sans,sans-serif}.arm:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.arm.abort{background:var(--fail);border-color:var(--fail)}.arm.ghost{background:none;color:var(--ink);border-color:var(--rule)}.arm .fill{position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffff42;pointer-events:none}.arm .lab{position:relative}.armnote{font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);text-align:center;margin:7px 0 0}.connectrow{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.connectrow .connectbtn{margin-top:0}.connectbtn.alt{background:none;border:1px solid var(--scope-rule);color:var(--scope-ink)}.changedev{background:none;border:0;color:var(--muted);font-size:11.5px;cursor:pointer;padding:0 14px 12px;text-align:left;text-decoration:underline}.dock{border-top:1px solid var(--rule);background:var(--panel-3);max-height:130px;overflow-y:auto;padding:8px 12px}.logline{font:10.5px/1.65 IBM Plex Mono,monospace;color:var(--muted);display:flex;gap:8px}.logline .ts{color:var(--idle);flex:none}.logline.warn{color:var(--fail)}.logline.agent{color:var(--amber)}@media (max-width: 1100px){.app{grid-template-columns:minmax(0,1fr) 280px}.rail{display:none}}@media (max-width: 760px){.app{grid-template-columns:1fr}.insp{display:none}}.guide{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);z-index:40;background:var(--panel);border-left:1px solid var(--rule);box-shadow:-18px 0 50px -20px #00000073;display:flex;flex-direction:column}.g-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 20px 12px;border-bottom:2px solid var(--ink)}.g-eyebrow{font:600 10px IBM Plex Mono,monospace;letter-spacing:.15em;text-transform:uppercase;color:var(--amber)}.g-title{font-weight:700;font-size:20px;letter-spacing:-.02em;margin-top:2px}.g-close{background:none;border:1px solid var(--rule);border-radius:4px;color:var(--muted);width:30px;height:30px;cursor:pointer;font-size:13px}.g-close:hover{color:var(--ink)}.g-body{flex:1;overflow-y:auto;padding:16px 20px 60px}.g-body p,.g-body li{font-size:13.5px;line-height:1.6;color:var(--ink-2)}.g-body h3{font-size:15.5px;margin:26px 0 8px;letter-spacing:-.01em}.g-body h4{font:600 10.5px IBM Plex Mono,monospace;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin:18px 0 6px}.g-body section{border-top:1px solid var(--rule-soft);margin-top:22px;padding-top:4px}.g-body blockquote{margin:12px 0;padding:10px 14px;border-left:3px solid var(--amber);background:var(--amber-soft);border-radius:0 4px 4px 0;font-size:13px;color:var(--ink-2)}.g-body blockquote cite{display:block;margin-top:6px;font:600 10px IBM Plex Mono,monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-style:normal}.g-body table{border-collapse:collapse;width:100%;font-size:12px;margin:10px 0}.g-body th{text-align:left;font:600 9.5px IBM Plex Mono,monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:6px 8px;border-bottom:1px solid var(--rule)}.g-body td{padding:7px 8px;border-bottom:1px solid var(--rule-soft);vertical-align:top;color:var(--ink-2)}.g-body ol,.g-body ul{padding-left:1.2em}.g-body q{font-style:italic}.g-muted{color:var(--muted);font-size:12.5px}.g-tour{background:var(--panel-3);border:1px solid var(--rule);border-radius:8px;padding:14px 16px 12px}.g-tourbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.g-step{font:600 10px IBM Plex Mono,monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--amber)}.g-dots{display:flex;gap:4px}.g-dots i{width:5px;height:5px;border-radius:50%;background:var(--rule);display:block}.g-dots i.past{background:var(--pass)}.g-dots i.on{background:var(--amber);transform:scale(1.4)}.g-tour h3{margin:4px 0 6px!important}.g-tourrow{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.g-btn{background:var(--panel);border:1px solid var(--rule);border-radius:5px;padding:7px 14px;font:600 12.5px IBM Plex Sans,sans-serif;color:var(--ink);cursor:pointer}.g-btn:hover:not(:disabled){background:var(--panel-2)}.g-btn:disabled{opacity:.5;cursor:default}.g-btn.go{background:var(--amber);border-color:var(--amber);color:#fff}.g-btn.go:hover{filter:brightness(1.07);background:var(--amber)}
