@font-face{font-family:IBM Plex Sans;font-weight:400;font-display:swap;src:url(/vention-printer-interface/fonts/IBMPlexSans-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:500;font-display:swap;src:url(/vention-printer-interface/fonts/IBMPlexSans-500.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:600;font-display:swap;src:url(/vention-printer-interface/fonts/IBMPlexSans-600.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:400;font-display:swap;src:url(/vention-printer-interface/fonts/IBMPlexMono-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:500;font-display:swap;src:url(/vention-printer-interface/fonts/IBMPlexMono-500.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:600;font-display:swap;src:url(/vention-printer-interface/fonts/IBMPlexMono-600.woff2) format("woff2")}@font-face{font-family:Space Mono;font-weight:400;font-display:swap;src:url(/vention-printer-interface/fonts/SpaceMono-400.woff2) format("woff2")}@font-face{font-family:Space Mono;font-weight:700;font-display:swap;src:url(/vention-printer-interface/fonts/SpaceMono-700.woff2) format("woff2")}:root{color-scheme:dark;--bg: #0a0e14;--bg-deep: #0d131c;--panel: #111823;--line: #212b38;--line-strong: #2c3948;--line-control: #4a5561;--fg: #dce3ec;--fg-strong: #f5f7fa;--muted: #98a5b3;--label: #adb9c6;--faint: #66727f;--accent: #ffb454;--accent-ink: var(--bg);--focus: var(--accent);--live: #5cff8a;--live-glow: 0 0 8px rgba(92, 255, 138, .7);--live-glow-dim: 0 0 3px rgba(92, 255, 138, .4);--live-bg: rgba(92, 255, 138, .12);--warn: var(--accent);--warn-bg: rgba(255, 180, 84, .1);--err: #ff5f56;--err-bg: rgba(255, 95, 86, .12);--err-btn: #cf3b2e;--rec: var(--err-btn);--trace-part: #5cff8a;--trace-feed: #ffb454;--trace-ph: #ff5f56;--trace-rc: #5cc8ff;--violet: #b98cff;--image-bg: #000;--slice-bg: #ffffff;--scrim: rgba(11, 14, 18, .85);--danger-ink: #ffffff;--font-ui: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "Space Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--font-read: "Helvetica Neue", Helvetica, "IBM Plex Sans", Arial, system-ui, sans-serif;--fs: 13px;--space: 4px;--radius: 8px;--strip-w: 40px;--rail-w: 400px;--shadow: 0 12px 40px rgba(0, 0, 0, .55);--dock-h: 260px;--topbar-h: 40px;--statusbar-h: 28px}:root[data-theme=light]{color-scheme:light;--bg: #eef1f5;--bg-deep: #f7f9fb;--panel: #ffffff;--line: #e3e8ed;--line-strong: #d3dae1;--line-control: #b7c0ca;--fg: #2a3540;--fg-strong: #0f151b;--muted: #5c6874;--label: #6c7883;--faint: #98a2ac;--accent: #b06f14;--accent-ink: #1c1204;--focus: #b06f14;--live: #1a7f37;--live-glow: 0 0 8px rgba(26, 127, 55, .45);--live-glow-dim: 0 0 3px rgba(26, 127, 55, .3);--live-bg: rgba(26, 127, 55, .12);--warn: #9a6700;--warn-bg: rgba(154, 103, 0, .12);--err: #cf222e;--err-bg: rgba(207, 34, 46, .1);--err-btn: #cf3b2e;--rec: #cf3b2e;--trace-part: #1a7f37;--trace-feed: #b06f14;--trace-ph: #cf222e;--trace-rc: #1f6feb;--violet: #7c3aed;--image-bg: #0b0e13;--scrim: rgba(11, 14, 18, .85);--danger-ink: #ffffff;--shadow: 0 8px 24px rgba(16, 22, 28, .12)}@keyframes vpi-glow{0%,to{box-shadow:var(--live-glow)}50%{box-shadow:var(--live-glow-dim)}}@keyframes vpi-blink{0%,60%{opacity:1}61%,to{opacity:.25}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-ui);font-size:15px;line-height:1.5}.mono,.v{font-family:var(--font-mono);font-variant-numeric:tabular-nums}button,select,input{font:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}input[type=number],input[type=text],select{background:var(--bg-deep);border:1px solid var(--line-control);color:var(--fg-strong);padding:8px 10px;font:14px var(--font-mono);border-radius:var(--radius)}textarea{background:var(--bg-deep);border:1px solid var(--line-control);color:var(--fg-strong);padding:8px 10px;font:14px var(--font-ui);border-radius:var(--radius);width:100%}input[type=number]{width:96px}input:disabled,button:disabled{opacity:.35;cursor:default}.muted{color:var(--muted)}.hint{color:var(--muted);font-size:13px}.spacer{flex:1}details{margin-top:18px}details>summary{cursor:pointer;color:var(--label);font:12px var(--font-mono);letter-spacing:.09em;text-transform:uppercase;list-style:none}details>summary:before{content:"▸ "}details[open]>summary:before{content:"▾ "}details>.body{margin-top:12px}.console{display:flex;flex-direction:column;height:100vh;min-height:640px}.top{flex:none;height:56px;display:flex;align-items:center;gap:24px;padding:0 24px;background:var(--bg-deep);border-bottom:1px solid var(--line);min-width:0}.wordmark{font-family:var(--font-mono);font-weight:700;letter-spacing:.14em;font-size:12px;color:var(--fg-strong);white-space:nowrap}.tabs{display:flex;align-items:center;gap:12px;height:100%}.tabgroup{display:flex;align-items:center;gap:2px;height:34px;padding:0 4px;border:1px solid var(--line-strong);border-radius:8px;background:var(--bg)}.tabgroup .tglabel{font:10px var(--font-mono);letter-spacing:.12em;color:var(--faint);padding:0 8px 0 6px;text-transform:uppercase}.tabs .bt{background:none;border:0;color:var(--muted);padding:0 12px;height:26px;border-radius:6px;font:12px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}.tabs .bt:hover{color:var(--fg)}.tabs .bt.active{color:var(--fg-strong);background:var(--panel)}.tabgroup.build .bt.active{background:var(--accent);color:var(--accent-ink)}.toggle{display:inline-flex;align-items:center;gap:10px;font-size:14px;color:var(--fg);cursor:pointer;-webkit-user-select:none;user-select:none}.toggle.disabled{opacity:.4;cursor:default}.toggle .tg-switch{position:relative;width:42px;height:22px;border-radius:12px;border:1px solid var(--line-control);background:var(--bg-deep);padding:0;cursor:inherit;flex:none;transition:background .15s,border-color .15s}.toggle .tg-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--fg);transition:left .15s,background .15s}.toggle.on .tg-switch{background:var(--accent);border-color:var(--accent)}.toggle.on .tg-knob{left:22px;background:var(--accent-ink)}.toggle .tg-state{font:12px var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);min-width:24px}.toggle.on .tg-state{color:var(--accent)}.toggle.danger.on .tg-switch{background:var(--err-btn);border-color:var(--err-btn)}.toggle.danger.on .tg-state{color:var(--err)}.wordmark .sub{color:var(--faint);font-weight:400;letter-spacing:.04em;margin-left:8px}.iconbtn{width:40px;height:40px;flex:none;border-radius:50%;border:1px solid var(--line-control);background:var(--panel);color:var(--fg);display:inline-grid;place-items:center;cursor:pointer;padding:0}.iconbtn:hover{border-color:var(--accent);color:var(--accent)}.iconbtn.on{border-color:var(--accent);color:var(--accent);background:var(--warn-bg)}.iconbtn svg{width:19px;height:19px}.pill{display:inline-flex;align-items:center;gap:8px;padding:5px 11px;border-radius:14px;font:12px var(--font-mono);border:1px solid var(--line-strong);color:var(--fg);white-space:nowrap;background:transparent;cursor:pointer}.pill.warn{border-color:var(--warn);color:var(--warn)}.pill.err{border-color:var(--err);color:var(--err)}.dot{width:9px;height:9px;border-radius:50%;background:var(--line-control);display:inline-block}.dot.live{background:var(--live);box-shadow:var(--live-glow)}.dot.warn{background:var(--warn)}.dot.err{background:var(--err)}.arm{display:flex;align-items:center;gap:10px;height:38px;padding:0 16px;border-radius:var(--radius);border:1px solid var(--line-control);background:var(--panel);color:var(--fg);font:600 13px var(--font-mono);letter-spacing:.06em;cursor:pointer;white-space:nowrap}.arm.on{border-color:var(--accent);background:var(--warn-bg);color:var(--accent)}.arm svg{width:15px;height:15px}.estop{width:130px;height:40px;border:0;border-radius:var(--radius);background:var(--err-btn);color:var(--danger-ink);font:700 14px var(--font-mono);letter-spacing:.14em;cursor:pointer;box-shadow:inset 0 -3px 0 var(--bg-deep)}.banner{display:flex;align-items:center;gap:18px;padding:10px 24px;font-size:14px;border-bottom:1px solid var(--line);min-height:0;flex-wrap:wrap}.banner.err{background:var(--err-bg);color:var(--err);border-bottom-color:var(--err)}.banner.warn{background:var(--warn-bg);color:var(--warn)}.banner b{font-family:var(--font-mono)}.banner .step{display:inline-flex;gap:8px;align-items:center}.banner .step .n{width:20px;height:20px;border-radius:50%;border:1px solid currentColor;display:grid;place-items:center;font:12px var(--font-mono)}.banner button{height:30px;padding:0 12px;border:1px solid currentColor;background:transparent;color:inherit;font:13px var(--font-mono);border-radius:var(--radius);cursor:pointer}.banner .apierr{margin-left:auto;font-family:var(--font-mono);font-size:12px;max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.banner input,.banner select{padding:5px 8px;font-size:13px}.banner.recovery{overflow:hidden;gap:14px}.banner .reason{font-family:var(--font-mono);font-size:12px;color:var(--fg);max-width:28ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rstep{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.rstep .n{width:19px;height:19px;border-radius:50%;border:1px solid currentColor;display:grid;place-items:center;font:11px var(--font-mono);flex:none}.rstep.done{color:var(--live)}.rstep .muted{color:var(--faint)}.setup-help{margin:20px 32px;padding:22px 26px;border:1px solid var(--accent);border-radius:var(--radius);background:var(--warn-bg);max-width:780px}.setup-title{font:600 16px var(--font-mono);letter-spacing:.04em;color:var(--accent);margin-bottom:10px}.setup-lead{margin:0 0 14px;color:var(--fg);line-height:1.55}.setup-lead code,.setup-steps code{font-family:var(--font-mono);color:var(--fg-strong)}.setup-steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:12px;color:var(--fg);line-height:1.5}.setup-steps .hint{margin-top:6px}.setup-steps .hint code{overflow-wrap:anywhere}.cmd{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.cmd code{flex:1;min-width:0;overflow-x:auto;white-space:pre;background:var(--bg-deep);border:1px solid var(--line-strong);border-radius:var(--radius);padding:8px 10px;font-size:13px}.cmd input{flex:1;min-width:0}.view{display:grid;min-height:0;overflow:auto}.view>*{padding:28px 32px;min-width:0;min-height:0}.print{grid-template-columns:400px minmax(0,1fr)}.print>.run{border-right:1px solid var(--line)}.prepare{grid-template-columns:minmax(0,1fr) 360px}.prepare>.side{border-left:1px solid var(--line)}.control{grid-template-columns:repeat(2,minmax(0,1fr))}.control>.col+.col{border-left:1px solid var(--line)}.runs{grid-template-columns:minmax(0,1fr)}.priming-walk{grid-template-columns:minmax(320px,27rem) minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:16px;padding:16px}.priming-walk>.step-col{display:flex;flex-direction:column;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}.priming-walk>.diagram-col{display:flex;flex-direction:column;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}.priming-walk .diagram{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;margin:8px 0}.priming-walk .diagram svg{width:100%;height:100%;max-height:100%}.priming-walk .diagram-col .narr{margin-top:8px}@media (max-width: 900px){.priming-walk{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(340px,60vh)}.priming-walk>.diagram-col{border-left:0;border-top:1px solid var(--line)}}.step-rail{list-style:none;margin:0 0 20px;padding:0;display:flex;flex-wrap:wrap;gap:6px 14px}.step-rail li{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--muted)}.step-rail li .n{width:20px;height:20px;border-radius:50%;border:1px solid var(--line-control);display:inline-flex;align-items:center;justify-content:center;font:11px var(--font-mono)}.step-rail li.on{color:var(--fg-strong)}.step-rail li.on .n{border-color:var(--accent);color:var(--accent-ink);background:var(--accent)}.step-rail li.done{color:var(--fg)}.step-rail li.done .n{border-color:var(--live);color:var(--live)}.step-head{font:600 18px var(--font-mono);color:var(--fg-strong);letter-spacing:.02em;margin-bottom:12px}.step-body{display:flex;flex-direction:column;gap:6px}.step-body .hint{margin:4px 0}.seg{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 4px}.small.on{border-color:var(--accent);color:var(--accent)}.fields .ro{font-family:var(--font-mono);color:var(--fg-strong)}.step-nav{display:flex;gap:10px;margin-top:22px}.step-nav .small{min-width:84px}.params{margin-top:22px;border-top:1px solid var(--line);padding-top:16px}.params>summary{cursor:pointer;font:12px var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--label)}.escape{margin-top:22px;border-top:1px solid var(--line);padding-top:16px}.h{font:12px var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--label);margin-bottom:14px}.kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 18px;margin-top:22px;font-size:14px}.kv span:nth-child(2n){overflow-wrap:anywhere}.kv span:nth-child(odd){color:var(--muted)}.kv span:nth-child(2n){font-family:var(--font-mono);text-align:right;color:var(--fg-strong)}.kv .warnv{color:var(--warn)}.kv .bad{color:var(--err)}.kv .good{color:var(--live)}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:26px}.actions.one{grid-template-columns:1fr}button.cta{height:52px;padding:0 20px;border:1px solid var(--line-control);background:var(--panel);color:var(--fg-strong);font:600 14px var(--font-mono);letter-spacing:.04em;border-radius:var(--radius);cursor:pointer}.btnrow{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.btnrow>button,.btnrow>a{flex:0 0 auto}button.cta.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button.cta.danger{border-color:var(--err);color:var(--err)}button.small{height:34px;padding:0 12px;border:1px solid var(--line-control);background:var(--panel);color:var(--fg);font:13px var(--font-mono);border-radius:var(--radius);cursor:pointer}.lock{color:var(--muted);font:13px var(--font-mono);margin-top:14px}.okline,.errline,.warnline{margin-top:14px;font-size:14px;padding-left:12px;border-left:3px solid var(--live)}.errline{border-left-color:var(--err);color:var(--err)}.warnline{border-left-color:var(--warn);color:var(--warn)}.chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.chip{font:12px var(--font-mono);padding:5px 10px;border-radius:12px;border:1px solid var(--line);color:var(--muted)}.chip.bad{border-color:var(--err);color:var(--err)}.chip.warn{border-color:var(--warn);color:var(--warn)}.timeline{display:flex;flex-direction:column;gap:3px;max-height:360px;overflow:auto;margin-top:2px}.timeline .tl-head{font:12px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--label);margin:12px 0 2px}.timeline .tl-head:first-child{margin-top:0}.timeline .tl-row{display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:center;text-align:left;padding:6px 8px;border:1px solid transparent;background:transparent;color:var(--fg);border-radius:var(--radius);font-size:13px;cursor:pointer}.timeline .tl-row:not(:disabled):hover{border-color:var(--line-control)}.timeline .tl-row:disabled{cursor:default}.timeline .tl-row .n{font:11px var(--font-mono);color:var(--muted);text-align:right}.timeline .tl-row.on{border-color:var(--accent);color:var(--fg-strong);background:var(--warn-bg)}.timeline .tl-row.on .n{color:var(--accent)}.print-view{display:block;padding:24px 28px}.print-view>*{padding:0;min-width:0}.print-view>*+*{margin-top:16px}.fixed-page{display:block;padding:24px 28px}.fixed-page>*{padding:0;min-width:0}.fixed-page>*+*{margin-top:16px}.sec-h{font:12px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin:4px 0 0}.cards-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;align-items:start}.cards-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;align-items:start}.grid-gap{display:flex;flex-direction:column;gap:16px;min-width:0}.anl-comp{display:flex;flex-direction:column;gap:4px;border:1px solid var(--line);border-radius:10px;padding:14px;background:var(--bg-deep)}.anl-comp .k{font:11px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--label)}.anl-comp .v{font:26px var(--font-mono);font-weight:700;color:var(--accent)}.anl-comp .s{font-size:12px;color:var(--muted)}.state-pill.ok{color:var(--live);border-color:var(--live)}.state-pill.bad{color:var(--err);border-color:var(--err)}.still{cursor:pointer}.still:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:24px;background:var(--scrim)}.lb-body{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;width:100%;max-width:900px;max-height:90vh;overflow:auto}.lb-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font:12px var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--label)}.lb-compare{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}@media (max-width: 640px){.lb-compare{grid-template-columns:1fr}}.lb-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:14px;font:12px var(--font-mono);color:var(--muted)}.axis-sep{height:1px;background:var(--line);margin:16px 0}.setup-grid{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px;align-items:start}@media (max-width: 960px){.setup-grid{grid-template-columns:minmax(0,1fr)}}.srail{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.srail li{display:flex;gap:12px;align-items:flex-start;padding:10px;border:1px solid transparent;border-radius:var(--radius);cursor:pointer}.srail li:hover{background:var(--bg-deep)}.srail li.on{background:var(--bg-deep);border-color:var(--line)}.srail .n{flex:0 0 24px;height:24px;border-radius:50%;display:grid;place-items:center;font:12px var(--font-mono);border:1px solid var(--line-control);color:var(--muted)}.srail li.on .n{background:var(--accent);color:var(--accent-ink);border-color:transparent}.srail li.done .n{background:var(--live);color:var(--bg);border-color:transparent}.srail .t{font-weight:600;font-size:14px;color:var(--fg-strong)}.srail li:not(.on):not(.done) .t{color:var(--muted)}.srail .sd{font-size:11.5px;color:var(--faint);margin-top:1px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;min-width:0}.cmdbar,.rp-drawer,.cam-panel,.dock-machine,.dock-print,.setup-help,.priming-walk>.step-col,.priming-walk>.diagram-col{border-radius:12px}.rp-card,.pcard,.dock-chip,.dock-mini .dm,.dock-axis,.job-list button,.cam-still,.frame,.thumb,.xsec{border-radius:10px}.card>h3{margin:0 0 12px;font:12px var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--label);font-weight:600;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.cmdbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px}.state-pill{font:700 14px var(--font-mono);letter-spacing:.06em;padding:6px 13px;border-radius:var(--radius);border:1px solid var(--line-strong);color:var(--muted);white-space:nowrap}.state-pill.run{color:var(--accent);border-color:var(--accent);background:var(--warn-bg)}.state-pill.fault{color:var(--err);border-color:var(--err);background:var(--err-bg)}.cmd-name{font:600 15px var(--font-read);color:var(--fg-strong)}.cmd-prog{flex:1 1 220px;min-width:180px}.cmd-actions{display:flex;gap:8px}.cta.sm{height:38px;padding:0 18px}.print-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}@media (max-width: 1000px){.print-grid{grid-template-columns:minmax(0,1fr)}}.imaging-card .xsec{max-width:520px}.compare-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}@media (max-width: 760px){.compare-2{grid-template-columns:1fr}}.compare-2 .xsec,.compare-2 .cmp-img{max-width:none}.cmp-h{font:10px var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--label);margin-bottom:6px}.cmp-img{display:block;width:100%;aspect-ratio:1 / 1;object-fit:contain;border:1px solid var(--line);border-radius:10px;background:var(--slice-bg)}.manual-card{max-width:620px}.single-step-row{font-size:13px;color:var(--fg)}.rp-drawer{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);padding:14px 16px;margin-top:16px}.rp-drawer[open]{padding-bottom:16px}.state{display:flex;align-items:baseline;gap:12px;margin:6px 0 22px;flex-wrap:wrap}.state .big{font:700 34px/1 var(--font-mono);color:var(--fg-strong);letter-spacing:.02em}.state .big.fault{color:var(--err)}.state .sub{color:var(--muted)}.layer-no{font:700 104px/1 var(--font-mono);color:var(--accent);letter-spacing:-.03em}.layer-no small{font-size:30px;color:var(--muted);letter-spacing:0}.layer-cap{color:var(--muted);margin-top:4px}.bar{height:8px;background:var(--panel);border:1px solid var(--line);margin:18px 0 6px;position:relative;overflow:hidden;border-radius:4px}.bar i{position:absolute;top:0;right:0;bottom:0;left:0;width:0;background:var(--accent);transition:width .3s}.bar i.layer{background:var(--live)}.bar-lbl{font:12px var(--font-mono);color:var(--muted)}.machine{display:flex;flex-direction:column}.machine svg{width:100%;max-height:62vh;flex:1;min-height:0;font-family:var(--font-mono);font-size:12px}.el-frame{fill:none;stroke:var(--line-strong)}.el-rail{fill:var(--panel);stroke:var(--line-control)}.el-lbl{fill:var(--muted)}.el-well{fill:var(--bg-deep);stroke:var(--line-control)}.el-powder{fill:var(--line-strong)}.el-part{fill:var(--line-control)}.el-ph{fill:var(--trace-ph)}.el-rc{fill:var(--trace-rc)}.el-feed{fill:var(--trace-feed)}.el-build{fill:var(--trace-part)}.el-blade{fill:var(--fg)}.el-heater-on{fill:var(--err);filter:drop-shadow(0 0 5px var(--err))}.el-heater-off{fill:var(--line-control)}.el-heater-unk{fill:var(--warn)}@media (prefers-reduced-motion: no-preference){.el-heater-on{animation:vpi-heater-pulse 1.4s ease-in-out infinite}}@keyframes vpi-heater-pulse{50%{filter:drop-shadow(0 0 9px var(--err))}}.el-moving{animation:vpi-blink .7s steps(1) infinite}.mk-live{fill-opacity:1}.mk-model{fill:var(--violet);stroke:var(--violet);stroke-width:1;stroke-dasharray:4 3;opacity:.6}.mk-live.mk-moving{filter:drop-shadow(0 0 3px var(--live));animation:vpi-mk-pulse 1s ease-in-out infinite}.mk-model.mk-moving{filter:drop-shadow(0 0 3px var(--violet));animation:vpi-mk-pulse 1s ease-in-out infinite}@keyframes vpi-mk-pulse{0%,to{opacity:1}50%{opacity:.5}}.el-legend .mk-live{fill:var(--live)}.el-arrow{fill:var(--accent)}@media (prefers-reduced-motion: no-preference){.el-arrow{animation:vpi-arrow-blink .6s steps(1,end) infinite}}@keyframes vpi-arrow-blink{50%{opacity:0}}.el-empty{fill:var(--muted);font-size:15px}.linklike{background:none;border:0;padding:0;color:var(--accent);font:inherit;text-decoration:underline;cursor:pointer}.el-ctl{cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.el-ctl rect{fill:var(--panel);stroke:var(--line-control)}.el-ctl:hover rect,.el-ctl:focus-visible rect{stroke:var(--accent)}.el-ctl text{fill:var(--fg);font-family:var(--font-mono);-webkit-user-select:none;user-select:none;pointer-events:none}.el-ctl:focus{outline:none}.el-ctl[aria-disabled=true]{opacity:.35;pointer-events:none}.readout{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:18px}.readout div{font:12px var(--font-mono);color:var(--muted)}.readout b{display:block;font:600 20px var(--font-mono);color:var(--fg-strong);margin-top:2px}.readout i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;vertical-align:middle}.unref{opacity:.5;font-style:italic;font-weight:500}.stage-badge{display:inline-block;font:600 14px var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}.sw-part{background:var(--trace-part)}.sw-feed{background:var(--trace-feed)}.sw-ph{background:var(--trace-ph)}.sw-rc{background:var(--trace-rc)}.narr{font-size:16px;color:var(--fg-strong);margin-top:22px}.narr .next{color:var(--muted);font-size:14px;margin-top:8px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.narr .next .small{height:30px}.stack{display:flex;gap:24px;align-items:flex-end;height:320px;margin-top:8px}.stack .scale{position:relative;width:36px;height:100%;border-right:1px solid var(--line-strong);font:12px var(--font-mono);color:var(--muted)}.stack .scale span{position:absolute;right:8px;transform:translateY(50%)}.stack .col{position:relative;width:200px;height:100%;border:1px solid var(--line-strong);background:var(--panel)}.stack .col div{position:absolute;left:0;right:0;border-top:1px solid var(--bg-deep);display:flex;align-items:center;justify-content:center;font:12px var(--font-mono);color:var(--bg-deep);overflow:hidden}.stack .pre,.stack .post{background:var(--trace-feed)}.stack .thin{background:var(--trace-rc)}.stack .lay{background:var(--trace-part)}.stack .over{background:var(--err);color:var(--danger-ink)}.stack .legend{font-size:15px;color:var(--muted);line-height:2}.stack .legend b{color:var(--fg-strong);font-family:var(--font-mono)}.fields{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px 18px;align-items:center;margin-top:26px;font-size:14px;max-width:460px}.fields.adv{max-width:720px;grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr)}.est{display:grid;grid-template-columns:1fr 1fr;gap:12px}.est div .l{font:12px var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--label)}.est div .v{font:700 30px var(--font-mono);color:var(--fg-strong);margin-top:6px}.est div .v small{font-size:14px;color:var(--muted);font-weight:400}.chk{display:flex;flex-direction:column;gap:10px;margin:24px 0;font-size:14px;color:var(--fg)}.chk label{display:flex;gap:10px;align-items:center}.stepper{display:flex;align-items:center;gap:10px;margin-bottom:22px;font-size:14px;color:var(--muted)}.stepper button{height:34px;padding:0 14px;border:1px solid var(--line);background:transparent;color:var(--muted);font:13px var(--font-mono);border-radius:var(--radius);cursor:pointer}.stepper button.on{border-color:var(--accent);color:var(--accent);background:var(--warn-bg)}.axis{display:grid;grid-template-columns:1fr auto;gap:10px 16px;align-items:center;padding:18px 0;border-top:1px solid var(--line)}.axis .nm{font-weight:600;font-size:15px;color:var(--fg-strong)}.axis .nm i{display:inline-block;width:10px;height:10px;margin-right:10px;border-radius:2px}.axis .pos{font:700 30px var(--font-mono);color:var(--accent);text-align:right;white-space:nowrap}.axis .pos small{font-size:12px;color:var(--muted);font-weight:400}.jog{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr auto;gap:8px}.jog button{height:48px;border:1px solid var(--line-control);background:var(--panel);color:var(--fg-strong);font:600 14px var(--font-mono);border-radius:var(--radius);cursor:pointer}.jog button.home{width:64px}.tune{grid-column:1 / -1;display:grid;grid-template-columns:max-content minmax(3rem,5rem) max-content max-content;justify-content:start;gap:8px 10px;align-items:center;margin:2px 0 0}.tune .lbl{font:12px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--label)}.tune .inp{width:100%;min-width:0}.tune .cap{font:12px var(--font-mono);color:var(--faint);white-space:nowrap}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:14px;color:var(--muted)}.log{font:13px var(--font-mono)}.log table{border-collapse:collapse;width:100%}.log td{padding:6px 12px 6px 0;border-bottom:1px solid var(--line);white-space:nowrap}.log td:first-child{color:var(--muted);width:150px}.log td.k{color:var(--accent);width:170px}.log tr.warn td.k{color:var(--err)}.log td.d{color:var(--fg);overflow:hidden;text-overflow:ellipsis;max-width:0}.log a{color:var(--fg)}.tbl-scroll{overflow-x:auto}.run-log td.d{max-width:none;overflow:visible;text-overflow:clip}.statusbar{flex:none;height:30px;display:flex;align-items:center;gap:22px;padding:0 24px;background:var(--bg-deep);border-top:1px solid var(--line);font-family:var(--font-mono);font-size:12px;color:var(--muted);overflow:hidden}.statusbar b{color:var(--fg);font-weight:500}.statusbar .bad{color:var(--err)}.statusbar .warnv{color:var(--warn)}.statusbar .right{margin-left:auto;display:flex;gap:22px}.statusbar>span{white-space:nowrap;flex:0 0 auto}.badge{padding:2px 8px;border-radius:10px;font-size:12px;font-weight:600;font-family:var(--font-mono)}.badge.rec{background:var(--err-bg);color:var(--rec);animation:vpi-blink 1s steps(1) infinite}@media (prefers-reduced-motion: reduce){.badge.rec,.el-moving,.mk-live.mk-moving,.mk-model.mk-moving{animation:none}}.xsec{position:relative;aspect-ratio:1 / 1;width:100%;max-width:480px;margin-inline:auto;min-height:0;display:grid;place-items:center;background:var(--slice-bg);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.xsec img{max-width:100%;max-height:100%;image-rendering:auto;border:1px solid var(--line-strong)}.xsec .cap{position:absolute;left:14px;bottom:10px;font:12px var(--font-mono);color:var(--muted);background:var(--scrim);padding:2px 6px}.xsec .cap b{color:var(--fg-strong)}.xsec .empty{color:var(--muted);font-size:15px;text-align:center;padding:24px}.job-list{display:flex;flex-direction:column;gap:6px;margin-top:8px;max-height:300px;overflow:auto}.job-list button{text-align:left;padding:12px 14px;border:1px solid var(--line);background:transparent;color:var(--fg);border-radius:var(--radius);cursor:pointer;display:grid;grid-template-columns:1fr auto;gap:4px 14px}.job-list button.on{border-color:var(--accent);background:var(--warn-bg)}.job-list button .n{font-weight:600;color:var(--fg-strong)}.job-list button .m{font:12px var(--font-mono);color:var(--muted)}.job-list button .bad{color:var(--err)}.mini-el{margin-top:14px}.mini-el svg{max-height:150px}.slider{display:flex;align-items:center;gap:12px;margin-top:12px;font:12px var(--font-mono);color:var(--muted)}.slider input[type=range]{flex:1}.job-map{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 18px;margin-top:18px;font-size:14px}.job-map span:nth-child(2n){overflow-wrap:anywhere}.job-map span:nth-child(odd){color:var(--muted)}.job-map span:nth-child(2n){font-family:var(--font-mono);color:var(--fg-strong)}.job-map .warnv{color:var(--warn)}.modules{display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;gap:16px;padding:20px 24px;overflow:auto;min-height:0}.module{background:var(--panel);border:1px solid var(--line);border-radius:4px;display:flex;flex-direction:column;min-width:0;position:relative}.module.s{flex:1 1 min(300px,100%)}.module.m{flex:1 1 min(440px,100%)}.module.l{flex:1 1 min(640px,100%)}.module.xl{flex:1 1 min(900px,100%)}.module.sized{flex:none;max-width:100%;overflow:hidden}.module .mh{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line);font:12px var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--label);cursor:grab;-webkit-user-select:none;user-select:none}.module .mh .grip{opacity:0;transition:opacity .12s}.module:hover .mh .grip{opacity:.4}.module .mh-r{display:inline-flex;align-items:center;gap:8px}.module .mh-reset{background:none;border:0;color:var(--muted);cursor:pointer;font-size:13px;padding:0;line-height:1}.module .mh-reset:hover{color:var(--accent)}.module .mb{padding:16px;flex:1;min-height:0;overflow:auto}.module.over{outline:2px solid var(--accent);outline-offset:-1px}.module.dragging{opacity:.4}.mresize{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize;touch-action:none}.mresize:after{content:"";position:absolute;right:3px;bottom:3px;width:7px;height:7px;border-right:2px solid var(--line-control);border-bottom:2px solid var(--line-control);opacity:0;transition:opacity .12s}.module:hover .mresize:after{opacity:1}.mresize:hover:after{border-color:var(--accent);opacity:1}.view.modules-view{display:block;overflow:auto}.kv:first-child,.fields:first-child{margin-top:0}.xsec.tall{height:520px}.xsec.mid{height:320px}.stack.compact{height:240px}.stack.compact .col{width:150px}.actions.tight{margin-top:14px}.pill .lock{width:12px;height:12px}.rp-grid{columns:250px;column-gap:12px;margin-top:2px}.rp-card{break-inside:avoid;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-deep);padding:12px 13px;margin:0 0 12px}.rp-card h4{margin:0 0 8px;font:11px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.rp-row{display:flex;align-items:center;justify-content:space-between;gap:6px 10px;padding:4px 0;font-size:13px;color:var(--muted);flex-wrap:wrap}.rp-row>span:first-child{min-width:0}.rp-row .rv{display:inline-flex;align-items:center;gap:6px;margin-left:auto}.rp-card input[type=number]{width:80px;text-align:right;padding:5px 8px}.rp-card .seg{margin:0;gap:6px}.rp-card .seg .small{height:28px;padding:0 9px}.rp-note{font-size:11px;color:var(--faint);margin-top:8px;line-height:1.4}.rp-readout{border-top:1px dashed var(--line);margin-top:10px;padding-top:9px;font:12px var(--font-mono);color:var(--muted);line-height:1.5}.rp-readout b{color:var(--fg-strong)}.bodywrap{flex:1;display:flex;min-height:0;min-width:0;overflow:hidden}.viewhost{flex:1;min-width:0;display:flex;min-height:0}.viewhost>.view,.viewhost>.modules-view{flex:1;min-width:0}.dock{position:relative;flex:0 0 var(--dock-w, 320px);width:var(--dock-w, 320px);border-left:1px solid var(--line);background:var(--bg-deep);overflow:auto;display:flex;flex-direction:column}.dock.collapsed{display:none}.dock-resize{position:absolute;left:0;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:6;touch-action:none}.dock-resize:after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent}.dock-resize:hover:after,.dock-resize.drag:after{background:var(--accent)}.dock-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--bg-deep);z-index:2}.dock-title{font:12px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--label)}.dock-body{padding:14px;display:flex;flex-direction:column;gap:14px}.dock-machine{background:var(--bg-deep);border:1px solid var(--line);border-radius:var(--radius);padding:10px}.dockdiag{width:100%;height:auto;display:block}.dockdiag .frame{fill:none;stroke:var(--line-strong)}.dockdiag .rail{stroke:var(--line-control);stroke-width:2}.dockdiag .bed{stroke:var(--line);stroke-width:1;stroke-dasharray:4 4}.dockdiag .bin{fill:var(--panel);stroke:var(--line-control)}.dockdiag .lbl{fill:var(--muted);font:10px var(--font-mono);letter-spacing:.06em}.dockdiag .lbl.dim{fill:var(--faint)}.dockdiag .ph{fill:var(--trace-ph)}.dockdiag .rc{fill:var(--trace-rc)}.dockdiag .build{fill:var(--trace-part)}.dockdiag .feed{fill:var(--trace-feed)}.dockdiag .mv{animation:vpi-blink .7s steps(1) infinite}@media (prefers-reduced-motion: reduce){.dockdiag .mv{animation:none}}.dock-axes{display:grid;grid-template-columns:1fr 1fr;gap:8px}.dock-chip{border:1px solid var(--line);border-left:3px solid var(--line-control);border-radius:var(--radius);background:var(--panel);padding:7px 11px}.dock-chip.ax-build{border-left-color:var(--trace-part)}.dock-chip.ax-feed{border-left-color:var(--trace-feed)}.dock-chip.ax-ph{border-left-color:var(--trace-ph)}.dock-chip.ax-rc{border-left-color:var(--trace-rc)}.dock-chip .k{display:block;font:10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--label)}.dock-chip .v{display:block;font:600 17px var(--font-mono);color:var(--fg-strong);margin-top:2px;white-space:nowrap}.dock-chip .v.unref{color:var(--muted)}.dock-chip .v small{font-size:10px;color:var(--muted);font-weight:400}.dock-mini{display:flex;gap:8px}.dock-mini .dm{flex:1;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);padding:7px 11px}.dock-mini .dm .k{font:10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--label)}.dock-mini .dm .v{display:block;font:600 15px var(--font-mono);color:var(--fg-strong);margin-top:2px}.dock-mini .dm.hot .v,.dock-mini .dm.bad .v{color:var(--err)}.dock-print{border:1px solid var(--accent);border-radius:var(--radius);background:var(--warn-bg);padding:10px 12px}.dock-print .dp-row{display:flex;align-items:baseline;justify-content:space-between}.dock-print .dp-state{font:700 14px var(--font-mono);letter-spacing:.06em;color:var(--accent)}.dock-print .dp-layer{font:13px var(--font-mono);color:var(--fg)}.dock-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.dock-actions .cta{height:42px}.dock .cam-panel{margin:0}.runlist{display:flex;flex-direction:column;gap:6px}.runitem{display:block;width:100%;text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:9px 11px;cursor:pointer;color:var(--fg)}.runitem:hover{border-color:var(--line-control)}.runitem.on{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 22%,transparent)}.runitem .rn{display:block;font-weight:600;font-size:13px;color:var(--fg-strong)}.runitem .rd{display:block;font-size:11px;color:var(--faint);margin-top:2px;font-family:var(--font-mono)}.statrow{display:flex;flex-wrap:wrap;gap:9px}.stat{display:inline-flex;flex-direction:column;border:1px solid var(--line);background:var(--bg-deep);border-radius:10px;padding:8px 12px;min-width:92px}.stat .k{font-size:9.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--faint)}.stat .v{font:600 18px var(--font-mono);color:var(--fg-strong);margin-top:2px}.stat .v small{font-size:11px;color:var(--muted);font-weight:400}.zipwrap{border:1px dashed var(--line-strong);border-radius:10px;padding:11px 13px;font:12px var(--font-mono);color:var(--muted);line-height:1.55;overflow-wrap:anywhere}.stills{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:9px}.still{background:var(--image-bg);border:1px solid var(--line);border-radius:10px;aspect-ratio:4 / 3;position:relative;display:grid;place-items:center;font:10px var(--font-mono);color:var(--faint);overflow:hidden}.still img{width:100%;height:100%;object-fit:cover}.still .ll{position:absolute;top:5px;left:6px;font:9px var(--font-mono);color:var(--label);background:var(--scrim);padding:1px 5px;border-radius:5px}.still .lb{position:absolute;bottom:5px;left:6px;font:9px var(--font-mono);color:var(--label);background:var(--scrim);padding:1px 5px;border-radius:5px}.mchart line{stroke:var(--line)}.chart-empty{min-height:130px;display:grid;place-items:center;color:var(--muted);font-size:13px;border:1px dashed var(--line);border-radius:10px;background:var(--bg-deep)}.stills-wrap{min-height:150px}.mimg svg{width:100%;height:auto;display:block;background:var(--danger-ink);border-radius:var(--radius)}.mk-rail{stroke:var(--trace-rc);stroke-width:2;stroke-dasharray:6 6;opacity:.45}.mk-hint{fill:var(--err);font:700 26px var(--font-mono)}.cam-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);margin:0 0 16px;overflow:hidden}.cam-panel-head{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line);font:12px var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--label)}.cam-panel-body{background:var(--image-bg);display:grid;place-items:center;min-height:120px}.cam-panel-img{display:block;width:100%;max-height:320px;object-fit:contain}.cam-panel-empty{flex-direction:column;gap:10px;padding:24px;color:var(--muted);font-size:13px;text-align:center}.cam-panel-ph{width:40px;height:40px;border:1px solid var(--line-control);border-radius:50%;display:inline-block}.cam-panel.full .cam-panel-img,.cam-panel.full .cam-panel-body{max-height:none}.cam-panel.full .cam-panel-body{min-height:360px}.cam-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:4px}.cam-still{border:1px solid var(--line);border-radius:var(--radius);background:var(--image-bg);overflow:hidden}.cam-still header{padding:6px 10px;font:12px var(--font-mono);color:var(--label);border-bottom:1px solid var(--line);background:var(--panel)}.cam-still img{display:block;width:100%;max-height:220px;object-fit:contain}.cam-still .cam-panel-empty{min-height:140px;display:flex;align-items:center;justify-content:center}.cam-browser-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:12px 0}.cam-browser-row select{min-width:140px}
