@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./public-sans-vietnamese-400-normal-TxZB8OSn.woff2) format("woff2"),url(./public-sans-vietnamese-400-normal-BO1meqcx.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./public-sans-latin-ext-400-normal-mk90oQqJ.woff2) format("woff2"),url(./public-sans-latin-ext-400-normal-B02wwOdZ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./public-sans-latin-400-normal-8Rpg0ruU.woff2) format("woff2"),url(./public-sans-latin-400-normal-SBbinRkI.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./public-sans-vietnamese-500-normal-DjztbcKe.woff2) format("woff2"),url(./public-sans-vietnamese-500-normal-CXYe29CY.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./public-sans-latin-ext-500-normal-DC-z7ASZ.woff2) format("woff2"),url(./public-sans-latin-ext-500-normal-BHCCp-na.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./public-sans-latin-500-normal-NlrCPXnF.woff2) format("woff2"),url(./public-sans-latin-500-normal-vCxiVFAq.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./public-sans-vietnamese-600-normal-P4BtCUdw.woff2) format("woff2"),url(./public-sans-vietnamese-600-normal-CcnAzmUX.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./public-sans-latin-ext-600-normal-DchWdWJ_.woff2) format("woff2"),url(./public-sans-latin-ext-600-normal-DfkbVac2.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./public-sans-latin-600-normal-Fru-LXNs.woff2) format("woff2"),url(./public-sans-latin-600-normal-BR59oU-I.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(./fira-code-cyrillic-ext-400-normal-txZ9Fk_1.woff2) format("woff2"),url(./fira-code-cyrillic-ext-400-normal-Buh61xzB.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(./fira-code-cyrillic-400-normal-UC0NFL4U.woff2) format("woff2"),url(./fira-code-cyrillic-400-normal-dc1q3VD7.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(./fira-code-greek-ext-400-normal-DR7mBgIM.woff2) format("woff2"),url(./fira-code-greek-ext-400-normal-DSPUheWg.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(./fira-code-greek-400-normal-B2Gh_Y8s.woff2) format("woff2"),url(./fira-code-greek-400-normal-DobhaxvF.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(./fira-code-symbols2-400-normal-9X26I2LK.woff2) format("woff2"),url(./fira-code-symbols2-400-normal-_QEZCEwe.woff) format("woff");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(./fira-code-latin-ext-400-normal-KSMg0QLl.woff2) format("woff2"),url(./fira-code-latin-ext-400-normal-DG73JjOf.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(./fira-code-latin-400-normal-DGosTW8U.woff2) format("woff2"),url(./fira-code-latin-400-normal-C-QZfXAs.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(./fira-code-cyrillic-ext-500-normal-CYRspHgm.woff2) format("woff2"),url(./fira-code-cyrillic-ext-500-normal-CwtLmSFD.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(./fira-code-cyrillic-500-normal-CX35h3Mg.woff2) format("woff2"),url(./fira-code-cyrillic-500-normal-Bu7VCL72.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(./fira-code-greek-ext-500-normal-BO3iq16n.woff2) format("woff2"),url(./fira-code-greek-ext-500-normal-CMiNLXER.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(./fira-code-greek-500-normal-CVO0IRNt.woff2) format("woff2"),url(./fira-code-greek-500-normal-DEXIWiey.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(./fira-code-symbols2-500-normal-B5s_njw3.woff2) format("woff2"),url(./fira-code-symbols2-500-normal-DwsgbIjQ.woff) format("woff");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(./fira-code-latin-ext-500-normal-Crd9e_oI.woff2) format("woff2"),url(./fira-code-latin-ext-500-normal-CaANqXjI.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(./fira-code-latin-500-normal-B6gioGu8.woff2) format("woff2"),url(./fira-code-latin-500-normal-aMLC2AMm.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #F3F2EF;--surface: #FFFFFF;--table: #FFFFFF;--table-area: #E9E7E2;--table-border: #D9D6CF;--table-grid: #EFEDE8;--border: #E4E2DC;--text: #2B2A27;--muted: #6B6861;--disabled: #A8A49B;--accent: #E07B00;--accent-hover: #C96E00;--accent-pressed: #B05F00;--on-accent: #1E1A14;--line: #1A1A1A;--ok: #1F7A47;--ok-soft: #E3F3EA;--ok-text: #165A35;--warn: #B26B00;--warn-soft: #FFF3DC;--warn-text: #7A4A00;--error: #C73B2E;--error-soft: #FDE7E4;--error-text: #9E2A1F;--focus: #1F5FBF;--shadow: 0 8px 24px rgba(30, 26, 20, .14);--font-ui: "Public Sans", system-ui, sans-serif;--font-code: "Fira Code", ui-monospace, monospace;--syn-keyword: #8A3FA6;--syn-string: #1B7A4E;--syn-number: #B25A00;--syn-function: #1F5FBF;--syn-comment: #8A877F;--header-h: 48px;--console-h: 160px;--editor-w: 45%}:root{--chart-series-1: #2a78d6;--chart-grid: #EFEDE8;--blk-loop: #2a78d6;--blk-cond: #6250d6;--blk-func: #1baf7a}:root[data-theme=dark]{--chart-series-1: #3987e5;--chart-grid: #302F2B;--blk-loop: #3987e5;--blk-cond: #9085e9;--blk-func: #199e70;--bg: #1E1E1C;--surface: #262623;--table-area: #141412;--border: #3A3935;--text: #ECEAE4;--muted: #A8A49B;--disabled: #6B6861;--ok-soft: #1C3A28;--ok-text: #9BDDB4;--warn-soft: #3D2E12;--warn-text: #F0C98A;--error-soft: #44201C;--error-text: #F4A59B;--syn-keyword: #C98BE0;--syn-string: #7CCB9E;--syn-number: #F0A860;--syn-function: #8DB4F0;--syn-comment: #8A877F}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--font-ui);font-size:14px;color:var(--text);background:var(--bg);overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}code{font-family:var(--font-code)}#app{height:100vh;display:grid;grid-template-rows:var(--header-h) 1fr auto;overflow:hidden}header.topbar{display:flex;align-items:center;padding:0 16px;gap:8px;border-bottom:1px solid var(--border);background:var(--surface);overflow-x:auto;scrollbar-width:none}.brand{display:flex;align-items:center;gap:12px;flex:1 1 0;min-width:0;overflow:hidden}.brand .logo,.loader-card .logo{display:flex;align-items:center;gap:8px;font-weight:600;letter-spacing:.01em;white-space:nowrap}.brand .logo i,.loader-card .logo i{width:10px;height:10px;background:var(--accent);border-radius:2px;display:inline-block}.brand .sep{color:var(--border)}.program-name{display:flex;align-items:center;gap:6px;padding:3px 6px;border-radius:2px;border:1px solid transparent;background:transparent;color:var(--text);min-width:0;flex:0 1 auto}.program-name:hover{border-color:var(--border)}.program-name input{border:0;background:transparent;width:14ch;min-width:3ch;flex:0 1 14ch;padding:0;color:inherit;outline:none;text-overflow:ellipsis}.program-name svg{color:var(--muted);flex:none}.controls{display:flex;align-items:center;gap:8px;flex:none}.btn-primary{display:flex;align-items:center;gap:8px;height:34px;padding:0 14px 0 12px;border-radius:6px;border:1px solid var(--accent-hover);background:var(--accent);color:var(--on-accent);font-weight:600;font-size:15px;white-space:nowrap}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:active{background:var(--accent-pressed);box-shadow:inset 0 2px #00000026}.btn-primary:disabled{background:var(--bg);border-color:var(--border);color:var(--disabled);box-shadow:none}.btn-primary .kbd{font-size:11px;font-weight:500;color:#5c3b0a;border:1px solid #B8760E;border-radius:3px;padding:0 4px;line-height:16px}.btn-primary:disabled .kbd{color:inherit;border-color:var(--border)}.btn-primary.stop{background:var(--text);border-color:var(--text);color:var(--surface)}.btn-primary.stop:hover{background:#141311}:root[data-theme=dark] .btn-primary.stop:hover{background:#fff}.btn-primary.stop .kbd{color:#c9c6be;border-color:#5a5852}.btn-group{display:flex;gap:4px}.btn-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text)}.btn-icon:hover:not(:disabled){background:var(--bg)}.btn-icon:disabled{opacity:.45}.speed{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;height:34px;margin-left:4px;background:var(--surface);font-family:var(--font-code);font-size:13px}.speed button{padding:0 10px;border:0;background:transparent;color:var(--muted);font-family:inherit;font-size:inherit}.speed button[aria-pressed=true]{background:var(--text);color:var(--surface);font-weight:600}.pill{display:inline-flex;align-items:center;gap:6px;margin-left:8px;padding:0 10px;height:26px;border-radius:13px;background:var(--bg);color:var(--text);font-size:13px;font-weight:600;white-space:nowrap}.pill i{width:8px;height:8px;border-radius:50%;background:#8a877f;display:inline-block}.pill[data-status=running]{background:var(--ok-soft);color:var(--ok-text)}.pill[data-status=running] i{background:var(--ok)}.pill[data-status=paused]{background:var(--warn-soft);color:var(--warn-text)}.pill[data-status=paused] i{background:var(--warn)}.pill[data-status=finished] i{background:var(--text)}.pill[data-status=error],.pill[data-status=off_table]{background:var(--error-soft);color:var(--error-text)}.pill[data-status=error] i,.pill[data-status=off_table] i{background:var(--error)}.tools{display:flex;justify-content:flex-end;align-items:center;gap:4px;flex:1 0 0;min-width:max-content}@media(max-width:1400px){.topbar .lbl-opt{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}@media(max-width:1300px){.topbar .lbl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.tools .btn-tool:not(.outlined):not(.square){width:32px;padding:0;justify-content:center}}.btn-tool{display:flex;align-items:center;gap:6px;height:32px;padding:0 10px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--text);white-space:nowrap}.btn-tool:hover{background:var(--bg)}.btn-tool.outlined{border-color:var(--border);background:var(--surface)}.btn-tool .muted{color:var(--muted)}.btn-tool.square{width:32px;padding:0;justify-content:center}.tools .vsep{width:1px;height:20px;background:var(--border);margin:0 4px}main.workspace{display:grid;grid-template-columns:var(--editor-w) 6px 1fr;min-height:0}section.editor-pane{display:grid;grid-template-rows:32px 1fr;min-height:0;background:var(--surface);min-width:0}.editor-bar{display:flex;align-items:center;gap:8px;padding:0 12px;border-bottom:1px solid var(--border);font-size:13px;color:var(--muted)}.editor-bar .file{font-family:var(--font-code);color:var(--text)}.editor-bar .unsaved{display:none;align-items:center;gap:5px}.editor-bar .unsaved i{width:6px;height:6px;border-radius:50%;background:var(--warn)}.editor-bar[data-unsaved=true] .unsaved{display:flex}.editor-bar .right{margin-left:auto}.editor-host{min-height:0;overflow:hidden}.editor-host .cm-editor{height:100%;font-size:14px}.editor-host .cm-scroller{font-family:var(--font-code);line-height:1.6}.editor-host .cm-content{padding:8px 0}.editor-host .cm-gutters{background:var(--surface);color:var(--muted);border:0}.editor-host .cm-lineNumbers .cm-gutterElement{min-width:52px;padding:0 12px 0 0}.editor-host .cm-activeLine{background:var(--bg)}.editor-host .cm-activeLineGutter{background:var(--bg);color:var(--text)}.editor-host .cm-line.cm-error-line{background:var(--error-soft)}.editor-host .cm-gutterElement.cm-error-gutter{color:var(--error)}.editor-host .cm-gutterElement.cm-error-gutter:before{content:"";display:inline-block;width:14px;height:14px;vertical-align:-2px;margin-right:5px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23C73B2E'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Crect x='11' y='6' width='2' height='8' fill='%23fff'/%3E%3Crect x='11' y='16' width='2' height='2' fill='%23fff'/%3E%3C/svg%3E") no-repeat center / contain}.editor-host .cm-cursor{border-left-color:var(--text)}.editor-host .cm-selectionBackground,.editor-host .cm-editor ::selection{background:#e07b002e!important}.editor-host .cm-focused{outline:none}.splitter-v{background:var(--bg);border-left:1px solid var(--border);border-right:1px solid var(--border);cursor:col-resize;display:grid;place-items:center}.splitter-v span{width:2px;height:24px;border-radius:1px;background:var(--border)}section.table-pane{position:relative;min-height:0;min-width:0;background:var(--table-area);overflow:hidden}section.table-pane canvas{display:block;width:100%;height:100%}section.table-pane canvas.grab{cursor:grab}section.table-pane canvas.pointer{cursor:pointer}section.table-pane canvas.crosshair{cursor:crosshair}.zoom{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--surface)}.zoom button{width:30px;height:30px;border:0;background:transparent;color:var(--text);display:grid;place-items:center}.zoom button:hover{background:var(--bg)}.zoom span{height:1px;background:var(--border)}.sensor-bar{position:absolute;left:12px;bottom:12px;display:flex;gap:6px;flex-wrap:wrap;max-width:calc(100% - 24px)}.tile{display:grid;grid-template-columns:auto auto;grid-template-rows:auto auto;column-gap:8px;align-items:center;padding:6px 10px;min-width:128px;border-radius:6px;border:1px solid var(--border);background:var(--surface)}.tile .port{grid-row:1 / 3;width:28px;height:28px;border-radius:4px;background:var(--bg);display:grid;place-items:center;font-weight:600;font-size:13px}.tile .port.small{font-size:12px}.tile .name{font-size:13px;color:var(--muted);white-space:nowrap;display:flex;align-items:center;gap:5px}.tile .value{font-family:var(--font-code);font-size:16px;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:6ch}.tile .value .unit{font-size:13px;color:var(--muted)}.tile.empty{border-style:dashed;border-color:var(--table-border);background:transparent}.tile.empty .port,.tile.empty .name,.tile.empty .value{color:var(--disabled)}.tile.active{border-color:var(--ok)}.tile.active .port{background:var(--ok-soft);color:var(--ok-text)}.tile .force-ctl{grid-column:1 / 3;display:flex;align-items:center;gap:6px;margin-top:6px}.tile .force-ctl button{height:24px;padding:0 8px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:12px}.tile .force-ctl button:active,.tile .force-ctl button[data-down=true]{background:var(--accent);border-color:var(--accent-hover);color:var(--on-accent)}.tile .force-ctl input[type=range]{width:70px;accent-color:var(--accent)}.result-card{position:absolute;top:16px;left:50%;transform:translate(-50%);width:420px;max-width:calc(100% - 24px);padding:16px 18px;border-radius:6px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);display:grid;gap:12px}.result-card .head{display:flex;align-items:center;gap:8px}.result-card .head i{width:8px;height:8px;border-radius:50%;background:var(--ok)}.result-card[data-grade=mid] .head i{background:var(--warn)}.result-card[data-grade=bad] .head i{background:var(--error)}.result-card .head b{font-weight:600}.result-card .head .ctx{margin-left:auto;font-size:13px;color:var(--muted)}.result-card .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;font-variant-numeric:tabular-nums}.result-card .stats .num{font-family:var(--font-code);font-size:22px}.result-card .stats .num.pct{color:var(--ok)}.result-card[data-grade=mid] .stats .num.pct{color:var(--warn)}.result-card[data-grade=bad] .stats .num.pct{color:var(--error)}.result-card .stats .lbl{font-size:13px;color:var(--muted)}.result-card p{margin:0;line-height:1.45;text-wrap:pretty}.result-card .actions{display:flex;gap:8px;justify-content:flex-end}.btn-secondary{height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text)}.btn-secondary:hover{background:var(--bg)}.btn-accent{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--accent-hover);background:var(--accent);color:var(--on-accent);font-weight:600}.btn-accent:hover{background:var(--accent-hover)}.table-hint{position:absolute;top:12px;left:12px;padding:6px 10px;border-radius:6px;background:var(--surface);border:1px solid var(--border);font-size:13px;color:var(--muted);max-width:60%}section.console-pane{display:grid;grid-template-rows:32px 1fr;min-height:0;height:var(--console-h);border-top:1px solid var(--border);background:var(--surface)}section.console-pane.collapsed{height:32px}section.console-pane.collapsed .console-split{display:none}.console-head{display:flex;align-items:center;gap:10px;padding:0 12px;border-bottom:1px solid var(--border);font-size:13px;cursor:row-resize;-webkit-user-select:none;user-select:none}.console-head .toggle{display:flex;align-items:center;gap:6px;border:0;background:transparent;font-weight:600;color:var(--text);padding:0}.console-head .toggle svg{transition:transform .15s}section.console-pane.collapsed .console-head .toggle svg{transform:rotate(-90deg)}.console-head .errcount{display:none;align-items:center;gap:5px;padding:0 8px;height:20px;border-radius:10px;background:var(--error-soft);color:var(--error-text);font-weight:600}.console-head .errcount[data-show=true]{display:flex}.console-head .right{margin-left:auto;color:var(--muted)}.console-head .clear{border:0;background:transparent;color:var(--muted);padding:0}.console-head .clear:hover{color:var(--text)}.console-body{overflow:auto;padding:6px 0;font-family:var(--font-code);font-size:16px;line-height:1.6}.cline{display:grid;grid-template-columns:72px 1fr;padding:0 12px}.cline .t{color:var(--muted);font-size:13px;line-height:inherit;font-variant-numeric:tabular-nums}.cline .x{white-space:pre-wrap;word-break:break-word}.cline.hint{color:var(--muted)}.cline.warn .x{color:var(--warn-text)}.error-card{margin:4px 12px 8px 84px;padding:10px 14px;border-left:4px solid var(--error);border-radius:0 6px 6px 0;background:var(--error-soft);font-family:var(--font-ui);font-size:14px;color:var(--text);display:grid;gap:8px}.error-card .head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.error-card .head b{font-weight:600}.error-card .head code{font-size:13px;color:var(--muted)}.error-card .jump{margin-left:auto;height:26px;padding:0 10px;border-radius:6px;border:1px solid #E4C9C4;background:var(--surface);font-size:13px;color:var(--text)}.error-card p{margin:0;line-height:1.5;text-wrap:pretty}.error-card p code{background:var(--surface);padding:0 4px;border-radius:2px}.error-card .orig{display:flex;align-items:center;gap:4px;border:0;background:transparent;padding:0;font-size:13px;color:var(--muted);justify-self:start}.error-card .orig svg{transition:transform .15s}.error-card[data-open=true] .orig svg{transform:rotate(90deg)}.error-card pre{display:none;margin:0;font-family:var(--font-code);font-size:13px;line-height:1.5;color:var(--muted);background:var(--surface);padding:8px 10px;border-radius:2px;white-space:pre-wrap}.error-card[data-open=true] pre{display:block}.error-card.warn{border-left-color:var(--warn);background:var(--warn-soft)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e1a1459;display:grid;place-items:center;z-index:20}.dialog{width:min(880px,calc(100vw - 48px));max-height:calc(100vh - 48px);overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:var(--shadow);display:grid;grid-template-rows:auto 1fr auto}.dialog .d-head{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--border);font-weight:600;font-size:16px}.dialog .d-head .close{margin-left:auto;width:32px;height:32px;border:0;background:transparent;border-radius:6px;color:var(--muted);display:grid;place-items:center}.dialog .d-head .close:hover{background:var(--bg);color:var(--text)}.dialog .d-body{padding:20px;overflow:auto}.dialog .d-foot{display:flex;gap:8px;justify-content:flex-end;padding:12px 20px;border-top:1px solid var(--border)}.dialog .d-foot .left{margin-right:auto;display:flex;gap:8px;align-items:center}.field{display:grid;gap:4px;font-size:13px;color:var(--muted)}.field input,.field select{height:32px;border:1px solid var(--table-border);border-radius:2px;background:var(--surface);padding:0 10px;color:var(--text);font-size:14px}.field input[type=number]{font-family:var(--font-code);font-variant-numeric:tabular-nums;width:100%}.field select.conflict{border:2px solid var(--error)}.field .conflict-msg{color:var(--error-text);font-size:13px;display:flex;align-items:center;gap:5px}.dialog.wide{width:min(1100px,calc(100vw - 48px))}.robot-cfg{display:grid;grid-template-columns:minmax(300px,1fr) 460px;gap:24px;align-items:start}.robot-cfg-left{display:grid;gap:16px}.robot-cfg-right{display:grid;gap:12px}.port-row[data-selected=true] .port-pick{background:var(--accent);color:var(--on-accent);border-color:var(--accent-hover)}.port-pick{width:28px;height:32px;border-radius:6px;border:1px solid var(--border);background:var(--surface);font-weight:600;padding:0}.add-sensors{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;color:var(--muted)}.add-sensors .add-btn{display:inline-flex;align-items:center;gap:6px}.robot-editor{width:min(100%,50vh);justify-self:center;height:auto;aspect-ratio:1;border:1px solid var(--border);border-radius:6px;background:#fff;touch-action:none;-webkit-user-select:none;user-select:none}.robot-editor:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.robot-editor .grid{stroke:#efede8;stroke-width:.06}.robot-editor .axis{stroke:#d9d6cf;stroke-width:.1}.robot-editor .beam{stroke:#a8a49b;stroke-width:.8;stroke-linecap:round}.robot-editor .hub{fill:#f3f2ef;stroke:#2b2a27;stroke-width:.3}.robot-editor .hub-matrix{fill:#fff;stroke:#c9c6be;stroke-width:.2}.robot-editor .chevron{fill:none;stroke:#2b2a27;stroke-width:.3;stroke-linecap:round;stroke-linejoin:round}.robot-editor .wheel{cursor:ew-resize}.robot-editor .wheel-on{fill:#2b2a27}.robot-editor .wheel-off{fill:#d9d6cf}.robot-editor .sensor{cursor:grab}.robot-editor .hit{fill:transparent}.robot-editor .sel-ring{fill:none;stroke:none}.robot-editor .sensor.selected .sel-ring{stroke:#e07b00;stroke-width:.3;stroke-dasharray:.6 .4}.robot-editor .color-body{fill:#8a877f;stroke:#2b2a27;stroke-width:.25}.robot-editor .dist-body{fill:#2b2a27}.robot-editor .dist-eye{fill:#2aa6d8;pointer-events:none}.robot-editor .force-body{fill:#6b6861}.robot-editor .force-tip{fill:#c73b2e;pointer-events:none}.robot-editor .dir-line{stroke:#6b6861;stroke-width:.15;stroke-dasharray:.4 .3}.robot-editor .rotate-handle{fill:#fff;stroke:#e07b00;stroke-width:.3;cursor:alias}.robot-editor .port-label{font:600 1.5px Public Sans,sans-serif;fill:#2b2a27;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:.35;pointer-events:none}.mount-fields{display:grid;gap:8px;min-height:120px}.mount-head{display:flex;align-items:center;gap:8px}.mount-head .btn-secondary{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:28px}.mount-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.mount-info{margin:0;font-size:13px}.muted{color:var(--muted)}.robot-hint{margin:0;font-size:13px;color:var(--muted);line-height:1.5}.ports{display:grid;gap:8px}.port-row{display:grid;grid-template-columns:28px 1fr;gap:8px;align-items:start}.port-row b{font-weight:600}.numbers{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.track-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.track-tile{border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--table);text-align:left;padding:0;color:var(--text);display:grid}.track-tile:hover{border-color:var(--muted)}.track-tile[aria-pressed=true]{border:2px solid var(--accent)}.track-tile>svg{display:block;width:100%;height:auto;background:#fff}.track-tile .cap{padding:8px 10px;font-size:13px;border-top:1px solid var(--border);display:flex;align-items:center;gap:6px}.track-tile[aria-pressed=true] .cap{font-weight:600}.track-tile .cap .tag{margin-left:auto;color:var(--muted);font-size:12px}.track-tile.custom{border-style:dashed;border-color:var(--disabled)}.track-tile.new{place-items:center;min-height:130px;border-style:dashed;color:var(--muted);gap:6px}.examples{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.example-card{border:1px solid var(--border);border-radius:6px;padding:14px 16px;display:grid;gap:8px;background:var(--surface)}.example-card b{font-weight:600;font-size:16px}.example-card .lvl{font-size:12px;color:var(--muted);display:flex;gap:8px;align-items:center}.example-card .lvl i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ok)}.example-card .lvl[data-l="2"] i{background:var(--warn)}.example-card .lvl[data-l="3"] i{background:var(--error)}.example-card p{margin:0;line-height:1.45;color:var(--text)}.example-card .actions{display:flex;justify-content:flex-end}.track-editor-bar{position:absolute;top:12px;left:12px;right:56px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 12px;border-radius:6px;background:var(--surface);border:1px solid var(--border);font-size:13px;box-shadow:var(--shadow)}.track-editor-bar input[type=text]{height:28px;border:1px solid var(--table-border);border-radius:2px;padding:0 8px;background:var(--surface);color:var(--text)}.track-editor-bar input[type=number]{height:28px;width:64px;border:1px solid var(--table-border);border-radius:2px;padding:0 8px;background:var(--surface);color:var(--text);font-family:var(--font-code)}.track-editor-bar label{display:flex;align-items:center;gap:5px;color:var(--muted)}.track-editor-bar .btn-secondary,.track-editor-bar .btn-accent{height:28px}.track-editor-bar .tool[aria-pressed=true]{background:var(--text);color:var(--surface);border-color:var(--text)}.track-editor-bar .hint{width:100%;color:var(--muted)}.toast{position:fixed;bottom:180px;left:50%;transform:translate(-50%);padding:8px 14px;background:var(--text);color:var(--surface);border-radius:6px;font-size:13px;z-index:30}@media(max-width:1100px){main.workspace{grid-template-columns:1fr;grid-template-rows:1fr 6px 1fr}.splitter-v{cursor:row-resize;border:0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.splitter-v span{width:24px;height:2px}.brand .logo span{display:none}}.sy-k{color:var(--syn-keyword)}.sy-s{color:var(--syn-string)}.sy-n{color:var(--syn-number)}.sy-f{color:var(--syn-function)}.sy-c{color:var(--syn-comment)}.help-card{position:fixed;z-index:40;width:400px;max-height:min(640px,calc(100vh - 16px));overflow:auto;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;box-shadow:var(--shadow);font-size:14px;opacity:0;transform:translateY(4px);transition:opacity .12s ease-out,transform .12s ease-out}.help-card.in{opacity:1;transform:none}.help-card[hidden]{display:none}.help-card.pinned{border-color:var(--accent-hover)}.hc-head{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;padding:14px 14px 12px 16px}.hc-badge{width:40px;height:40px;border-radius:8px;display:grid;place-items:center;background:var(--bg);color:var(--text)}.hc-badge.hc-color_sensor{background:#edebe6}.hc-badge.hc-distance_sensor{background:#e2f2f8;color:#136e91}.hc-badge.hc-force_sensor{background:var(--error-soft);color:var(--error-text)}.hc-badge.hc-motor{background:var(--ok-soft);color:var(--ok-text)}.hc-badge.hc-gyro,.hc-badge.hc-hub{background:var(--warn-soft);color:var(--warn-text)}.hc-title{font-weight:600;font-size:16px;display:flex;align-items:center;gap:8px}.hc-port{font-family:var(--font-code);font-size:12px;font-weight:500;padding:1px 7px;border-radius:10px;background:var(--text);color:var(--surface)}.hc-intro{color:var(--muted);font-size:13px;line-height:1.45;margin-top:3px}.hc-close{width:28px;height:28px;border:0;border-radius:6px;background:transparent;color:var(--muted);display:grid;place-items:center;visibility:hidden}.help-card.pinned .hc-close,.help-card:focus-within .hc-close,.help-card:hover .hc-close{visibility:visible}.hc-close:hover{background:var(--bg);color:var(--text)}.hc-live{margin:0 16px;padding:12px 14px;border-radius:6px;background:var(--bg);display:grid;gap:8px}.hc-live-row{display:flex;align-items:center;gap:12px;justify-content:space-between}.hc-live-row:has(.hc-dial),.hc-live-row:has(.hc-matrix){justify-content:flex-start}.hc-big{font-family:var(--font-code);font-size:26px;font-weight:500;font-variant-numeric:tabular-nums;line-height:1.1}.hc-big small{font-size:14px;color:var(--muted);font-weight:400}.hc-sub{font-size:13px;color:var(--muted);line-height:1.5;font-variant-numeric:tabular-nums}.hc-sub b{color:var(--accent-pressed)}.hc-chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:12px;background:var(--surface);border:1px solid var(--border);font-size:13px;font-weight:500;white-space:nowrap}.hc-chip i{width:10px;height:10px;border-radius:50%;border:1px solid rgba(0,0,0,.25)}.hc-chip.hc-on{background:var(--accent);border-color:var(--accent-hover);color:var(--on-accent)}.hc-scale{position:relative;height:14px}.hc-scale-bar{position:absolute;top:3px;right:0;bottom:3px;left:0;border-radius:4px;border:1px solid var(--border)}.hc-grad-bw{background:linear-gradient(90deg,#1a1a1a,#1a1a1a 10%,#fff 95%)}.hc-grad-dist{background:linear-gradient(90deg,#c73b2e,#e07b00 12%,#e2f2f8 40%,#f3f2ef)}.hc-scale b{position:absolute;top:-2px;width:4px;height:18px;margin-left:-2px;border-radius:2px;background:var(--accent);box-shadow:0 0 0 2px var(--surface);transition:left .08s linear}.hc-scale b.hc-off{background:var(--disabled)}.hc-scale-lbl{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}.hc-meter{height:10px;border-radius:5px;background:var(--surface);border:1px solid var(--border);overflow:hidden}.hc-meter div{height:100%;background:var(--accent);transition:width .08s linear}.hc-dial{flex:none}.hc-dial-face{fill:var(--surface);stroke:var(--border);stroke-width:1.5}.hc-dial-mark{fill:var(--muted)}.hc-dial-n{font:600 6px Public Sans,sans-serif;fill:var(--muted);text-anchor:middle}.hc-dial-needle{stroke:var(--accent);stroke-width:2.5;stroke-linecap:round}.hc-dial-hub{fill:var(--text)}.hc-matrix{display:grid;grid-template-columns:repeat(5,9px);gap:3px;padding:6px;border-radius:4px;background:var(--surface);border:1px solid var(--border);flex:none}.hc-matrix i{width:9px;height:9px;border-radius:50%;background:#d9d6cf}.hc-matrix i.on{background:var(--text)}.hc-wait{font-size:13px;color:var(--muted)}.hc-body{padding:4px 16px 12px}.hc-sec{margin:14px 0 6px;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.hc-sec-row{display:flex;align-items:center;justify-content:space-between}.hc-fns{list-style:none;margin:0;padding:0;display:grid;gap:2px}.hc-fn{padding:7px 8px;margin:0 -8px;border-radius:6px}.hc-fn:hover{background:var(--bg)}.hc-fn p{margin:3px 0 0;font-size:13px;line-height:1.45;color:var(--text)}.hc-fn-top{display:flex;align-items:flex-start;gap:8px}.hc-code{flex:1;font-family:var(--font-code);font-size:13px;line-height:1.5;word-break:break-word}.hc-fn-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:3px;font-size:12px}.hc-ret{color:var(--muted);font-family:var(--font-code)}.hc-await{padding:0 6px;border-radius:8px;background:var(--warn-soft);color:var(--warn-text);font-weight:600}.hc-now{margin-left:auto;font-family:var(--font-code);color:var(--ok-text);background:var(--ok-soft);padding:0 6px;border-radius:8px;font-variant-numeric:tabular-nums}.hc-now:empty{display:none}.hc-insert,.hc-insert-ex{flex:none;display:inline-flex;align-items:center;gap:4px;height:24px;min-width:24px;justify-content:center;padding:0 6px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:12px;font-weight:600}.hc-insert:hover,.hc-insert-ex:hover{background:var(--accent);border-color:var(--accent-hover);color:var(--on-accent)}.hc-insert.hc-done,.hc-insert-ex.hc-done{animation:hc-done .6s ease-out}@keyframes hc-done{0%{background:var(--ok);color:#fff;border-color:var(--ok)}to{background:var(--surface)}}.hc-example{margin:0;padding:10px 12px;border-radius:6px;background:var(--bg);border:1px solid var(--border);font-family:var(--font-code);font-size:13px;line-height:1.55;white-space:pre-wrap}.hc-tip{display:flex;gap:8px;align-items:flex-start;margin-top:12px;padding:10px 12px;border-radius:6px;background:var(--warn-soft);color:var(--warn-text);font-size:13px;line-height:1.45}.hc-tip svg{flex:none;margin-top:1px}.hc-foot{padding:10px 16px;border-top:1px solid var(--border);font-size:12px;color:var(--muted);display:flex;align-items:center;gap:4px;flex-wrap:wrap}.hc-foot svg{padding:1px;border:1px solid var(--border);border-radius:3px}.tile[data-help]{cursor:help}.tile[data-help]:hover{border-color:var(--muted)}@media(prefers-reduced-motion:reduce){.help-card,.hc-scale b,.hc-meter div{transition:none}.hc-insert.hc-done{animation:none}}.editor-host .cm-tooltip.cm-tooltip-hover{border:0;background:transparent}.api-tip{max-width:380px;padding:10px 12px;border-radius:6px;background:var(--surface);color:var(--text);border:1px solid var(--border);box-shadow:var(--shadow);font-family:var(--font-ui);font-size:13px}.api-tip code{font-family:var(--font-code);font-size:13px}.api-tip p{margin:6px 0 0;line-height:1.45}.api-tip .at-meta{display:flex;gap:6px;margin-top:4px;font-size:12px}.api-tip .at-ex{margin-top:8px;padding:6px 8px;border-radius:4px;background:var(--bg);display:grid;gap:2px}.api-tip .at-ex>span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.api-tip .at-title{display:flex;gap:6px;align-items:center;font-size:14px}.api-tip ul{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:3px}.api-tip li{display:flex;justify-content:space-between;gap:12px}.api-tip li span{color:var(--muted);font-family:var(--font-code);font-size:12px}.editor-host .cm-line.cm-inserted-line{animation:cm-inserted 1.6s ease-out}@keyframes cm-inserted{0%,40%{background:#e07b0038}to{background:transparent}}.console-split{display:grid;grid-template-columns:var(--log-w, 50%) 6px 1fr;min-height:0}.console-split .console-body{min-width:0}.splitter-c{background:var(--bg);border-left:1px solid var(--border);border-right:1px solid var(--border);cursor:col-resize;display:grid;place-items:center}.splitter-c span{width:2px;height:24px;border-radius:1px;background:var(--border)}.plot-panel{position:relative;min-width:0;min-height:0;display:grid;grid-template-rows:1fr auto;padding:8px 10px 6px;gap:4px}.plot-empty{align-self:center;justify-self:center;max-width:420px;display:grid;gap:4px;text-align:center;font-size:13px;color:var(--muted);line-height:1.5}.plot-empty b{color:var(--text);font-size:14px}.plot-empty code,.plot-note code{font-family:var(--font-code);background:var(--bg);padding:0 4px;border-radius:2px;color:var(--text)}.plot-empty[hidden],.plot-note[hidden]{display:none}.plot-grid{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(240px,1fr);gap:8px;overflow-x:auto;min-height:0}.plot-grid:empty{display:none}.plot-card{display:grid;grid-template-rows:auto 1fr;min-height:0;border:1px solid var(--border);border-radius:6px;background:var(--surface);padding:4px 8px 2px}.plot-head{display:flex;align-items:center;gap:8px;min-width:0;height:22px}.plot-title{font-family:var(--font-code);font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plot-last{margin-left:auto;font-family:var(--font-code);font-size:13px;color:var(--text);font-variant-numeric:tabular-nums}.plot-csv{border:1px solid var(--border);background:transparent;color:var(--muted);font-size:11px;border-radius:4px;height:20px;padding:0 6px}.plot-csv:hover{color:var(--text);background:var(--bg)}.plot-canvas{position:relative;min-height:0}.plot-canvas canvas{position:absolute;top:0;right:0;bottom:0;left:0;display:block;cursor:crosshair}.plot-tip{position:absolute;pointer-events:none;display:grid;gap:0;padding:4px 8px;border-radius:4px;background:var(--text);color:var(--surface);font-size:12px;white-space:nowrap;box-shadow:var(--shadow)}.plot-tip b{font-family:var(--font-code);font-size:14px;font-weight:500}.plot-tip span{opacity:.8}.plot-tip[hidden]{display:none}.plot-note{font-size:12px;color:var(--muted)}.editor-tools{margin-left:auto;display:flex;gap:4px}.ed-toggle{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 8px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--muted);font-size:12px;font-weight:500}.ed-toggle:hover{color:var(--text);background:var(--bg)}.ed-toggle[aria-pressed=true]{background:var(--text);color:var(--surface);border-color:var(--text)}.vim-mode{font-family:var(--font-code);font-size:11px;font-weight:600;padding:1px 8px;border-radius:10px;background:var(--bg);color:var(--text);letter-spacing:.04em}.vim-mode[data-mode=insert]{background:var(--ok-soft);color:var(--ok-text)}.vim-mode[data-mode=visual]{background:var(--warn-soft);color:var(--warn-text)}.vim-mode[hidden]{display:none}.editor-host .cm-vim-panel{padding:2px 10px;font-family:var(--font-code);font-size:13px;background:var(--bg);color:var(--text);border-top:1px solid var(--border)}.editor-host .cm-vim-panel input{font-family:var(--font-code);color:var(--text);background:transparent}.editor-host .cm-fat-cursor{background:#e07b008c!important;color:inherit!important}.editor-host .cm-panels{background:var(--bg);color:var(--text);border-color:var(--border)}.editor-host .cm-blk-head-loop{background-color:color-mix(in srgb,var(--blk-loop) 8%,transparent)}.editor-host .cm-blk-head-cond{background-color:color-mix(in srgb,var(--blk-cond) 8%,transparent)}.editor-host .cm-blk-head-func{background-color:color-mix(in srgb,var(--blk-func) 9%,transparent)}.editor-host .cm-activeLine.cm-blk-head{background-color:var(--bg)}.cm-blk-label{display:inline-block;margin-left:12px;padding:0 7px;border-radius:9px;line-height:18px;vertical-align:1px;font-family:var(--font-ui);font-size:12px;font-weight:600;white-space:nowrap;cursor:help;border:1px solid currentColor;background:var(--surface)}.cm-blk-label.cm-blk-loop{color:color-mix(in srgb,var(--blk-loop) 80%,var(--text))}.cm-blk-label.cm-blk-cond{color:color-mix(in srgb,var(--blk-cond) 80%,var(--text))}.cm-blk-label.cm-blk-func{color:color-mix(in srgb,var(--blk-func) 70%,var(--text))}.cm-blk-label.cm-blk-back{font-weight:500;border-style:dashed;opacity:.85}.editor-host .cm-tooltip.cm-tooltip-autocomplete.spike-ac{border:1px solid var(--border);border-radius:6px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.editor-host .spike-ac>ul{font-family:var(--font-code)!important;font-size:13px;max-height:260px!important;min-width:280px}.editor-host .spike-ac>ul>li{padding:3px 10px 3px 6px!important;display:flex;align-items:center;gap:6px;color:var(--text)}.editor-host .spike-ac>ul>li[aria-selected]{background:var(--text)!important;color:var(--surface)!important}.editor-host .spike-ac .cm-completionLabel{flex:1}.editor-host .spike-ac .cm-completionMatchedText{text-decoration:none;font-weight:600;color:var(--accent-pressed)}.editor-host .spike-ac>ul>li[aria-selected] .cm-completionMatchedText{color:#ffd08a}.editor-host .spike-ac .cm-completionDetail{margin-left:12px;font-family:var(--font-ui);font-size:12px;font-style:normal;color:var(--muted)}.editor-host .spike-ac>ul>li[aria-selected] .cm-completionDetail{color:inherit;opacity:.8}.editor-host .cm-completionIcon{width:16px;opacity:.8}.editor-host .cm-tooltip.cm-completionInfo{border:0;background:transparent;padding:0 0 0 6px}.api-tip pre{margin:2px 0 0;font-family:var(--font-code);font-size:12.5px;line-height:1.5;white-space:pre-wrap}.editor-host .cm-snippetField{background:#e07b0029;border-radius:2px}.cs-intro{margin:0 0 16px;font-size:14px;line-height:1.55;color:var(--muted)}.cs-intro kbd,.robot-hint kbd{font-family:var(--font-code);font-size:12px;padding:0 5px;border:1px solid var(--border);border-bottom-width:2px;border-radius:4px;background:var(--surface);color:var(--text)}.cs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.cs-card{min-width:0;display:grid;grid-template-rows:auto auto 1fr auto;gap:8px;padding:14px 16px;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.cs-card h3{margin:0;font-size:16px;font-weight:600}.cs-card p{margin:0;font-size:13px;line-height:1.5;color:var(--text)}.cs-card pre{margin:0;padding:10px 12px;border-radius:6px;background:var(--bg);font-family:var(--font-code);font-size:13px;line-height:1.55;white-space:pre;overflow-x:auto;min-width:0}.cs-insert{justify-self:end;display:inline-flex;align-items:center;gap:6px;height:28px}.loader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);transition:opacity .2s}.loader.restart{background:color-mix(in srgb,var(--bg) 55%,transparent)}.loader.done{opacity:0;pointer-events:none}.loader[hidden]{display:none}.loader-card{width:min(440px,100%);background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:28px 28px 24px}.loader-card .logo{margin-bottom:18px}.loader-card h1{margin:0 0 6px;font-size:20px;font-weight:600}.loader-sub{margin:0 0 20px;color:var(--muted);line-height:1.5;font-size:14px}.loader-bar{--p: 0;height:10px;border-radius:5px;background:var(--bg);border:1px solid var(--border);overflow:hidden}.loader-bar i{display:block;height:100%;width:calc(var(--p) * 100%);background:var(--accent);border-radius:5px;transition:width .15s linear}.loader-row{display:flex;justify-content:space-between;gap:12px;margin-top:8px;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.loader-row b{color:var(--text);font-weight:600}.loader-steps{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:8px;font-size:14px}.loader-steps li{display:flex;align-items:center;gap:10px;color:var(--muted)}.loader-steps li i{width:16px;height:16px;border-radius:50%;border:2px solid var(--border);flex:none;box-sizing:border-box}.loader-steps li[data-state=active]{color:var(--text);font-weight:500}.loader-steps li[data-state=active] i{border-color:var(--accent);border-top-color:transparent;animation:loader-spin .8s linear infinite}.loader-steps li[data-state=done] i{border-color:var(--ok);background:var(--ok) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='5 12 10 17 19 7'/%3E%3C/svg%3E") center / 10px no-repeat}.loader-error{margin:16px 0 0;padding:10px 12px;border-radius:6px;background:var(--error-soft);color:var(--error-text);line-height:1.5;font-size:14px}@keyframes loader-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.loader-steps li[data-state=active] i{animation:none;border-top-color:var(--accent)}.loader-bar i{transition:none}}.projects-dialog{width:min(600px,calc(100vw - 32px))}.projects h3{margin:0 0 10px;font-size:14px;font-weight:600}.pj-intro,.pj-note{display:flex;gap:10px;align-items:flex-start;margin:0 0 18px;padding:10px 12px;border-radius:8px;background:var(--bg);color:var(--muted);font-size:13px;line-height:1.5}.pj-intro svg,.pj-note svg{flex:none;margin-top:2px;color:var(--accent)}.pj-intro b{color:var(--text);font-weight:600}.pj-open{display:flex;align-items:center;gap:12px;margin-bottom:18px;padding:12px 14px;border:1px solid var(--ok);border-radius:8px;background:var(--ok-soft)}.pj-open>div{display:grid;gap:2px;min-width:0}.pj-open b{overflow-wrap:anywhere}.pj-open small{color:var(--ok-text)}.pj-open .btn-secondary{margin-left:auto;display:inline-flex;align-items:center;gap:6px;flex:none;background:var(--surface)}.pj-badge{display:inline-flex;align-items:center;gap:4px;width:fit-content;padding:1px 8px;border-radius:10px;background:var(--ok);color:#fff;font-size:12px;font-weight:600}.pj-new{display:grid;gap:10px;padding:14px;border:1px solid var(--border);border-radius:8px;margin-bottom:20px}.pj-new label,.pj-unlock label{display:grid;gap:4px;font-size:13px;color:var(--muted)}.pj-new input,.pj-unlock input{height:32px;padding:0 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit;font-size:14px;min-width:0}.pj-new input:focus-visible,.pj-unlock input:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.pj-pins{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pj-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.pj-row .btn-accent{margin-left:auto}.pj-hint{font-size:13px;color:var(--muted)}.pj-hint[data-bad=true]{color:var(--error-text)}.pj-list-head{display:flex;align-items:center;gap:8px}.pj-list-head span{padding:0 7px;border-radius:9px;background:var(--bg);color:var(--muted);font-size:12px;font-weight:500}.pj-list{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:8px}.pj-list li+li{border-top:1px solid var(--border)}.pj-list li[data-open=true]{background:var(--ok-soft)}.pj-item{display:flex;align-items:center;gap:10px;padding:10px 12px}.pj-icon{color:var(--muted);display:grid}.pj-list li[data-open=true] .pj-icon{color:var(--ok)}.pj-meta{display:grid;gap:1px;min-width:0;margin-right:auto}.pj-meta b{font-weight:500;overflow-wrap:anywhere}.pj-meta small{color:var(--muted);font-size:12px}.pj-del{width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:6px;background:transparent;color:var(--muted)}.pj-del:hover{background:var(--error-soft);color:var(--error-text)}.pj-unlock{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;padding:0 12px 12px 38px}.pj-unlock label{flex:1 1 140px}.pj-unlock .pj-hint{flex-basis:100%}.pj-unlock[data-act=delete] .pj-hint:empty:before{content:"Löschen kann man nicht rückgängig machen.";color:var(--muted)}.pj-empty{margin:0;color:var(--muted);font-size:14px}.btn-danger{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--error);background:var(--error);color:#fff;font-weight:600}.btn-danger:hover{filter:brightness(.92)}button:disabled{opacity:.6;cursor:default}.program-name .lock-badge{display:none;color:var(--ok)}.program-name[data-locked=true] .lock-badge{display:inline-grid}@media(max-width:520px){.pj-pins{grid-template-columns:1fr}.pj-open{flex-wrap:wrap}}.program-name .lock-badge svg{color:var(--ok)}
