:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--bg:#f6f7f9;--surface:#fff;--text:#1b1f24;--muted:#59636e;--border:#d6dbe1;--accent:#1f5fbf;--accent-text:#fff;--run-bg:#1d7a43;--run-text:#fff;--ok-bg:#e7f5ec;--ok-border:#2e8b57;--ok-text:#1d5c39;--warn-bg:#fff6e0;--warn-border:#b7791f;--warn-text:#744d10;--error-bg:#fdecec;--error-border:#c53030;--error-text:#8a1f1f;--neutral-bg:#eef1f5;--neutral-border:#8a96a3;--neutral-text:#39424c;--py-control:#af00db;--py-keyword:#00f;--py-string:#a31515;--py-escape:#e00;--py-number:#098658;--py-comment:green;--py-function:#795e26;--py-class:#267f99;--py-constant:#0070c1;--py-variable:#001080;--py-bracket1:#0431fa;--py-bracket2:#319331;--py-bracket3:#7b3814;--code-active-line:#1f5fbf0f;--code-selection:#1f5fbf38;--code-locked:#8080801f;--code-mark:#ffc4004d;--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--series-4:#eda100;--series-5:#e87ba4;--series-6:#008300;--series-7:#6250d6;--series-8:#e34948}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#111418;--surface:#1a1f25;--text:#e6e9ed;--muted:#9aa5b1;--border:#2f3740;--accent:#5b9bf0;--accent-text:#0b1220;--run-bg:#4cc27a;--run-text:#08140d;--ok-bg:#12291c;--ok-border:#4caf7a;--ok-text:#a6e3bf;--warn-bg:#2e2410;--warn-border:#d69e2e;--warn-text:#f3d593;--error-bg:#301616;--error-border:#e05252;--error-text:#f5b5b5;--neutral-bg:#222932;--neutral-border:#6b7783;--neutral-text:#c9d1d9;--py-control:#c586c0;--py-keyword:#569cd6;--py-string:#ce9178;--py-escape:#d7ba7d;--py-number:#b5cea8;--py-comment:#6a9955;--py-function:#dcdcaa;--py-class:#4ec9b0;--py-constant:#4fc1ff;--py-variable:#9cdcfe;--py-bracket1:gold;--py-bracket2:orchid;--py-bracket3:#179fff;--code-active-line:#5b9bf014;--code-selection:#5b9bf04d;--code-locked:#ffffff0d;--code-mark:#ffd50033;--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--series-5:#d55181;--series-6:#008300;--series-7:#9085e9;--series-8:#e66767}}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);flex-direction:column;min-height:100vh;font-size:1rem;line-height:1.55;display:flex}main{flex:1}h1,h2,h3{margin:0;line-height:1.25}h1{margin-bottom:.75rem;font-size:1.6rem}h2{font-size:1.2rem}h3{font-size:1rem}p{margin:.4rem 0}code{font-family:var(--font-mono);font-size:.92em}.container{width:100%;max-width:52rem;margin:0 auto;padding:0 1rem}.container-wide{max-width:72rem}.muted{color:var(--muted)}.site-header{background:var(--surface);border-bottom:1px solid var(--border)}.site-header-inner{align-items:center;gap:.75rem;padding-top:.75rem;padding-bottom:.75rem;display:flex}.wordmark{letter-spacing:.01em;font-size:1.15rem;font-weight:700}.status-pill{text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--warn-border);color:var(--warn-text);background:var(--warn-bg);border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:600}.site-footer{border-top:1px solid var(--border);color:var(--muted);text-align:center;margin-top:2.5rem;padding:1.25rem 1rem 2rem;font-size:.85rem}.site-footer p{max-width:52rem;margin:.4rem auto}.intro{padding:1.75rem 0 .5rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:.6rem;margin-top:1.25rem;padding:1.1rem 1.25rem}.card-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.5rem;display:flex}.button{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:.4rem;padding:.45rem 1rem;font-weight:600}.button:hover:not(:disabled){border-color:var(--accent)}.button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.button:disabled{cursor:not-allowed;opacity:.55}.button-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.checks{margin:.5rem 0 0;padding:0;list-style:none}.check{border-top:1px solid var(--border);grid-template-columns:6.5rem 1fr;align-items:start;gap:.75rem;padding:.65rem 0;display:grid}.check:first-child{border-top:none}.check p{color:var(--muted);margin:.15rem 0 0}.badge{text-align:center;border:1px solid;border-radius:.3rem;min-width:5.5rem;padding:.15rem .5rem;font-size:.85rem;font-weight:700;display:inline-block}.badge-pass{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok-text)}.badge-fail{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.badge-skipped,.badge-info{background:var(--neutral-bg);border-color:var(--neutral-border);color:var(--neutral-text)}.badge-warn{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-text)}.button-row{flex-wrap:wrap;gap:.5rem;display:flex}.subheading{margin:1rem 0 .25rem;font-size:1rem}.plain-list{margin:.25rem 0 0;padding-left:1.25rem}.plain-list li{margin:.2rem 0}.steps{margin:.5rem 0 0;padding:0;list-style:none}.step{border-top:1px solid var(--border);border-left:4px solid #0000;grid-template-columns:6.5rem 1fr;align-items:start;gap:.75rem;padding:.65rem .5rem;display:grid}.step:first-child{border-top:none}.step-current{border-left-color:var(--accent);background:var(--neutral-bg)}.step p{color:var(--muted);margin:.15rem 0 .4rem}.step .step-hint{border-left:3px solid var(--accent);color:var(--text);margin:0 0 .4rem;padding:.35rem .6rem;font-weight:600}.report-text{box-sizing:border-box;width:100%;font-family:var(--font-mono);color:var(--text);background:var(--bg);border:1px solid var(--border);resize:vertical;border-radius:.4rem;margin-top:.75rem;padding:.6rem;font-size:.8rem;line-height:1.4;display:block}.button-stop{background:var(--error-border);border-color:var(--error-border);color:#fff}.select,.text-input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:.4rem;padding:.4rem .6rem}.text-input{flex:1;min-width:0}.check-label{color:var(--muted);align-items:center;gap:.3rem;font-size:.9rem;display:inline-flex}.code-editor{border:1px solid var(--border);background:var(--bg);border-radius:.4rem;display:flex;overflow:hidden}.code-gutter,.code-input{font-family:var(--font-mono);margin:0;padding:.6rem .5rem;font-size:.85rem;line-height:1.5}.code-gutter{color:var(--muted);text-align:right;-webkit-user-select:none;user-select:none;border-right:1px solid var(--border);min-width:2.5rem}.code-gutter span{display:block}.code-gutter .code-gutter-mark{color:var(--text);background:var(--code-mark);font-weight:700}.code-gutter .code-gutter-error{color:var(--error-text);background:var(--error-bg);font-weight:700}.code-input{resize:vertical;min-width:0;color:var(--text);white-space:pre;tab-size:4;background:0 0;border:none;outline:none;flex:1;overflow-x:auto}.program-status{margin-top:.5rem}.code-view{border:1px solid var(--border);background:var(--bg);border-radius:.4rem;flex:1;align-items:flex-start;min-height:12rem;display:flex;overflow:auto}.code-view .code-gutter{background:var(--bg);font-size:.8rem;position:sticky;left:0}.code-text{min-width:0;font-family:var(--font-mono);color:var(--text);white-space:pre;tab-size:4;flex:1;margin:0;padding:.6rem .5rem;font-size:.8rem;line-height:1.5;position:relative}.studio{background:var(--bg);flex-direction:column;flex:none;height:100dvh;min-height:30rem;display:flex}.studio-bar{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.4rem .75rem;padding:.4rem .75rem;display:flex}.studio-brand{flex:auto;align-items:center;gap:.5rem;min-width:0;display:flex}.studio-home{color:var(--text);font-size:1.05rem;font-weight:700;text-decoration:none}.studio-home:hover{text-decoration:underline}.studio-title{border-left:1px solid var(--border);margin:0;padding-left:.6rem;font-size:1.05rem}.studio-nav{border-left:1px solid var(--border);gap:.15rem;padding-left:.6rem;display:flex}.studio-nav-link{color:var(--muted);border-radius:.4rem;padding:.25rem .6rem;font-weight:600;text-decoration:none}.studio-nav-link:hover{color:var(--text);background:var(--bg)}.studio-nav-link[aria-current=page]{color:var(--text);background:var(--bg);box-shadow:inset 0 -2px 0 var(--accent)}.studio-nav-menu{display:none;position:relative}.studio-nav-menu summary{cursor:pointer;border:1px solid var(--border);border-radius:.4rem;padding:.2rem .5rem;font-weight:700;list-style:none}.studio-nav-menu summary:after{content:" ▾";color:var(--muted)}.studio-nav-menu summary::-webkit-details-marker{display:none}.studio-nav-menu nav{z-index:120;background:var(--surface);border:1px solid var(--border);border-radius:.5rem;flex-direction:column;min-width:9rem;padding:.25rem;display:flex;position:absolute;top:calc(100% + .25rem);left:0;box-shadow:0 6px 18px #0000002e}.studio-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.segmented{border:1px solid var(--border);background:var(--bg);border-radius:.45rem;display:inline-flex;overflow:hidden}.segmented-option{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:.3rem .9rem;font-size:.9rem;font-weight:600}.segmented-option+.segmented-option{border-left:1px solid var(--border)}.segmented-option[aria-pressed=true]{background:var(--accent);color:var(--accent-text)}.segmented-option:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.button-small{padding:.25rem .7rem;font-size:.875rem}.button-icon{flex:none}.button-run,.button-connect{align-items:center;gap:.4rem;padding:.4rem 1.1rem;display:inline-flex}.button-run.button-primary{background:var(--run-bg);border-color:var(--run-bg);color:var(--run-text)}.button-connect{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.hub-pill,.hub-pill-wrap{align-items:center;gap:.45rem;display:inline-flex}.hub-pill{border:1px solid var(--ok-border);background:var(--ok-bg);color:var(--ok-text);border-radius:999px;max-width:18rem;padding:.15rem .2rem .15rem .65rem}.hub-pill-dot{background:var(--ok-border);border-radius:50%;flex:none;width:.55rem;height:.55rem}.hub-pill-name{text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:600;overflow:hidden}.hub-pill-via{border:1px solid;border-radius:.3rem;flex:none;padding:0 .35rem;font-size:.7rem;font-weight:700}.button-usb{align-items:center;gap:.3rem;display:inline-flex}.hub-pill .button-small{border-radius:999px}.icon-button{width:2rem;height:2rem;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.4rem;flex:none;place-items:center;padding:0;display:inline-grid}.icon-button:hover{border-color:var(--border);color:var(--text)}.icon-button:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.studio-notices{padding:0 .75rem}.studio-notices .notice{margin:.4rem 0 0;padding:.4rem .75rem}.device-bar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:.6rem;min-height:3rem;padding:.35rem .75rem;display:flex;overflow-x:auto}.device-switch{color:var(--muted);flex:none;align-items:center;gap:.35rem;font-size:.85rem;font-weight:600;display:inline-flex}.device-chips{flex:none;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.device-chips-stale{opacity:.55}.device-chip{border:1px solid var(--border);background:var(--bg);border-radius:.5rem;align-items:center;gap:.4rem;min-width:7.5rem;padding:.2rem .6rem .2rem .25rem;display:flex}.device-chip-empty{min-width:4.75rem;color:var(--muted);border-style:dashed}.device-chip-empty .device-value{font-weight:500}.device-port{background:var(--neutral-bg);min-width:1.6rem;height:1.6rem;color:var(--neutral-text);border-radius:.35rem;flex:none;place-items:center;padding:0 .3rem;font-size:.8rem;font-weight:700;display:inline-grid}.device-icon{color:var(--muted);flex:none}.device-text{flex-direction:column;min-width:0;line-height:1.15;display:flex}.device-value{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.95rem;font-weight:700}.device-detail{color:var(--muted);white-space:nowrap;font-size:.72rem}.device-swatch{border:1px solid var(--border);border-radius:50%;flex:none;width:1.1rem;height:1.1rem}.swatch-red{background:#d93838}.swatch-yellow{background:#f5c518}.swatch-green{background:#2f9e48}.swatch-blue{background:#2c6fd8}.swatch-white{background:#fff}.swatch-none,.swatch-unknown{background:0 0;border-style:dashed}.device-bar-message{color:var(--muted);white-space:nowrap;align-items:center;gap:.5rem;margin:0;font-size:.85rem;display:flex}.studio-body{flex:1;min-height:0;display:flex;position:relative}.studio-canvas{flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.blocks-area{flex:1;min-height:0;position:relative}.blocks-workspace{background:var(--bg);position:absolute;inset:0;overflow:hidden}.blocks-tab{position:absolute;inset:0}.blocks-tab[data-active=false]{visibility:hidden}.block-tabs-bar{background:var(--surface);border-bottom:1px solid var(--border);flex:none}.block-tabs{scrollbar-width:thin;align-items:flex-end;gap:.25rem;padding:.35rem .5rem 0;display:flex;overflow-x:auto}.block-tab{border:1px solid #0000;border-bottom:0;border-radius:.5rem .5rem 0 0;flex:none;align-items:center;margin-bottom:-1px;display:flex}.block-tab[data-active=true]{background:var(--bg);border-color:var(--border)}.block-tab-name{min-height:2.4rem;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:.35rem;padding:0 .85rem;font-size:.92rem;display:inline-flex}.block-tab[data-active=true] .block-tab-name{color:var(--text);font-weight:600}.block-tab-name:hover{color:var(--text)}.block-tab-name:focus-visible,.block-tab-icon:focus-visible,.block-tab-add:focus-visible,.python-file:focus-visible{outline:3px solid var(--accent);outline-offset:-3px;border-radius:.4rem}.block-tab-problem{background:var(--warn-border);border-radius:50%;width:.5rem;height:.5rem}.block-tab-icon{width:2rem;height:2rem;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:.4rem;place-items:center;padding:0;display:inline-grid}.block-tab-icon:last-child{margin-right:.25rem}.block-tab-icon:hover:not(:disabled){background:var(--neutral-bg);color:var(--text)}.block-tab-icon:disabled,.block-tab-add:disabled{cursor:default;opacity:.4}.block-tab-input{border:2px solid var(--accent);background:var(--surface);width:10rem;min-height:2rem;color:var(--text);font:inherit;border-radius:.35rem;margin:.2rem .35rem;padding:0 .5rem;font-size:.92rem}.block-tab-add{border:1px dashed var(--neutral-border);width:2.2rem;height:2.2rem;color:var(--text);cursor:pointer;background:0 0;border-radius:50%;flex:none;place-items:center;margin:0 0 .2rem .25rem;padding:0;display:inline-grid}.block-tab-add:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.block-tabs-error{background:var(--warn-bg);color:var(--warn-text);border-top:1px solid var(--warn-border);margin:0;padding:.3rem .75rem;font-size:.85rem}.python-files{border-bottom:1px solid var(--border);flex:none;gap:.25rem;padding:.3rem .6rem;display:flex;overflow-x:auto}.python-file{border:1px solid var(--border);min-height:2rem;color:var(--muted);font-family:var(--font-mono);cursor:pointer;background:0 0;border-radius:999px;flex:none;padding:0 .7rem;font-size:.82rem}.python-file[aria-selected=true]{border-color:var(--accent);background:var(--accent);color:var(--accent-text)}.python-note{color:var(--muted);border-bottom:1px solid var(--border);flex:none;margin:0;padding:.4rem .9rem;font-size:.85rem}.studio-side{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;width:clamp(18rem,30vw,28rem);min-height:0;display:flex}.studio-python-full{z-index:80;background:var(--surface);flex-direction:column;display:flex;position:absolute;inset:0}.studio-panel-header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.4rem .6rem .4rem .9rem;display:flex}.studio-panel-header h2{margin-right:auto;font-size:.95rem}.studio-side .code-view,.studio-python-full .code-view{border:0;border-radius:0;flex:1;min-height:0}.studio-python-full .code-gutter,.studio-python-full .code-text{font-size:.95rem}.studio-drawer{background:var(--surface);border-top:1px solid var(--border);flex:none;grid-template-columns:minmax(0,1fr);height:clamp(12rem,36vh,26rem);display:grid}.studio-drawer[data-panes="2"]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.studio-drawer[data-panes="3"]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}.controller-pane{overflow:auto}.controller-status{text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--neutral-border);background:var(--neutral-bg);color:var(--neutral-text);border-radius:999px;padding:.05rem .5rem;font-size:.75rem;font-weight:600}.controller-status[data-status=live]{border-color:var(--ok-border);background:var(--ok-bg);color:var(--ok-text)}.controller-status[data-status=lost],.controller-status[data-status=notfound]{border-color:var(--error-border);background:var(--error-bg);color:var(--error-text)}.controller-message{color:var(--muted);margin:0 0 .4rem;font-size:.88rem}.controller-body{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;display:flex}.controller-drawing{flex:14rem;min-width:0;max-width:22rem;height:auto}.controller-body[data-live=false] .controller-drawing{opacity:.55}.pad-body{fill:var(--bg);stroke:var(--border);stroke-width:2px}.pad-well{fill:var(--surface);stroke:var(--neutral-border);stroke-width:1.5px}.pad-stick,.pad-key{fill:var(--neutral-bg);stroke:var(--neutral-border);stroke-width:1.5px}.pad-lit,.pad-fill{fill:var(--accent);stroke:var(--accent)}.pad-label,.pad-face-label{font-family:var(--font-sans);text-anchor:middle;fill:var(--text);pointer-events:none;font-size:9px;font-weight:700}.pad-face-label{font-size:11px}.controller-side{flex:14rem;gap:.6rem;min-width:0;display:grid}.controller-controls h3{margin:0 0 .2rem;font-size:.85rem}.controller-controls ul{margin:0;padding-left:1.1rem;font-size:.85rem}.controller-finger{color:var(--muted)}.controller-numbers{grid-template-columns:repeat(2,minmax(7rem,auto));gap:.3rem 1rem;margin:0;font-size:.85rem;display:grid}.controller-numbers dt{color:var(--muted);font-size:.78rem}.controller-numbers dd{font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin:0}.pane{flex-direction:column;min-width:0;min-height:0;padding:.45rem .75rem .6rem;display:flex}.pane+.pane{border-left:1px solid var(--border)}.pane .card-header{gap:.4rem .75rem;margin-bottom:.35rem}.pane h2{font-size:.95rem}.pane .button{padding:.2rem .6rem;font-size:.85rem}.pane .monitor-output{flex:1;height:auto;min-height:0}.pane .monitor-input{margin-top:.4rem}.pane .plot-empty{padding:1rem 0}.plotter-fill{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.studio-problems{background:var(--surface);border-top:1px solid var(--border);flex:none;max-height:8rem;padding:0 .75rem .4rem;overflow:auto}.studio-problems .notice{margin-top:.4rem;padding:.4rem .75rem}.studio-problems ul{margin:.2rem 0 0;padding-left:1.2rem}.problem-link{vertical-align:top;color:inherit;font:inherit;text-align:left;text-underline-offset:.2em;cursor:pointer;background:0 0;border:0;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.studio-status{background:var(--surface);border-top:1px solid var(--border);flex:none;align-items:center;gap:.75rem;padding:.35rem .75rem;display:flex}.studio-status-text{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;font-size:.85rem;overflow:hidden}.studio-toggles{flex:none;gap:.35rem;display:flex}.toggle-button{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .8rem;font-size:.85rem;font-weight:600;display:inline-flex}.toggle-button:hover{border-color:var(--accent)}.toggle-button[aria-pressed=true]{background:var(--neutral-bg);border-color:var(--neutral-border)}.toggle-button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.badge-count{background:var(--accent);min-width:1.25rem;color:var(--accent-text);text-align:center;border-radius:999px;padding:0 .35rem;font-size:.72rem;line-height:1.25rem}.badge-count-error{background:var(--error-border);color:#fff}.badge-dot{background:var(--accent);border-radius:50%;width:.5rem;height:.5rem}.button-file{align-items:center;gap:.35rem;display:inline-flex}.history-buttons{z-index:5;gap:.4rem;display:flex;position:absolute;top:.6rem;right:.75rem}.history-button{border:1px solid var(--border);background:var(--surface);width:2.75rem;height:2.75rem;color:var(--text);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:inline-grid;box-shadow:0 1px 3px #00000026}.history-button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.history-button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.history-button:disabled{cursor:default;opacity:.4;box-shadow:none}.notice-actions{flex-wrap:wrap;align-items:center;gap:.4rem .6rem;display:flex}.notice-actions>span{flex:16rem}.dialog{border:1px solid var(--border);background:var(--surface);width:min(34rem,100vw - 2rem);max-height:calc(100vh - 2rem);color:var(--text);border-radius:.6rem;padding:0;box-shadow:0 12px 40px #0000004d}.dialog::backdrop{background:#0f141973}.dialog-inner{padding:.9rem 1.1rem 1.1rem}.dialog-header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.dialog-header h2{margin:0;font-size:1.15rem}.dialog-section{border-top:1px solid var(--border);margin-top:1rem;padding-top:.8rem}.dialog-section h3{margin:0 0 .35rem;font-size:1rem}.dialog-section p{margin:0 0 .6rem}.dialog-section .notice{margin-top:.6rem}.dialog-form{gap:.8rem;margin-top:.8rem;display:grid}.dialog-form .notice{margin:0}.field{gap:.25rem;margin-top:.6rem;display:grid}.dialog-form .field{margin-top:0}.field-label{font-size:.9rem;font-weight:600}.field-input{font:inherit;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);border-radius:.4rem;padding:.45rem .6rem}.field-input:focus-visible{outline:3px solid var(--accent);outline-offset:0}.field-hint{color:var(--muted);font-size:.82rem}.field-check{color:var(--muted);align-items:flex-start;gap:.5rem;font-size:.88rem;display:flex}.field-check input{margin-top:.2rem}.link-button{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.program-list{gap:.35rem;max-height:16rem;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.program-list-item{font:inherit;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);text-align:left;cursor:pointer;border-radius:.4rem;justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem .75rem;display:flex}.program-list-item:hover:not(:disabled){border-color:var(--accent)}.program-list-item:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.program-list-item:disabled{cursor:progress;opacity:.6}.program-list-name{overflow-wrap:anywhere;font-weight:600}.program-list-meta{color:var(--muted);flex:none;font-size:.82rem}.dialog-help{border-top:1px solid var(--border);margin-top:1rem;padding-top:.8rem;font-size:.9rem}.dialog-help summary{cursor:pointer;font-weight:600}.dialog-help ol{padding-left:1.25rem}.dialog-help li+li{margin-top:.3rem}@media (max-width:48rem){.studio-bar .status-pill,.studio-title,.studio-nav{display:none}.studio-nav-menu{display:block}.studio-bar{column-gap:.4rem}.studio-actions{display:contents}.studio-brand{flex:0 auto;order:1}.hub-pill,.hub-pill-wrap{order:2;margin-left:auto}.hub-pill{max-width:14rem}.segmented{order:3}.segmented-option{padding:.3rem .6rem}.button-run{padding:.4rem .8rem}.studio-actions>.button-small{order:4}.studio-actions>.button-small:first-child{margin-left:auto}.button-file{padding:.35rem .45rem}.button-file .button-text{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.button-run{order:5}.studio-side{z-index:85;border-left:0;border-top:1px solid var(--border);width:auto;height:55%;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -4px 16px #0000002e}.studio-drawer{height:45vh}.studio-drawer[data-panes="2"]{grid-template-rows:minmax(0,1fr) minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.studio-drawer[data-panes="3"]{grid-template-rows:repeat(3,minmax(15rem,auto));grid-template-columns:minmax(0,1fr);overflow-y:auto}.studio-status{gap:.5rem;padding:.35rem .6rem}.studio-toggles{flex:0 auto;gap:.25rem;min-width:0}.toggle-button{padding:.25rem .5rem}.pane+.pane{border-left:0;border-top:1px solid var(--border)}}.monitor-output{font-family:var(--font-mono);border:1px solid var(--border);background:var(--bg);border-radius:.4rem;height:18rem;padding:.5rem .6rem;font-size:.8rem;line-height:1.45;overflow:auto}.monitor-line{white-space:pre-wrap;word-break:break-word}.monitor-time{color:var(--muted);margin-right:.75rem}.monitor-in{color:var(--accent)}.monitor-info{color:var(--muted);font-style:italic}.monitor-error{color:var(--error-text);font-weight:600}.monitor-partial{opacity:.7}.monitor-input{gap:.5rem;margin-top:.6rem;display:flex}.plotter{position:relative}.plot-empty{text-align:center;padding:2rem 0}.plot-legend{flex-wrap:wrap;gap:.4rem 1.25rem;margin:0 0 .5rem;padding:0;font-size:.9rem;list-style:none;display:flex}.plot-legend li{align-items:center;gap:.4rem;display:inline-flex}.plot-legend-label{color:var(--muted)}.plot-key{border-top:2px solid;width:14px;height:0;display:inline-block}.plot-key-1{color:var(--series-1)}.plot-key-2{color:var(--series-2)}.plot-key-3{color:var(--series-3)}.plot-key-4{color:var(--series-4)}.plot-key-5{color:var(--series-5)}.plot-key-6{color:var(--series-6)}.plot-key-7{color:var(--series-7)}.plot-key-8{color:var(--series-8)}.plot-canvas-wrap{position:relative}.plot-canvas-wrap canvas{touch-action:none;display:block}.plot-tooltip{border:1px solid var(--border);background:var(--surface);pointer-events:none;border-radius:.4rem;min-width:9rem;padding:.4rem .6rem;font-size:.85rem;position:absolute;top:.5rem;box-shadow:0 2px 8px #00000026}.plot-tooltip-row{align-items:center;gap:.4rem;display:flex}.notice{border-left:4px solid var(--neutral-border);background:var(--neutral-bg);color:var(--neutral-text);border-radius:.4rem;margin:.75rem 0 0;padding:.7rem .9rem}.notice-ok{border-left-color:var(--ok-border);background:var(--ok-bg);color:var(--ok-text)}.notice-warn{border-left-color:var(--warn-border);background:var(--warn-bg);color:var(--warn-text)}.notice-error{border-left-color:var(--error-border);background:var(--error-bg);color:var(--error-text)}.notice details{margin-top:.4rem}.notice code{word-break:break-word}.hub-info{grid-template-columns:max-content 1fr;gap:.35rem 1rem;margin:.6rem 0 0;display:grid}.hub-info dt{font-weight:600}.hub-info dd{margin:0}@media (max-width:32rem){.step,.check{grid-template-columns:1fr;gap:.35rem}.hub-info{grid-template-columns:1fr}.hub-info dd{margin-bottom:.4rem}}.python-edit{flex-direction:column;flex:1;gap:.5rem;min-height:0;display:flex}.python-edit-help{color:var(--muted);margin:0;padding:.4rem .75rem 0;font-size:.85rem}.python-editor{border-top:1px solid var(--border);border-bottom:1px solid var(--border);flex:1;min-height:14rem;overflow:hidden}.python-editor .cm-editor{height:100%}.python-editor .cm-editor.cm-focused{outline:2px solid var(--accent);outline-offset:-1px}.python-edit-status{max-height:11rem;padding:0 .75rem .5rem;overflow:auto}.python-edit-status .notice{margin:0}.python-edit-status ul{margin:.4rem 0 0;padding-left:1.2rem}.py-control{color:var(--py-control)}.py-keyword{color:var(--py-keyword)}.py-string{color:var(--py-string)}.py-escape{color:var(--py-escape)}.py-number{color:var(--py-number)}.py-comment{color:var(--py-comment)}.py-function{color:var(--py-function)}.py-class,.py-module{color:var(--py-class)}.py-constant{color:var(--py-constant)}.py-variable{color:var(--py-variable)}.py-bracket1{color:var(--py-bracket1)}.py-bracket2{color:var(--py-bracket2)}.py-bracket3{color:var(--py-bracket3)}.code-mark{background:var(--code-mark);pointer-events:none;height:1lh;position:absolute;left:0;right:0}.ai-body{flex-direction:column;flex:1;gap:.6rem;min-height:0;padding:.6rem .9rem .9rem;font-size:.9rem;display:flex;overflow-y:auto}.ai-body p{margin:0}.ai-body>*{flex-shrink:0}.ai-badge{color:var(--surface);background:var(--accent);border-radius:.25rem;margin-right:.35rem;padding:0 .3rem;font-size:.7rem;line-height:1.4;display:inline-block}.ai-loading{padding:.9rem}.ai-setup{flex-direction:column;align-items:flex-start;gap:.6rem;display:flex}.ai-help{color:var(--muted);font-size:.85rem}.ai-body .segmented{order:0;align-self:flex-start}.ai-prompt{resize:vertical;min-height:4.5rem;font-family:inherit}.ai-checklist{font-size:.85rem}.ai-checklist-title{font-weight:600}.ai-checklist ul{margin:.25rem 0 0;padding:0;list-style:none}.ai-checklist li{color:var(--muted);gap:.4rem;display:flex}.ai-checklist li+li{margin-top:.15rem}.ai-checklist li[data-ok=true]{color:var(--text)}.ai-check{text-align:center;flex:none;width:1rem;font-weight:700}.ai-checklist li[data-ok=true] .ai-check{color:var(--ok-text)}.ai-example{color:var(--muted);font-style:italic}.ai-ask-row{align-items:center}.ai-sees summary,.ai-journal summary{cursor:pointer;font-weight:600}.ai-sees pre{max-height:16rem;font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;background:var(--bg);border:1px solid var(--border);border-radius:.4rem;margin:.4rem 0 0;padding:.5rem;font-size:.75rem;line-height:1.45;overflow:auto}.ai-sees>p{margin-top:.3rem}.ai-answer{background:var(--bg);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:.4rem;flex-direction:column;gap:.5rem;padding:.6rem .7rem;display:flex}.ai-label{color:var(--muted);font-size:.8rem;font-weight:700}.ai-text{overflow-wrap:anywhere;line-height:1.5}.ai-text p+p,.ai-text p+ul,.ai-text ul+p{margin-top:.45rem}.ai-text ul{margin:0;padding-left:1.2rem}.ai-text li+li{margin-top:.3rem}.ai-text code{font-family:var(--font-mono);font-size:.85em}.ai-line-link{font:inherit;color:var(--accent);border:1px solid var(--accent);cursor:pointer;background:0 0;border-radius:.3rem;padding:0 .35rem;font-size:.85em;font-weight:700}.ai-line-link:hover,.ai-line-link:focus-visible{background:var(--code-mark)}.ai-meta,.ai-footnote{color:var(--muted);font-size:.8rem}.ai-helped{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.ai-helped .button[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.ai-journal ol{margin:.4rem 0;padding-left:1.2rem}.ai-journal li+li{margin-top:.3rem}.ai-journal li summary{font-weight:400}.ai-journal-mode{text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:700}.ai-journal-answer{white-space:pre-wrap;margin:.3rem 0!important}.ai-journal li .button{margin-top:.3rem}.ai-providers{border:0;margin:0;padding:0}.ai-limit{max-width:8rem}.field-input[aria-invalid=true]{border-color:var(--error-text)}.field-problem{color:var(--error-text);font-size:.8rem}.block-tabs-trailing{flex:none;align-items:center;margin-left:auto;padding:0 0 .3rem .75rem;display:flex}.robot-picker{align-items:center;gap:.35rem;font-size:.85rem;display:flex}.robot-picker-label{align-items:center;gap:.35rem;display:flex}.robot-picker-name{color:var(--muted);font-weight:600}.robot-picker-select{max-width:12rem;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:.35rem;padding:.2rem .4rem}.robot-picker-link{white-space:nowrap}.robot-picker-note{color:var(--warn-text);white-space:nowrap}.robots-page{background:var(--bg);flex-direction:column;min-height:100dvh;display:flex}.robots-body{grid-template-columns:minmax(0,1fr) minmax(18rem,26rem);align-items:start;gap:1rem 1.5rem;width:100%;max-width:76rem;margin:0 auto;padding:1rem;display:grid}.robots-picker{flex-wrap:wrap;align-items:flex-end;gap:.5rem 1rem;display:flex}.robots-choice{min-width:14rem;margin-top:0}.robots-picker .button-row{margin:0}.robots-confirm{flex-wrap:wrap;align-items:center;gap:.4rem;font-weight:600;display:inline-flex}.robots-list>.notice{margin:.75rem 0 0}.robots-empty{background:var(--surface);border:1px solid var(--border);border-radius:.6rem;margin-top:1rem;padding:1.25rem}.robots-empty h2{margin-top:0}.robot-form{flex-direction:column;gap:.9rem;margin-top:1rem;display:flex}.robot-section{background:var(--surface);border:1px solid var(--border);border-radius:.6rem;margin:0;padding:.6rem .9rem .9rem}.robot-section legend{padding:0 .3rem;font-weight:700}.robot-section-hint{margin:0}.robot-fields{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));align-items:start;gap:0 .9rem;display:grid}.robot-fields>.button{justify-self:start;margin-top:.75rem}.robot-name,.robot-notes,.robot-mirrored,.robot-speed-mode,.robot-auto-speed,.robot-row{grid-column:1/-1}.robot-number-input{align-items:center;gap:.35rem;display:flex}.robot-number-input .field-input{min-width:0}.robot-unit{min-width:2.2rem;color:var(--muted);flex:none;font-size:.85rem}.robot-mirrored,.robot-speed-mode{border:0;margin:.6rem 0 0;padding:0}.robot-row{border-bottom:1px dashed var(--border);grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));align-items:end;gap:0 .75rem;padding-bottom:.6rem;display:grid}.robot-remove{justify-self:start;margin-top:.6rem}.robot-auto-speed{margin:.6rem 0 0;font-size:.9rem}.robots-facts{flex-direction:column;gap:.75rem;display:flex;position:sticky;top:.75rem}.robots-facts .notice{margin:0}.robot-drawing{aspect-ratio:1;background:var(--surface);border:1px solid var(--border);border-radius:.6rem;width:100%}.robot-turn-circle{fill:none;stroke:var(--muted);stroke-width:1.5px;stroke-dasharray:6 5;vector-effect:non-scaling-stroke}.robot-body{fill:var(--code-active-line);stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke}.robot-wheel{fill:var(--text);opacity:.8}.robot-axle{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.robot-pivot,.robot-front{fill:var(--accent)}.robot-sensor circle{fill:var(--surface);stroke:var(--series-2,var(--accent));stroke-width:2px;vector-effect:non-scaling-stroke}.robot-sensor text,.robot-dimension{fill:var(--text);text-anchor:middle;font-weight:700}.robot-dimension{fill:var(--muted);font-weight:600}.robot-numbers{background:var(--surface);border:1px solid var(--border);border-radius:.6rem;grid-template-columns:auto minmax(0,1fr);gap:.3rem .75rem;margin:0;padding:.75rem .9rem;font-size:.9rem;display:grid}.robot-numbers dt{color:var(--muted)}.robot-numbers dd{font-variant-numeric:tabular-nums;margin:0}.robot-rules{background:var(--surface);border:1px solid var(--border);border-radius:.6rem;padding:.25rem .9rem .9rem}.robot-heading input{width:100%}.robot-checks{margin:.75rem 0 0;padding:0;font-size:.9rem;list-style:none}.robot-checks li{gap:.5rem;display:flex}.robot-checks li+li{margin-top:.5rem}.robot-check-mark{text-align:center;flex:none;width:1.2rem;font-weight:700}.robot-checks li[data-ok=true] .robot-check-mark{color:var(--ok-text)}.robot-checks li[data-ok=false] .robot-check-mark{color:var(--error-text)}.robot-checks li[data-ok=unknown] .robot-check-mark{color:var(--warn-text)}.robot-rule-quotes{margin-top:.75rem;font-size:.85rem}.robot-rule-quotes summary{cursor:pointer;font-weight:600}.robot-rule-quotes ul{margin:.4rem 0;padding-left:1.1rem}@media (max-width:48rem){.robots-body{grid-template-columns:minmax(0,1fr);padding:.75rem 1rem}.robots-facts{position:static}.robots-choice{flex:100%;min-width:0}.robot-picker-name{display:none}.robot-picker-select{max-width:8rem}}.mats-page{background:var(--bg);flex-direction:column;flex:none;height:100dvh;min-height:30rem;display:flex}.mats-body{flex:1;min-height:0;display:flex}.mats-stage{flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.mats-message{z-index:5;position:absolute;top:.75rem;left:50%;transform:translate(-50%)}.mats-empty{background:var(--surface);border:1px solid var(--border);border-radius:.6rem;max-width:34rem;margin:2rem auto;padding:1.25rem}.mats-empty h2{margin-top:0}.mats-side{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;gap:.75rem;width:clamp(18rem,26vw,24rem);padding:.75rem;display:flex;overflow-y:auto}.mats-side .notice{margin:0}.mats-section{border-bottom:1px solid var(--border);padding-bottom:.75rem}.mats-section>.field:first-child{margin-top:0}.mats-section>.button{margin-top:.6rem}.mats-size{font-variant-numeric:tabular-nums;margin:.4rem 0 0;font-weight:600}.mats-confirm{margin:.6rem 0 0}.mats-pose{grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));align-items:start;gap:0 .5rem;display:grid}.robot-number{align-content:start}.mats-heading{margin:0 0 .4rem;font-size:.95rem}.mats-areas{margin:0;padding:0;list-style:none}.mats-areas li{border-radius:.4rem;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.35rem;padding:.4rem;display:grid}.mats-areas li[data-selected=true]{background:var(--bg)}.mats-areas li+li{margin-top:.3rem}.mats-areas .field-input{padding:.3rem .45rem}.mats-area-size{grid-column:1/-1;font-size:.8rem}.mats-areas .button{justify-self:start}.mat-view{background:var(--bg);touch-action:none;flex:1;min-height:0;position:relative;overflow:hidden}.mat-canvas,.mat-overlay{position:absolute;inset:0}.mat-overlay{cursor:grab;outline:none}.mat-overlay:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}.mat-view[data-tool=ruler] .mat-overlay,.mat-view[data-tool=area] .mat-overlay{cursor:crosshair}.mat-edge{fill:none;stroke:var(--text);stroke-width:1.5px;vector-effect:non-scaling-stroke}.mat-grid line{stroke:#1f5fbf47;stroke-width:1px;vector-effect:non-scaling-stroke}.mat-area rect{fill:#1f5fbf14;stroke:#1f5fbf;stroke-width:2px;stroke-dasharray:8 5;vector-effect:non-scaling-stroke}.mat-area[data-kind=start] rect{fill:#1d8c461f;stroke:#1d8c46}.mat-area[data-kind=avoid] rect{fill:#c828281f;stroke:#c82828}.mat-area[data-kind=object] rect{fill:#6e461e61;stroke:#6e461e;stroke-dasharray:none}.mat-area[data-selected=true] rect{stroke-width:3.5px;stroke-dasharray:none}.mat-area text,.mat-ruler text{fill:#111;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round;font-weight:700}.mat-drawing{fill:#1f5fbf26;stroke:#1f5fbf;stroke-width:2px;vector-effect:non-scaling-stroke}.mat-robot-outline{fill:none;stroke:#111;stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.mat-robot-body{fill:#1f5fbf59;stroke:#1f5fbf;stroke-width:2px;vector-effect:non-scaling-stroke;cursor:move}.mat-robot-wheel{fill:#222}.mat-robot-sensor{fill:#eb6834;stroke:#fff;stroke-width:1.5px;vector-effect:non-scaling-stroke}.mat-robot-heading{stroke:#1f5fbf;stroke-width:2px;vector-effect:non-scaling-stroke}.mat-robot-pivot{fill:#1f5fbf}.mat-robot-handle{fill:#fff;stroke:#1f5fbf;stroke-width:2.5px;vector-effect:non-scaling-stroke;cursor:grab}.mat-ruler line{stroke:#d0021b;stroke-width:2.5px;vector-effect:non-scaling-stroke}.mat-zoom{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;align-items:center;gap:.3rem;padding:.25rem;display:flex;position:absolute;top:.6rem;right:.6rem}.mat-zoom .icon-button{width:2rem;font-size:1.1rem;font-weight:700}.mat-readout{font-variant-numeric:tabular-nums;background:var(--surface);border:1px solid var(--border);border-radius:.4rem;margin:0;padding:.2rem .5rem;font-size:.85rem;position:absolute;bottom:.6rem;left:.6rem}.add-mat-size{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 .75rem;display:grid}@media (max-width:48rem){.mats-page{height:auto;min-height:100dvh}.mats-body{flex-direction:column}.mats-stage{flex:none;height:58dvh}.mats-side{border-left:0;border-top:1px solid var(--border);width:auto;overflow:visible}}.mat-spread,.mat-spread-ends{pointer-events:none}.mat-spread-path{fill:none;stroke:#c96a0038;stroke-width:1.5px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.mat-spread-end{fill:#c96a008c}.mat-spread-ring{fill:#c96a0014;stroke:#b45f00;stroke-width:2px;stroke-dasharray:5 4;vector-effect:non-scaling-stroke}.mat-path-all{fill:none;stroke:#d0021b59;stroke-width:3px;stroke-dasharray:6 5;stroke-linejoin:round;vector-effect:non-scaling-stroke}.mat-path-done{fill:none;stroke:#d0021b;stroke-width:3px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.mat-robot[data-locked=true] .mat-robot-body{cursor:default}.mat-playback{z-index:4;background:var(--surface);border:1px solid var(--border);border-radius:.5rem;align-items:center;gap:.5rem;width:min(36rem,100% - 1.2rem);padding:.35rem .6rem;display:flex;position:absolute;bottom:.6rem;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #00000024}.mat-playback input[type=range]{flex:1;min-width:0}.mat-playback-time{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.85rem}.mat-playback-speed{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:.35rem;font-size:.85rem}.mats-stage:has(.mat-playback) .mat-readout{bottom:3.6rem}.run-result{flex-direction:column;gap:.5rem;margin-top:.6rem;display:flex}.run-result .notice,.run-result .robot-checks{margin:0}.run-result .notice ul{margin:0;padding-left:1.1rem}.run-output summary{cursor:pointer;font-size:.9rem;font-weight:600}.run-output ol{max-height:14rem;font-family:var(--font-mono);background:var(--bg);border:1px solid var(--border);border-radius:.4rem;margin:.4rem 0 0;padding:.4rem .5rem;font-size:.8rem;list-style:none;overflow-y:auto}.run-output li[data-kind]:not([data-kind=print]){color:var(--muted)}.run-time{color:var(--muted);font-variant-numeric:tabular-nums}.robot-calibrate{background:var(--surface);border:1px solid var(--border);border-radius:.6rem;padding:.75rem .9rem}.robot-calibrate h2{margin:0 0 .3rem;font-size:1rem}.robot-calibrate p{margin:0 0 .6rem;font-size:.9rem}.dialog:has(.calibrate){width:min(42rem,100vw - 2rem)}.calibrate{flex-direction:column;gap:.9rem;display:flex}.calibrate>p,.calibrate-step p{margin:0}.calibrate-hub{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.calibrate-step{border:1px solid var(--border);border-radius:.6rem;flex-direction:column;gap:.6rem;padding:.75rem .9rem;display:flex}.calibrate-step h3{margin:0;font-size:1rem}.calibrate-step .button-row{margin:0}.calibrate-program pre{max-height:14rem;font-family:var(--font-mono);background:var(--bg);border:1px solid var(--border);border-radius:.4rem;margin:.4rem 0 0;padding:.6rem;font-size:.8rem;overflow:auto}.calibrate-fields{flex-wrap:wrap;align-items:flex-start;gap:.6rem 1rem;display:flex}.calibrate-fields .field{margin:0}.calibrate-turn{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.calibrate-turn .calibrate-fields{flex-direction:column;flex:16rem}.calibrate-dial{flex:none;width:7.5rem;height:7.5rem}.calibrate-dial-ring{fill:var(--bg);stroke:var(--border);stroke-width:1.5px}.calibrate-dial-start{stroke:var(--muted);stroke-width:2px;stroke-dasharray:4 3}.calibrate-dial-end{stroke:var(--accent);stroke-width:3px;stroke-linecap:round}.calibrate-dial-head{fill:var(--accent)}.calibrate-dial-robot{fill:var(--surface);stroke:var(--text);stroke-width:1.5px}.calibrate-changes{margin:0 0 .6rem;padding-left:1.2rem}.calibrate-result .notice{margin:.6rem 0 0}.run-spread{border:1px solid var(--border);border-left:4px solid #b45f00;border-radius:.4rem;margin:.6rem 0;padding:.6rem .75rem}.run-spread-title{margin:0 0 .3rem;font-size:.95rem}.run-spread ul{margin:.4rem 0;padding-left:1.2rem}.run-spread .field-hint{margin:0}.mat-plan{pointer-events:none}.mat-plan-line{fill:none;stroke:#6d28d9;stroke-width:3px;stroke-dasharray:2 6;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.mat-plan-point circle{fill:#6d28d9;stroke:#fff;stroke-width:2px;vector-effect:non-scaling-stroke}.mat-plan-point text{fill:#fff;font-weight:700}.path-steps{margin:0 0 .4rem;padding-left:1.4rem;font-size:.9rem}.dialog:has(.model-dialog){width:min(54rem,100vw - 2rem)}.model-file{cursor:pointer;align-self:flex-start}.model-file:focus-within{outline:2px solid var(--accent);outline-offset:2px}.model-drawing{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.6rem;display:grid}.model-view{flex-direction:column;gap:.25rem;margin:0;display:flex}.model-view svg{background:var(--surface);border:1px solid var(--border);border-radius:.6rem;width:100%;height:16rem}.model-view figcaption{color:var(--muted);text-align:center;font-size:.8rem}.model-part{stroke:var(--surface);stroke-width:1px;vector-effect:non-scaling-stroke}.model-part-part{fill:var(--muted);fill-opacity:.16;stroke:var(--muted);stroke-opacity:.45}.model-part-hub,.model-swatch.model-part-hub{fill:var(--series-4);background:var(--series-4)}.model-part-motor,.model-swatch.model-part-motor{fill:var(--series-1);background:var(--series-1)}.model-part-sensor,.model-swatch.model-part-sensor{fill:var(--series-2);background:var(--series-2)}.model-part-drive-wheel,.model-swatch.model-part-drive-wheel{fill:var(--text);fill-opacity:.75;background:var(--text)}.model-swatch.model-part-part{background:var(--muted);opacity:.35}.model-floor{stroke:var(--muted);stroke-width:1.5px;vector-effect:non-scaling-stroke}.model-tag circle{fill:var(--surface);stroke:var(--text);stroke-width:1.5px;vector-effect:non-scaling-stroke}.model-tag text{fill:var(--text);text-anchor:middle;font-weight:700}.model-key{color:var(--muted);flex-wrap:wrap;grid-column:1/-1;gap:.3rem .9rem;margin:0;padding:0;font-size:.8rem;list-style:none;display:flex}.model-swatch{vertical-align:-.1rem;border-radius:.2rem;width:.8rem;height:.8rem;display:inline-block}.model-front{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;font-size:.9rem;display:flex}.model-found,.model-ports{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.model-ports li{flex-wrap:wrap;align-items:center;gap:.4rem .6rem;display:flex}.model-ports li>span:not(.model-tag-chip){flex:12rem}.model-tag-chip{border:1.5px solid var(--text);border-radius:999px;place-items:center;min-width:1.8rem;height:1.8rem;padding:0 .3rem;font-size:.8rem;font-weight:700;display:inline-grid}.model-port .field-input,.model-motor-name{width:auto}.model-motor-name{max-width:10rem}.calibrate-step h4{margin:.2rem 0 0;font-size:.95rem}.model-notes{margin:0;padding-left:1.8rem}.model-changes{border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:.9rem}.model-changes th,.model-changes td{text-align:left;border-bottom:1px solid var(--border);padding:.25rem .75rem .25rem 0}.model-changes thead th{color:var(--muted);font-weight:600}.model-credit{font-size:.8rem}.model-3d{flex-direction:column;gap:.25rem;margin:0;display:flex}.model-3d-stage{background:linear-gradient(var(--surface), var(--bg));border:1px solid var(--border);border-radius:.6rem;height:min(24rem,60vh);position:relative;overflow:hidden}.model-3d-canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block}.model-3d-canvas:active{cursor:grabbing}.model-3d-labels{pointer-events:none;position:absolute;inset:0}.model-3d-tag{color:var(--text);background:var(--surface);border:1.5px solid var(--series-2);border-radius:999px;padding:0 .35rem;font-size:.75rem;font-weight:700;line-height:1.4rem;position:absolute;transform:translate(-50%,-50%)}.model-3d-tag-motor{border-color:var(--series-1)}.model-3d-wait{color:var(--muted);place-items:center;margin:0;display:grid;position:absolute;inset:0}.model-3d figcaption{color:var(--muted);font-size:.8rem}.site-nav{flex-wrap:wrap;gap:.15rem;margin-left:auto;display:flex}.wordmark{color:var(--text);text-decoration:none}.home-hero{padding:2rem 0 .5rem}.home-hero h1{font-size:1.9rem;line-height:1.2}.home-lead{max-width:42rem;font-size:1.1rem;line-height:1.55}.doc-actions{flex-wrap:wrap;gap:.6rem;margin:1rem 0;display:flex}.doc-actions .button{align-items:center;gap:.4rem;text-decoration:none;display:inline-flex}.doc-actions .doc-icon{width:1.1em;height:1.1em}.doc-section{margin-top:2.5rem}.doc-section h2{margin-bottom:.75rem;font-size:1.4rem}.doc-icon{color:var(--accent);flex:none}.doc-steps{counter-reset:doc-step;gap:.6rem;margin:1rem 0;padding:0;list-style:none;display:grid}.doc-steps>li{counter-increment:doc-step;background:var(--surface);border:1px solid var(--border);border-radius:.6rem;align-items:center;gap:1rem;padding:.75rem 1rem;line-height:1.5;display:flex}.doc-steps:not(.doc-steps-plain)>li:before{content:counter(doc-step);background:var(--accent);width:1.8rem;height:1.8rem;color:var(--accent-text);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.doc-icon-blink circle{animation:1.8s infinite doc-blink}.doc-icon-blink circle:nth-child(2){animation-delay:.6s}.doc-icon-blink circle:nth-child(3){animation-delay:1.2s}@keyframes doc-blink{0%,30%{opacity:1}34%,to{opacity:.2}}@media (prefers-reduced-motion:reduce){.doc-icon-blink circle{animation:none}}.doc-numbered{padding-left:1.4rem;line-height:1.6}.doc-numbered li+li,.doc-notes li+li{margin-top:.35rem}.doc-notes{padding-left:1.2rem;line-height:1.55}.doc-tip{border-left:4px solid var(--ok-border);background:var(--ok-bg);color:var(--ok-text);border-radius:.3rem;padding:.6rem .9rem}.home-cards{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.8rem;margin:1rem 0;padding:0;list-style:none;display:grid}.home-cards>li{background:var(--surface);border:1px solid var(--border);border-radius:.6rem;padding:1rem}.home-cards h2,.home-cards h3{margin:.5rem 0 .25rem;font-size:1.05rem}.home-cards p{color:var(--muted);margin:0;line-height:1.5}.home-cards-links h2 a,.home-cards-links h3 a{text-decoration:none}.home-cards-links h2 a:after,.home-cards-links h3 a:after{content:" →"}.doc-credit{background:var(--surface);border:1px solid var(--border);border-left:6px solid var(--accent);border-radius:.6rem;margin-top:2.5rem;padding:1.25rem 1.4rem;line-height:1.55}.doc-credit h2{font-size:1.4rem}.doc-credit-list{padding-left:1.2rem}.doc-credit-list li+li{margin-top:.3rem}.doc-shot{margin:1.25rem 0}.doc-shot-frame{border:1px solid var(--border);border-radius:.5rem;display:block;position:relative;overflow:hidden;box-shadow:0 2px 10px #00000014}.doc-shot-frame img{width:100%;height:auto;display:block}.doc-mark{color:#fff;pointer-events:none;background:#d9480f;border:2px solid #fff;border-radius:50%;place-items:center;width:1.35rem;height:1.35rem;font-size:.75rem;font-weight:700;display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 4px #00000073}.doc-shot figcaption{color:var(--muted);margin-top:.5rem;line-height:1.5}.doc-legend{counter-reset:doc-legend;columns:2 18rem;color:var(--text);column-gap:1.5rem;margin:.4rem 0 0;padding-left:0;list-style:none}.doc-legend li{counter-increment:doc-legend;break-inside:avoid;gap:.5rem;margin-bottom:.3rem;display:flex}.doc-legend li:before{content:counter(doc-legend);color:#fff;background:#d9480f;border-radius:50%;flex:none;place-items:center;width:1.3rem;height:1.3rem;font-size:.75rem;font-weight:700;display:grid}.doc-pair{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));align-items:start;gap:1rem;display:grid}.docs{grid-template-columns:12rem minmax(0,1fr);gap:2rem;padding-top:1.5rem;display:grid}.docs-nav{align-self:start;position:sticky;top:1rem}.docs-nav ol{margin:0;padding:0;list-style:none}.docs-nav a{color:var(--muted);border-radius:.4rem;padding:.4rem .7rem;font-weight:600;text-decoration:none;display:block}.docs-nav a:hover{color:var(--text);background:var(--surface)}.docs-nav a[aria-current=page]{color:var(--text);background:var(--surface);box-shadow:inset 3px 0 0 var(--accent)}.docs-main{min-width:0;line-height:1.55}.docs-main h1{font-size:1.9rem}.docs-next{margin-top:2.5rem;font-size:1.1rem}@media (max-width:48rem){.docs{grid-template-columns:minmax(0,1fr);gap:.5rem}.docs-nav{position:static}.docs-nav ol{flex-wrap:wrap;gap:.25rem;display:flex}.site-header-inner{flex-wrap:wrap}.site-nav{width:100%;margin-left:0}}
