@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-qiz4-Cze.woff2) format("woff2"),url(/assets/barlow-latin-400-normal-fsAxiSwU.woff) format("woff")}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-500-normal-BPAOfeC8.woff2) format("woff2"),url(/assets/barlow-latin-500-normal-C1h8hMer.woff) format("woff")}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DILqtrty.woff2) format("woff2"),url(/assets/barlow-latin-600-normal-CNwfPWQD.woff) format("woff")}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-latin-700-normal-A9pxMQ4z.woff2) format("woff2"),url(/assets/barlow-latin-700-normal-__SGTsZ1.woff) format("woff")}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-latin-600-normal-BkLiAYu4.woff2) format("woff2"),url(/assets/barlow-semi-condensed-latin-600-normal-DyOfdMBA.woff) format("woff")}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-semi-condensed-latin-700-normal-BpqDG8I9.woff2) format("woff2"),url(/assets/barlow-semi-condensed-latin-700-normal-BMyZXq_9.woff) format("woff")}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAfsABQAAAAAEAwAAAeCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoP0hWQVJbBmA/U1RBVIFiJyYAdC9qEQgKhGSEAAsgADCGCAE2AiQDOgQgBYlMB4EUDAcbLQ4onoexrSC/2ZyLAa8p8VHB8/x3Vue+V0hVJalMJg2nx/TCrQXxBeqLjQG7FyM1WEa/X1tEXN7cFz9EJEMmMUz3RihWSSKeQCbcIou0izz/C8v+fq3VfajEa9gDD11CImXS7qL/RJFVzC1qiB6KmKeD6TZdQ6IRGv78dL6uSVVCfgni5mzu7kcgQBgAEAQTQRCoL++STTYybkJxNfQxAAIAGu8OdEB9teW2jh4BpgDqFjAeSEByW3zFP0CBBgNMsMCGEDjgggdhiEAUAeIIED7ABTDUEnkIE9Q9ahFgKttcVhApo4ACB4qobHaccgDfEjFO6aaWUhjMLt2SyIvHKoDqoA4CSUwEIYQCEjhAO9R1G6keDeDZGjNo+AhxOjCEGTr1WeIF3kYBiLAOKvkJSMiKX0VdAyQt3SDJClCkxJCHkCzfqyVTriJZLcolS32JZHUekq2TYNkYtCtjYHMQXSxGjXDz2t/yLWXzDzxz+o3zFwDEaN23F+13pyMdQAEaSKAR9vcGq4A4MTSKCElGW+M7UcY7xqkggITb28ZJhlqc9q2twYKTt0NjixBgYvO9BIihEBLYuOFXQzfIQ7dXGUEEEgFDooBfAzqiQbpJrhiWSuKJCRFKYbHCyJKI2G5GiZbNAvgAu5pc3vwx4G+g3aDkhklABiSz0BICXrYghtYhx/cdJ+44rY2oZ0aMNRFz3VZjb6W33F3gzltqtOCV8tTHSpOeXuItfvr5lCdfzFpqtEitvqdcdGGFd28ZqqC0tPbeChGXgrIlnhSWu/eUso4uKWFLugyDzQJhflY4659+WjQ++6x72WUMv9G8mw6QJl7BVxX5fe/kpUsOvnZwee9uQ0cGXYd0o89XB2748sDSnt8d2VphdOTTgceDVvOds0v9P/s7HPq15aGun/6Vllb56f1dl0t1LejqrNkpdRZsG8TOnM5vkBG5oiVyVGnS8LHps5cfNWJs6qKPfaNSxiQNBUm3cKNWROr0GSur7Za31k1vieq7LH11VF+jXdRIasRKflc7jkobm1Z9te1IyZA0pDkhLR98+H37Zf1c/8at+dB7x+7GfVyTfJMPiYztsnl59Y5l4j+0n1RXlpHnF3Tq7HecmNF/CJodEMAikruxiyJaGLvHOdAfoA+oDvpjBm2b91cHGRZMU9n25xEU0A8fgEEAdKI3Q1iDtc034sug5YVMkE2jsE+BIkwSoQ3gxXMqz9tELp48bd0cFKOKS7xYjEuXBnZP5ia7DyiO/X/YI+PQSbt2uSdqAkWL9nQbV1XB94/+uPfdZz8dnXYFBYrcTl2SIR/ybxJNJPz/Gupb0JaZeens2ekC7EKr8t+Ls/P5VJPYJdHKyqfg2nqU6bhlidzcddQV/7MmecTzJ5VPcKXkNKSEogHjYFx6QZ7rQ+FSe8njaiNuOnXS8H2ScQ619c2mC3VTtauL0rRbXd/CkSOP37FY9Zkjz8+GibYUMOEWF+RdrFS8Ecv1SHOpPUPZGEIpjPvFyU5cXKjd6OXqorTqy9GwRd++HVufPGnVsW+aO3vggKZ18jR9sXaTC1PWTEsVUaK0FkNySbTQDqlm2PfDjZcu4aalnSLKjnOoYQ0nUlqqXcGpPu/4VgV/xU2pAqW4BW3qzhQ8/hFKhV2qE3+BKAtDqBXjfgnVdH4y0wg5tbVNRenNdTWOrenWLcupQdmsbq5b+18piTe/xRdp1xbILxNPJGInm2z6hoB21Lal0i+ePTtd7B45+3XhFJ329evskXm7qurUVREotqSluSo/L29d3qDhI4YOQqWhI4YNvBNfsMHeXKemXrxQfKeuPOGRVayA3JtkJKEgbPp+dXUDluddutRYLFoXGXWX6N3WFaGLbQtRSitVYNacTNSdy7AaG/HSaUEANcBoGXNdcZvZsOqQ1icBDv21/gzAoYPHH/WDW0qNR3QTYKEAEHig6o13NXbND06CQPlRtYjGNnSktRc09k1mAMDvAlDKfQjgy6fssInlfzmNAjKkDxoxHOBLdVRAIVt9j4qo+hA1w9T1aNBNTUOTTNUHLbqokE+UAfJXCIGw/IxCSL5GRUJeR40rL/UxTm4Q08H6MbCs70ObuNyIIXrINHQYInF06UUlevTjbQzTh5upiDMzMMogUtEnjPs/Y7jAHCJeB0GBHh04tC6FiB6ZFB1oArUSIoFoqhzCeAN6lHwm0T4C3VVPWvjpSMXReuWesMEcoqrmgtNBGd2noWeV0hNAz9rFeShNJxHGsPa3HXeKTk8b55hahySYHaYKKFFLpCfN8rsoaJn01CR04Gkc+5k7KVTCmClX8Q10HCrUEkVlSX+XO33oQR9609tJ516H497WSobWs5Up6TLaS10/dessIskgJSLiDlWvHVUywpkQ7hdPZqGyiEF0uVQerVcPamT1A3eKXdyI1vG9OoflrSXihZ1qqGE3nhmAgiIbRCQgPLEPtOM3UQwTLYaYYomNlpA44opnjV6jkD6id80OOrzf6BzmMD6eEa1zKyeYG1fzfEf16V6jw9XYOaar1/b2kP/IYX8oR2mcFvv2GtBV3JXgd437AQAA) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;--bg: light-dark(#f6eddd, #0d1322);--surface: light-dark(#f9f2e5, #141c31);--surface-2: light-dark(#efe3d1, #1b2540);--card-hi: light-dark(#fcf8ef, #1f2a48);--line: light-dark(#e0d4c2, #28345a);--line-strong: light-dark(#8f8472, #6c7ca3);--ink: light-dark(#18213d, #e9edf6);--muted: light-dark(#5d6169, #a3aecb);--accent: light-dark(#24304a, #5fd0cc);--accent-ink: light-dark(#f9f2e5, #08111f);--accent-soft: light-dark(#e3d8ca, #1a2a46);--accent-hover: light-dark(#121a30, #8be3df);--danger: light-dark(#c4311d, #ff7b6b);--danger-ink: light-dark(#ffffff, #1a0b08);--warn: light-dark(#9a5f0a, #e4a948);--ok: light-dark(#1f7a3a, #6cc07f);--ok-bg: light-dark(#e4efd9, #1d3323);--ok-line: light-dark(#9fcea3, #34603c);--ok-ink: light-dark(#1c6422, #93d99e);--warn-bg: light-dark(#fbecc8, #3a2f14);--warn-line: light-dark(#e3c373, #6b5a2a);--warn-ink: light-dark(#7a4d00, #f0c470);--bad-bg: light-dark(#f9dcd3, #3d2220);--bad-line: light-dark(#e2a097, #7a3a33);--bad-ink: light-dark(#8f2a1c, #ff9d8f);--note-bg: light-dark(#fbf0cf, #38301a);--note-line: light-dark(#e5cd7a, #6a5d2c);--syn-comment: light-dark(#6b665c, #8fa09a);--syn-keyword: light-dark(#2a56a3, #86a9ff);--syn-type: light-dark(#8a3ea8, #d9a0f0);--syn-number: light-dark(#a14a00, #f2b072);--syn-string: light-dark(#1c6422, #93d99e);--syn-function: light-dark(#b85a22, #f2a46f);--syn-meta: light-dark(#7a4d00, #f0c470);--editor-bg: light-dark(#f8f0e3, #101830);--editor-gutter: light-dark(#efe3d1, #17203a);--mat: light-dark(#efe3d1, #121a2f);--mat-line: light-dark(#e0d4c2, #1c2744);--mat-line-strong: light-dark(#d3bea3, #2a3a61);--art-ink: light-dark(#1b2430, #dbe2e8);--art-muted: light-dark(#4f5a66, #a5b0ba);--signal: #c08a1e;--signal-ink: light-dark(#8a5f0a, #e0b24a);--select: light-dark(#0f8584, #5fd0cc);--teal: light-dark(#1aa3a1, #3fd0cc);--trace: light-dark(#d3bea3, #2a3a61);--paper-grid: light-dark(rgb(24 33 61 / 5%), rgb(233 237 246 / 5%));--scope-bg: #10181a;--scope-grid: #25362f;--bb-label: #6f6759;--font-ui: "Barlow", "Segoe UI Variable", "Segoe UI", system-ui, sans-serif;--font-cond: "Barlow Semi Condensed", "Barlow", system-ui, sans-serif;--font-mono: "JetBrains Mono Variable", ui-monospace, Consolas, monospace;--fs-xs: 11px;--fs-sm: 12.5px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 20px;--fs-2xl: 26px;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--shade: light-dark(#2a2110, #000);--k-shade: 1;--elev-1: 0 1px 2px color-mix(in srgb, var(--shade) calc(8% * var(--k-shade)), transparent);--elev-2: 0 1px 2px color-mix(in srgb, var(--shade) calc(8% * var(--k-shade)), transparent), 0 6px 18px color-mix(in srgb, var(--shade) calc(10% * var(--k-shade)), transparent);--elev-3: 0 2px 6px color-mix(in srgb, var(--shade) calc(10% * var(--k-shade)), transparent), 0 14px 36px color-mix(in srgb, var(--shade) calc(16% * var(--k-shade)), transparent);--elev-4: 0 4px 12px color-mix(in srgb, var(--shade) calc(14% * var(--k-shade)), transparent), 0 28px 72px color-mix(in srgb, var(--shade) calc(32% * var(--k-shade)), transparent);--shadow: var(--elev-2);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--ctl-sm: 28px;--ctl-md: 32px;--ctl-lg: 40px;--z-board: 1;--z-labels: 2;--z-tools: 3;--z-hud: 4;--z-panel: 5;--z-card: 12;--z-float: 20;--z-menu: 30;--z-popover: 40;--z-modal: 50;--z-drag: 60;--dur-press: .12s;--dur-fast: .16s;--dur-base: .22s;--dur-slow: .32s;--ease-out: cubic-bezier(.23, 1, .32, 1);--ease-in-out: cubic-bezier(.77, 0, .175, 1);--ease-drawer: cubic-bezier(.32, .72, 0, 1);font-family:var(--font-ui);font-size:var(--fs-md);color:var(--ink);background:var(--bg)}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark;--k-shade: 2}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--k-shade: 2}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.muted{color:var(--muted);font-size:12.5px;line-height:1.45;margin:4px 0}code{font-family:var(--font-mono);font-size:.92em;background:var(--surface-2);padding:1px 5px;border-radius:4px}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}button,select{font:inherit;font-size:var(--fs-sm);height:32px;padding:0 12px;border:1px solid var(--line-strong);background:var(--surface);border-radius:var(--r-md);color:var(--ink);cursor:pointer;transition:background-color .12s var(--ease-out),border-color .12s var(--ease-out),box-shadow .12s var(--ease-out),transform .1s var(--ease-out),color .12s var(--ease-out)}@media (hover: hover) and (pointer: fine){button:hover:not(:disabled),select:hover{background:var(--surface-2);border-color:var(--accent)}}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.55;filter:saturate(.4);cursor:not-allowed}button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button.on:hover:not(:disabled){background:var(--accent-hover)}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}button.primary:hover:not(:disabled){background:var(--accent-hover)}button.icon{width:32px;padding:0;display:inline-grid;place-items:center}button.icon.muted-btn{color:var(--muted)}button.mini{height:var(--ctl-sm);padding:0 9px;font-size:var(--fs-sm)}button.danger{color:var(--danger);margin-top:8px;border-color:var(--bad-line)}button.danger:hover:not(:disabled){background:var(--bad-bg);border-color:var(--danger)}button.link{height:auto;padding:0;border:0;background:none;color:var(--accent);text-decoration:underline;font-size:var(--fs-sm);justify-self:start}button.link:hover:not(:disabled){background:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}select{padding-right:8px}input[type=range]{accent-color:var(--accent)}.popover,.ctx-menu,.shortcuts-pop,.view-menu-pop,.account-pop,.selection-card,.welcome{background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-lg);box-shadow:var(--elev-3)}.v3-part,.schematic{border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--elev-3)}.modal{background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--elev-4)}.modal-note,.auth-note{padding:8px 12px;font-size:var(--fs-sm);line-height:1.45;background:var(--accent-soft);border-radius:var(--r-md);overflow-wrap:anywhere}:is(.modal-note,.auth-note).ok{background:var(--ok-bg);color:var(--ok-ink)}:is(.modal-note,.auth-note).warn{background:var(--warn-bg);color:var(--warn-ink)}:is(.modal-note,.auth-note).bad{background:var(--bad-bg);color:var(--bad-ink)}.chip,.tag{display:inline-block;border-radius:999px;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong)}.chip{margin:1px 4px 1px 0;padding:2px 9px;font-size:var(--fs-xs)}.tag{padding:1px 8px;font-size:var(--fs-sm);font-weight:600}.popover .field input,.share-url,.ohms-input,.palette-search,.cloud-rename input,.cloud-share-url input{height:var(--ctl-md);padding:0 10px;font:inherit;font-size:var(--fs-sm);color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-md)}.app{display:flex;flex-direction:column;height:100vh;height:100dvh;min-height:0}.topbar{flex:none;display:flex;align-items:center;gap:16px;height:52px;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--line)}.topbar h1{margin:0;display:flex;align-items:center;gap:8px;font-size:var(--fs-md);letter-spacing:.1em;text-transform:uppercase}.topbar h1 svg{color:var(--accent)}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.topbar-sep{width:1px;height:22px;background:var(--line);margin:0 4px}.workspace{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 340px}.stage{display:flex;flex-direction:column;min-width:0;min-height:0;padding:10px 0 10px 10px}.board-area{display:flex;gap:10px;min-height:180px;min-width:0;flex:0 0 var(--board-basis, auto)}.board-area.fill{flex:1 1 0}.palette{flex:none;min-width:188px;display:flex;flex-direction:column;gap:8px;padding:8px 6px;overflow-x:hidden;overflow-y:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}.palette-group{display:flex;flex-direction:column;gap:2px}.palette-group h2{margin:2px 4px 4px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.tool-row{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.tool{height:31px;width:100%;display:flex;align-items:center;justify-content:flex-start;gap:7px;padding:0 6px;font-size:var(--fs-sm);text-align:left;border-color:transparent;background:transparent}.tool svg{flex:none}.tool span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tool.icon-only{justify-content:center;padding:0;height:36px;border-color:var(--line);background:var(--surface)}.tool:hover:not(:disabled){background:var(--accent-soft);border-color:transparent}.tool.on,.tool.on:hover:not(:disabled){background:var(--accent);color:var(--accent-ink)}.board-wrap{position:relative;display:flex;flex-direction:column;flex:1;min-width:0;min-height:0;overflow:hidden;background:var(--mat);border:1px solid var(--line);border-radius:var(--r-md)}svg.board{display:block;flex:1;width:100%;min-height:0;touch-action:none;-webkit-user-select:none;user-select:none}svg.board.zoomed .canvas-bg{cursor:grab}.hint{flex:none;margin:0;padding:7px 12px;font-size:var(--fs-sm);line-height:1.35;color:var(--ink);background:var(--surface);border-top:1px solid var(--line)}.board-controls{position:absolute;right:10px;top:10px;display:flex;gap:4px}.board-controls button{box-shadow:var(--shadow);font-size:var(--fs-lg);line-height:1}.splitter{flex:none;height:12px;display:grid;place-items:center;cursor:row-resize;touch-action:none}.splitter-grip{width:48px;height:4px;border-radius:2px;background:var(--line-strong);transition:background .12s}.splitter:hover .splitter-grip,.splitter:focus-visible .splitter-grip{background:var(--accent)}.code-panel{flex:1;min-height:150px;display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}.code-bar{flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:6px 10px;background:var(--surface-2);border-bottom:1px solid var(--line)}.file-tab{font:600 12px ui-monospace,Consolas,monospace;padding:4px 10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm)}.code-actions{display:flex;gap:6px}.status{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;font-size:var(--fs-sm);color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:999px}.status:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--line-strong)}.status.live{color:var(--ok);font-weight:600;border-color:#bcd9be}.status.live:before{background:var(--ok);animation:pulse 1.2s infinite}@keyframes pulse{50%{opacity:.3}}.usages{margin-left:auto;display:flex;gap:14px}.usage{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--muted)}.usage-bar{width:56px;height:6px;border-radius:3px;background:var(--line);overflow:hidden}.usage-bar>span{display:block;height:100%;background:var(--accent);border-radius:3px}.usage-bar>span.hot{background:var(--danger)}.usage-pct{min-width:30px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}.code-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 250px}.code-left{display:flex;flex-direction:column;min-width:0;min-height:0}.editor{flex:1;min-height:0;overflow:hidden}.editor .cm-editor{height:100%}.problems{list-style:none;margin:0;padding:8px;max-height:40%;overflow-y:auto;display:grid;gap:6px;background:var(--surface);border-top:1px solid var(--line)}.problems li{display:grid;gap:2px;padding:6px 9px;font-size:var(--fs-sm);line-height:1.4;background:var(--surface-2);border-left:4px solid var(--muted);border-radius:4px}.problems li.error{border-color:var(--danger)}.problems li.warning{border-color:var(--warn)}.problems li.note{border:0;background:none;color:var(--muted)}.problems li span{color:var(--muted)}.problems pre{margin:0;white-space:pre-wrap;font-size:var(--fs-sm)}.serial{display:flex;flex-direction:column;min-height:0;background:#1d1c19;border-left:1px solid var(--line)}.serial-bar{flex:none;display:flex;justify-content:space-between;align-items:center;padding:5px 8px 5px 12px;background:#2a2824}.serial-bar h3{margin:0;font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:#b5ae9d}.serial-bar button{background:transparent;color:#d8d2c3;border-color:#4a463d}.serial-bar button:hover:not(:disabled){background:#3a372f}.serial pre{flex:1;margin:0;padding:10px 12px;overflow:auto;color:#b9f3c0;font:12px/1.5 ui-monospace,Consolas,monospace;white-space:pre-wrap;word-break:break-all}.sidebar{min-height:0;overflow-y:auto;padding:0 14px 24px;background:var(--surface);border-left:1px solid var(--line);scrollbar-gutter:stable}.sidebar section{margin-top:18px}.sidebar h3{margin:0 0 8px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.tabs{position:sticky;top:0;z-index:var(--z-tools);display:grid;grid-template-columns:repeat(4,minmax(max-content,1fr));gap:2px;padding:3px;margin:12px 0 0;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:10px}.tabs button{height:var(--ctl-sm);min-width:0;padding:0 2px;overflow:hidden;text-overflow:ellipsis;font-size:var(--fs-sm);letter-spacing:0;border-color:transparent;background:transparent;border-radius:7px}.tabs button:hover:not(:disabled){background:var(--surface);border-color:transparent}.tabs button.on,.tabs button.on:hover:not(:disabled){background:var(--accent);color:var(--accent-ink)}.field{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;font-size:var(--fs-sm)}.field .num{min-width:42px;text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}.field input[type=range]{flex:1}.diag{list-style:none;margin:0;padding:0;display:grid;gap:8px}.diag li{display:grid;gap:3px;padding:8px 10px;font-size:var(--fs-sm);line-height:1.4;background:var(--surface-2);border-left:4px solid var(--muted);border-radius:var(--r-sm)}.diag li span{color:var(--muted)}.diag li.error{border-color:var(--danger)}.diag li.warning{border-color:var(--warn)}.readout{display:grid;gap:2px;margin:8px 0;font-size:var(--fs-sm)}.readout-row{display:flex;justify-content:space-between;gap:12px;padding:3px 0;border-bottom:1px dashed var(--line)}.readout dt{color:var(--muted)}.readout dd{margin:0;font-variant-numeric:tabular-nums}.pin-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;font-size:var(--fs-sm)}.seg{display:inline-flex}.seg button{height:26px;padding:0 9px;font-size:var(--fs-sm);border-radius:0;margin-left:-1px}.seg button:first-child{border-radius:6px 0 0 6px;margin-left:0}.seg button:last-child{border-radius:0 6px 6px 0}.pwm{color:var(--accent);font-style:normal;font-size:var(--fs-xs)}.facts{list-style:none;margin:0;padding:0;display:grid;gap:6px}.fact{display:grid;grid-template-columns:20px 1fr;gap:6px;padding:7px 9px;font-size:var(--fs-sm);line-height:1.45;background:var(--surface-2);border-left:4px solid var(--line-strong);border-radius:var(--r-sm)}.fact.main{font-weight:600;background:var(--note-bg)}.fact.ok{border-color:var(--ok)}.fact.warn{border-color:var(--warn)}.fact.bad{border-color:var(--danger)}.fact-icon{font-weight:700;text-align:center}.fact.ok .fact-icon{color:var(--ok)}.fact.warn .fact-icon{color:var(--warn)}.fact.bad .fact-icon{color:var(--danger)}.cards{list-style:none;margin:0;padding:0;display:grid;gap:6px}.card{display:grid;gap:2px;width:100%;height:auto;padding:8px 10px;text-align:left;font-size:var(--fs-sm);line-height:1.4;background:var(--surface-2);border-left:4px solid var(--line-strong);border-radius:var(--r-sm)}.card span{color:var(--muted);font-weight:400}.card.ok{border-left-color:var(--ok)}.card.warn{border-left-color:var(--warn)}.card.bad{border-left-color:var(--danger)}.meter-modes{display:flex;margin:10px 0}.meter-modes button{flex:1}.lcd{display:grid;gap:4px;margin:10px 0;padding:14px 16px;background:#1c2a1c;border:2px solid #0b140b;border-radius:10px}.lcd-value{color:#b6f5b0;font:600 34px ui-monospace,Consolas,monospace;letter-spacing:2px;text-shadow:0 0 8px rgba(120,255,120,.35)}.lcd-caption{color:#7fae7a;font-size:var(--fs-sm)}.grid-line{stroke:var(--mat-line);stroke-width:1;fill:none}.grid-line.major{stroke:var(--mat-line-strong)}.uno{fill:#17608a;stroke:#0f4466;stroke-width:2}.uno-usb{fill:#d7dbe0;stroke:#8a9099}.uno-usb-inner{fill:#aab0b8}.uno-jack{fill:#22262b;stroke:#000}.uno-mount{fill:#0f3f5e;stroke:#7fb0cf;stroke-width:1.5}.uno-title{fill:#fff;font-size:var(--fs-md);font-weight:700;letter-spacing:.16em}.uno-sub{fill:#9cc7de;font-size:var(--fs-md);font-weight:600;letter-spacing:.14em}.uno-header{fill:#14181c}.uno-group{fill:#fff;font:700 11.5px Segoe UI,Helvetica Neue,Arial,sans-serif;letter-spacing:.04em}.uno-label{fill:#fff;font:700 12px Segoe UI,Helvetica Neue,Arial,sans-serif}.breadboard{fill:#f8f4ea;stroke:#d6ccb6;stroke-width:1.5}.bb-channel{fill:#e3dbc9}.bb-label{fill:var(--bb-label);font-size:var(--fs-xs)}.rail-plus{stroke:#d9381e;stroke-width:2}.rail-minus{stroke:#2f7cd1;stroke-width:2}.rail-sign{font-size:var(--fs-md);font-weight:700;text-anchor:middle}.rail-sign.plus{fill:#d9381e}.rail-sign.minus{fill:#2f7cd1}.hole{fill:#1e180c1f}.hole.uno-pin{fill:url(#art-gold);stroke:#8a6d12;stroke-width:.8}.uno-silk{fill:#eaf5fb;font-weight:700;letter-spacing:.08em}.hole.active{fill:var(--accent);stroke:#fff;stroke-width:2}.hover-ring{fill:none;stroke:var(--accent);stroke-width:2;opacity:0;transition:opacity .1s;pointer-events:none}.connector{cursor:crosshair}.connector:hover .hover-ring{opacity:.9}.clickable,.pressable{cursor:pointer}.sel-ring{fill:none;stroke:var(--accent);stroke-width:2;stroke-dasharray:4 3}.wire-sel{stroke:var(--accent);stroke-width:10;fill:none;stroke-linecap:round;opacity:.35}.ghost{stroke:var(--accent);stroke-width:3;stroke-dasharray:6 5;opacity:.7;pointer-events:none}.part-label{font-size:var(--fs-xs);font-weight:600;fill:var(--muted);pointer-events:none}.pin-sign{fill:#555;font-weight:700}.probe-bg{fill:#222}.probe-text{fill:#fff;font-size:var(--fs-xs);font-variant-numeric:tabular-nums}.probe-sign{fill:#fff;font-size:var(--fs-sm);font-weight:700}.meter-lcd{fill:#1c2a1c;stroke:#0b140b}.meter-lcd-text{fill:#b6f5b0;font:600 13px ui-monospace,Consolas,monospace}.meter-ring{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-dasharray:6 4}.sound-wave{fill:none;stroke:var(--accent);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:wave 1.2s ease-out infinite;pointer-events:none}@keyframes wave{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.9)}}.servo-horn{transition:transform .22s ease-out}.flow{fill:none;stroke:#ffe27a;stroke-linecap:round;stroke-dasharray:.1 13;animation:flow-fwd linear infinite}.flow.rev{animation-name:flow-rev}.flow-halo{fill:none;stroke:#281c008c;stroke-linecap:round;stroke-dasharray:.1 13;animation:flow-fwd linear infinite}.flow-halo.rev{animation-name:flow-rev}.flow-arrow{fill:#ffe27a;stroke:#281c00b3;stroke-width:1}@keyframes flow-fwd{to{stroke-dashoffset:-13.1}}@keyframes flow-rev{to{stroke-dashoffset:13.1}}@media (prefers-reduced-motion: reduce){.flow,.flow-halo{animation:none}.flow,.flow-halo{stroke-dasharray:5 8}.sound-wave{animation:none;opacity:.4}.servo-horn{transition:none}.status.live:before{animation:none}}@media (max-width: 1100px){.workspace{grid-template-columns:minmax(0,1fr) 300px}.code-body{grid-template-columns:minmax(0,1fr) 200px}}@media (max-width: 900px){.app{height:auto;min-height:100dvh}.topbar{height:auto;flex-wrap:wrap;padding:8px 12px;gap:8px}.topbar-actions{margin-left:0;flex-wrap:wrap}.workspace{display:block}.stage{padding:8px}.board-area{flex-direction:column;flex-basis:auto;min-height:0}.palette{width:auto;flex-direction:row;gap:10px;overflow-x:auto;overflow-y:hidden;padding:6px}.palette-group{flex-direction:row;align-items:stretch;flex:none}.palette-group h2{display:none}.tool{width:auto;flex:none}.tool-row{display:flex}.tool.icon-only{width:40px}.board-wrap{flex:none;height:clamp(300px,70vw,500px)}.splitter{display:none}.code-panel{flex:none;height:440px;margin-top:8px}.code-body{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) 130px}.serial{border-left:0;border-top:1px solid var(--line)}.sidebar{margin-top:8px;border-left:0;border-top:1px solid var(--line);overflow:visible}.usages{margin-left:0}}.motor-spin{animation-name:motor-rotate;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes motor-rotate{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.motor-spin{animation:none}}.scope{display:block;width:100%;height:auto;background:#1c2a1c;border:2px solid #0b140b;border-radius:10px}.scope-grid{stroke:#b6f5b024;stroke-width:1}.scope-axis{fill:#7fae7a;font:11px ui-monospace,Consolas,monospace}.scope-line{fill:none;stroke:#b6f5b0;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 0 3px rgba(120,255,120,.45))}.scope-empty{fill:#7fae7a;font-size:var(--fs-sm)}h3.scope-title{margin-top:14px}.lessons-btn{display:inline-flex;align-items:center;gap:7px}.lessons-btn.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.rt-line{margin:0 0 6px}.rt-line:last-child{margin-bottom:0}.coach{margin:12px 0 4px;padding:0 0 12px;background:var(--note-bg);border:1px solid var(--note-line);border-radius:var(--r-lg);box-shadow:var(--shadow);overflow:hidden}.coach.is-done{border-color:var(--ok-line);background:var(--ok-bg)}.coach-head{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px;width:100%;height:auto;padding:10px 12px 8px;text-align:left;background:none;border:0;border-radius:0}.coach-head:hover:not(:disabled){background:#00000008;border-color:transparent}.coach-title{display:grid;font-weight:700;font-size:var(--fs-md);line-height:1.25}.coach-title small{font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}.coach-step{font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums}.coach-chevron{color:var(--muted)}.coach-bar{height:4px;margin:0 12px;background:var(--line-strong);border-radius:2px;overflow:hidden}.coach-bar>span{display:block;height:100%;background:var(--accent);border-radius:2px;transition:width .3s}.is-done .coach-bar>span{background:var(--ok)}.coach-body{padding:4px 12px 0}.coach-text{font-size:var(--fs-sm);line-height:1.5}.coach-text code,.coach-hint code,.coach-success code{font-size:var(--fs-sm)}.goals{list-style:none;margin:10px 0;padding:0;display:grid;gap:5px}.goals li{display:grid;grid-template-columns:20px 1fr;gap:6px;padding:6px 8px;font-size:var(--fs-sm);line-height:1.35;background:var(--card-hi);border:1px solid var(--line);border-radius:var(--r-md)}.goal-mark{font-weight:700;text-align:center;color:var(--muted)}.goals li.ok .goal-mark{color:var(--ok)}.goal-detail{display:block;margin-top:2px;font-size:var(--fs-sm);color:var(--warn)}.quiz{margin:10px 0;padding:0;border:0;display:grid;gap:5px}.quiz legend{padding:0 0 6px;font-weight:600;font-size:var(--fs-sm);line-height:1.4}.quiz-option{display:grid;grid-template-columns:18px 1fr;gap:8px;padding:7px 9px;font-size:var(--fs-sm);line-height:1.4;background:var(--card-hi);border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer}.quiz-option:hover{border-color:var(--accent)}.quiz-option.right{background:var(--ok-bg);border-color:var(--ok-line)}.quiz-option.wrong{background:var(--bad-bg);border-color:var(--bad-line)}.quiz-option input{margin-top:2px;accent-color:var(--accent)}.quiz-feedback{display:block;margin-top:3px;font-size:var(--fs-sm);color:var(--muted)}.coach-help{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 4px}.coach-hint{flex-basis:100%;padding:8px 10px;font-size:var(--fs-sm);line-height:1.45;background:var(--note-bg);border:1px solid var(--note-line);border-radius:var(--r-md)}.coach-success{display:grid;gap:8px;margin:10px 0 4px;padding:10px 12px;font-size:var(--fs-sm);line-height:1.45;background:var(--ok-bg);border:1px solid var(--ok-line);border-radius:10px}.coach-success strong{color:var(--ok-ink);font-size:var(--fs-md)}.coach-success button{justify-self:start}.coach-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;margin-top:12px;padding-top:8px;border-top:1px dashed var(--line)}.coach-done{padding:14px}.coach-done h2{margin:0 0 2px;font-size:17px}.coach-lesson{margin:0 0 8px;font-weight:600}.coach-learn{margin:4px 0 12px;padding-left:20px;font-size:var(--fs-sm);line-height:1.5}.coach-actions{display:grid;gap:6px}.tool.suggested{animation:suggest 1.6s ease-in-out infinite;border-color:#e5b53a;background:var(--note-bg)}@keyframes suggest{50%{box-shadow:0 0 0 4px #e5b53a73}}@media (prefers-reduced-motion: reduce){.tool.suggested{animation:none;box-shadow:0 0 0 3px #e5b53a8c}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:grid;place-items:center;padding:16px;background:#26231e80}.modal{width:min(720px,100%);max-height:min(86vh,760px);display:flex;flex-direction:column;overflow:hidden}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px 6px}.modal-head h2{margin:0 0 2px;font-size:var(--fs-xl)}.modal-note{margin:6px 18px 0}.lesson-list{list-style:none;margin:12px 0 0;padding:0 18px 18px;display:grid;gap:10px;overflow-y:auto}.lesson-card{display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:start;padding:12px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-lg)}.lesson-card.done{background:var(--ok-bg);border-color:var(--ok-line)}.lesson-num{display:grid;place-items:center;width:34px;height:34px;font-weight:700;color:var(--accent-ink);background:var(--accent);border-radius:50%}.lesson-card.done .lesson-num{background:var(--ok)}.lesson-info h3{margin:0 0 3px;font-size:var(--fs-lg)}.lesson-info p{margin:0 0 8px;font-size:var(--fs-sm);line-height:1.45;color:var(--muted)}.lesson-meta{display:flex;flex-wrap:wrap;gap:6px}.chip.level-basico{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok-ink)}.chip.level-intermedio{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-ink)}.chip.level-avanzado{background:var(--bad-bg);border-color:var(--bad-line);color:var(--bad-ink)}.chip-done{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok-ink);font-weight:600}.lesson-learn{margin-top:8px;font-size:var(--fs-sm)}.lesson-learn summary{cursor:pointer;color:var(--accent)}.lesson-learn ul{margin:6px 0 0;padding-left:20px;line-height:1.5}@media (max-width: 900px){.lesson-card{grid-template-columns:30px 1fr}.lesson-card>button{grid-column:1 / -1}}.project-menu{position:relative}.popover{position:absolute;top:calc(100% + 8px);right:0;z-index:var(--z-popover);width:min(340px,90vw);padding:14px;display:grid;gap:10px}.popover h3{margin:4px 0 0;font-size:var(--fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.popover .field{display:grid;gap:4px;font-size:var(--fs-sm);color:var(--muted)}.popover .field input,.share-url{background:var(--surface-2)}.popover-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.popover-actions .primary{grid-column:1 / -1}.popover-status{margin:0;min-height:0;font-size:var(--fs-sm);line-height:1.4;color:var(--ok)}.popover-status:empty{display:none}.popover-status.bad{color:var(--danger)}.share-url{width:100%;box-sizing:border-box;font-size:var(--fs-xs)}.saved-list{list-style:none;margin:0;padding:0;display:grid;gap:4px;max-height:220px;overflow:auto}.saved-list li{display:flex;gap:4px}.saved-open{flex:1;min-width:0;height:auto;padding:6px 10px;display:grid;text-align:left;gap:1px}.saved-open strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.saved-open span{font-size:var(--fs-sm);color:var(--muted)}.small{font-size:var(--fs-sm);line-height:1.45;margin:0}.modal.confirm{width:min(460px,100%)}.modal-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:14px 18px 16px}.smoke{fill:#666;opacity:0;animation:smoke-rise 1.8s ease-out infinite;transform-box:fill-box;transform-origin:center}@keyframes smoke-rise{0%{opacity:.55;transform:translateY(0) scale(.6)}to{opacity:0;transform:translateY(-26px) scale(2.1)}}@media (prefers-reduced-motion: reduce){.smoke{animation:none;opacity:.35}}.clickable.dragging{cursor:grabbing;opacity:.85}g.clickable:not(.dragging){cursor:grab}.part-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.tool.part-card{height:auto;flex-direction:column;justify-content:flex-start;align-items:center;gap:2px;padding:6px 4px 5px;text-align:center;background:var(--surface-2);border:1px solid var(--line);border-radius:10px}.tool.part-card span{max-width:100%;font-size:var(--fs-sm);line-height:1.2}.tool.part-card:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent)}.tool.part-card.on,.tool.part-card.on:hover:not(:disabled){background:var(--accent);border-color:var(--accent)}.part-thumb{width:100%;height:54px;flex:none;overflow:visible;pointer-events:none}.part-thumb .part-label{display:none}@media (max-width: 900px){.part-grid{display:flex}.tool.part-card{width:92px;flex:none}}.lcd-blink{animation:lcd-blink 1s steps(1) infinite}@keyframes lcd-blink{50%{opacity:0}}@media (prefers-reduced-motion: reduce){.lcd-blink{animation:none}}.lcd-text{margin:4px 0 6px;padding:8px 10px;font:600 13px/1.35 ui-monospace,Consolas,monospace;letter-spacing:.08em;color:#eaf3ff;background:#2a54b8;border-radius:var(--r-sm);overflow-x:auto}.bend-handle{fill:#fff;stroke:var(--accent);stroke-width:2;cursor:grab}.bend-handle.ghost-handle{fill:#ffffff8c;stroke-dasharray:2 2}.bend-handle:hover{fill:var(--accent-soft)}.wire-colors{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}.swatch{width:28px;height:28px;padding:0;border-radius:50%;border:2px solid var(--line-strong);position:relative}.swatch.auto{background:conic-gradient(#d9381e 0,#d9381e 33%,#1f1f1f 0,#1f1f1f 66%,#2f7cd1 0)}.swatch[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.swatch:hover:not(:disabled){transform:scale(1.1)}.ohms-input{width:90px;height:var(--ctl-sm);padding:0 8px;border-radius:var(--r-sm);text-align:right}.ohms-input.bad{border-color:var(--danger);background:var(--bad-bg)}.bad-note{color:var(--danger)}.selection-card{position:absolute;z-index:var(--z-card);padding:10px 12px;display:grid;gap:8px;font-size:var(--fs-sm)}.selection-card header{display:flex;justify-content:space-between;align-items:center;gap:8px}.selection-card header strong{font-size:var(--fs-sm)}.selection-card .mini-x{width:28px;height:28px;font-size:var(--fs-xs);border-color:transparent;background:transparent;color:var(--muted)}.selection-card .field{display:flex;align-items:center;gap:8px;justify-content:space-between;margin:0}.selection-card .field select,.selection-card .field input[type=range]{max-width:120px}.selection-card .card-actions{display:flex;gap:6px;justify-content:flex-end}.selection-card .muted{margin:0;font-size:var(--fs-sm)}.selection-card .lcd-text{font-size:var(--fs-xs)}button.danger-lite{color:var(--danger);border-color:var(--bad-line)}.topbar-group{display:flex;align-items:center;gap:8px}.run-controls{display:flex;align-items:center;gap:6px}.run-btn{display:inline-flex;align-items:center;gap:6px}.view-toggle{display:inline-flex;align-items:center;gap:6px;padding:0 10px}.view-toggle.on{background:var(--accent-soft);border-color:var(--accent);color:var(--ink)}.workspace.no-side{grid-template-columns:minmax(0,1fr)}.code-bar .code-actions{margin-left:auto;align-items:center}.code-bar .usages{margin-left:0}.code-bar .mini-x{width:26px;height:26px;font-size:var(--fs-xs)}.code-bar .mini.on{background:var(--accent-soft);border-color:var(--accent)}.code-body.no-serial{grid-template-columns:minmax(0,1fr)}.serial-bar button+button{margin-left:4px}.code-strip{flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding:6px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--muted)}.code-strip.failed{background:var(--bad-bg);border-color:var(--bad-line);color:var(--danger);font-weight:600}@media (max-width: 900px){.view-toggle{padding:0 8px}.topbar h1{margin-right:0}}.palette-head{display:flex;align-items:center;justify-content:space-between;gap:6px}.palette-head .mini-x{width:28px;height:28px;font-size:var(--fs-md);border-color:transparent;background:transparent;color:var(--muted)}.palette-fold{display:flex;align-items:center;gap:6px;height:26px;padding:0 6px;width:100%;font-size:var(--fs-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;background:transparent;text-align:left}.palette-fold em{margin-left:auto;font-style:normal;font-weight:600;letter-spacing:0;color:var(--muted);opacity:.7}.palette-fold:hover:not(:disabled){background:var(--accent-soft)}.palette-rule{width:70%;margin:4px auto;border:0;border-top:1px solid var(--line)}.palette.compact{min-width:0;width:74px;padding:8px 4px}.palette.compact .tool-row,.palette.compact .part-grid{grid-template-columns:1fr}.palette.compact .tool.part-card{padding:3px 2px}.palette.compact .tool.part-card span{display:none}.palette.compact .part-thumb{height:34px}.tool.part-card{position:relative;overflow:hidden;isolation:isolate}.palette .part-thumb{overflow:hidden}.palette.compact .palette-head{justify-content:center}@media (max-width: 1060px){.vt-label{display:none}.view-toggle{padding:0 9px}}.palette-ghost{position:fixed;z-index:var(--z-drag);width:86px;pointer-events:none;padding:4px;background:color-mix(in srgb,var(--surface) 90%,transparent);border:1px solid var(--accent);border-radius:10px;box-shadow:0 6px 18px #00000040}.palette-ghost .part-thumb{height:46px}.tool.part-card{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}body:has(.palette-ghost){cursor:grabbing}.selection-card{box-sizing:border-box;max-width:calc(100% - 16px)}.selection-card .field{flex-wrap:wrap;row-gap:4px}.selection-card .field input[type=range]{flex:1 1 80px;min-width:70px;max-width:none}.selection-card .field select{flex:0 1 120px;min-width:0}.selection-card .field .num{min-width:40px}.board-tools{position:absolute;left:8px;top:10px;z-index:var(--z-panel);display:flex;flex-direction:column;gap:4px}.board-tools button{box-shadow:var(--shadow);width:34px;padding:0;display:inline-grid;place-items:center}.board-tools button.trash:not(:disabled){color:var(--danger)}.ctx-menu{position:absolute;z-index:var(--z-menu);min-width:150px;padding:6px;display:grid;gap:2px;border-radius:var(--r-md)}.ctx-menu strong{padding:4px 8px 6px;font-size:var(--fs-sm);color:var(--muted)}.ctx-menu button{justify-content:flex-start;height:30px;text-align:left;border-color:transparent;background:transparent}.ctx-menu button:hover:not(:disabled){background:var(--accent-soft)}.ctx-menu button.danger-lite{color:var(--danger)}.terminal{fill:#fff;stroke:#4a5361;stroke-width:1.3}.terminal:hover{fill:var(--accent-soft)}.truth{width:100%;border-collapse:collapse;margin:4px 0 6px;font:600 12.5px ui-monospace,Consolas,monospace;text-align:center}.truth th{padding:3px 6px;color:var(--muted);font-size:var(--fs-xs);border-bottom:1px solid var(--line-strong)}.truth td{padding:3px 6px;border-bottom:1px solid var(--line)}.truth tr.now td{background:var(--accent-soft);color:var(--ink)}.selection-card .truth{margin:0}.delay-wrap select{width:170px}.palette-wrap{position:relative;flex:none;display:flex}.palette-wrap .palette{width:var(--palette-w, 236px);min-width:0}.palette-wrap .palette.compact{width:74px}.palette-resizer{position:absolute;top:0;right:-5px;width:10px;height:100%;z-index:var(--z-hud);cursor:col-resize;touch-action:none}.palette-resizer:after{content:"";position:absolute;top:50%;left:3px;width:4px;height:36px;margin-top:-18px;border-radius:2px;background:var(--line-strong);opacity:0;transition:opacity .12s}.palette-resizer:hover:after,.palette-resizer:focus-visible:after,body.resizing-palette .palette-resizer:after{opacity:1;background:var(--accent)}body.resizing-palette{cursor:col-resize;-webkit-user-select:none;user-select:none}.palette.wide-3 .part-grid:not(.wide){grid-template-columns:repeat(3,1fr)}.part-grid.wide{grid-template-columns:minmax(0,1fr);gap:4px}.part-grid.wide .tool.part-card{flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;padding:4px 8px 4px 4px;text-align:left}.part-grid.wide .part-thumb{flex:none;width:84px;height:36px}.part-grid.wide .tool.part-card span{display:grid;min-width:0;flex:1;font-size:var(--fs-sm);line-height:1.2}.part-grid.wide .tool.part-card b{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:700}.part-grid.wide .tool.part-card small{font-size:var(--fs-xs);color:var(--muted);white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.part-grid.wide .tool.part-card.on small{color:inherit;opacity:.85}@media (max-width: 900px){.palette-wrap{display:contents}.palette-resizer{display:none}.palette-wrap .palette{width:auto}}.welcome{position:absolute;z-index:var(--z-tools);left:50%;top:42%;transform:translate(-50%,-50%);width:min(380px,calc(100% - 32px));padding:16px 18px 12px;display:grid;gap:8px;justify-items:start;background:color-mix(in srgb,var(--surface) 96%,transparent)}.welcome h2{margin:0;font-size:var(--fs-lg)}.welcome .muted{margin:0}.welcome-actions{display:grid;gap:6px;width:100%}.shortcuts{position:relative}.shortcuts .icon{box-shadow:var(--shadow);font-weight:700}.shortcuts-pop{position:absolute;z-index:var(--z-float);top:38px;left:0;width:300px;padding:10px 12px;font-size:var(--fs-sm)}.shortcuts-pop dl{margin:6px 0 0;display:grid;gap:5px}.shortcuts-pop dl div{display:grid;grid-template-columns:120px 1fr;gap:8px;align-items:baseline}.shortcuts-pop dt,.shortcuts-pop dd{margin:0}.shortcuts-pop kbd{font:600 11px ui-monospace,Consolas,monospace;padding:1px 6px;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:5px;white-space:nowrap}.view-menu{position:relative}.view-menu-pop{position:absolute;z-index:var(--z-popover);top:38px;right:0;width:210px;padding:6px;display:grid;gap:4px}.view-menu-pop .view-toggle{width:100%;justify-content:flex-start}.view-menu-pop .vt-label{display:inline}.topbar h1{font-weight:800;letter-spacing:.06em}.part-label{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:600;letter-spacing:-.01em}.num,.ohms-input,.shortcuts-pop kbd,.truth,.lcd-text,.card strong{font-family:var(--font-mono)}.card strong{font-size:var(--fs-sm)}.palette-fold,.palette-group h2{letter-spacing:.04em}.palette-fold,.palette-group h2{text-transform:none;font-size:var(--fs-sm);font-weight:700;color:var(--ink)}.palette-fold em{font-family:var(--font-mono);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}button{font-weight:500}button.primary{font-weight:700}g[data-part]:focus{outline:none}g[data-part]:focus-visible{outline:none}g[data-part]:focus-visible>g{filter:drop-shadow(0 0 0 var(--accent)) drop-shadow(0 0 3px var(--accent)) drop-shadow(0 0 3px var(--accent))}.palette-resizer:focus-visible{outline:2px solid var(--accent)}.tool.part-card{touch-action:pan-y}@media (max-width: 900px){.tool.part-card{touch-action:pan-x}}@media (pointer: coarse){button,select{min-height:40px}button.icon{width:40px}button.mini{min-height:32px}.tool.icon-only{height:44px}.palette-resizer{width:18px;right:-9px}.swatch{width:32px;height:32px}.tabs button{min-height:38px}}.code-loading{flex:none;margin-top:8px;padding:14px;text-align:center;color:var(--muted);font-size:var(--fs-sm);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md)}.part-grid.wide .tool.part-card span{white-space:normal}.palette-tools{position:sticky;top:-8px;z-index:var(--z-panel);margin:-8px -6px 0;padding:8px 6px;background:var(--surface);border-bottom:1px solid var(--line)}.palette-mode{margin:0 4px;font-size:var(--fs-sm)}.uno-reset{cursor:pointer}.uno-reset:hover circle{fill:#ffffff40}.uno-reset:focus-visible circle{stroke:var(--accent);stroke-width:2}.palette.locked .tool.part-card{opacity:.45;cursor:not-allowed}.palette-lock{margin:0 4px;padding:6px 8px;font-size:var(--fs-sm);line-height:1.35;color:var(--warn-ink);background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:var(--r-md)}.run-btn.stop-btn{background:var(--danger);color:var(--danger-ink);border-color:var(--danger);font-weight:700}.run-btn.stop-btn:hover:not(:disabled){background:var(--danger);filter:brightness(1.1)}.run-btn.stop-btn.flash{animation:stop-flash .7s ease-out 2}@keyframes stop-flash{0%,to{box-shadow:0 0 0 0 transparent}40%{box-shadow:0 0 0 5px color-mix(in srgb,var(--danger) 45%,transparent)}}@media (prefers-reduced-motion: reduce){.run-btn.stop-btn.flash{animation:none;outline:3px solid var(--danger)}}.status.live:before{content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--ok);vertical-align:1px}.coach-sim{margin:6px 0 0;padding:6px 9px;font-size:var(--fs-sm);line-height:1.4;color:var(--muted);border-left:3px solid var(--line-strong);border-radius:4px}.coach-sim.needed{color:var(--warn-ink);background:var(--warn-bg);border-left-color:var(--warn-line);font-weight:600}.idle-note{margin:4px 0 8px;padding:8px 10px;background:var(--surface-2);border-radius:var(--r-md)}.volt-legend{position:absolute;left:10px;bottom:44px;z-index:var(--z-hud);display:flex;align-items:center;gap:6px;padding:4px 8px;font:600 11px var(--font-mono);color:var(--ink);background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--line-strong);border-radius:var(--r-md);box-shadow:var(--shadow)}.volt-legend i{width:120px;height:8px;border-radius:4px}.led-stress{animation:led-stress .5s ease-in-out infinite alternate}@keyframes led-stress{0%{opacity:.55}to{opacity:1}}@media (prefers-reduced-motion: reduce){.led-stress{animation:none}}.scope-canvas{display:block;width:100%;height:150px;border:2px solid #0b140b;border-radius:10px;background:var(--scope-bg);touch-action:none;cursor:crosshair}.scope-channels{list-style:none;margin:6px 0;padding:0;display:grid;gap:4px}.scope-channels li{display:grid;grid-template-columns:10px 1fr auto auto;gap:8px;align-items:center;font-size:var(--fs-sm)}.scope-channels i{width:10px;height:10px;border-radius:50%}.scope-channels b{font-family:var(--font-mono);font-size:var(--fs-sm);min-width:56px;text-align:right}.scope-controls{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}.scope-controls label{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-sm);color:var(--muted)}.scope-controls select{height:28px;font-size:var(--fs-sm)}.board-wrap.view3d{position:relative}.view3d-host{position:absolute;top:0;right:0;bottom:0;left:0}.view3d-host canvas{display:block;width:100%;height:100%;touch-action:none}.view3d-bar{position:absolute;left:10px;top:10px;right:10px;z-index:var(--z-tools);display:flex;flex-wrap:wrap;align-items:center;gap:8px;pointer-events:none}.view3d-bar>*{pointer-events:auto}.view3d-cam{display:flex;gap:2px}.view3d-cam button{min-width:32px;padding-inline:8px;font-size:var(--fs-lg);line-height:1}.view3d-bar button{box-shadow:var(--shadow)}.view3d-idle{position:absolute;left:50%;bottom:14px;transform:translate(-50%);z-index:var(--z-tools);margin:0;padding:6px 12px;font-size:var(--fs-sm);color:var(--warn-ink);background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:var(--r-md)}.view3d-error{margin:24px;color:var(--bad-ink)}.board-host{position:relative;display:flex;flex:1;min-width:0;min-height:0}.schematic{position:absolute;right:10px;bottom:10px;z-index:var(--z-panel);width:min(340px,max(62%,260px));max-height:min(70%,520px);display:flex;flex-direction:column;background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--ink)}.schematic header{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 12px;border-bottom:1px solid var(--line);font-size:var(--fs-sm)}.schematic header b{font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;font-size:var(--fs-xs)}.schematic header span{flex:1;color:var(--muted)}.schematic header button{flex:none;width:28px;height:28px;min-height:0;padding:0;display:grid;place-items:center;line-height:1;border-color:transparent;background:transparent;color:var(--muted)}.schematic header button svg{width:14px;height:14px}.schematic header button:hover:not(:disabled){color:var(--ink);background:var(--accent-soft)}.schematic-body{overflow:auto;padding:4px 6px 8px}.schematic-empty{margin:0;padding:14px;font-size:var(--fs-sm);color:var(--muted)}.schematic svg{display:block}.sch-wire{stroke:var(--line-strong);stroke-width:1.4;fill:none}.sch-sym{color:var(--ink)}.sch-net{font:700 10.5px var(--font-mono, monospace);fill:var(--ink)}.sch-volts{font:500 9.5px var(--font-mono, monospace);fill:var(--muted)}.sch-id{font:600 10.5px var(--font-mono, monospace);fill:var(--ink)}.sch-amps{font:500 10px var(--font-mono, monospace);fill:var(--muted)}.sch-pin{font:500 9px var(--font-mono, monospace);fill:var(--muted)}.sch-box{fill:color-mix(in srgb,var(--ink) 6%,var(--surface));stroke:var(--line-strong);stroke-width:1.4}.v3-labels{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:var(--z-labels)}.v3-labels.off{display:none}.v3-tag{position:absolute;left:0;top:0;will-change:transform}.v3-dot{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--surface)}.v3-dot:after{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:50%;border:2px solid var(--accent);animation:v3-halo 1.8s ease-out infinite}.v3-lead{position:absolute;left:0;bottom:4px;width:0;height:var(--lead, 30px);border-left:1.5px dashed color-mix(in srgb,var(--ink) 55%,transparent)}.v3-card{position:absolute;left:0;bottom:calc(var(--lead, 30px) + 4px);transform:translate(-50%);display:flex;flex-direction:column;align-items:center;padding:3px 9px 4px;white-space:nowrap;font-size:var(--fs-xs);line-height:1.25;background:color-mix(in srgb,var(--surface) 94%,transparent);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow)}.v3-card b{font-weight:700;letter-spacing:.02em}.v3-card span{color:var(--muted);font-size:var(--fs-xs)}.v3-tag.sel .v3-card{border-color:var(--accent)}.v3-tag.bad .v3-dot{background:var(--bad-ink, #d33)}.v3-tag.bad .v3-dot:after{border-color:var(--bad-ink, #d33)}@keyframes v3-halo{0%{transform:scale(.6);opacity:.9}to{transform:scale(1.9);opacity:0}}@media (prefers-reduced-motion: reduce){.v3-dot:after{animation:none;opacity:.5}}.view3d-bar button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent)}.view3d-host:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse at 50% 46%,transparent 52%,color-mix(in srgb,var(--ink) 16%,transparent) 130%)}.view3d-bar{right:auto}.v3-group{display:inline-flex;gap:2px;padding:3px;border-radius:var(--r-lg);background:color-mix(in srgb,var(--surface) 82%,transparent);border:1px solid color-mix(in srgb,var(--line) 80%,transparent);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px) saturate(160%);backdrop-filter:blur(14px) saturate(160%)}.v3-group>button{min-height:28px;padding:0 10px;border-color:transparent;background:transparent;box-shadow:none;font-size:var(--fs-sm);transition:transform .12s ease-out,background-color .12s}.v3-group>button:hover{background:color-mix(in srgb,var(--ink) 8%,transparent)}.v3-group>button:active{transform:scale(.96)}.v3-group>button[aria-pressed=true]{background:var(--accent-soft);color:var(--ink);box-shadow:inset 0 0 0 1px var(--accent)}.v3-help-btn{width:30px;padding:0;border-radius:50%;font-weight:700}.v3-dock{position:absolute;left:192px;right:12px;bottom:12px;z-index:var(--z-hud);display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;pointer-events:none}.v3-dock>*{pointer-events:auto}.v3-dock>.v3-view{min-height:36px;padding:0 12px;border-radius:var(--r-lg);background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:blur(14px) saturate(160%);backdrop-filter:blur(14px) saturate(160%);box-shadow:var(--shadow);font-size:var(--fs-sm)}.v3-group>.v3-tool{width:32px;min-height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center}.v3-help{position:absolute;left:50%;bottom:72px;transform:translate(-50%);z-index:var(--z-hud);display:flex;flex-direction:column;gap:2px;align-items:center;max-width:min(560px,calc(100% - 24px));padding:8px 14px;font-size:var(--fs-sm);line-height:1.4;text-align:center;color:var(--ink);background:color-mix(in srgb,var(--surface) 90%,transparent);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);animation:v3-in .28s cubic-bezier(.2,.8,.2,1)}.v3-help b{font-size:var(--fs-sm)}.v3-help span{color:var(--muted)}@keyframes v3-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.view3d-idle{top:56px;bottom:auto}.v3-part{position:absolute;left:12px;top:56px;z-index:var(--z-hud);width:min(260px,calc(100% - 24px));max-height:calc(100% - 150px);display:flex;flex-direction:column;background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);animation:v3-pop .22s cubic-bezier(.2,.8,.2,1);transform-origin:top left}@keyframes v3-pop{0%{opacity:0;transform:scale(.96) translateY(-4px)}to{opacity:1;transform:none}}.v3-part header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:10px 8px 8px 14px;border-bottom:1px solid var(--line)}.v3-part header b{display:block;font-size:var(--fs-md);font-family:var(--font-ui)}.v3-part header span{font-size:var(--fs-sm);color:var(--muted)}.v3-part header button{flex:none;width:28px;height:28px;min-height:0;padding:0;display:grid;place-items:center;line-height:1;border-color:transparent;background:transparent;color:var(--muted)}.v3-part header button svg{width:14px;height:14px}.v3-part header button:hover:not(:disabled){color:var(--ink);background:var(--accent-soft)}.v3-part-body{display:flex;flex-direction:column;gap:8px;padding:10px 14px 14px;overflow:auto;font-size:var(--fs-sm)}.v3-minimap{position:absolute;left:12px;bottom:12px;z-index:var(--z-tools);width:168px;height:112px;border-radius:var(--r-lg);border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 78%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow);cursor:crosshair;touch-action:none}.v3-tag.hover .v3-card{border-color:var(--accent)}.v3-tag.hover{z-index:var(--z-labels)}@media (max-width: 760px){.v3-minimap{display:none}.v3-dock{left:12px}.v3-part{top:96px}}@media (prefers-reduced-motion: reduce){.v3-help,.v3-part{animation:none}}@media (prefers-reduced-transparency: reduce){.v3-group,.v3-dock>.v3-view,.v3-help,.v3-part,.v3-minimap{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--surface)}}.v3-part-body .field{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}.v3-part-body .field input[type=range]{flex:1 1 100%}.v3-part-body .field .num{margin-left:auto}.v3-part-body .muted{margin:0;color:var(--muted)}button.mini,.code-bar button,.serial-bar button,.tabs button,.seg button,.run-btn,.view-toggle,.lessons-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1;white-space:nowrap}.dot{flex:none;width:6px;height:6px;border-radius:50%;background:transparent}.dot.live{background:var(--ok)}.code-bar .mini.on,.code-bar .mini.on:hover:not(:disabled){color:var(--ink);background:var(--accent-soft);border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.view-toggle.on,.lessons-btn.active,.v3-group>button[aria-pressed=true]{box-shadow:inset 0 0 0 1px var(--accent)}button.on:disabled{filter:saturate(.4)}.code-bar button:focus-visible,.tabs button:focus-visible,.seg button:focus-visible{outline-offset:-2px}.seg button:focus-visible{position:relative;z-index:var(--z-board)}button.mini-x,.code-bar button.mini-x,.selection-card button.mini-x,.palette-head button.mini-x{width:28px;min-width:28px;height:28px;padding:0;display:inline-grid;place-items:center;line-height:1;font-size:var(--fs-md)}@media (pointer: coarse){button.mini-x,.code-bar button.mini-x,.selection-card button.mini-x,.palette-head button.mini-x{width:40px;min-width:40px;height:40px}}.serial-bar>span{display:flex;align-items:center;gap:4px}.serial-bar button+button{margin-left:0}.status{white-space:nowrap;font-variant-numeric:tabular-nums}.run-btn{min-width:148px}.lessons-btn{min-width:112px}.problems li,.problems pre,.v3-card{max-width:200px;overflow:hidden}.v3-card b,.v3-card span{max-width:100%;overflow:hidden;text-overflow:ellipsis}@media (max-width: 900px){.popover{position:fixed;top:60px;left:8px;right:8px;width:auto}}@media (prefers-reduced-motion: reduce){button,select{transition:background-color .12s,border-color .12s,color .12s}button:active:not(:disabled){transform:none}}.view-menu-pop .theme-seg{width:100%;margin-top:2px}.view-menu-pop .theme-seg button{flex:1 1 0;min-width:0;padding:0 4px}@media (max-width: 900px){.topbar-sep{display:none}}.project-menu{position:relative;display:inline-flex}.topbar button,.topbar select{height:34px;border-radius:10px;font-weight:600}.topbar button{display:inline-flex;align-items:center;justify-content:center;gap:7px;line-height:1;white-space:nowrap}.topbar button svg{flex:none;display:block}.topbar button:not(.on):not(.primary):not(.stop-btn):not(.active):not(:disabled),.topbar select{background-image:linear-gradient(to bottom,color-mix(in srgb,var(--card-hi) 70%,var(--surface)),var(--surface-2));box-shadow:inset 0 1px color-mix(in srgb,var(--card-hi) 80%,transparent),0 1px 2px #0f19231f}.topbar button.on,.topbar button.primary{box-shadow:inset 0 1px #ffffff47,0 1px 3px #0f192338}@media (hover: hover) and (pointer: fine){.topbar button:hover:not(:disabled),.topbar select:hover{transform:translateY(-1px);box-shadow:inset 0 1px color-mix(in srgb,var(--card-hi) 80%,transparent),0 4px 10px #0f19232e}}.topbar button:active:not(:disabled){transform:scale(.97);box-shadow:inset 0 1px 2px #0f192333}.topbar button[aria-expanded=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}@media (prefers-reduced-motion: reduce){.topbar button:hover:not(:disabled),.topbar select:hover{transform:none}}.account-btn{padding:0 12px}.account-btn.signed{padding:0 10px 0 5px;gap:8px;max-width:200px}.account-avatar{flex:none;width:24px;height:24px;display:inline-grid;place-items:center;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:var(--fs-sm);font-weight:700}.account-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-menu{position:relative}.account-pop[data-side=start]{left:0;right:auto}.account-pop{position:absolute;z-index:var(--z-popover);top:40px;right:0;width:220px;padding:8px;display:grid;gap:6px}.account-email{margin:2px 4px;font-size:var(--fs-sm);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-form{display:grid;gap:12px;padding:8px 18px 16px;overflow-y:auto}.auth-field{display:grid;gap:4px;font-size:var(--fs-sm);font-weight:600}.auth-field input,.auth-field select{height:36px;padding:0 10px;font:inherit;font-weight:400;font-size:var(--fs-md);color:var(--ink);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--r-md)}.auth-field input:focus-visible,.auth-field select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.auth-field small{font-weight:400;font-size:var(--fs-sm);color:var(--muted)}.auth-check{display:flex;gap:8px;align-items:flex-start;font-size:var(--fs-sm);line-height:1.4}.auth-check input{flex:none;margin-top:2px;accent-color:var(--accent)}.auth-note{margin:0}.auth-actions{display:flex;justify-content:flex-end}.auth-actions .primary{min-width:140px}.auth-links{display:flex;flex-wrap:wrap;gap:6px 16px;justify-content:space-between}.cloud-chip{padding:0 11px;font-size:var(--fs-sm);color:var(--muted)}.cloud-chip.saved{color:var(--ok)}.cloud-chip.saving{color:var(--accent)}.cloud-chip.offline,.cloud-chip.error,.cloud-chip.conflict{color:var(--danger);border-color:var(--bad-line)}@media (max-width: 1280px){.cloud-chip-text{display:none}.cloud-chip{padding:0 9px}}.cloud-actions{margin-bottom:4px}.cloud-hint{margin:0;line-height:1.5}.cloud-hint .link{display:inline}.cloud-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;padding:8px 18px 4px}.cloud-body{min-height:120px;overflow-y:auto;padding:6px 18px 18px}.cloud-empty{margin:18px 0;text-align:center}.cloud-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.cloud-list>li{border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}.cloud-list>li.current{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.cloud-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:8px 10px}.cloud-open{flex:1 1 240px;min-width:0;height:auto;display:grid;gap:2px;text-align:left;padding:4px 6px;border-color:transparent;background:transparent}.cloud-open strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.cloud-open span{font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums}.cloud-open:disabled{cursor:default;opacity:1;filter:none}.cloud-actions-row{display:flex;flex-wrap:wrap;gap:6px}.cloud-rename{flex:1 1 240px;display:flex;gap:6px}.cloud-rename input{flex:1;min-width:0}.cloud-history{border-top:1px dashed var(--line-strong);padding:6px 12px 10px}.cloud-history ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.cloud-history li{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:var(--fs-sm)}.cloud-history li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.auth-alt{display:grid;gap:8px;justify-items:stretch}.auth-alt>span{justify-self:center;font-size:var(--fs-sm);color:var(--muted)}.google-btn,.alt-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;height:38px;padding:0 14px;font:inherit;font-size:var(--fs-md);font-weight:600;color:var(--ink);text-decoration:none;background:var(--surface);border:1px solid var(--line-strong);border-radius:10px;cursor:pointer;transition:background-color .12s,border-color .12s}.google-btn:hover,.alt-btn:hover{background:var(--surface-2);border-color:var(--accent)}.google-btn svg{flex:none}.cloud-share{display:grid;gap:8px}.cloud-share p{margin:0;font-size:var(--fs-sm);line-height:1.45}.cloud-share-new{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.cloud-share-url{display:grid;gap:4px}.cloud-share-url input{font:var(--fs-sm) var(--font-mono);border-color:var(--accent)}.cloud-share-url span{font-size:var(--fs-sm);color:var(--ok)}.cloud-share li.gone span{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}.account-warn{margin:0 4px;font-size:var(--fs-sm);color:var(--danger)}.account-body{padding-top:10px}.survey{display:grid;gap:14px;padding:4px 18px 18px;overflow-y:auto}.survey-group{margin:0;padding:0;border:0;display:grid;gap:6px;min-width:0}.survey-group legend{padding:0;margin-bottom:4px;font-size:var(--fs-sm);font-weight:700}.survey-options{display:flex;flex-wrap:wrap;gap:6px}.survey-opt{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 12px;font-size:var(--fs-sm);background:var(--surface);border:1px solid var(--line-strong);border-radius:999px;cursor:pointer;transition:background-color .12s,border-color .12s}.survey-opt input{accent-color:var(--accent);margin:0}.survey-opt.on{background:var(--accent-soft);border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);font-weight:600}.survey-opt:focus-within{outline:2px solid var(--accent);outline-offset:2px}.survey textarea{resize:vertical;padding:8px 10px;font:inherit;font-size:var(--fs-md);color:var(--ink);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--r-md)}.survey-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.privacy-opt{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}.privacy-opt>span{display:grid;gap:3px}.privacy-opt small{font-size:var(--fs-sm);font-weight:400;color:var(--muted);line-height:1.45}.account-facts{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:0;font-size:var(--fs-sm)}.account-facts dt{color:var(--muted)}.account-facts dd{margin:0;overflow-wrap:anywhere}.data-block{display:grid;gap:8px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}.data-block h3{margin:0;font-size:var(--fs-md)}.data-block p{margin:0}.data-block.danger{border-color:var(--bad-line)}.admin{display:grid;align-content:start;gap:18px;min-width:min(640px,100%);padding:8px 18px 18px;overflow-y:auto}.admin-bar{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center}.admin section{display:grid;gap:8px}.admin h3{margin:0;font-size:var(--fs-md)}.admin h3 small{font-weight:400;color:var(--muted)}.admin h4{margin:0 0 6px;font-size:var(--fs-sm);color:var(--muted);font-weight:600}.admin-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px}.bars{list-style:none;margin:0;padding:0;display:grid;gap:5px}.bars li{display:grid;grid-template-columns:minmax(90px,40%) 1fr auto;gap:8px;align-items:center;font-size:var(--fs-sm)}.bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden}.bar i{display:block;height:100%;min-width:2px;border-radius:inherit;background:var(--accent)}.bars b{font-variant-numeric:tabular-nums;font-weight:600}.bars small,.admin-table small{color:var(--muted);font-weight:400}.admin-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.admin-table th{text-align:left;font-weight:600;color:var(--muted);font-size:var(--fs-sm);padding:4px 8px 6px 0;border-bottom:1px solid var(--line)}.admin-table td{padding:6px 8px 6px 0;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}.segments{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:var(--fs-sm)}.segments li{display:grid;gap:2px}.segments small,.segments span{color:var(--muted)}.admin-filter{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--muted)}.requests{list-style:none;margin:0;padding:0;display:grid;gap:10px}.requests li{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);justify-items:start}.requests p{margin:0}.req-text{white-space:pre-wrap;overflow-wrap:anywhere}.admin-accounts{display:grid;gap:14px}.admin-search input{height:32px;min-width:200px;padding:0 10px;font:inherit;font-size:var(--fs-sm);color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-md)}.admin-scroll{overflow-x:auto}.admin-users td small{display:block;color:var(--muted);overflow-wrap:anywhere}.admin-users tr.on td{background:var(--accent-soft)}.admin-users button.link{text-align:left;font-weight:600}.admin-export{display:inline-flex;align-items:center;gap:8px}.admin-export a{display:inline-flex;align-items:center;height:32px;padding:0 12px;font-size:var(--fs-sm);color:var(--ink);text-decoration:none;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-md)}@media (hover: hover) and (pointer: fine){.admin-export a:hover{background:var(--surface-2);border-color:var(--accent)}}.admin-detail{display:grid;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface-2)}.admin-detail h3:focus-visible{outline-offset:4px}.admin-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px 18px;margin:0}.admin-facts div{display:grid;gap:1px}.admin-facts dt{font-size:var(--fs-xs);color:var(--muted);font-weight:600}.admin-facts dd{margin:0;font-size:var(--fs-sm);overflow-wrap:anywhere}.admin-actions{display:grid;gap:8px}.admin-action{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:var(--fs-sm)}.admin-action button.danger{margin-top:0}@media (max-width: 640px){.admin-users .col-opt{display:none}}.class-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.class-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}.class-list li>div{display:grid;gap:2px;min-width:0}.class-list small{color:var(--muted)}.join-row{display:flex;align-items:flex-end;gap:8px}.join-row .auth-field{flex:1;min-width:0}.class-head{display:grid;gap:2px}.class-head h3{margin:0;font-size:17px}.class-code-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.class-code{font:600 26px/1 var(--font-mono, ui-monospace, monospace);letter-spacing:.12em;padding:8px 12px;border-radius:var(--r-md);background:var(--surface);border:1px dashed var(--line-strong);-webkit-user-select:all;user-select:all}.table-scroll{overflow-x:auto}.row-actions{white-space:nowrap;text-align:right}.row-actions .mini+.mini{margin-left:4px}.chip.ok{background:var(--ok-bg, var(--accent-soft))}.bars progress{width:100%;height:8px}.creds code{font-size:var(--fs-sm);-webkit-user-select:all;user-select:all}.class-view textarea{width:100%;resize:vertical;font:inherit}.lesson-bar{display:inline-flex;align-items:stretch;min-width:0;max-width:440px;height:34px;background:var(--note-bg);border:1px solid var(--note-line);border-radius:10px;overflow:hidden;box-shadow:inset 0 1px color-mix(in srgb,var(--card-hi) 70%,transparent),0 1px 2px #0f19231f}.topbar .lesson-bar button{height:100%;min-width:0;border:0;border-radius:0;background:none;box-shadow:none;font-weight:600}@media (hover: hover) and (pointer: fine){.topbar .lesson-bar button:hover:not(:disabled){transform:none;box-shadow:none;background:color-mix(in srgb,var(--ink) 7%,transparent)}}.topbar .lesson-bar button:active:not(:disabled){transform:none;box-shadow:none;background:color-mix(in srgb,var(--ink) 12%,transparent)}.lesson-bar-main{padding:0 12px;gap:8px}.lesson-bar-title{min-width:0;max-width:170px;overflow:hidden;text-overflow:ellipsis}.lesson-bar-step{flex:none;font-size:var(--fs-sm);font-weight:500;color:var(--muted);font-variant-numeric:tabular-nums}.lesson-bar-ticks{flex:none;display:inline-flex;gap:3px}.lesson-bar-ticks i{display:block;width:9px;height:4px;border-radius:2px;background:var(--line-strong);transition:background-color .2s var(--ease-out)}.lesson-bar-ticks i.done{background:var(--ok)}.lesson-bar-ticks i.now{background:var(--accent)}.topbar .lesson-bar .lesson-bar-exit{flex:none;padding:0 12px;gap:5px;color:var(--ink);border-left:1px solid var(--note-line)}@media (max-width: 1500px){.lesson-bar-title{display:none}}@media (max-width: 1380px){.lesson-bar-ticks{display:none}}@media (max-width: 1060px){.lesson-bar-main{padding:0 10px}}.choice-list{display:grid;gap:8px;padding:6px 18px 18px}.modal .choice{display:grid;justify-items:start;gap:2px;width:100%;height:auto;padding:11px 14px;text-align:left;white-space:normal;line-height:1.3}.modal .choice strong{font-size:var(--fs-md)}.modal .choice span{font-size:var(--fs-sm);font-weight:400;color:var(--muted)}.modal .choice.primary span{color:color-mix(in srgb,var(--accent-ink) 85%,transparent)}.lesson-current{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px}.lesson-current-actions{display:inline-flex;flex-wrap:wrap;gap:6px}.run-btn,.topbar-group>.project-menu{flex:none}.topbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;height:auto;min-height:64px;padding:8px 16px}.topbar h1{flex:none;margin:0 8px 0 0;white-space:nowrap}.topbar-group,.run-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.topbar .select-wrap select{width:clamp(100px,9vw,150px);text-overflow:ellipsis}.topbar .view-group{margin-left:auto}@media (max-width: 1500px){.vt-label{display:none}.view-toggle{padding:0 10px}.run-btn{min-width:0;padding:0 12px}.topbar button{padding:0 10px}.lessons-btn{min-width:0}}@media (max-width: 900px){.topbar-sep{display:none}.topbar .view-group{margin-left:0}}.modal-backdrop{background:#0a12208f;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade-in .16s var(--ease-out)}.modal{animation:modal-in var(--dur-base) var(--ease-out)}.modal-head h2{font-family:var(--font-ui);font-size:var(--fs-xl);font-weight:650;letter-spacing:-.015em}@keyframes fade-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:translateY(6px) scale(.96)}}@media (prefers-reduced-motion: reduce){.modal{animation:fade-in .16s linear}}@media (prefers-reduced-transparency: reduce){.modal-backdrop{-webkit-backdrop-filter:none;backdrop-filter:none}}.coach{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--signal);border-radius:var(--r-lg);box-shadow:var(--elev-2)}.coach.is-done{background:var(--surface);border-color:var(--line);border-left-color:var(--ok)}.coach-title{font-family:var(--font-ui);font-size:var(--fs-lg);font-weight:650;letter-spacing:-.012em;line-height:1.2}.coach-title small{font-family:var(--font-ui);font-size:var(--fs-xs);font-weight:600;letter-spacing:0;text-transform:none;color:var(--signal-ink)}.coach-bar{display:flex;gap:3px;height:4px;background:none;border-radius:0;overflow:visible}.coach-bar>span{flex:1;height:100%;background:var(--line-strong);border-radius:2px;transition:background-color .25s var(--ease-out)}.coach-bar>span.done{background:var(--ok)}.coach-bar>span.now{background:var(--accent)}.coach .coach-body h3{margin:12px 0 6px;font-family:var(--font-ui);font-size:var(--fs-lg);font-weight:650;letter-spacing:-.012em;text-transform:none;color:var(--ink)}.goals li{border-radius:var(--r-md);background:var(--surface-2);border-color:var(--line)}.goals li.ok{background:var(--ok-bg);border-color:var(--ok-line)}.goal-mark{display:grid;place-items:center;height:18px}.goal-ring{display:block;width:12px;height:12px;border:1.8px solid var(--line-strong);border-radius:50%}.goals li.ok .goal-mark svg{animation:check-in .2s var(--ease-out)}@keyframes check-in{0%{opacity:0;transform:scale(.6)}}.goal-detail{color:var(--warn)}.coach-hint{background:var(--surface-2);border:1px solid var(--line);border-left:3px solid var(--signal);border-radius:var(--r-md);animation:fade-in .18s var(--ease-out)}.coach-help .mini{gap:6px}.coach-success{border-radius:var(--r-lg);animation:fade-in .22s var(--ease-out)}.coach-foot{gap:6px;border-top:1px solid var(--line)}.coach-foot .mini{height:28px}.coach-done h2{font-family:var(--font-ui);font-size:var(--fs-xl);font-weight:650;letter-spacing:-.015em}@media (prefers-reduced-motion: reduce){.goals li.ok .goal-mark svg,.coach-hint,.coach-success{animation:none}}.lesson-filter{display:flex;flex-wrap:wrap;gap:6px;padding:10px 18px 0}.lesson-filter .mini{height:28px;border-radius:999px}.lesson-filter .mini[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--ink);font-weight:600}.lesson-list{gap:8px}.lesson-card{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--elev-1);transition:border-color .15s var(--ease-out),box-shadow .15s var(--ease-out)}@media (hover: hover) and (pointer: fine){.lesson-card:hover{border-color:var(--line-strong);box-shadow:var(--elev-2)}}.lesson-card.done{background:var(--surface);border-color:var(--line)}.lesson-num{position:relative;font-variant-numeric:tabular-nums;background:var(--accent-soft);color:var(--accent)}.lesson-num.done{background:var(--ok);color:#fff}.lesson-num.ring{background:none;width:36px;height:36px}.lesson-num.ring svg{position:absolute;top:0;right:0;bottom:0;left:0;fill:none;stroke-width:3}.lesson-num.ring circle{stroke:var(--line)}.lesson-num.ring circle.arc{stroke:var(--accent);stroke-linecap:round}.lesson-num.ring span{position:relative}.lesson-info h3{font-family:var(--font-ui);font-weight:650;letter-spacing:-.01em}.lesson-current{background:var(--accent-soft)}.lesson-current .mini{height:28px}@media (max-width: 900px){.topbar{flex-wrap:nowrap;height:54px;min-height:0;padding:0 10px;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;scroll-snap-type:x proximity}.topbar::-webkit-scrollbar{display:none}.topbar>*,.topbar-group,.run-controls{flex:none;flex-wrap:nowrap}.topbar>*{scroll-snap-align:start}.lesson-bar-title{display:none}}.board-tools .shortcuts{position:static}.board-tools .shortcuts-pop{top:0;left:calc(100% + 8px);max-height:min(520px,calc(100dvh - 160px));overflow-y:auto}.sel-ring{fill:color-mix(in srgb,var(--select) 11%,transparent);stroke:var(--select);stroke-width:2px;stroke-dasharray:none;vector-effect:non-scaling-stroke;pointer-events:none;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--select) 60%,transparent));transform-box:fill-box;transform-origin:center;animation:sel-in .14s var(--ease-out)}@keyframes sel-in{0%{opacity:0;transform:scale(.97)}}.wire-sel{stroke:var(--select);stroke-width:7px;opacity:.45;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--select) 60%,transparent))}@media (prefers-reduced-motion: reduce){.sel-ring{animation:fade-in .14s linear}}.sel-mark{fill:none;stroke:var(--select);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none}.hover-box{fill:none;stroke:var(--select);stroke-width:1.5px;opacity:.55;vector-effect:non-scaling-stroke;pointer-events:none}g.is-selected .part-label{fill:var(--ink);font-weight:800;paint-order:stroke;stroke:color-mix(in srgb,var(--mat) 85%,transparent);stroke-width:4px;stroke-linejoin:round}.snap-ring{fill:color-mix(in srgb,var(--select) 20%,transparent);stroke:var(--select);stroke-width:2px;vector-effect:non-scaling-stroke}.snap-ring.origin{fill:none;stroke-dasharray:3 3}.end-handle{fill:#fff;stroke:var(--select);stroke-width:2.5px;vector-effect:non-scaling-stroke;cursor:grab;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}.end-handle:hover{fill:var(--select)}.end-handle:active{cursor:grabbing}.wire-hover{fill:none;stroke:var(--select);stroke-width:6px;stroke-linecap:round;opacity:.28;vector-effect:non-scaling-stroke;pointer-events:none}.pol-sign{font-size:9px;font-weight:800;paint-order:stroke;stroke:var(--mat);stroke-width:2.4px;stroke-linejoin:round;pointer-events:none}.pol-sign.plus{fill:#d9381e}.pol-sign.minus{fill:light-dark(#2f64d8,#7aa2ff)}svg.board g[data-wire].clickable{cursor:pointer}svg.board[data-sim=on] g.clickable:not(.dragging){cursor:pointer}svg.board[data-tool=wire] .canvas-bg,svg.board[data-tool=wire] g[data-part]{cursor:crosshair}svg.board[data-tool=meter] g.clickable:not(.dragging){cursor:crosshair}svg.board[data-tool=place] .canvas-bg,svg.board[data-tool=place] g[data-part]{cursor:copy}svg.board[data-act=wire],svg.board[data-act=wire] *{cursor:crosshair}svg.board[data-act=grab],svg.board[data-act=grab] *{cursor:grabbing}.view3d-host canvas{cursor:grab}.view3d-host canvas:active{cursor:grabbing}html{-webkit-tap-highlight-color:transparent}button,a,select,summary,[role=button]{touch-action:manipulation}button,[role=button],.tool,.tabs button{-webkit-user-select:none;user-select:none}@media (prefers-reduced-motion: reduce){button:active:not(:disabled){transform:none}}.palette-basic{width:100%;margin-top:6px;height:30px;font-size:var(--fs-sm);font-weight:600;border-style:dashed}:root{--shift: 6px;--pop: .96}@media (prefers-reduced-motion: reduce){:root{--shift: 0px;--pop: 1}}@keyframes surface-in{0%{opacity:0;transform:translateY(calc(var(--shift) * -1)) scale(var(--pop))}}@keyframes panel-in-left{0%{opacity:0;transform:translate(calc(var(--shift) * -2))}}@keyframes panel-in-right{0%{opacity:0;transform:translate(calc(var(--shift) * 2))}}@keyframes panel-in-up{0%{opacity:0;transform:translateY(calc(var(--shift) * 2))}}@keyframes view-in{0%{opacity:0;filter:blur(2px)}}@keyframes tab-in{0%{opacity:0;transform:translateY(calc(var(--shift) * .5))}}@keyframes text-in{0%{opacity:0;transform:translateY(calc(var(--shift) * .5))}}.popover,.ctx-menu,.shortcuts-pop,.view-menu-pop,.selection-card{animation:surface-in var(--dur-fast) var(--ease-out)}.popover,.view-menu-pop{transform-origin:top right}.ctx-menu,.shortcuts-pop,.selection-card{transform-origin:top left}.modal-backdrop[data-state=closing]{animation:fade-in .12s var(--ease-out) reverse forwards}.modal-backdrop[data-state=closing] .modal{animation:modal-out .12s var(--ease-out) forwards}@keyframes modal-out{to{opacity:0;transform:translateY(var(--shift)) scale(var(--pop))}}:root[data-ready] .palette-wrap{animation:panel-in-left var(--dur-base) var(--ease-drawer)}:root[data-ready] .sidebar{animation:panel-in-right var(--dur-base) var(--ease-drawer)}:root[data-ready] .code-panel{animation:panel-in-up var(--dur-base) var(--ease-drawer)}:root[data-ready] .board-host>.board-wrap{animation:view-in var(--dur-fast) var(--ease-out)}:root[data-ready] svg.board g[data-part],:root[data-ready] svg.board g[data-wire]{animation:fade-in var(--dur-fast) var(--ease-out)}.sidebar .tab-body{animation:tab-in .14s var(--ease-out)}.hint[data-fresh]{animation:text-in var(--dur-fast) var(--ease-out)}:root.theme-fade,:root.theme-fade *,:root.theme-fade *:before,:root.theme-fade *:after{transition:background-color var(--dur-base) var(--ease-out),color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),fill var(--dur-base) var(--ease-out),stroke var(--dur-base) var(--ease-out)}@media (prefers-reduced-motion: reduce){.coach-bar>span,.lesson-card,.lesson-bar-ticks i,.v3-group>button,.splitter-grip,.hover-ring{transition:none}}body{background-color:var(--bg);background-image:linear-gradient(var(--paper-grid) 1px,transparent 1px),linear-gradient(90deg,var(--paper-grid) 1px,transparent 1px);background-size:28px 28px}.app{position:relative;display:grid;grid-template-columns:60px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.app:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:var(--trace);opacity:.55;-webkit-mask:url(/traces.svg) center / cover no-repeat;mask:url(/traces.svg) center / cover no-repeat}:where(.app>:not(.modal-backdrop)){position:relative;z-index:1}.app>svg[aria-hidden=true]{position:absolute}.rail{grid-row:1 / span 2;grid-column:1;z-index:var(--z-popover)}.topbar{grid-column:2;grid-row:1;z-index:var(--z-menu)}.workspace{grid-column:2;grid-row:2;z-index:var(--z-board)}.topbar{background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.topbar h1{gap:10px;text-transform:none;letter-spacing:0}.topbar h1 .brand-mark{flex:none;padding:4px;border-radius:50%;color:var(--accent-ink);background:var(--accent);box-sizing:content-box}.app-title{display:grid;gap:1px;font-family:var(--font-cond);font-size:var(--fs-xl);font-weight:700;letter-spacing:.1em;text-transform:uppercase;line-height:1.05;color:var(--ink)}.app-title small{font-size:var(--fs-xs);font-weight:600;letter-spacing:.2em;color:var(--muted)}@media (max-width: 1480px){.app-title small{display:none}}@media (max-width: 1240px){.app-title{display:none}}.rail{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 0;background:color-mix(in srgb,var(--surface-2) 90%,transparent);border-right:1px solid var(--line)}.rail-btn{position:relative;width:40px;height:40px;min-width:0;padding:0;display:grid;place-items:center;color:var(--muted);background:transparent;border:1px solid transparent;border-radius:var(--r-lg);box-shadow:none}.rail-btn:hover:not(:disabled){color:var(--ink);background:color-mix(in srgb,var(--ink) 7%,transparent);border-color:transparent}.rail-btn.on{color:var(--accent-ink);background:var(--accent)}.rail-btn.on:hover:not(:disabled){color:var(--accent-ink);background:var(--accent-hover)}.rail-end{margin-top:auto}.rail-tip{position:absolute;left:calc(100% + 10px);top:50%;z-index:var(--z-popover);padding:4px 9px;white-space:nowrap;pointer-events:none;font-size:var(--fs-sm);font-weight:600;color:var(--accent-ink);background:var(--ink);border-radius:var(--r-md);box-shadow:var(--elev-2);opacity:0;transform:translate(calc(var(--shift) * -.5),-50%);transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}@media (hover: hover) and (pointer: fine){.rail-btn:hover .rail-tip,.rail-btn:focus-visible .rail-tip{opacity:1;transform:translateY(-50%)}}.sidebar h3,.palette-group h2,.palette-head h2,.modal-head h2,.coach-title,.lesson-info h3,.scope-title,.serial-bar h3,.schematic header b,.v3-part header b{font-family:var(--font-cond);font-weight:600;letter-spacing:.07em;text-transform:uppercase}.modal-head h2{font-size:var(--fs-xl)}.palette-fold{font-family:var(--font-cond);font-weight:600;letter-spacing:.07em;text-transform:uppercase}.stage .board-host,.code-panel,.palette,.sidebar{border-radius:var(--r-lg)}.sidebar{margin:10px 10px 10px 0;border:1px solid var(--line);box-shadow:var(--elev-1)}.palette,.code-panel{box-shadow:var(--elev-1)}@media (max-width: 760px){.app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr)}.rail{grid-row:2;grid-column:1;flex-direction:row;justify-content:center;padding:6px;border-right:0;border-bottom:1px solid var(--line);overflow-x:auto}.rail-end{margin:0 0 0 auto}.topbar,.workspace{grid-column:1}.workspace{grid-row:3}.rail-tip{display:none}}@media (pointer: coarse){.schematic header button,.v3-part header button,.palette-head .mini-x,.selection-card .mini-x{width:36px;height:36px}}
