:root{--ink:#161c20;--ink-2:#232b30;--ink-text:#e8eeeb;--ink-muted:#8d9a95;--mat:#dde7e0;--mat-line:#22423416;--mat-major:#2242342b;--paper:#f7f8f6;--line:#d3dbd6;--text:#1f282b;--muted:#6d7a75;--blue:#1d63ed;--blue-soft:#e8f0ff;--green:#1f9d55;--red:#cf3d34;--amber:#b8730b;--amber-soft:#fff3dc;--surface:#fff;--mat-bg:var(--mat);--on-blue:#fff;--parts-width:306px;--ui:"Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "Cascadia Mono", "SF Mono", Consolas, monospace;font-family:var(--ui);color:var(--text);font-size:13px}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--paper);color:var(--text);overflow:hidden}input::placeholder,textarea::placeholder{color:var(--muted);opacity:.8}select option{background:var(--surface);color:var(--text)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.app{grid-template-rows:52px minmax(0,1fr);height:100vh;display:grid}.topbar{background:var(--ink);color:var(--ink-text);z-index:60;align-items:center;gap:12px;padding:0 14px;display:flex;position:relative}.brand{align-items:center;gap:10px;min-width:176px;display:flex}.brand-mark{width:28px;height:28px}.brand-name{letter-spacing:.01em;font-size:14px;font-weight:700;line-height:1.1}.brand-text{min-width:0}.project-btn{max-width:180px;color:var(--ink-muted);background:0 0;border:0;border-radius:5px;align-items:center;gap:4px;margin:1px 0 0 -4px;padding:1px 4px;font-size:11.5px;display:flex}.project-btn span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-btn:hover{color:var(--ink-text);background:#2a3439}.run{background:var(--green);height:34px;color:var(--on-blue);border:0;border-radius:8px;align-items:center;gap:8px;padding:0 16px 0 13px;font-weight:700;transition:background .12s;display:inline-flex}.run:hover{background:#24ad60}.run.running{background:var(--red)}.run-icon{font-size:11px}.top-search{background:var(--ink-2);max-width:460px;height:34px;color:var(--ink-muted);border:1px solid #36424a;border-radius:8px;flex:1;align-items:center;gap:8px;padding:0 11px;display:flex}.top-search:focus-within{color:var(--ink-text);border-color:#6f8791}.top-search input{min-width:0;color:var(--ink-text);background:0 0;border:0;outline:0;flex:1}.top-search input::placeholder{color:var(--ink-muted)}.project-menu{margin-left:auto;position:relative}.project-menu>button{background:var(--ink-2);height:34px;color:var(--ink-text);border:1px solid #36424a;border-radius:8px;padding:0 13px}.project-menu>button:hover{background:#2b353b}.menu{background:var(--surface);width:214px;color:var(--text);border:1px solid var(--line);border-radius:10px;padding:5px;position:absolute;top:40px;right:0;box-shadow:0 12px 32px #0a141938}.menu[hidden]{display:none}.menu button{text-align:left;background:0 0;border:0;border-radius:6px;width:100%;padding:8px 10px;display:block}.menu button:hover{background:#f0f3f1}.menu hr{border:0;border-top:1px solid #e6ebe8;margin:4px 2px}.main{grid-template-columns:minmax(0, 1fr) var(--parts-width);min-height:0;transition:grid-template-columns .18s;display:grid}.main.parts-collapsed{--parts-width:38px}.stage{flex-direction:column;min-width:0;min-height:0;display:flex}.toolbar{background:var(--surface);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:2px;height:40px;padding:0 8px;display:flex}.tool{color:#56635e;background:0 0;border:0;border-radius:6px;place-items:center;width:30px;height:28px;display:grid}.tool svg{width:18px;height:18px}.tool:hover:not(:disabled){background:#eef2f0}.tool.active{background:var(--blue-soft);color:var(--blue)}.tool:disabled{opacity:.35;cursor:default}.sep{background:#dfe5e2;width:1px;height:18px;margin:0 5px}.zoom-readout{min-width:46px;height:28px;font-family:var(--mono);color:#56635e;background:0 0;border:0;border-radius:6px;font-size:11px}.zoom-readout:hover{background:#eef2f0}.status{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--muted);margin-left:10px;font-size:12px;overflow:hidden}.canvas{touch-action:none;background-color:var(--mat);background-image:linear-gradient(var(--mat-major) 1px, transparent 1px), linear-gradient(90deg, var(--mat-major) 1px, transparent 1px), linear-gradient(var(--mat-line) 1px, transparent 1px), linear-gradient(90deg, var(--mat-line) 1px, transparent 1px);background-size:var(--gmajor,96px) var(--gmajor,96px), var(--gmajor,96px) var(--gmajor,96px), var(--gminor,9.6px) var(--gminor,9.6px), var(--gminor,9.6px) var(--gminor,9.6px);background-position:var(--gx,0) var(--gy,0);cursor:default;flex:1;min-height:0;position:relative;overflow:hidden}.canvas.panning{cursor:grabbing}.canvas.pan-ready{cursor:grab}.canvas.wire-mode{cursor:crosshair}.world{transform-origin:0 0;width:0;height:0;position:absolute;top:0;left:0}.overlay{pointer-events:none;z-index:30;position:absolute;top:0;left:0;overflow:visible}.part{z-index:var(--z,5);transform-origin:50%;-webkit-user-select:none;user-select:none;cursor:grab;position:absolute;top:0;left:0}.part .model{pointer-events:none;position:absolute;top:0;left:0}.part svg.bb{pointer-events:none;display:block}.part-breadboard{filter:drop-shadow(0 2px 3px #14231c47)}.part-arduino-uno{filter:drop-shadow(0 2px 4px #14231c4d)}.part.dragging{z-index:40;cursor:grabbing}.part.dragging.part-breadboard,.part.dragging.part-arduino-uno{z-index:3}.part.selected:after{content:"";border:1.5px solid var(--blue);pointer-events:none;background:#1d63ed0d;border-radius:6px;position:absolute;inset:-5px}.wire-mode .part{cursor:crosshair}.running .part-pushbutton{cursor:pointer}.overlay .wire-hit{fill:none;stroke:#0000;pointer-events:stroke;cursor:pointer;stroke-linecap:round;stroke-linejoin:round}.overlay .wire-core,.overlay .wire-edge{fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.overlay .handle{fill:#fff;stroke:var(--blue);pointer-events:all;cursor:crosshair}.overlay .handle.mid{stroke:#5b6a72;cursor:move}.overlay .ring{fill:none;pointer-events:none}.tip{z-index:70;pointer-events:none;color:#fff;white-space:nowrap;background:#161c20f0;border-radius:6px;padding:5px 8px;font-size:11px;line-height:1.35;position:absolute;box-shadow:0 4px 14px #00000040}.tip b{font-weight:650}.tip span{color:#a9b8b2}.tip[hidden]{display:none}.wire-editor{z-index:65;background:var(--surface);border:1px solid #c8d2cd;border-radius:9px;align-items:center;gap:10px;padding:6px 9px;font-size:11px;display:flex;position:absolute;box-shadow:0 8px 22px #14231c33}.wire-editor[hidden]{display:none}.wire-editor label{color:#55625d;align-items:center;gap:5px;display:flex}.wire-editor select,.wire-editor input[type=color]{background:var(--surface);border:1px solid #ccd5d0;border-radius:6px;height:26px}.wire-editor input[type=color]{width:30px;padding:2px}.wire-editor .we-title{font-weight:700}#wireDelete{background:var(--surface);height:26px;color:var(--red);border:1px solid #e1c7c4;border-radius:6px;padding:0 9px}#wireDelete:hover{background:#fdf0ef}.hint-card{color:#48564f;pointer-events:none;background:#fffffff0;border:1px solid #c9d4ce;border-radius:10px;gap:3px;max-width:min(560px,100% - 32px);padding:11px 15px;font-size:12px;line-height:1.5;display:grid;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #14231c1f}.hint-card b{color:var(--text)}.hint-card[hidden]{display:none}.sim-tray{z-index:66;background:#fffffff7;border:1px solid #c4d0ca;border-radius:10px;max-width:min(620px,100% - 28px);font-size:12px;position:absolute;bottom:14px;left:14px;box-shadow:0 8px 24px #14231c2e}.sim-tray[hidden]{display:none}.sim-row{align-items:center;gap:14px;padding:8px 11px;display:flex}.sim-state{align-items:center;gap:7px;font-weight:700;display:flex}.sim-dot{background:#9aa6a1;border-radius:50%;width:9px;height:9px}.sim-dot.run{background:var(--green);box-shadow:0 0 0 3px #1f9d5529}.sim-dot.pause{background:#d49422;box-shadow:0 0 0 3px #d4942229}.sim-readout{color:var(--muted);border-left:1px solid #e0e6e3;padding-left:12px}.sim-readout b{color:var(--text);font-family:var(--mono);font-size:11.5px;font-weight:600}.sim-actions{gap:5px;display:flex}.sim-actions button{background:var(--surface);border:1px solid #ccd5d0;border-radius:6px;height:25px;padding:0 9px;font-size:11px;font-weight:650}.sim-actions button:hover{background:#f1f4f2}.sim-notes{border-top:1px solid #ecefed;margin:0;padding:0;list-style:none}.sim-notes:empty{display:none}.sim-notes li{background:var(--amber-soft);color:#7a4b05;padding:6px 11px 6px 28px;line-height:1.4;position:relative}.sim-notes li:before{content:"!";background:var(--amber);color:#fff;border-radius:50%;place-items:center;width:13px;height:13px;font-size:9px;font-weight:800;display:grid;position:absolute;top:6px;left:11px}.sim-notes li:last-child{border-radius:0 0 9px 9px}.main.ai-open{--parts-width:372px}.side{background:var(--paper);border-left:1px solid var(--line);flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.pane{flex-direction:column;flex:1 1 0;min-height:0;display:flex;overflow:hidden}.pane[hidden]{display:none}.panes-both .ai-pane{flex:1.35 1 0}.panes-both .parts{border-top:1px solid var(--line)}.pane-head{border-bottom:1px solid var(--line);background:var(--surface);flex:none;justify-content:space-between;align-items:center;gap:8px;height:40px;padding:0 6px 0 12px;display:flex}.pane-title{align-items:center;gap:6px;font-size:13px;font-weight:700;display:flex}.pane-actions{align-items:center;gap:4px;display:flex}.pane-btn{border:1px solid var(--line);background:var(--surface);color:#56635e;border-radius:6px;height:26px;padding:0 9px;font-size:11.5px;font-weight:600}.pane-btn:hover{background:#f0f3f1}.pane-x{color:#6d7a75;background:0 0;border:0;border-radius:6px;place-items:center;width:26px;height:26px;display:grid}.pane-x:hover{color:var(--text);background:#eef2f0}.beta-tag{background:var(--blue-soft);color:var(--blue);letter-spacing:.03em;border-radius:99px;padding:1px 6px;font-size:10px;font-weight:700}.parts-body{flex:1;min-height:0;padding:10px;overflow:auto}.side-rail{display:none}.parts-collapsed .side-rail{flex-direction:column;align-items:center;gap:8px;padding-top:10px;display:flex}.parts-collapsed .rail-btn{writing-mode:vertical-rl;padding:10px 4px}.side-rail.strip{border-top:1px solid var(--line);background:var(--surface);flex:none;gap:6px;padding:6px 8px;display:flex}.rail-btn{border:1px solid var(--line);background:var(--surface);color:#56635e;border-radius:7px;padding:4px 10px;font-size:11.5px;font-weight:600}.rail-btn:hover{background:var(--blue-soft);color:var(--blue);border-color:#c4d6fb}.rail-btn[hidden]{display:none}.side-rail.strip .rail-btn:before{content:"+ "}.search{background:var(--surface);border:1px solid var(--line);height:32px;color:var(--muted);border-radius:8px;align-items:center;gap:7px;padding:0 9px;display:flex}.search:focus-within{border-color:#7f9a8f}.search input{min-width:0;color:var(--text);background:0 0;border:0;outline:0;flex:1}.group-title{color:var(--muted);margin:14px 2px 5px;font-size:11.5px;font-weight:700}.part-card{text-align:left;cursor:grab;background:0 0;border:1px solid #0000;border-radius:9px;align-items:center;gap:10px;width:100%;padding:6px;display:flex}.part-card:hover{background:var(--surface);border-color:var(--line)}.part-card:active{cursor:grabbing}.thumb{background:#eef2ef;border:1px solid #d5ddd8;border-radius:7px;flex:none;width:58px;height:44px;position:relative;overflow:hidden}.thumb-inner{transform-origin:0 0;pointer-events:none;position:absolute;top:50%;left:50%}.copy{flex:1;min-width:0;display:grid}.copy b{font-size:12.5px;font-weight:650}.copy span{color:var(--muted);font-size:11.5px}.add{background:var(--blue-soft);color:var(--blue);border:1px solid #c5d5f5;border-radius:6px;flex:none;padding:4px 9px;font-size:11.5px;font-weight:650}.add:hover{background:#d9e6ff}.workspace{margin-top:10px}.workspace-row{text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;width:100%;padding:6px;display:flex}.workspace-row:hover{background:var(--surface)}.workspace-row.sel{background:var(--blue-soft);color:#1b4fbd;font-weight:650}.workspace-row .dot{background:#a9b4af;border-radius:50%;flex:none;width:7px;height:7px}.workspace-row.sel .dot{background:var(--blue)}.empty{color:var(--muted);padding:8px 6px;font-size:12px}.note{color:var(--muted);margin:14px 2px 4px;font-size:11.5px;line-height:1.5}@media (prefers-reduced-motion:reduce){.main{transition:none}}.code-toggle{background:var(--ink-2);height:34px;color:var(--ink-text);border:1px solid #36424a;border-radius:8px;align-items:center;gap:7px;padding:0 13px;font-weight:600;display:inline-flex}.code-toggle:hover{border-color:#6f8791}.code-toggle.on{background:#2c3a41;border-color:#6f8791}.code-dock{--code-h:260px;height:var(--code-h);color:#dce6e1;background:#161c20;border-top:1px solid #0e1316;flex-direction:column;flex:none;display:flex;position:relative}.code-dock.collapsed{display:none}.code-resize{cursor:ns-resize;z-index:5;height:8px;position:absolute;top:-4px;left:0;right:0}.code-resize:hover{background:#6f879159}.code-head{background:#1d252a;border-bottom:1px solid #2c373d;flex:none;align-items:center;gap:12px;height:36px;padding:0 10px 0 14px;display:flex}.code-title{font-family:var(--mono);color:#b9c8c1;font-size:12px;font-weight:600}.code-status{text-overflow:ellipsis;white-space:nowrap;color:#8d9a95;flex:1;min-width:0;font-size:11.5px;overflow:hidden}.code-status.ok{color:#6fcf97}.code-status.bad{color:#ff8a80}.code-actions{align-items:center;gap:6px;display:flex}.code-actions button,.code-actions select{color:#dce6e1;background:#232b30;border:1px solid #36424a;border-radius:6px;height:26px;padding:0 10px;font-size:11.5px}.code-actions button:hover,.code-actions select:hover{border-color:#6f8791}#codeCollapse{padding:0 8px}#aiBtn{height:34px;color:var(--ink-text);background:#2a3a3f;border:1px solid #3f6f6a;border-radius:8px;padding:0 13px;font-weight:600}#aiBtn:hover{border-color:#6fcf97}#aiBtn.on{background:#36504f;border-color:#6fcf97}.ai-key-row{border-bottom:1px solid var(--line);background:var(--surface);flex:none;padding:10px 12px;font-size:12px}.ai-key-row[hidden]{display:none}.ai-key-row p{color:#566670;margin:0 0 7px;line-height:1.4}.ai-key-row a{color:#2468e8}.ai-provider-tabs{flex-wrap:wrap;gap:5px;margin-bottom:7px;display:flex}.ai-provider-tabs button{white-space:nowrap;border:1px solid var(--line);background:var(--surface);color:#566670;border-radius:6px;flex:auto;height:26px;padding:0 8px;font-size:11.5px;font-weight:600}.ai-provider-tabs button.on{color:#fff;background:#2468e8;border-color:#2468e8}.ai-provider-hint{font-size:11px}.ai-provider-tabs button.has-key:not(.on){color:#1d7a45;border-color:#9fd3b4}.ai-key-row input.ai-model-input{font-family:inherit;font-size:11px}.ai-key-row input{border:1px solid var(--line);width:100%;height:30px;font-family:var(--mono);border-radius:6px;margin-bottom:7px;padding:0 9px;font-size:11.5px}.ai-key-row>button{color:#fff;background:#2468e8;border:0;border-radius:6px;width:100%;height:30px;font-weight:700}.ai-log{flex-direction:column;flex:1;gap:10px;min-height:0;padding:12px 12px 4px;display:flex;overflow-y:auto}.msg{display:flex}.msg.me{justify-content:flex-end}.msg .bubble{overflow-wrap:anywhere;border-radius:14px;max-width:88%;padding:8px 11px;font-size:12.5px;line-height:1.45}.msg.me .bubble{background:var(--blue);color:var(--on-blue);white-space:pre-wrap;border-bottom-right-radius:4px}.msg.ai .bubble{background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:4px;max-width:94%}.msg.err .bubble{color:#8a2b20;background:#fdebe9;border-color:#f0c2bc}.msg-text{white-space:pre-wrap;margin:0}.ai-summary{color:#596a63;margin:7px 0 0;font-size:12px}.ai-warnings{color:#74600f;background:#fff6e0;border:1px solid #eddca0;border-radius:6px;margin:7px 0 0;padding:6px 9px 6px 22px;font-size:12px;line-height:1.45}.ai-warnings li{margin:2px 0}.ai-warnings.fatal{color:#8a2b20;background:#fdebe9;border-color:#f0c2bc}.ai-code{margin-top:7px}.ai-code summary{cursor:pointer;color:#56635e;font-size:11.5px;font-weight:600}.ai-code pre{color:#dce6e1;max-height:220px;font:11px/1.5 var(--mono);white-space:pre;background:#161c20;border-radius:6px;margin:6px 0 0;padding:8px 9px;overflow:auto}.msg-actions{justify-content:flex-end;align-items:center;gap:6px;margin-top:8px;display:flex}.msg-actions button{border-radius:6px;height:27px;padding:0 12px;font-size:12px;font-weight:600}.msg-apply{background:var(--blue);color:var(--on-blue);border:0}.msg-apply:hover{background:#1554d1}.msg-discard{border:1px solid var(--line);background:var(--surface);color:#56635e}.msg-state{color:#8d9a95;font-size:11.5px}.msg-state.applied{color:var(--green);font-weight:600}.thinking .bubble{color:#6d7a75;align-items:center;gap:8px;display:flex}.dots{background:radial-gradient(circle,#9aa7a2 2.5px,#0000 3px) 0/8px 6px repeat-x;width:22px;height:6px;animation:1s steps(3,end) infinite dots}@keyframes dots{0%{width:6px}to{width:30px}}.ai-empty{text-align:center;color:#56635e;margin:auto 0;padding:8px 4px}.ai-empty b{color:var(--text);margin-bottom:5px;font-size:13.5px;display:block}.ai-empty p{max-width:280px;margin:0 auto 12px;font-size:12px;line-height:1.45}.ai-chips{flex-direction:column;align-items:stretch;gap:6px;display:flex}.ai-chip{border:1px solid var(--line);background:var(--surface);text-align:left;color:var(--text);border-radius:9px;padding:7px 10px;font-size:12px}.ai-chip:hover{background:var(--blue-soft);border-color:#c4d6fb}.ai-composer{background:var(--surface);border:1px solid var(--line);border-radius:12px;flex:none;align-items:flex-end;gap:6px;margin:6px 10px 0;padding:6px 6px 6px 11px;display:flex}.ai-composer:focus-within{border-color:#9dbaf5;box-shadow:0 0 0 3px #1d63ed1a}.ai-composer textarea{resize:none;min-height:22px;max-height:150px;font:12.5px/1.45 var(--ui);color:var(--text);background:0 0;border:0;outline:0;flex:1;padding:3px 0}.ai-send{background:var(--blue);width:30px;height:30px;color:var(--on-blue);border:0;border-radius:50%;flex:none;place-items:center;display:grid}.ai-send:disabled{cursor:default;background:#b9c4c0}.ai-foot-right{flex:none;align-items:center;gap:8px;display:inline-flex}.ai-provider-select{border:1px solid var(--line);background:var(--surface);color:#3b4a54;border-radius:6px;max-width:132px;height:24px;padding:0 4px;font-size:11.5px;font-weight:600}.ai-getkey{text-align:center;color:#2468e8;margin:0 0 7px;font-size:11.5px;font-weight:600;display:block}.ai-foot{flex:none;justify-content:space-between;align-items:center;gap:8px;min-height:26px;padding:2px 12px 6px;display:flex}.ai-link{color:#8d9a95;white-space:nowrap;background:0 0;border:0;padding:0;font-size:11px;text-decoration:underline}.ai-status{color:#b1433f;font-size:11px}.code-body{min-height:0;font-family:var(--mono);flex:1;font-size:12.5px;line-height:19px;display:flex}.code-gutter{text-align:right;color:#566670;-webkit-user-select:none;user-select:none;background:#12181b;flex:none;width:44px;padding:8px 0;overflow:hidden}.gn{height:19px;padding-right:10px}.gn.err{color:#fff;background:#b3372f}.code-editor{flex:1;min-width:0;position:relative}.code-hl,#codeInput{font:inherit;line-height:inherit;white-space:pre;tab-size:2;margin:0;padding:8px 12px;position:absolute;inset:0}.code-hl{pointer-events:none;overflow:hidden}#codeInput{resize:none;color:#0000;caret-color:#f3f7f5;background:0 0;border:0;outline:0;width:100%;height:100%;overflow:auto}#codeInput::selection{color:#0000;background:#508cff61}.cl{height:19px}.cl.err{background:#cf3d3438;box-shadow:inset 2px 0 #ff6b60}.code-hl .c{color:#6f8a7b;font-style:normal}.code-hl .k{color:#f0a35c;font-style:normal}.code-hl .f{color:#7cc4ff;font-style:normal}.code-hl .n{color:#d6b6ff;font-style:normal}.code-hl .p{color:#c9a0dc;font-style:normal}.code-error{color:#ffb4ad;text-align:left;font-family:var(--mono);background:#3a1c1a;border:0;border-top:1px solid #5a2622;flex:none;padding:7px 14px;font-size:12px}.code-error[hidden]{display:none}.code-error:hover{background:#452220}.part-editor{z-index:68;background:var(--surface);border:1px solid #c8d2cd;border-radius:11px;gap:9px;width:236px;padding:11px 12px 12px;font-size:12px;display:grid;position:absolute;box-shadow:0 12px 30px #14231c42}.part-editor[hidden]{display:none}.pe-head{justify-content:space-between;align-items:center;display:flex}.pe-title{font-weight:700}.pe-bands{background:#d9c8a4;border-radius:7px;align-items:center;gap:3px;height:14px;padding:0 7px;display:inline-flex;box-shadow:inset 0 0 0 1px #00000038}.pe-bands i{border-radius:1px;width:4px;height:14px;display:block;box-shadow:0 0 0 .5px #00000059}.pe-bands i:nth-child(4){margin-left:4px}.pe-field{color:#55625d;gap:4px;display:grid}.pe-input{background:var(--surface);border:1px solid #c3cec8;border-radius:7px;align-items:center;height:32px;padding-right:9px;display:flex}.pe-input:focus-within{border-color:var(--blue);box-shadow:0 0 0 2px #1d63ed2e}.pe-input input{min-width:0;height:100%;font-family:var(--mono);color:var(--text);background:0 0;border:0;outline:0;flex:1;padding:0 9px;font-size:13px}.pe-input i{color:#7b8983;font-style:normal}.pe-msg{color:#55625d;min-height:16px;font-size:11.5px}.pe-msg.bad{color:var(--red)}.pe-presets{grid-template-columns:repeat(4,1fr);gap:5px;display:grid}.pe-presets button{background:var(--paper);height:26px;font-family:var(--mono);border:1px solid #d3dbd6;border-radius:6px;font-size:11.5px}.pe-presets button:hover{border-color:var(--blue);background:var(--blue-soft);color:#1b4fbd}.pe-presets button.cur{border-color:var(--blue);background:var(--blue-soft);color:#1b4fbd;font-weight:700}.pe-actions{justify-content:flex-end;gap:6px;display:flex}.pe-actions button{background:var(--surface);border:1px solid #ccd5d0;border-radius:7px;height:28px;padding:0 12px}.pe-actions button.primary{border-color:var(--blue);background:var(--blue);color:var(--on-blue);font-weight:650}.res-label{fill:#26302b;stroke:#ffffffeb;paint-order:stroke;stroke-linejoin:round;font-family:var(--mono);pointer-events:none;font-weight:600}.led-editor{width:214px}.pe-vf{color:#6d7a75;font-size:11px;font-family:var(--mono)}.swatches{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.swatches button{background:var(--paper);border:1px solid #d3dbd6;border-radius:7px;align-items:center;gap:7px;height:30px;padding:0 8px;font-size:11.5px;display:flex}.swatches button:hover{border-color:var(--blue);background:var(--blue-soft)}.swatches button.cur{border-color:var(--blue);background:var(--blue-soft);color:#1b4fbd;font-weight:650}.swatches i{border-radius:50%;flex:none;width:12px;height:12px;box-shadow:inset 0 0 0 1px #00000047}.part-pir-sensor.triggered .model{filter:drop-shadow(0 0 7px #ff5a3cf2)}.canvas.running .part-pir-sensor,.canvas.running .part-pushbutton{cursor:pointer}.value-editor{width:250px}.settings-editor{width:270px}.settings-editor .set-field{margin-top:8px;display:block}.settings-editor .set-field>span{justify-content:space-between;gap:8px;display:flex}.settings-editor input[type=range]{width:100%;accent-color:var(--blue);margin:3px 0 0}.settings-editor select{border:1px solid var(--line);background:var(--surface);border-radius:6px;width:100%;height:30px;margin-top:4px}.value-editor input[type=range]{width:100%;accent-color:var(--blue);margin:3px 0 0}.ve-presets{grid-template-columns:repeat(3,1fr)}.ve-presets button{font-family:var(--ui);font-size:11px}.pe-vf.big{color:var(--text);font-size:13px;font-weight:700}.code-status.busy{color:#f2c94c}.code-side{width:clamp(300px,36%,420px);min-width:0;font-family:var(--ui);background:#12181b;border-left:1px solid #2c373d;flex-direction:column;flex:none;display:flex}.side-tabs{background:#1a2226;border-bottom:1px solid #2c373d;flex:none;align-items:stretch;gap:2px;height:30px;padding:0 6px;display:flex}.side-tabs button{color:#8d9a95;background:0 0;border:0;border-bottom:2px solid #0000;padding:0 12px;font-size:11.5px;font-weight:600;position:relative}.side-tabs button:hover{color:#dce6e1}.side-tabs button.on{color:#f3f7f5;border-bottom-color:#4d8dff}.side-tabs button.unread:after{content:"";background:#4d8dff;border-radius:50%;width:6px;height:6px;position:absolute;top:7px;right:4px}.side-info{font:11px var(--mono);color:#6f8791;align-self:center;margin-left:auto}.side-pane{min-height:0;font:11.5px/17px var(--mono);color:#cfd9d4;flex:1;overflow:auto}.side-pane[hidden]{display:none}.side-pane.serial{flex-direction:column;display:flex}.side-pane.serial[hidden]{display:none}#outputPane{white-space:pre-wrap;word-break:break-word;padding:8px 12px}.out-empty{color:#6f8791;font-family:var(--ui);font-size:12px;line-height:1.6}.out-head{font-family:var(--ui);margin-bottom:6px;font-size:12px;font-weight:700}.out-ai-fix{color:var(--ink-text);font:600 11px var(--ui);cursor:pointer;background:#2a3a3f;border:1px solid #3f6f6a;border-radius:6px;margin-left:10px;padding:2px 9px}.out-ai-fix:hover{background:#33484e}.sim-ai{font-weight:600}.out-line.note{white-space:pre-wrap;font-family:var(--ui);border-radius:6px;margin-top:8px;padding:6px 8px;display:block}.out-line.note.warning{color:#f2d27a;background:#f2c94c1f}.out-line.note.info{color:#9fb3ab}.out-head.ok{color:#6fcf97}.out-head.bad{color:#ff8a80}.out-head.busy{color:#f2c94c}.out-line{display:block}.out-line.diag{cursor:pointer;border-radius:3px}.out-line.diag:hover{background:#ffffff12}.out-line.error{color:#ff9c92}.out-line.warning{color:#f2c94c}.out-line.note{color:#8fb4ff}.out-line.ctx{color:#8d9a95}.serial-log{white-space:pre-wrap;word-break:break-all;color:#e6efe9;flex:1;min-height:0;margin:0;padding:8px 12px;overflow:auto}.serial-bar{font-family:var(--ui);background:#1a2226;border-top:1px solid #2c373d;flex-wrap:wrap;flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.serial-bar input[type=text],#serialInput{color:#f3f7f5;min-width:120px;height:26px;font:12px var(--mono);background:#12181b;border:1px solid #36424a;border-radius:6px;flex:1;padding:0 8px}#serialInput:focus{border-color:#4d8dff;outline:0}.serial-bar select,.serial-bar button{color:#dce6e1;background:#232b30;border:1px solid #36424a;border-radius:6px;height:26px;padding:0 9px;font-size:11.5px}.serial-bar button:hover,.serial-bar select:hover{border-color:#6f8791}.serial-bar .auto{color:#8d9a95;align-items:center;gap:4px;font-size:11.5px;display:inline-flex}.code-actions button:disabled{opacity:.5;cursor:progress}.code-dock.compiling .code-status{animation:1s ease-in-out infinite vlab-pulse}@keyframes vlab-pulse{50%{opacity:.55}}.code-main{flex-direction:column;flex:1;min-width:0;display:flex}.code-editor-row{flex:1;min-height:0;display:flex}.file-tabs{height:30px;font-family:var(--ui);background:#1a2226;border-bottom:1px solid #2c373d;flex:none;align-items:stretch;gap:1px;padding:0 6px;display:flex;overflow-x:auto}.ftab{border-bottom:2px solid #0000;align-items:stretch;display:flex}.ftab.on{background:#161c20;border-bottom-color:#4d8dff}.ftab-name{color:#8d9a95;font:600 11.5px var(--mono);white-space:nowrap;background:0 0;border:0;padding:0 10px}.ftab:hover .ftab-name,.ftab.on .ftab-name{color:#f3f7f5}.ftab.has-error .ftab-name:after{content:"";vertical-align:1px;background:#ff6b60;border-radius:50%;width:6px;height:6px;margin-left:6px;display:inline-block}.ftab-x{color:#6f8791;opacity:0;background:0 0;border:0;width:18px;font-size:14px;line-height:1}.ftab:hover .ftab-x,.ftab.on .ftab-x{opacity:1}.ftab-x:hover{color:#ff8a80}.ftab-add{color:#8d9a95;background:0 0;border:0;width:28px;font-size:16px}.ftab-add:hover{color:#f3f7f5}.ftab-input{color:#f3f7f5;width:130px;height:22px;font:12px var(--mono);background:#0f1417;border:1px solid #4d8dff;border-radius:5px;outline:0;align-self:center;margin:0 4px;padding:0 7px}.code-monaco{flex:1;min-width:0;min-height:0}.code-body.monaco .code-gutter,.code-body.monaco .code-editor{display:none}.res-model{display:block;position:relative}.res-leads{position:absolute;top:0;left:0;overflow:visible}.res-leads .lead{stroke:#aaa;stroke-width:2.41px;stroke-linecap:butt}.res-body{position:absolute;top:0;overflow:hidden}.overlay .handle.flex-handle{cursor:grab}.side-tabs #tabCode{display:none}.code-dock.narrow .code-body{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);display:grid}.code-dock.narrow .code-side{display:contents}.code-dock.narrow .side-tabs{border-left:0;grid-area:1/1}.code-dock.narrow #tabCode{display:block}.code-dock.narrow .code-main,.code-dock.narrow .side-pane{grid-area:2/1;min-width:0;min-height:0}.code-dock.narrow .side-pane{background:#12181b;border-left:0}.code-dock.narrow .code-main.off{display:none}.code-actions button,.code-actions select{white-space:nowrap}.code-dock.narrow .code-title{display:none}.modal{z-index:200;background:#0e161a6b;place-items:start center;padding:9vh 16px 16px;display:grid;position:fixed;inset:0}.modal[hidden]{display:none}.modal-card{background:var(--surface);border-radius:14px;flex-direction:column;width:min(560px,100%);max-height:78vh;display:flex;overflow:hidden;box-shadow:0 24px 60px #0a14194d}.modal-head{justify-content:space-between;align-items:center;padding:14px 14px 10px 18px;display:flex}.modal-head h2{margin:0;font-size:16px}.proj-new{border-bottom:1px solid var(--line);gap:6px;padding:0 18px 12px;display:flex}.proj-new input{border:1px solid var(--line);border-radius:7px;flex:1;min-width:0;height:32px;padding:0 10px}.proj-new select{border:1px solid var(--line);background:var(--surface);border-radius:7px;max-width:220px;height:32px;padding:0 6px}.proj-new button{background:var(--blue);height:32px;color:var(--on-blue);border:0;border-radius:7px;padding:0 14px;font-weight:700}.proj-list{margin:0;padding:6px 8px;list-style:none;overflow-y:auto}.proj-row{border-radius:9px;align-items:center;gap:8px;padding:8px 10px;display:flex}.proj-row:hover{background:#f3f6f4}.proj-row.current{background:var(--blue-soft)}.proj-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.proj-open{text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;align-self:flex-start;max-width:100%;padding:0;font-size:13.5px;font-weight:700;overflow:hidden}.proj-open:hover{color:var(--blue);text-decoration:underline}.proj-rename{border:1px solid #9dbaf5;border-radius:6px;height:28px;padding:0 8px;font-weight:700}.proj-meta{color:var(--muted);font-size:11.5px}.proj-acts{flex:none;gap:4px;display:flex}.proj-act{border:1px solid var(--line);background:var(--surface);color:#56635e;border-radius:6px;height:26px;padding:0 8px;font-size:11.5px}.proj-act:hover{background:#eef2f0}.proj-act.delete-yes{background:var(--red);border-color:var(--red);color:#fff}.proj-note{border-top:1px solid var(--line);color:var(--muted);margin:0;padding:10px 18px 14px;font-size:11.5px}@media (max-width:520px){.proj-row,.proj-new{flex-wrap:wrap}.proj-new select{flex:1;max-width:none}}.mpu-editor{width:268px}.mpu-editor .pe-head .pane-x{width:22px;height:22px}.mpu-view{cursor:grab;touch-action:none;background:radial-gradient(circle at 50% 35%,#f4f7f6,#dfe7e3);border-radius:8px;height:176px;position:relative;overflow:hidden}.mpu-view.dragging{cursor:grabbing}.mpu-view canvas{display:block;width:100%!important;height:100%!important}.mpu-hint[hidden]{display:none}.mpu-hint{text-align:center;color:#6d7a75;pointer-events:none;place-items:center;padding:10px;font-size:11.5px;display:grid;position:absolute;inset:0}.mpu-legend{color:#56635e;align-items:center;gap:4px;font-size:11px;display:flex}.mpu-legend i{border-radius:2px;width:9px;height:3px;margin-left:4px;display:inline-block}.mpu-legend .ax-x{background:#e0453a}.mpu-legend .ax-y{background:#27a560}.mpu-legend .ax-z{background:#2f6cf0}.mpu-legend span{color:#8d9a95;margin-left:auto}.mpu-field>span{justify-content:space-between;display:flex}.mpu-field b{font-family:var(--mono);color:var(--text);font-weight:600}.mpu-presets{grid-template-columns:repeat(3,1fr)}.mpu-read{font-family:var(--mono);color:#3d4a45;font-size:11px;line-height:1.5}.help-btn{background:var(--ink-2);width:34px;height:34px;color:var(--ink-text);border:1px solid #36424a;border-radius:50%;font-size:15px;font-weight:800}.help-btn:hover{border-color:#6fcf97}.tour{z-index:400;pointer-events:none;position:fixed;inset:0}.tour[hidden]{display:none}.tour-dim{width:100%;height:100%;position:absolute;inset:0}.tour-dim path{fill:#09101494;transition:d .25s}.tour.light .tour-dim path{fill:#0910144d}.tour-rings i{border:2px solid #4d8dff;border-radius:10px;animation:1.6s ease-in-out infinite tour-pulse;position:absolute;box-shadow:0 0 0 4px #4d8dff40}.tour-rings i:not(:first-child){border-color:#27a560;box-shadow:0 0 0 4px #27a56040}@keyframes tour-pulse{50%{box-shadow:0 0 0 9px #4d8dff00}}.tour-card{background:var(--surface);width:340px;max-width:calc(100vw - 16px);color:var(--text);pointer-events:auto;border-radius:14px;padding:16px 18px 14px;transition:left .2s,top .2s;position:absolute;box-shadow:0 18px 50px #050c1059}.tour-card.wide{width:470px}.tour-card:focus{outline:none}.tour-step{letter-spacing:.04em;text-transform:uppercase;color:var(--blue);font-size:11px;font-weight:700}.tour-card h3{margin:4px 0 8px;font-size:17px;line-height:1.25}.tour-card.wide h3{font-size:21px}.tour-body{color:#34423d;font-size:13px;line-height:1.5}.tour-body p{margin:0 0 8px}.tour-body ul{margin:0 0 8px;padding-left:18px}.tour-body li{margin:3px 0}.tour-body kbd,.tour-card h3 kbd{font:600 11px var(--mono);color:var(--text);background:#f6f8f7;border:1px solid #c8d2cd;border-bottom-width:2px;border-radius:4px;padding:1px 5px}.tour-body code{font:12px var(--mono);background:#eef2f0;border-radius:4px;padding:1px 4px}.tour-why{color:#4c5b55;background:#f2f6f4;border-radius:8px;padding:7px 9px;font-size:12px}.tour-needs li::marker{color:var(--green)}.tour-wait{color:var(--blue);align-items:center;gap:8px;margin:4px 0 6px;font-size:12px;font-weight:600;display:flex}.tour-wait[hidden]{display:none}.tour-wait i{background:var(--blue);border-radius:50%;width:9px;height:9px;animation:1s ease-in-out infinite tour-blink}@keyframes tour-blink{50%{opacity:.25}}.tour-actions{align-items:center;gap:6px;margin-top:10px;display:flex}.tour-actions>span{flex:1}.tour-actions button{border-radius:8px;height:32px;padding:0 14px;font-size:12.5px;font-weight:700}.tour-actions button[hidden]{display:none}.tour-skip{color:#7b8983;background:0 0;border:0;padding:0 4px!important;font-weight:600!important}.tour-skip:hover{color:var(--text);text-decoration:underline}.tour-back{border:1px solid var(--line);background:var(--surface);color:#44524c}.tour-next{background:var(--blue);color:var(--on-blue);border:0}.tour-next:hover{background:#1554d1}@media (prefers-reduced-motion:reduce){.tour-rings i,.tour-wait i{animation:none}.tour-card,.tour-dim path{transition:none}}.touring .hint-card{display:none}.account{position:relative}.account-slot[hidden]{display:none}.gsi-host{align-items:center;min-height:32px;display:flex}.account-btn{background:var(--ink-2);height:34px;color:var(--ink-text);border:1px solid #36424a;border-radius:99px;align-items:center;gap:7px;max-width:170px;padding:0 11px 0 4px;font-weight:600;display:flex}.account-btn:hover{border-color:#6fcf97}.account-btn img,.account-btn i{border-radius:50%;flex:none;width:26px;height:26px}.account-btn i{background:var(--blue);color:var(--on-blue);place-items:center;font-style:normal;font-weight:700;display:grid}.account-btn span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.account-menu{width:250px;right:0}.account-who{flex-direction:column;gap:2px;padding:6px 10px;display:flex}.account-who span{color:var(--muted);text-overflow:ellipsis;font-size:12px;overflow:hidden}.account-note{color:var(--muted);margin:2px 10px 4px;font-size:11.5px;line-height:1.4}.we-kind{position:relative}.we-kind-btn{background:var(--surface);height:26px;color:var(--text);border:1px solid #ccd5d0;border-radius:6px;align-items:center;gap:6px;padding:0 8px;font-size:11.5px;font-weight:600;display:flex}.we-kind-btn:hover{background:#f3f6f4}.wk-ico{color:#2f6fe4;display:inline-flex}.wk-menu{z-index:5;background:var(--surface);border:1px solid #c8d2cd;border-radius:10px;width:168px;padding:6px;position:absolute;top:31px;left:0;box-shadow:0 12px 28px #14231c38}.wk-menu[hidden]{display:none}.wk-head{letter-spacing:.06em;text-transform:uppercase;color:#6d7a75;padding:3px 8px 6px;font-size:10.5px;font-weight:700}.wk-menu button{width:100%;color:var(--text);text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:10px;padding:7px 8px;font-size:12.5px;display:flex}.wk-menu button:hover{background:#f0f3f1}.wk-menu button.on{background:var(--blue);color:var(--on-blue)}.wk-menu button.on .wk-ico{color:#fff}.wk-menu button .wk-ico{color:#3d4a45;justify-content:center;width:26px}.wire-clip{pointer-events:none}.tour-card.outro{text-align:center}.tour-card.outro h3{letter-spacing:-.01em;margin-top:10px;font-size:26px}.tour-card.outro .tour-actions{justify-content:center}.tour-card.outro .tour-actions>span{display:none}.tour-outro{color:var(--blue);font-size:20px;font-weight:700;margin:0 0 14px!important}.tour-outro-sub{color:#6d7a75;font-size:12.5px}.tour-actions button[hidden],.tour-skip[hidden]{display:none}.part-card .edit-part{border:1px solid var(--line);background:var(--surface);width:24px;height:24px;color:var(--muted);cursor:pointer;border-radius:6px;flex:none;font-size:12px}.part-card .edit-part:hover{color:var(--blue);border-color:#c5d5f5}.create-part{text-align:left;cursor:pointer;background:0 0;border:1.5px dashed #b9c9c1;border-radius:9px;align-items:center;gap:10px;width:100%;margin-top:2px;padding:8px 6px;display:flex}.create-part:hover{background:var(--surface);border-color:var(--blue)}.create-part .plus{background:var(--blue-soft);width:58px;height:44px;color:var(--blue);border-radius:7px;flex:none;place-items:center;font-size:22px;font-weight:700;display:grid}.create-part>span:last-child{display:grid}.create-part b{font-size:12.5px}.create-part span span{color:var(--muted);font-size:11.5px}.modal-card.part-card-modal{width:min(820px,100%);max-height:88vh}.part-card-modal{--pc-line:var(--line)}#partModal{padding-top:5vh}.pc-body{padding:0 18px 12px;overflow:auto}.pc-ai{background:#f5f8ff;border:1px solid #d7e2fb;border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:12.5px}.pc-ai-row{gap:8px;margin-top:6px;display:flex}.pc-ai textarea{resize:vertical;border:1px solid var(--line);min-width:0;font:inherit;border-radius:7px;flex:1;padding:7px 9px}.pc-ai button,.pc-primary{background:var(--blue);color:var(--on-blue);cursor:pointer;border:0;border-radius:7px;padding:0 16px;font-weight:700}.pc-ai button:disabled{opacity:.6;cursor:wait}.pc-ai-opts{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;font-size:11.5px;display:flex}.pc-ai-opts select,.pc-ai-opts input{border:1px solid var(--line);height:26px;font:inherit;background:var(--surface);border-radius:6px;padding:0 7px}.pc-ai-opts input{flex:140px;min-width:0}.pc-ai-opts a{color:#2468e8;white-space:nowrap;font-weight:600}.pc-ai-status{min-height:16px;color:var(--muted);margin-top:5px}.pc-ai-status.bad{color:#b42318}.pc-grid{grid-template-columns:minmax(0,1fr) 260px;gap:16px;display:grid}@media (max-width:680px){.pc-grid{grid-template-columns:1fr}}.pc-field{color:var(--muted);gap:3px;margin-bottom:8px;font-size:12px;display:grid}.pc-field i,.pc-check i{opacity:.8;font-style:normal}.pc-field input:not([type=color]),.pc-field select{border:1px solid var(--line);background:var(--surface);height:30px;color:var(--text);font:inherit;border-radius:7px;padding:0 8px;font-size:13px}.pc-row{gap:8px;display:flex}.pc-row .pc-field:first-child{flex:1}.pc-color input{border:1px solid var(--line);background:var(--surface);border-radius:7px;width:44px;height:30px;padding:2px}.pc-pins-head{justify-content:space-between;align-items:center;margin:6px 0 4px;font-size:12.5px;display:flex}.pc-pins-head button{background:var(--blue-soft);color:var(--blue);cursor:pointer;border:1px solid #c5d5f5;border-radius:6px;padding:3px 9px;font-size:12px;font-weight:650}.pc-pins{gap:4px;margin-bottom:8px;display:grid}.pc-pin{grid-template-columns:82px minmax(0,1fr) 86px 26px;gap:4px;display:grid}.pc-pin input,.pc-pin select{border:1px solid var(--line);background:var(--surface);min-width:0;height:28px;font:inherit;border-radius:6px;padding:0 6px;font-size:12.5px}.pc-pin button{border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:6px}.pc-check{align-items:center;gap:6px;margin:2px 0 10px;font-size:12.5px;display:flex}.pc-roles{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 8px;display:grid}.pc-note{color:var(--muted);margin-top:2px;font-size:12px}.pc-preview{border:1px solid var(--line);background:#eef2ef radial-gradient(#d5ddd8 1px,#0000 1px) 0 0/9.6px 9.6px;border-radius:10px;place-items:center;min-height:200px;padding:12px;display:grid}.pc-preview svg{max-width:100%;height:auto}.pc-errors{color:#b42318;margin:8px 0 0;padding-left:18px;font-size:12px}.pc-foot{border-top:1px solid var(--line);align-items:center;gap:8px;padding:12px 18px;display:flex}.pc-foot button{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:7px;height:32px;padding:0 14px;font-weight:650}.pc-foot .pc-primary{background:var(--blue);color:var(--on-blue);border:0}.pc-foot .pc-primary:disabled{opacity:.5;cursor:not-allowed}.pc-foot .pc-delete{color:#b42318}.pc-spacer{flex:1}.pc-roles .pc-wide{grid-column:1/-1}.pc-logic{margin-top:10px}.pc-logic-row{align-items:center;gap:5px;margin-bottom:4px;display:flex}.pc-logic-row input,.pc-logic-row select{border:1px solid var(--line);background:var(--surface);min-width:0;height:28px;font:inherit;border-radius:6px;padding:0 6px;font-size:12.5px}.pc-logic-row input[type=number]{width:72px}.pc-logic-row>button{border:1px solid var(--line);background:var(--surface);width:26px;height:28px;color:var(--muted);cursor:pointer;border-radius:6px;flex:none}.pc-expr{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.pc-eq{color:var(--muted);flex:none;font-size:11.5px}.pc-rule{border:1px solid var(--line);background:#fbfcfb;border-radius:8px;margin-bottom:5px;padding:6px}.pc-rule .pc-set{padding-left:16px}.pc-mini{border:1px dashed var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;padding:2px 8px;font-size:11.5px}.pc-mini:disabled{opacity:.5;cursor:not-allowed}.pc-analog{color:var(--muted);align-items:center;gap:2px;font-size:11px;display:flex}.pc-analog input{width:13px;height:13px}.pc-sources a{color:var(--blue)}.pc-pin .pc-pin-no{color:var(--muted);place-items:center;font-size:11px;display:grid}.pc-pins-hint{color:var(--muted);flex:1;margin-left:8px;font-size:11px;font-weight:400}.empty.no-match{text-align:left;gap:8px;padding:12px;display:grid}.empty.no-match p{margin:0}.empty.no-match .hint{opacity:.75;font-size:12px}.link-btn{color:inherit;cursor:pointer;font:inherit;background:0 0;border:0;justify-self:start;padding:0;font-size:12px;text-decoration:underline}@keyframes cp-spin{to{transform:rotate(360deg)}}.pc-template{margin-bottom:8px}.pc-template i{opacity:.7;font-weight:400}.top-btn{background:var(--ink-2);height:34px;color:var(--ink-text);cursor:pointer;border:1px solid #36424a;border-radius:8px;padding:0 13px}.top-btn:hover{background:#2b353b}.ws-card{max-width:640px}.ws-list{max-height:46vh;padding:0 18px;overflow-y:auto}.ws-group{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:12px 0 4px;font-size:12px}.ws-row{border:1px solid var(--line);margin-bottom:6px}.ws-save{border-top:1px solid var(--line);border-bottom:0;margin-top:8px;padding-top:12px}.view-toggle{border:1px solid var(--line);border-radius:8px;display:inline-flex;overflow:hidden}.view-toggle[hidden]{display:none}.view-toggle button{background:var(--surface);height:30px;color:inherit;cursor:pointer;border:0;padding:0 12px;font-weight:600}.view-toggle button.on{background:var(--ink-2);color:var(--ink-text)}.viz-pane{z-index:20;background:var(--mat,#eef3f0);display:flex;position:absolute;inset:0}.viz-pane[hidden]{display:none}.viz-stage{cursor:grab;touch-action:none;flex:1;min-width:0;position:relative}.viz-stage.dragging{cursor:grabbing}.viz-stage canvas{width:100%;height:100%;position:absolute;inset:0}.viz-hint{color:#48564f;text-align:center;place-items:center;padding:16px;font-size:13px;display:grid;position:absolute;inset:0}.viz-hint[hidden]{display:none}.viz-labels{pointer-events:none;position:absolute;inset:0;overflow:hidden}.viz-tag{color:#fff;border-radius:9px;padding:1px 6px;font-size:11px;font-weight:700;position:absolute;top:0;left:0}.viz-side{background:var(--surface);border-left:1px solid var(--line);align-content:start;gap:10px;width:340px;max-width:48%;padding:14px;display:grid;overflow:auto}.viz-note{color:#48564f;margin:0;font-size:12px;line-height:1.5}.viz-read{margin:0;font-size:12.5px;line-height:1.5}.viz-row{grid-template-columns:54px 1fr;align-items:center;gap:8px;display:grid}.viz-row select{min-width:0}.viz-chip{text-align:center;color:#fff;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;border-radius:14px;padding:5px 0;font-size:12px;font-weight:700}.viz-ghost{z-index:1000;pointer-events:none;opacity:.9;width:54px;position:fixed;transform:translate(-50%,-50%)}.viz-trace{border:1px solid var(--line);background:#fafcfb;border-radius:8px;width:100%;height:90px}.viz-channels{gap:8px;display:grid}.viz-card{border:1px solid var(--line);background:#fafcfb;border-radius:9px;gap:5px;padding:8px 9px;display:grid}.viz-card>b{font-size:12px}.viz-ref{grid-template-columns:74px 1fr;align-items:center;gap:8px;font-size:12px;font-weight:600;display:grid}.viz-ref select{min-width:0}.viz-subject{font-size:12px}.viz-subject summary{cursor:pointer;font-weight:600}.viz-slider{grid-template-columns:1fr 56px;gap:2px 8px;margin-top:6px;display:grid}.viz-slider input{grid-column:1/2}.viz-slider span{grid-column:1/3}.viz-slider output{text-align:right;color:#6a7871}.viz-hover{color:#36424a;pointer-events:none;font-size:12px;font-weight:600;position:absolute;top:10px;left:12px}.viz-credit{color:#6a7871;font-size:11px;text-decoration:none;position:absolute;bottom:8px;left:12px}.viz-credit:hover{text-decoration:underline}.settings-btn{padding:0;font-size:16px;line-height:1}.settings-card{width:min(600px,100%)}.settings-body{padding:0 18px 16px;overflow-y:auto}.set-sec{border-top:1px solid var(--line);padding:12px 0}.set-sec:first-child{border-top:0}.set-sec h3{margin:0 0 6px;font-size:13px}.settings-card .ai-key-row{border:1px solid var(--line);border-radius:10px;margin-top:8px}.ai-setup{background:var(--amber-soft);border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:flex}.ai-setup[hidden]{display:none}.ai-setup button{background:var(--blue);color:var(--on-blue);border:0;border-radius:6px;padding:5px 10px;font-weight:700}.theme-list{gap:8px;display:grid}.theme-opt{text-align:left;border:2px solid var(--line);background:0 0;border-radius:10px;grid-template-columns:34px 1fr;align-items:center;column-gap:10px;padding:9px 11px;display:grid}.theme-opt .proj-meta{grid-column:2}.theme-opt[aria-pressed=true]{border-color:var(--blue);background:var(--blue-soft)}.theme-swatch{border:1px solid #0003;border-radius:9px;grid-row:1/span 2;width:34px;height:34px}.sw-classic{background:linear-gradient(135deg,#161c20 50%,#dde7e0 50%)}.sw-kids{background:linear-gradient(135deg,#7c4dff 33%,#ffd23f 33% 66%,#2ec4b6 66%)}.sw-contrast{background:linear-gradient(135deg,#000 50%,#fff 50%)}.set-actions{flex-wrap:wrap;gap:8px;display:flex}:root[data-theme=kids]{--ink:#5b3fd1;--ink-2:#7556e6;--ink-text:#fffbea;--ink-muted:#e0d6ff;--mat:#fff4c9;--mat-line:#7c4dff29;--mat-major:#7c4dff4d;--paper:#fffaf0;--line:#ead9ff;--text:#2b2350;--muted:#6f63a8;--blue:#ff6f3c;--blue-soft:#ffe9df;--green:#1fb86b;--red:#ef476f;--amber:#d98a00;--amber-soft:#fff0b8;--ui:"Trebuchet MS", "Segoe UI Variable Text", "Segoe UI", system-ui, sans-serif;font-size:14px}:root[data-theme=kids] .topbar button,:root[data-theme=kids] .run,:root[data-theme=kids] .tool{border-radius:14px}:root[data-theme=kids] .topbar button{border-color:#9d86ff}:root[data-theme=kids] .run{height:38px;font-size:14px}:root[data-theme=kids] .tool{width:38px;height:38px}:root[data-theme=kids] .modal-card,:root[data-theme=kids] .menu{border-radius:20px}:root[data-theme=contrast]{--ink:#000;--ink-2:#1a1a1a;--ink-text:#fff;--ink-muted:#d0d0d0;--mat:#fff;--mat-line:#00000040;--mat-major:#0000008c;--paper:#fff;--line:#000;--text:#000;--muted:#222;--blue:#0030c8;--blue-soft:#dbe5ff;--green:#006b2d;--red:#b00000;--amber:#7a4b00;--amber-soft:#ffe9a8}:root[data-theme=contrast] :focus-visible{outline-offset:2px;outline:3px solid #ff8a00}:root[data-theme=hacker]{--ink:#000;--ink-2:#04110a;--ink-text:#3dff7a;--ink-muted:#1f9d4a;--mat:#020a05;--mat-line:#3dff7a17;--mat-major:#3dff7a33;--paper:#000;--surface:#030d06;--line:#0f4d24;--text:#3dff7a;--muted:#1fae52;--blue:#3dff7a;--blue-soft:#07250f;--green:#3dff7a;--red:#ff3860;--amber:#e5d400;--amber-soft:#1d1a00;--ui:ui-monospace, "Cascadia Mono", "SF Mono", Consolas, monospace}:root[data-theme=techno]{--ink:#12082e;--ink-2:#1d1048;--ink-text:#e9e4ff;--ink-muted:#8f84c8;--mat:#0e0828;--mat-line:#00f0ff14;--mat-major:#ff2ec433;--paper:#0b0720;--surface:#160d3a;--line:#3a2a7a;--text:#e9e4ff;--muted:#9d92d6;--blue:#00e5ff;--blue-soft:#0b2a47;--green:#2dff9a;--red:#ff2ec4;--amber:#ffb000;--amber-soft:#2c1d00}:root[data-theme=hacker] .topbar,:root[data-theme=techno] .topbar{border-bottom:1px solid var(--blue)}:root[data-theme=techno] .run{box-shadow:0 0 14px #2dff9a80}:root[data-theme=hacker] .run{color:#000}:root[data-theme=hacker],:root[data-theme=techno]{--on-blue:#000}:root[data-theme=custom]{--surface:color-mix(in srgb, var(--paper) 94%, var(--text));--mat:color-mix(in srgb, var(--paper) 90%, var(--text));--line:color-mix(in srgb, var(--paper) 78%, var(--text));--muted:color-mix(in srgb, var(--text) 65%, var(--paper));--blue-soft:color-mix(in srgb, var(--blue) 16%, var(--paper));--mat-line:color-mix(in srgb, var(--text) 9%, transparent);--mat-major:color-mix(in srgb, var(--text) 20%, transparent)}:root[data-theme=founder]{--ink:#0a0803;--ink-2:#1a1407;--ink-text:#f6e7b4;--ink-muted:#b8a064;--mat:#14100a;--mat-line:#e8be5017;--mat-major:#e8be5038;--paper:#0c0a06;--surface:#17120a;--line:#4a3a16;--text:#f6e7b4;--muted:#c2aa6a;--blue:#e8be50;--blue-soft:#2a2008;--green:#e8be50;--red:#ff5a4d;--amber:#ffb000;--amber-soft:#2a1d00}:root[data-theme=founder] .topbar{border-bottom:1px solid var(--blue);box-shadow:0 2px 18px #e8be5038}:root[data-theme=founder] .run{color:#000}:root[data-theme=operator]{--ink:#0f1519;--ink-2:#1a242b;--ink-text:#e2edf2;--ink-muted:#8aa0ab;--mat:#151d22;--mat-line:#ffb00012;--mat-major:#ffb0002e;--paper:#10171b;--surface:#182229;--line:#33454f;--text:#dbe7ec;--muted:#8fa5b0;--blue:#ffb000;--blue-soft:#2b2208;--green:#34d399;--red:#ff5a4d;--amber:#ffb000;--amber-soft:#2b2208;--ui:ui-monospace, "Cascadia Mono", "SF Mono", Consolas, monospace}:root[data-theme=operator] .topbar{border-bottom:1px solid var(--blue)}:root[data-theme=founder],:root[data-theme=operator]{--on-blue:#000}.sw-founder{background:linear-gradient(135deg,#0a0803 50%,#e8be50 50%)}.sw-operator{background:linear-gradient(135deg,#1a242b 50%,#ffb000 50%)}.sw-hacker{background:linear-gradient(135deg,#000 50%,#3dff7a 50%)}.sw-techno{background:linear-gradient(135deg,#160d3a 40%,#00e5ff 40% 70%,#ff2ec4 70%)}.sw-custom{background:conic-gradient(#ff6f3c,#ffd23f,#2ec4b6,#5b3fd1,#ff6f3c)}.theme-custom{border:1px dashed var(--line);border-radius:10px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-top:10px;padding:10px;display:grid}.theme-custom[hidden]{display:none}.theme-custom label{color:var(--muted);flex-direction:column;gap:3px;font-size:11.5px;display:flex}.theme-custom input[type=color]{border:1px solid var(--line);background:0 0;border-radius:6px;width:100%;height:30px;padding:0}.theme-custom select{height:30px}.role-badge{background:var(--blue);color:var(--on-blue);text-transform:capitalize;border-radius:99px;align-self:flex-start;margin-top:3px;padding:1px 8px;font-size:11px;font-style:normal;font-weight:700}.role-badge[hidden]{display:none}.admin-list{gap:6px;max-height:240px;margin-top:8px;display:grid;overflow-y:auto}.community-card{width:min(680px,100%)}.flair{background:var(--flair,#5b6770);color:#fff;letter-spacing:.01em;border-radius:99px;padding:2px 9px;font-size:11.5px;font-weight:700;display:inline-block}.cm-blog-link{color:var(--blue);margin:0 0 8px 8px;font-weight:600;text-decoration:none;display:inline-block}.top-btn.has-new{position:relative}.top-btn.has-new:after{content:"";background:var(--red);width:8px;height:8px;box-shadow:0 0 0 2px var(--ink);border-radius:50%;position:absolute;top:3px;right:3px}.cm-tabs{gap:6px;margin-bottom:10px;display:flex}.cm-tab{border:1px solid var(--line);background:0 0;border-radius:99px;padding:6px 14px;font-weight:600}.cm-tab[aria-pressed=true]{background:var(--blue);border-color:var(--blue);color:var(--on-blue)}.cm-list{gap:6px;display:grid}.cm-rowtop{align-items:center;gap:8px;display:flex}.cm-row{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:10px;flex-direction:column;gap:2px;padding:9px 12px;display:flex}.cm-row:hover{border-color:var(--blue)}.cm-post h3{margin:4px 0}.cm-text p{overflow-wrap:anywhere;margin:6px 0;line-height:1.5}.cm-text a{color:var(--blue)}.cm-comments{gap:8px;margin:8px 0 12px;display:grid}.cm-comment{border:1px solid var(--line);border-radius:10px;padding:8px 10px}.cm-form{gap:6px;margin-top:12px;display:grid}.cm-form input,.cm-form textarea{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:7px 9px;font-family:inherit}.cm-form button{background:var(--blue);color:var(--on-blue);border:0;border-radius:8px;justify-self:start;padding:6px 14px;font-weight:700}.mode-switch{border:1px solid #2c373d;border-radius:8px;flex:none;display:inline-flex;overflow:hidden}.mode-switch button{color:#aab8b2;cursor:pointer;background:0 0;border:0;border-radius:0;padding:4px 10px;font-size:12px}.mode-switch button[aria-pressed=true]{background:var(--blue,#2f7dd1);color:var(--on-blue,#fff)}.blocks-pane{background:#1b2328;flex:1;min-height:0;position:relative}.blocks-pane[hidden],.code-body.blocks-on .file-tabs,.code-body.blocks-on .code-editor-row,.code-dock.blocks-on #codeExamples,.code-dock.blocks-on #codeReset,.code-dock.blocks-on #codeEditorKind,.code-dock.blocks-on .code-title{display:none}.blocks-pane .blocklyMainBackground{stroke:none}.blocks-msg{color:#dce6e1;max-width:320px;font:12px/1.4 var(--ui,system-ui);z-index:5;pointer-events:none;background:#232e35;border:1px solid #36454d;border-radius:10px;padding:8px 10px;position:absolute;inset:auto 12px 10px auto}.blocks-msg[hidden]{display:none}.blocks-tools{z-index:5;gap:6px;display:flex;position:absolute;top:8px;right:12px}.blocks-tools button{color:#dce6e1;cursor:pointer;background:#232e35;border:1px solid #36454d;border-radius:8px;padding:4px 9px;font-size:12px}.blocks-tools button:hover{border-color:var(--blue,#2f7dd1)}.blocklyToolboxCategory .blocklyToolboxCategoryLabel,.blocklyTreeLabel{font-family:var(--ui,system-ui);font-size:13px}.blocklyToolboxDiv{background:#12181b!important}.blocklyToolboxCategoryLabel{color:#dce6e1!important}html[data-off~=ai] #aiBtn,html[data-off~=ai] #aiPane,html[data-off~=ai] #simAskAi,html[data-off~=community] #communityBtn,html[data-off~=code] #codeMode,html[data-off~=code] #codeEditorKind,html[data-off~=examples] #codeExamples,html[data-off~=customParts] #createPartBtn,html[data-off~=importFiles] #importJson,html[data-off~=importFiles] #importPcb,html[data-off~=share] #exportJson,html[data-off~=share] #copyJson,html[data-off~=themes] #themeList,html[data-off~=themes] #themeCustom{display:none!important}.kind-card{width:min(520px,100%)}.kind-opts{gap:10px;display:grid}.kind-opt{text-align:left;border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:12px;gap:2px;padding:12px 14px;display:grid}.kind-opt:hover{border-color:var(--blue)}.kind-opt b{font-size:14px}.kind-opt span{color:var(--muted);font-size:12px}.kind-join{gap:8px;margin-top:10px;display:flex}.kind-join input,.cls-row input,.cls-add input{border:1px solid var(--line);background:var(--surface);font:inherit;border-radius:8px;padding:7px 9px}.kind-join input{text-transform:uppercase;letter-spacing:.12em;width:9em}.class-card{width:min(980px,100%);max-height:86vh}.cls-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.cls-bar select{border:1px solid var(--line);background:var(--surface);font:inherit;border-radius:8px;padding:6px 9px;font-weight:600}.cls-code{font-family:var(--mono,monospace);letter-spacing:.14em;background:var(--paper);border:1px dashed var(--line);border-radius:8px;padding:4px 10px;font-weight:700}.cls-btn{border:1px solid var(--line);cursor:pointer;font:inherit;background:0 0;border-radius:8px;padding:6px 12px;font-weight:600}.cls-btn:hover{border-color:var(--blue)}.cls-btn.primary{background:var(--blue);color:var(--on-blue);border-color:var(--blue)}.cls-btn.danger:hover{color:#d33;border-color:#d33}.cls-btn:disabled{opacity:.5;cursor:default}.cls-tabs{gap:6px;margin-bottom:10px;display:flex}.cls-table{border-collapse:collapse;width:100%;font-size:13px}.cls-table th,.cls-table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:7px 8px}.cls-table tr.cls-student{cursor:pointer}.cls-table tr.cls-student:hover{background:color-mix(in srgb, var(--blue) 8%, transparent)}.cls-bar-track{background:var(--line);vertical-align:middle;border-radius:99px;width:140px;height:8px;margin-right:8px;display:inline-block;overflow:hidden}.cls-bar-fill{background:#2fa66a;height:100%;display:block}.cls-chip{background:var(--line);border-radius:99px;padding:2px 9px;font-size:11.5px;font-weight:700;display:inline-block}.cls-chip.submitted{color:#6a5200;background:#fff3c4}.cls-chip.done{color:#145a33;background:#cdeed8}.cls-chip.returned{color:#8a1d1d;background:#fbd5d5}.cls-chip.locked{opacity:.55}.cls-projects{gap:8px;display:grid}.cls-proj{border:1px solid var(--line);border-radius:12px;grid-template-columns:2.2em 1fr auto;align-items:center;gap:6px 12px;padding:10px 12px;display:grid}.cls-proj.locked{opacity:.55}.cls-proj .n{color:var(--muted);font-size:18px;font-weight:800}.cls-proj .goal{color:var(--muted);font-size:12.5px}.cls-proj .note{color:#5a4600;background:#fff3c4;border-radius:8px;grid-column:2/-1;padding:5px 9px;font-size:12.5px}.cls-proj .uses{color:var(--muted);font-size:11.5px}.cls-row{border-bottom:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:6px 0;display:grid}.cls-switches{gap:4px;display:grid}.cls-switch{border:1px solid var(--line);cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:8px 10px;display:flex}.cls-switch input{width:18px;height:18px}.cls-switch b{font-size:13px}.cls-switch span{color:var(--muted);font-size:12px;display:block}.cls-presets{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.cls-presets .cls-btn[aria-pressed=true]{background:var(--blue);color:var(--on-blue);border-color:var(--blue)}.cls-add{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.cls-add input{flex:1;min-width:12em}.cls-empty{text-align:center;color:var(--muted);padding:18px}.proj-pill{background:var(--ink,#1b1f3b);color:#fff;white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:8px;max-width:45%;margin-left:auto;padding:3px 4px 3px 12px;font-size:12px;display:flex;overflow:hidden}.proj-pill>span,.proj-pill>b{text-overflow:ellipsis;overflow:hidden}.proj-pill[hidden]{display:none}.proj-pill b{font-weight:800}.proj-pill button{background:var(--blue);color:var(--on-blue);cursor:pointer;border:0;border-radius:999px;flex:none;padding:4px 12px;font-weight:700}.start{z-index:500;background:var(--paper);color:var(--text);flex-direction:column;display:flex;position:fixed;inset:0;overflow:auto}.start[hidden]{display:none}.start-head{background:var(--ink);color:#fff;flex:none;align-items:center;gap:14px;padding:12px 24px;display:flex}.start-brand{align-items:center;gap:10px;margin-right:auto;font-size:16px;display:flex}.start-account{align-items:center;gap:10px;display:flex}.start-account.nudge{animation:.6s ease-in-out 3 vlab-pulse}.start-who{font-size:13px;font-weight:600}.start-head .cls-btn{color:#fff;border-color:#ffffff59}.start-head .cls-btn.primary{background:var(--blue);border-color:var(--blue);color:var(--on-blue)}.start-main{flex:1;justify-content:center;padding:40px 20px 60px;display:flex}.start-body{width:min(980px,100%)}.start-h{margin:0 0 6px;font-size:30px}.start-sub{color:var(--muted);margin:0 0 24px;font-size:15px}.start .kind-opts{max-width:560px}.cls-btn.big{border-radius:14px;padding:14px 28px;font-size:17px}.start .cls-tabs,.start .cls-bar{color:var(--text)}.start .kind-opts{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;max-width:none}.start .kind-opt{background:var(--surface);border-radius:16px;padding:20px;box-shadow:0 1px 2px #0000000d}.start .kind-opt b{font-size:17px}.start .kind-opt span{font-size:13px}.start .proj-note{border:0;padding:18px 0 0}.ask{z-index:800;background:var(--paper);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.ask-card{gap:14px;width:min(560px,100%);display:grid}.ask-card h1{margin:0;font-size:30px;line-height:1.15}.ask-card p{color:var(--muted);margin:0;font-size:16px}.ask-card textarea{border:1px solid var(--line);background:var(--surface);font:inherit;resize:vertical;border-radius:12px;padding:10px 12px}.ask-row{flex-wrap:wrap;justify-content:flex-end;gap:12px;margin-top:8px;display:flex}.cls-btn.danger-fill{color:#fff;background:#d33;border-color:#d33}.start-body:has(.dash){width:min(1280px,100%)}.start-main:has(.dash){padding-top:24px}.dash{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:28px;display:grid}.dash-side{background:var(--surface);border:1px solid var(--line);border-radius:16px;flex-direction:column;gap:6px;min-height:min(640px,100vh - 120px);padding:14px;display:flex;position:sticky;top:16px}.dash-user{border-bottom:1px solid var(--line);margin-bottom:6px;padding:6px 8px 12px;display:grid}.dash-user span{color:var(--muted);font-size:12px}.dash-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:8px 8px 2px;font-size:11px;font-weight:800}.dash-nav{text-align:left;cursor:pointer;color:inherit;font:inherit;background:0 0;border:0;border-radius:10px;gap:1px;padding:9px 10px;display:grid}.dash-nav:hover{background:color-mix(in srgb, var(--blue) 8%, transparent)}.dash-nav[aria-current=page]{background:color-mix(in srgb, var(--blue) 16%, transparent);box-shadow:inset 3px 0 0 var(--blue)}.dash-nav span{color:var(--muted);font-size:12px}.dash-side input{border:1px solid var(--line);background:var(--paper);font:inherit;border-radius:10px;padding:8px 10px}.dash-code{text-transform:uppercase;letter-spacing:.12em}.dash-new{height:6px}.dash-grow{flex:1}.dash-bench{border-radius:12px;padding:12px 14px}.dash-main{min-width:0}.dash-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;display:grid}.tile{background:var(--surface);border:1px solid var(--line);border-radius:16px;flex-direction:column;gap:6px;padding:16px;display:flex;box-shadow:0 1px 3px #0000000d}.tile.locked{opacity:.55}.tile.st-returned{border-color:#d33}.tile.st-done,.tile.st-submitted{border-color:#2fa66a}.tile-top{justify-content:space-between;align-items:center;display:flex}.tile .n{color:var(--muted);font-size:22px;font-weight:800}.tile-title{font-size:16px}.tile .goal{color:var(--muted);font-size:13px}.tile .uses{color:var(--muted);font-size:12px}.tile .note{color:#5a4600;background:#fff3c4;border-radius:8px;padding:6px 9px;font-size:12.5px}.tile-act{margin-top:auto;padding-top:8px}@media (max-width:820px){.dash{grid-template-columns:1fr}.dash-side{min-height:0;position:static}}html[data-off~=ai] .ai-only,html[data-off~=ai] #railAi,html[data-off~=ai] #setClearChat,html[data-off~=ai] #setForgetKeys,html[data-off~=ai] .pc-ai,html[data-off~=ai] #aiSetup{display:none!important}.dash-note{color:var(--muted);margin:4px 6px;font-size:12px}.pack-card{border:1px dashed var(--line);border-radius:9px;align-items:center;gap:10px;margin:2px 0;padding:8px;display:flex}.pack-card.on{border-style:solid}.pack-card .copy{min-width:0;color:var(--muted,inherit);flex-direction:column;flex:1;gap:2px;font-size:12px;display:flex}.pack-card .copy b{color:var(--text,inherit);font-size:13px}.pack-btn{border:1px solid var(--line);background:var(--surface);color:inherit;font:inherit;cursor:pointer;border-radius:7px;flex:none;padding:5px 10px;font-size:12px}.pack-btn:hover{border-color:var(--accent,currentColor)}.ws-tabs{border-bottom:1px solid var(--line);gap:6px;padding:0 18px 8px;display:flex}.ws-tabs button{color:inherit;font:inherit;cursor:pointer;opacity:.7;background:0 0;border:1px solid #0000;border-radius:8px 8px 0 0;padding:6px 12px;font-size:13px}.ws-tabs button[aria-selected=true]{opacity:1;border-color:var(--line);background:var(--surface);border-bottom-color:#0000;font-weight:600}.pack-more{border:1px dashed var(--line);width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border-radius:9px;margin:6px 0;padding:8px;font-size:12px;display:block}.pack-more:hover{border-color:var(--accent,currentColor)}.pack-parts{opacity:.75;font-size:11px}.robot-tabs button{min-width:78px}.asm-pane{z-index:20;background:var(--mat,#eef3f0);display:flex;position:absolute;inset:0}.asm-pane[hidden]{display:none}.asm-stage{cursor:crosshair;touch-action:none;flex:1;min-width:0;position:relative}.asm-stage canvas{width:100%;height:100%;position:absolute;inset:0}.asm-hint{color:#48564f;text-align:center;pointer-events:none;place-items:center;padding:24px;font-size:13px;display:grid;position:absolute;inset:0}.asm-hint[hidden]{display:none}.test-pane .asm-hint{pointer-events:auto}.asm-side{background:var(--surface,#fff);border-left:1px solid var(--line,#d5ddd8);flex-direction:column;flex:none;gap:8px;width:350px;padding:12px 14px 20px;font-size:13px;display:flex;overflow:auto}.asm-side h4{text-transform:uppercase;letter-spacing:.06em;color:#5b6a63;margin:10px 0 0;font-size:12px}.asm-row{align-items:end;gap:8px;display:flex}.asm-row.wrap{flex-wrap:wrap}.asm-field{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.asm-field span,.asm-mini span{color:#5b6a63;font-size:11px}.asm-field input,.asm-field select,.asm-mini input,.asm-mini select,.asm-frame-id{border:1px solid var(--line,#d5ddd8);height:28px;font:inherit;background:var(--surface,#fff);min-width:0;color:inherit;border-radius:6px;padding:0 6px}.asm-mini{flex-direction:column;gap:2px;display:flex}.asm-mini input{width:70px}.asm-mini select{width:92px}.asm-btn{border:1px solid var(--line,#d5ddd8);background:var(--surface,#fff);cursor:pointer;height:30px;color:inherit;border-radius:7px;padding:0 12px;font-weight:600}.asm-btn.primary{background:var(--ink-2,#2b3a34);color:var(--ink-text,#fff);border-color:#0000}.asm-note{color:#5b6a63;margin:0;font-size:12px}.asm-msg{color:#2a6a4b;min-height:16px;margin:0;font-size:12px}.asm-frames{flex-direction:column;gap:6px;display:flex}.asm-frame{border:1px solid var(--line,#d5ddd8);cursor:pointer;border-radius:8px;flex-direction:column;gap:6px;padding:7px;display:flex}.asm-frame.sel{border-color:#e0562a;box-shadow:inset 0 0 0 1px #e0562a}.asm-frame-id{flex:1;font-weight:600}.asm-pos{color:#7a8a83;font-size:11px}.asm-x{cursor:pointer;color:#8a4b3f;background:0 0;border:0;padding:2px 6px;font-size:14px}.asm-lib{flex-direction:column;gap:4px;display:flex}.asm-lib-row{align-items:center;gap:6px;display:flex}.asm-lib-open{text-align:left;border:1px solid var(--line,#d5ddd8);background:var(--surface,#fff);cursor:pointer;color:inherit;border-radius:6px;flex:1;padding:5px 8px}.asm-badge{color:#7a5a1c;background:#f3e3c9;border-radius:99px;padding:2px 6px;font-size:10px}@media (max-width:760px){.asm-pane{flex-direction:column}.asm-side{border-left:0;border-top:1px solid var(--line,#d5ddd8);width:auto;max-height:45%}}.asm-mode{margin-bottom:10px}.asm-box[hidden]{display:none}.asm-lib-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12.5px;overflow:hidden}.asm-mate{border-bottom:1px solid var(--line,#d7dfdb);padding:4px 0 6px}.asm-badge.ok{color:#1d5a35;background:#d8efe0}.asm-badge.warn{color:#6b5100;background:#fbefc9}.asm-badge.bad{color:#8a2a14;background:#f7d9d2}.asm-mini-sel{max-width:84px;font-size:11.5px}.asm-msg.bad{color:#b3361a}.robot-asm .code-dock{display:none}.asm-mode{z-index:2;align-self:flex-start;position:sticky;top:-12px}.asm-btn{white-space:nowrap}.asm-side>*,.asm-box>*{flex-shrink:0}.asm-box{flex-direction:column;gap:8px;display:flex}.asm-cards{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;display:grid}.asm-card{border:1px solid var(--line,#d5ddd8);background:var(--surface,#fff);cursor:grab;font:inherit;text-align:center;color:inherit;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:6px 4px 7px;font-size:11.5px;line-height:1.2;display:flex}.asm-card:hover{border-color:#1f7a8c;box-shadow:0 2px 8px #1f7a8c2e}.asm-card img,.asm-thumb-empty{aspect-ratio:4/3;object-fit:contain;background:#eef3f0;border-radius:6px;width:100%}.asm-sel{background:#eef5fa;border:1px solid #1d4e75;border-radius:10px;flex-direction:column;gap:8px;padding:10px;display:flex}.asm-sel-name{font-weight:700}.asm-floating{z-index:3;gap:6px;display:flex;position:absolute;top:10px;left:10px}.asm-floating[hidden],.asm-help[hidden],.asm-tip[hidden]{display:none}.asm-tool{border:1px solid var(--line,#d5ddd8);background:var(--surface,#fff);min-width:34px;height:34px;font:inherit;cursor:pointer;color:inherit;border-radius:9px;padding:0 10px;font-weight:700}.asm-tool:disabled{opacity:.4;cursor:default}.asm-help{z-index:3;color:#fff;pointer-events:none;white-space:nowrap;text-overflow:ellipsis;background:#1c2824db;border-radius:999px;max-width:92%;padding:7px 14px;font-size:12.5px;position:absolute;bottom:14px;left:50%;overflow:hidden;transform:translate(-50%)}.asm-tip{z-index:4;color:#fff;pointer-events:none;background:#1c2824;border-radius:6px;padding:4px 8px;font-size:12px;position:absolute}.asm-dot{background:#8aa;border-radius:50%;flex:none;width:10px;height:10px}.asm-dot.ok{background:#2ea05c}.asm-dot.warn{background:#e0a526}.asm-dot.bad{background:#d4452a}.asm-stage{position:relative}.viz-events{flex-direction:column;gap:8px;padding:8px 0;display:flex}.viz-evgroup{flex-direction:column;gap:4px;display:flex}.viz-evtitle{text-transform:uppercase;letter-spacing:.06em;color:#5b6a63;font-size:11px;font-weight:700}.viz-evrow{flex-wrap:wrap;gap:5px;display:flex}.viz-evbtn{border:1px solid var(--line,#d5ddd8);background:var(--surface,#fff);height:30px;font:inherit;cursor:pointer;color:inherit;border-radius:8px;padding:0 10px;font-size:12.5px;font-weight:600}.viz-evbtn:hover{border-color:#1f7a8c}.viz-evbtn.on{color:#fff;background:#1d4e75;border-color:#1d4e75}.viz-evbtn:active{transform:translateY(1px)}.viz-check{align-items:center;gap:6px;font-size:12.5px;display:flex}.asm-tsep{background:var(--line,#d5ddd8);width:1px;margin:4px 2px}.asm-tool.on{color:#fff;background:#1d4e75;border-color:#1d4e75}.asm-floating{flex-wrap:wrap;max-width:calc(100% - 20px)}.asm-insts{flex-direction:column;gap:4px;display:flex}.asm-inst{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;padding:5px 8px;font-size:12.5px;display:flex}.asm-inst:hover{background:#eef3f0}.asm-inst.on{background:#eef5fa;border-color:#1d4e75}.asm-swatch{border:1px solid #00000040;border-radius:4px;flex:none;width:12px;height:12px;margin-right:2px;display:inline-block}.asm-sel-name{align-items:center;gap:6px;display:flex}.asm-lbl{color:#5b6a63;align-self:center;font-size:11.5px}.asm-sel .asm-row.wrap{gap:5px}.asm-sel .asm-btn{height:28px;padding:0 8px;font-size:12px}.asm-sel .asm-field input[type=number]{width:64px}.asm-joint{flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;display:flex}.asm-jslider{flex:1;min-width:80px}.asm-limit{width:52px}.robot-asm #partsBody,body:not(.robot-asm) #robotParts{display:none}#robotParts{flex:1;min-height:0;padding:10px 12px 16px;overflow-y:auto}#robotParts .asm-cards{grid-template-columns:repeat(2,minmax(0,1fr))}#robotParts .group-title{margin:12px 0 6px}.asm-sel[hidden]{display:none}.asm-group{grid-column:1/-1}.asm-dock-search{box-sizing:border-box;border:1px solid var(--line,#d5ddd8);width:100%;height:32px;font:inherit;background:#fff;border-radius:8px;margin-bottom:8px;padding:0 10px;font-size:13px}.asm-builder{border:1px solid var(--line,#d5ddd8);background:#fff;border-radius:10px;margin-bottom:10px;padding:8px 10px}.asm-builder>summary,.asm-adv>summary{cursor:pointer;font-size:13px;font-weight:600}.asm-builder-body{flex-direction:column;gap:8px;margin-top:8px;display:flex}.asm-adv{border-top:1px dashed var(--line,#d5ddd8);padding-top:6px}.asm-adv>summary{font-size:12.5px;font-weight:500}.asm-builder .asm-field{flex-direction:column;gap:2px;font-size:12px;display:flex}.asm-builder .asm-field input,.asm-builder .asm-field select{border:1px solid var(--line,#d5ddd8);height:30px;font:inherit;box-sizing:border-box;border-radius:7px;width:100%;padding:0 8px;font-size:13px}.asm-btn.primary{color:#fff;background:#1d4e75;border-color:#1d4e75;height:32px}.asm-drone{border-top:1px solid var(--line,#d5ddd8);margin-top:8px;padding-top:6px}.fly-stage{cursor:grab;background:#cfe3f1;overflow:hidden}.fly-stage canvas{touch-action:none}.fly-hud{pointer-events:none;background:#ffffffdb;border-radius:9px;grid-template-columns:auto auto;gap:2px 14px;max-width:calc(100% - 24px);padding:8px 12px;font-size:12px;display:grid;position:absolute;top:12px;left:12px;box-shadow:0 1px 6px #0000001f}.fly-hud[hidden]{display:none}.fly-hud span{color:#5b6a63}.fly-hud b{font-variant-numeric:tabular-nums;font-weight:600}.fly-msg{color:#fff;text-align:center;pointer-events:none;background:#1d4e75ed;border-radius:9px;max-width:min(520px,100% - 24px);padding:7px 14px;font-size:13px;position:absolute;top:12px;left:50%;transform:translate(-50%)}.fly-msg.bad{background:#b03426f0}.fly-msg[hidden]{display:none}.fly-empty{background:#eef3f0eb;place-items:center;padding:20px;display:grid;position:absolute;inset:0}.fly-empty[hidden]{display:none}.fly-empty-box{text-align:center;flex-direction:column;align-items:center;gap:10px;max-width:420px;display:flex}.fly-empty-box h3{margin:0}.fly-empty-box p{color:#48564f;margin:0;font-size:13px}.fly-sticks{pointer-events:none;justify-content:space-between;padding:0 14px;display:flex;position:absolute;bottom:34px;left:0;right:0}.fly-stick{touch-action:none;pointer-events:auto;cursor:grab;background:#ffffff8c;border:2px solid #2b3a3459;border-radius:50%;width:132px;height:132px;position:relative}.fly-stick:before,.fly-stick:after{content:"";background:#2b3a342e;position:absolute}.fly-stick:before{width:1px;top:10%;bottom:10%;left:50%}.fly-stick:after{height:1px;top:50%;left:10%;right:10%}.fly-knob{pointer-events:none;background:#1d4e75;border:2px solid #fff;border-radius:50%;width:34px;height:34px;margin:-17px 0 0 -17px;position:absolute;top:50%;left:50%;box-shadow:0 1px 4px #0000004d}.fly-stick-label{text-align:center;color:#34443d;pointer-events:none;font-size:11px;position:absolute;bottom:-17px;left:0;right:0}.fly-arm.on{background:#b03426;border-color:#b03426}.fly-motors{flex-direction:column;gap:6px;display:flex}.fly-mrow{grid-template-columns:1fr 70px;align-items:center;gap:2px 8px;font-size:12px;display:grid}.fly-mname{grid-column:1/3;font-weight:600}.fly-bar{background:#e3e9e5;border-radius:4px;height:8px;overflow:hidden}.fly-bar i{background:#2d9f6a;width:0;height:100%;display:block}.fly-minfo{color:#5b6a63;font-variant-numeric:tabular-nums;grid-column:1/2}.fly-mtest{grid-area:2/2/4/3;width:70px}.fly-code{box-sizing:border-box;border:1px solid var(--line,#d5ddd8);color:#20302a;resize:vertical;tab-size:2;white-space:pre;background:#f7faf8;border-radius:7px;width:100%;min-height:220px;padding:8px;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:auto}.fly-code[readonly]{color:#3c4a44;background:#eef2ef}.fly-log{color:#cde9d9;white-space:pre-wrap;background:#20302a;border-radius:6px;max-height:120px;margin:0;padding:6px 8px;font:11px/1.4 ui-monospace,Menlo,Consolas,monospace;overflow:auto}.fly-log[hidden],#flyErr[hidden]{display:none}@media (max-width:760px){.fly-stick{width:104px;height:104px}.fly-hud{font-size:11px}}
