@charset "UTF-8";@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url("./fonts/jetbrains-mono-latin-400-normal-3OOWLGQ2.woff2") format("woff2")}@font-face{font-family:JetBrains Mono;font-style:italic;font-weight:400;font-display:swap;src:url("./fonts/jetbrains-mono-latin-400-italic-Q3OHN3T7.woff2") format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url("./fonts/jetbrains-mono-latin-600-normal-5PVSJ4PH.woff2") format("woff2")}:root{color-scheme:dark;--bg:#0b1524;--panel:#122138;--canvas:#152842;--line:#2c4670;--text:#eef4ff;--muted:#adc1e0;--accent:#7cc4ff;--accent-dark:#163a5e;--signal:#ffd866;--unknown:#ff9e64;--amber:#f5c36e;--red:#ff8a8a;--mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--code-text:#d3dfee;--code-comment:#8ba1be;--code-keyword:#d4b6dd;--code-type:#95baeb;--code-number:#e9c28a;--code-label:#f5c36e;--code-punctuation:#8fadd5;--code-caret:#e0eaf7;--code-gutter:#7f97b8;--code-gutter-bg:#101822;--code-active-line:#ffffff0a;--code-selection:#6481a866;--code-match:#7cc4ff26;--code-bracket:#7cc4ff80;--code-tooltip-bg:#162a45;--code-tooltip-border:#2c4670;--sans:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:13px var(--sans);-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button:disabled{cursor:wait;opacity:.6}button{border:0}a{color:inherit;text-decoration:none}button,a{transition:background .15s,color .15s,border-color .15s}button:focus-visible,a:focus-visible,input:focus-visible,svg [tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button svg,span[data-icon] svg{width:18px;height:18px;display:block;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}button[hidden],[hidden]{display:none!important}kbd{font:11px var(--sans);color:var(--muted);white-space:nowrap}h1,h2,p{margin:0}.skip-link{position:fixed;top:-50px;padding:12px;background:var(--accent);color:#0d1e35;z-index:100}.skip-link:focus{top:6px}.app-header{height:65px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:26px;padding:0 26px;background:#0e1620}.brand{display:flex;align-items:center;gap:12px;font-size:21px;font-weight:650;letter-spacing:-.7px}.brand-light{font-weight:400;color:#b2c7e2}.brand-mark{width:30px;height:30px;stroke:var(--accent);stroke-width:1.8;fill:none}.header-divider{height:19px;width:1px;background:var(--line)}.header-note{font-size:11px;letter-spacing:.1em;color:var(--muted)}.header-right{margin-left:auto;display:flex;gap:25px;align-items:center}.local-status{display:flex;align-items:center;gap:8px;font-size:11px;color:#a4bcdc}.local-status i,.live-badge i{width:5px;height:5px;background:var(--accent);border-radius:50%}.icon-button{background:transparent;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;color:var(--muted);padding:0;flex-shrink:0}.icon-button:hover{background:#1f2f45;color:var(--text)}.mobile-menu{display:none}.app-layout{display:flex;min-height:calc(100vh - 65px)}.sidebar{width:218px;flex-shrink:0;background:#0e1620;border-right:1px solid var(--line);padding:26px 14px 0;display:flex;flex-direction:column;position:sticky;top:0;height:calc(100vh - 65px)}.sidebar-caption{display:flex;justify-content:space-between;padding:0 10px;margin-bottom:20px;font-size:11px;color:#81a2cf;letter-spacing:.12em}.sidebar-caption span{font:11px var(--mono);color:#80a2cf}#chapter-nav{display:flex;flex-direction:column;gap:4px}.chapter-button{background:transparent;display:flex;align-items:center;width:100%;gap:11px;padding:10px 11px;border:1px solid transparent;border-radius:7px;text-align:left;color:var(--muted)}.chapter-button .chapter-icon{color:#7fa2ce}.chapter-button .chapter-text{font-size:12px}.chapter-button .chapter-number{font:11px var(--mono);margin-left:auto;color:#7fa2ce}.chapter-button:hover{background:#15202f}.chapter-button.active{background:#1c2c42;color:var(--accent);border-color:#3f5470}.chapter-button.active .chapter-icon{color:var(--accent)}.chapter-button.active .chapter-number{color:#92afd5}.exercise-list-heading{padding:27px 10px 12px;display:flex;justify-content:space-between;color:#7fa1ce;font-size:11px;letter-spacing:.06em}.exercise-list-heading span:last-child{font-family:var(--mono);color:#8ca1be}.exercise-list{overflow:auto;padding-bottom:14px;scrollbar-width:thin;scrollbar-color:#263a54 transparent;flex:1;min-height:80px}.exercise-button{display:flex;align-items:center;gap:11px;text-align:left;width:100%;padding:9px 11px;margin-bottom:2px;border-radius:6px;background:transparent}.exercise-button:hover{background:#162232}.exercise-button.active{background:#1b293b}.exercise-number{font:11px var(--mono);color:#80a2cf;width:16px;flex-shrink:0}.exercise-title{font:12px var(--mono);display:block;color:#aac1df}.exercise-description{display:block;font-size:11px;color:#7fa2ce;margin-top:3px}.exercise-button.active .exercise-title,.exercise-button.active .exercise-number{color:var(--accent)}.exercise-state{width:6px;height:6px;border:1px solid #4c6586;border-radius:50%;margin-left:auto}.exercise-button.active .exercise-state{background:var(--accent);border-color:var(--accent)}.exercise-state.passed{width:16px;height:16px;border:none;color:var(--accent)}.exercise-state.passed svg{width:14px;height:14px}.sidebar-bottom{margin:0 -14px;padding:22px 22px 25px;border-top:1px solid var(--line)}.sidebar-bottom>div:first-child{display:flex;justify-content:space-between;font-size:11px;color:#7ea0ce}.sidebar-bottom b{font:11px var(--mono);color:var(--accent)}.progress-track{height:3px;border-radius:3px;margin:13px 0 10px;background:#1d2d42;overflow:hidden}.progress-track span{display:block;background:var(--accent);height:100%;width:0;transition:width .3s}.sidebar-bottom small{font-size:10.5px;color:#7fa2ce}.workspace{padding:0 27px;min-width:0;flex:1;max-width:1900px;margin:0 auto}.exercise-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:27px 0 24px}.breadcrumb{font:10.5px var(--mono);letter-spacing:.1em;color:#7fa2ce;margin-bottom:13px;display:flex;align-items:center;gap:12px}.breadcrumb span{color:#8da2bf}.title-line{display:flex;align-items:center;gap:15px}h1{font:500 31px var(--mono);letter-spacing:-1px}.exercise-tag{border-left:1px solid #445a78;padding-left:15px;font-size:12px;color:#97b2d7}.exercise-heading p{color:#81a2cf;font-size:11px;margin-top:11px;line-height:1.6}.exercise-actions{display:flex;gap:9px;align-items:center}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:6px;padding:10px 13px;font-size:11px;font-weight:500;white-space:nowrap;border:1px solid transparent}.button.secondary{background:#162231;border-color:#394b64;color:#aac1df}.button.secondary:hover{background:#203147}.button.primary{background:var(--accent);color:#102642;border-color:var(--accent);padding:11px 17px;box-shadow:0 2px 9px #03080e40}.button.primary:hover{background:#c0d7f6}.button.primary kbd{margin-left:12px;color:#1b3d6b;font-size:11px}.button.primary svg{fill:#10264214}.studio{display:grid;grid-template-columns:minmax(0,1fr) minmax(310px,34%);height:clamp(420px,calc(100vh - 460px),680px);min-height:420px;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--panel)}.circuit-panel{display:flex;flex-direction:column;min-width:0;background:var(--canvas);position:relative}.panel-toolbar{height:47px;background:#121b27;border-bottom:1px solid var(--line);padding:0 15px;display:flex;align-items:center;justify-content:space-between;gap:6px;flex-shrink:0}.panel-title{display:flex;align-items:center;gap:8px;font-size:11px;color:#b8cbe4}.panel-title>span:first-child{color:#89a8d2}.live-badge{font:10px var(--mono);display:flex;gap:5px;align-items:center;color:#9eb8da;background:#1a2c45;padding:4px 6px;border-radius:3px;margin-left:3px}.live-badge i{width:4px;height:4px}.toolbar-actions{display:flex;align-items:center;gap:1px}.toolbar-actions .icon-button{width:25px;height:27px}.toolbar-actions svg{width:15px;height:15px}#zoom-label{font:10.5px var(--mono);color:#81a3cf;min-width:37px;text-align:center}.toolbar-divider{width:1px;height:13px;background:#2a405d;margin:0 7px}.palette{display:flex;gap:7px;align-items:center;padding:14px 17px 0;position:relative;z-index:3;flex-shrink:0}.palette-caption{font-size:11px;color:#7fa1ce;margin-right:3px}.chip-button{display:flex;gap:9px;align-items:center;border:1px solid #4d6789;border-radius:5px;background:#19283b;color:#c6d6ea;font:11px var(--mono);padding:7px 10px;white-space:nowrap}.chip-button>span:last-child{color:#8aa9d3}.chip-button:hover{border-color:var(--accent);background:#21354f}.mini-gate{width:16px;height:14px;border:1px solid #94b1d7;border-radius:1px 7px 7px 1px;position:relative;margin-right:2px}.mini-gate:after{content:"";width:3px;height:3px;border:1px solid #94b1d7;border-radius:50%;position:absolute;right:-5px;top:4px;background:#19283b}#more-parts{font:11px var(--sans);border-color:#3d516c;background:#172333;color:#8fadd5}#more-parts svg{width:12px;height:12px}.palette-menu{position:absolute;top:51px;left:16px;padding:12px;background:#101926;border:1px solid #425875;border-radius:8px;width:280px;max-height:280px;overflow:auto;box-shadow:0 10px 35px #0008;display:grid;grid-template-columns:1fr 1fr;gap:5px}.palette-option{padding:8px;text-align:left;background:#1b2b40;border-radius:4px;font:11px var(--mono);color:#bacde5}.palette-option:hover{background:#274062}.input-controls{display:flex;flex-wrap:wrap;gap:8px;padding:11px 17px 0;min-height:15px}.input-control{display:flex;align-items:center;gap:7px;color:#8eacd4;font:11px var(--mono)}.input-control button{border:1px solid #4e688a;border-radius:4px;width:25px;height:22px;background:#192739;color:#aec3e0;font:11px var(--mono)}.input-control button.high{background:var(--signal);border-color:var(--signal);color:#102540}.input-control input{width:64px;padding:4px 5px;border-radius:4px;border:1px solid #455c7b;background:#131e2d;color:#cedbec;font:11px var(--mono)}.board{flex:1;min-height:200px;position:relative;overflow:hidden;background-image:radial-gradient(#394c6566 .8px,transparent .8px);background-size:22px 22px;background-position:10px 10px;touch-action:none}#circuit-svg{width:100%;height:100%;position:absolute;inset:0;user-select:none}.board-empty{position:absolute;left:50%;top:49%;transform:translate(-50%,-50%);text-align:center;pointer-events:none}.empty-gate{display:flex;justify-content:center;color:#8ba1be;margin-bottom:14px}.empty-gate svg{width:33px!important;height:33px!important}.board-empty p{font-size:13px;color:#b6c9e3;white-space:nowrap}.board-empty>span{font-size:11px;color:#8aa0bd;line-height:1.9;display:block;margin-top:10px}.board-notice{position:absolute;bottom:14px;left:16px;right:16px;padding:10px 12px;background:#322f23e8;border:1px solid #846f4b;border-radius:5px;display:flex;gap:8px;align-items:flex-start;font-size:11px;line-height:1.6;color:#ecc897;max-height:74px;overflow:auto}.board-notice svg{width:14px;height:14px;flex-shrink:0;margin-top:1px}.board-footer{height:37px;border-top:1px solid #2f4869;display:flex;align-items:center;gap:15px;padding:0 16px;background:#15202e;color:#81a3cf;font-size:10.5px;flex-shrink:0}.signal-legend{display:flex;gap:12px}.signal-legend span{display:flex;align-items:center;gap:5px}.signal-legend i{height:5px;width:5px;border-radius:50%}.signal-legend .on{background:var(--signal)}.signal-legend .off{background:#567399}.signal-legend .unknown{background:var(--unknown)}.board-tip{margin-left:auto;font-size:10px;white-space:nowrap}.part-count{font:10px var(--mono);color:#a1badb;white-space:nowrap}.wire{fill:none;stroke:#526d91;stroke-width:2.3;stroke-linecap:round;pointer-events:none;transition:stroke .15s}.wire.high{stroke:var(--signal);filter:drop-shadow(0 0 3px #ffd86640)}.wire.unknown{stroke:var(--unknown);stroke-dasharray:5 5;opacity:.7}.wire-label{font:11px var(--mono);fill:#87a7d2;paint-order:stroke;stroke:#1f3046;stroke-width:4px}.part-node{cursor:grab}.part-node.dragging{cursor:grabbing}.node-body{fill:#1b2a3d;stroke:#546f94;stroke-width:1.4}.part-node:hover .node-body,.part-node.selected .node-body{stroke:var(--accent);fill:#1d334f}.part-node.invalid .node-body{stroke:#cbac77;fill:#383626}.node-title{font:500 16px var(--mono);fill:#d2deee;letter-spacing:.3px}.node-caption{font:10.5px var(--mono);fill:#80a2cf}.pin-label{font:10.5px var(--mono);fill:#9ab5d8}.node-lead{stroke:#5f7da5;stroke-width:1.6;fill:none}.port{fill:#17273c;stroke:#7fa1ce;stroke-width:1.8;cursor:crosshair}.port.high{fill:var(--signal);stroke:var(--signal)}.port.unknown{stroke:var(--unknown)}.port-hit{fill:transparent;cursor:crosshair}.port-hit:hover+.port,.port:hover{stroke:#f1f6fd;stroke-width:3}.port-selected{stroke:var(--accent)!important;stroke-width:3!important;fill:var(--accent-dark)!important}.io-node{cursor:pointer}.io-body{fill:#1c2c41;stroke:#4e688b;stroke-width:1.1}.io-node:hover .io-body{stroke:var(--accent)}.io-title{font:11px var(--mono);fill:#9fb8da}.io-value{font:500 25px var(--mono);fill:#8eacd4}.io-value.high{fill:var(--signal)}.io-value.unknown{fill:var(--amber)}.io-value.bus{font-size:17px}.io-sub{font:10px var(--mono);fill:#8da2be}.io-small{font:10.5px var(--mono);fill:#7fa1ce}.part-inspector{position:absolute;top:12px;right:12px;background:#0e1b2cee;border:1px solid #455c7a;border-radius:6px;padding:12px;min-width:150px;box-shadow:0 6px 25px #0004}.inspector-title{display:flex;align-items:center;justify-content:space-between;gap:15px;font:12px var(--mono);color:var(--accent);margin-bottom:8px}.inspector-actions{display:flex;gap:7px}.inspector-actions button{font-size:10.5px;padding:6px 8px;border-radius:4px;background:#21354f;color:#b9cce5}.inspector-actions button:hover{background:#384c66}.inspector-actions .delete-part{color:var(--red);background:#432e25}.wire-instruction{display:flex;gap:9px;align-items:center;position:absolute;bottom:12px;left:50%;transform:translate(-50%);padding:6px 9px 6px 13px;background:#253953;border:1px solid #6e89ad;border-radius:7px;box-shadow:0 4px 15px #0005;color:#c9d8ec;font-size:11px;white-space:nowrap;z-index:4}.wire-instruction svg{width:15px;height:15px}.editor-panel{display:flex;flex-direction:column;min-width:0;border-left:1px solid var(--line);background:#101822}.editor-panel .panel-toolbar{background:#131d2a;padding:0 12px}.editor-tab{display:flex;align-items:center;gap:8px;font:11px var(--mono);color:#b2c7e2}.editor-tab>span:first-child{color:#8ca1be}.editor-tab svg{width:14px;height:14px}#dirty-dot{width:5px;height:5px;background:var(--amber);border-radius:50%}.save-button{padding:5px 9px;border:1px solid #3f5571;color:#9cb6d9;background:#192739;border-radius:4px;font-size:11px;gap:6px}.save-button:hover{background:#263b56}.save-button svg{width:13px;height:13px}.save-button kbd{font-size:10.5px;margin-left:4px}.editor-topline{height:33px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 13px;background:#101925;border-bottom:1px solid #293e5a;font-size:10px;color:#7ea1ce}.editor-topline>span:first-child{font:10.5px var(--mono)}#save-status{color:#8aa9d3;white-space:nowrap}.code-editor{position:relative;display:flex;flex-direction:column;flex:1;min-height:230px;overflow:hidden;font:11px/22px var(--mono)}.code-editor>.cm-editor{flex:1;min-height:0}.editor-status{height:30px;flex-shrink:0;display:flex;align-items:center;gap:14px;padding:0 13px;font:10px var(--mono);color:#8ba1be;background:#131d2a;border-top:1px solid #2a415f}.editor-status>span:nth-child(2){margin-left:auto}.editor-note{padding:15px 17px;background:#152130;border-top:1px solid #3b4f69;display:flex;gap:10px;align-items:center;color:#84a5d1;font-size:10.5px;line-height:1.9}.editor-note svg{width:16px;height:16px;color:#81a3cf}.test-panel{margin-top:18px;background:#111a26;border:1px solid var(--line);border-radius:8px;overflow:hidden}.test-toolbar{height:44px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding:0 17px}.test-tabs{display:flex;height:100%;align-items:stretch;gap:22px}.test-tab{display:flex;align-items:center;gap:8px;background:none;padding:0 1px;font-size:11px;color:#80a3cf;border-bottom:2px solid transparent;position:relative;top:1px}.test-tab.active{border-color:var(--accent);color:#cfdced}.test-tab>span:first-child{font:10px var(--mono);padding:3px 5px;background:#203046;color:#8aa9d3;border-radius:3px}.test-summary{font-size:10.5px;color:#7ea1cf}.test-summary.success{color:var(--accent)}.test-summary.error{color:var(--amber)}.test-content{min-height:166px;max-height:260px;overflow:auto;scrollbar-width:thin;scrollbar-color:#283d58 transparent}.truth-layout{display:flex;padding:18px 24px;gap:30px}.truth-intro{width:190px;flex-shrink:0;padding-top:3px}.eyebrow{font:10px var(--mono);letter-spacing:1.3px;color:#8ba0bd}.truth-intro h2{font-weight:500;font-size:12px;margin:12px 0 9px;color:#becfe6}.truth-intro p{font-size:10.5px;line-height:1.9;color:#7ea1cf}.preview-label{display:inline-block;font-size:10px;color:#8ba0bd;border:1px solid #3a4f6a;border-radius:3px;padding:3px 6px;margin-top:12px}.truth-table-wrap{min-width:0;flex:1;overflow:auto;scrollbar-width:thin;scrollbar-color:#283d58 transparent}table{border-collapse:collapse;width:100%;font:11px var(--mono);text-align:center;white-space:nowrap}th{font-weight:400;font-size:10.5px;padding:7px 10px;color:#80a3cf;border-bottom:1px solid #3e536e;background:#111a26;position:sticky;top:0;z-index:1}td{padding:7px 10px;border-bottom:1px solid #2a415f;color:#a3bbdc}.expected-cell{color:#80a2ce}.actual-cell{color:var(--amber)}.actual-cell.matched{color:var(--accent)}tbody tr{cursor:pointer;transition:background .1s}tbody tr:hover{background:#203147}tbody tr.selected{background:#1f314a}tbody tr.selected td:first-child{box-shadow:inset 2px 0 0 var(--accent)}td.check-cell{width:35px;color:#7fa2ce}td.check-cell.passed{color:var(--accent)}.truth-empty{font-size:11px;line-height:2;color:#80a2ce;padding:32px 24px}.official-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:160px;text-align:center;color:#92afd6}.official-empty>span:first-child svg{width:20px;height:20px;color:#80a2ce;margin-bottom:8px}.official-empty p{font-size:12px;margin-bottom:8px}.official-empty>span:last-child{font-size:11px;line-height:1.9;color:#7fa2ce}.official-results{padding:15px 20px}.official-result{border:1px solid #3e526d;border-radius:5px;padding:11px 13px;margin-bottom:8px}.official-result-title{display:flex;gap:9px;align-items:center;font:11px var(--mono)}.official-result-title svg{width:16px;height:16px;color:var(--accent)}.official-result.failed .official-result-title svg{color:var(--amber)}.official-result-title>span:last-child{margin-left:auto;font:10.5px var(--sans);color:var(--accent)}.official-result.failed .official-result-title>span:last-child{color:var(--amber)}.official-result p{font-size:11px;color:#99b4d8;margin-top:8px}.official-result details{margin-top:10px;color:#8ba1be;font-size:10.5px}.official-result summary{cursor:pointer}.official-result pre{font:10.5px/1.7 var(--mono);color:#a7bedd;max-height:180px;overflow:auto;white-space:pre-wrap;margin-bottom:0}.official-table{overflow:auto;margin-top:10px;max-height:130px}.official-table .mismatch{color:var(--amber);background:#453d2440}.running-row{display:flex;align-items:center;justify-content:center;height:165px;gap:12px;font-size:12px;color:#aac1df}.spinner{width:15px;height:15px;border:2px solid #4b6486;border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.result-dot{width:5px!important;height:5px;padding:0!important;background:var(--accent)!important;border-radius:50%!important}.result-dot.failed{background:var(--amber)!important}.workspace-footer{display:flex;justify-content:space-between;gap:12px;color:#80a2cf;font-size:10px;letter-spacing:.05em;padding:15px 1px 20px}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%);padding:12px 18px;max-width:90vw;color:#ccdaed;background:#1b2f4a;border:1px solid #59779e;border-radius:8px;font-size:11px;line-height:1.7;box-shadow:0 10px 30px #0006;z-index:30}.toast.error{color:#ecd0a8;background:#403624;border-color:#9a7a45}dialog{border:1px solid #405673;border-radius:12px;padding:26px;color:var(--text);background:#131d2b;box-shadow:0 20px 80px #0009;width:min(560px,calc(100vw - 32px))}dialog::backdrop{background:#050b12d9;backdrop-filter:blur(3px)}.dialog-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:23px}.dialog-header h2{font-size:16px;font-weight:500}.help-steps{display:flex;flex-direction:column;gap:20px}.help-steps>div{display:flex;gap:17px}.help-steps b{font:14px var(--mono);color:var(--accent)}.help-steps p{display:flex;flex-direction:column;gap:8px}.help-steps strong{font-size:12px;font-weight:500;color:#ccd9eb}.help-steps p span{font-size:11px;line-height:1.9;color:#8caad3}.help-shortcuts{display:flex;justify-content:space-between;gap:12px;padding:17px 0;margin-top:19px;border-top:1px solid #395274;font-size:11px;color:#84a5d1}.help-shortcuts kbd{display:inline-block;margin-right:6px;border:1px solid #496282;border-radius:4px;padding:3px 5px}.help-limits{font-size:11px;color:#7ea0ce;line-height:2}.hint-footnote{margin-top:23px;color:#8da2bf;font-size:11px}#hint-text{font-size:14px;line-height:2;color:#c6d6ea}.asm-board{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:20px;color:#95b1d7}.asm-board svg{width:45px;height:45px}.asm-board p{font:13px var(--mono)}.asm-board span{font-size:11px;line-height:1.9;text-align:center;color:#7fa1cf}.studio{grid-template-rows:minmax(0,1fr);height:clamp(620px,calc(100dvh - 260px),900px);min-height:620px}.circuit-panel,.editor-panel,.board{min-height:0}.code-editor{min-height:0;font-size:12px}.input-controls,.editor-note{flex-shrink:0}.header-right{gap:18px}.sound-control{position:relative}.icon-button.sound-enabled{color:var(--accent)}.sound-panel{position:absolute;right:-8px;top:42px;z-index:30;width:248px;padding:18px;background:#121c29;border:1px solid #3f5571;border-radius:10px;box-shadow:0 16px 48px #0008}.sound-panel-top{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:12px;color:#dee7f3}.sound-mute{padding:5px 9px;border:1px solid #4b6486;border-radius:5px;color:#9bb6d9;background:transparent;font:inherit;font-size:11px;cursor:pointer}.sound-mute:hover{background:#1d2c3f}.sound-mute[aria-pressed=true]{color:var(--amber);border-color:#75603c}.sound-volume-label{display:flex;justify-content:space-between;align-items:center;margin-top:21px;font-size:11px;color:#8aa9d2}.sound-volume-label output{font:11px var(--mono);color:#c9d7ea}.sound-panel input[type=range]{display:block;width:100%;height:24px;margin:6px 0 13px;accent-color:var(--accent);cursor:pointer}.sound-caption{display:block;color:#81a3cf;font-size:10.5px;margin-bottom:9px}.sound-samples{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.sound-samples button{background:#172333;border:1px solid #3b4f69;border-radius:5px;padding:8px 6px;font:inherit;font-size:11px;color:#a6bedd;cursor:pointer;transition:background .12s,border-color .12s}.sound-samples button:hover{background:#21334b;border-color:#57749a}.sound-samples button:active{background:#2d4666}.sound-samples button.sound-success{color:var(--accent);border-color:#3e5472}.sound-samples button:disabled{opacity:.35;cursor:default}.sound-control button:focus-visible,.sound-panel input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}:root{--header-height: 65px}.input-controls{gap:10px 16px;padding:14px 17px 8px;max-height:144px;overflow-y:auto}.input-control{font-size:13px;gap:10px}.input-control button{width:38px;height:38px;font-size:16px}.input-control input{width:174px;max-width:100%;min-height:38px;padding:8px 10px;font-size:14px}.input-control:has(input){flex-direction:column;align-items:flex-start;gap:6px;min-width:0;max-width:100%}.node-title{font-size:20px}.node-caption{font-size:11px}.pin-label{font-size:14px}.io-title{font-size:16px}.io-value{font-size:30px}.io-value.bus{font-size:22px}.io-sub{font-size:11px}.wire-label{font-size:13px}.expand-button{display:inline-flex;align-items:center;gap:6px;margin-left:8px;padding:7px 9px;min-height:34px;border:1px solid #4b6486;border-radius:5px;background:#19283b;color:#c0d1e7;font-size:11px;white-space:nowrap}.expand-button:hover{background:#21354f;border-color:var(--accent)}.expand-button[aria-pressed=true]{color:var(--accent);border-color:#627fa6}.brand,.exercise-actions{flex-shrink:0}.exercise-heading,.editor-tab{min-width:0}#file-name,#source-path{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#source-path{margin-right:12px}.sidebar-caption,#chapter-nav,.exercise-list-heading,.sidebar-bottom{flex-shrink:0}.sidebar{overflow-y:auto;overscroll-behavior:contain}.sidebar-close{display:none}.sidebar-backdrop{position:fixed;inset:var(--header-height) 0 0;z-index:50;background:#04090fcc;backdrop-filter:blur(3px)}.palette-menu{top:calc(100% + 8px);max-width:calc(100% - 28px)}.wire-instruction{max-width:calc(100% - 24px);white-space:normal;line-height:1.6}.wire-instruction>span{min-width:0}.circuit-panel>.part-inspector{position:static;flex-shrink:0;margin:0;min-width:0;max-width:none;padding:10px 12px;border:0;border-top:1px solid var(--line);border-radius:0;background:#15202e;box-shadow:none;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}.circuit-panel>.part-inspector .inspector-title{margin:0;gap:8px}.palette [data-add]{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.palette [data-add]:active{cursor:grabbing}.drag-active{user-select:none;-webkit-user-select:none}.drag-active #circuit-svg{cursor:crosshair}.board.drop-ready{box-shadow:inset 0 0 0 2px #9fc2f1a0}.board.drop-ready #circuit-svg{cursor:grabbing}#placement-preview{opacity:.7;pointer-events:none}#placement-preview .node-body{fill:#2a4466;stroke:var(--accent);stroke-width:2;stroke-dasharray:5 4}#placement-preview .node-caption{fill:var(--accent)}.port-halo{fill:transparent;stroke:transparent;pointer-events:none}.port-eligible .port-halo{fill:#9fc2f11a;stroke:#9fc2f15c;stroke-width:1}.port-eligible .port{stroke:var(--accent)}.port-target .port-halo{fill:#9fc2f13d;stroke:var(--accent);stroke-width:2}.port-target .port{fill:var(--accent);stroke:#edf3fc;stroke-width:3}.port-rejected .port-halo{fill:#ef9c9028;stroke:var(--red);stroke-width:2}.port-rejected .port{stroke:var(--red);stroke-width:3}.drag-label{position:fixed;z-index:90;max-width:202px;padding:8px 11px;border:1px solid #57759c;border-radius:6px;background:#122339f2;box-shadow:0 4px 18px #0005;color:#d2deee;font-size:11px;line-height:1.6;pointer-events:none}dialog{max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow-y:auto}.dialog-header{gap:16px}#circuit-svg[data-layout=compact] .node-title{font-size:20px}#circuit-svg[data-layout=compact] .node-caption{font-size:12px}#circuit-svg[data-layout=compact] .pin-label,#circuit-svg[data-layout=compact] .io-title{font-size:16px}#circuit-svg[data-layout=compact] .io-sub{font-size:11px}.circuit-panel.machine-mode .palette,.circuit-panel.machine-mode .input-controls,.circuit-panel.machine-mode .signal-legend,.circuit-panel.machine-mode #undo-button,.circuit-panel.machine-mode #zoom-out,.circuit-panel.machine-mode #zoom-in,.circuit-panel.machine-mode #zoom-label,.circuit-panel.machine-mode #fit-button{display:none!important}.machine{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;gap:10px;padding:14px 16px;overflow:auto;background:var(--canvas);touch-action:auto}.machine-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.machine-bar select{height:30px;border:1px solid #405571;border-radius:6px;background:#162130;color:#c6d5e9;padding:0 8px;font:11px var(--sans)}#machine-program{min-width:0;max-width:100%;flex:0 1 auto}.machine-button{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border:1px solid #405571;border-radius:6px;background:#172333;color:#c6d5e9;font-size:11px}.machine-button:hover{border-color:var(--accent)}.machine-button.primary{background:var(--accent);border-color:var(--accent);color:#102642;font-weight:600;min-width:74px;justify-content:center}.machine-button.primary.running{background:var(--amber);border-color:var(--amber);color:#3a2a10}.machine-button span{font-size:10.5px}.machine-status{margin-left:auto;font:11px var(--mono);color:#80a3cf;display:flex;align-items:center;gap:7px}.machine-status.running{color:var(--accent)}.machine-status.running:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);animation:machine-blink 1s infinite}.machine-status.done{color:var(--amber)}.machine-status.error{color:var(--red)}.machine-main{display:flex;gap:14px;align-items:flex-start;min-height:0}.screen-frame{position:relative;flex:1;min-width:0;max-width:1024px;padding:10px;border:1px solid #3a4d66;border-radius:12px;background:#05080c;box-shadow:inset 0 0 30px #000,0 0 0 4px #0f1722}.screen-frame:after{content:"";position:absolute;inset:10px;pointer-events:none;border-radius:4px;background:repeating-linear-gradient(transparent 0 2px,#0003 2px 3px);box-shadow:inset 0 0 40px #0009}#screen{display:block;width:100%;aspect-ratio:2 / 1;image-rendering:pixelated;border-radius:4px;cursor:pointer;filter:drop-shadow(0 0 6px #9fc2f133)}#screen:focus-visible{outline:2px solid var(--amber);outline-offset:4px}.machine-key{position:absolute;right:18px;top:18px;z-index:1;padding:3px 7px;border-radius:4px;background:var(--amber);color:#3a2a10;font:700 10.5px var(--mono);letter-spacing:.1em}.machine-side{width:196px;flex-shrink:0;display:flex;flex-direction:column;gap:10px}.registers{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #3a4d66;border-radius:8px;overflow:hidden}.registers>div{padding:7px 8px;display:flex;flex-direction:column;gap:3px;background:#0f1620}.registers>div+div{border-left:1px solid #3a4d66}.registers span,.ram-heading span,.machine-cycles span{font:10.5px var(--mono);letter-spacing:.12em;color:#7fa2ce}.registers b{font:500 13px var(--mono);color:var(--text);overflow:hidden;text-overflow:ellipsis}.next-instruction{display:flex;align-items:baseline;gap:8px;padding:7px 9px;border-radius:6px;background:#142131;font-size:11px;color:#80a3cf;min-height:30px}.next-instruction code{font:12px var(--mono);color:var(--accent)}.ram-heading{display:flex;justify-content:space-between;align-items:center}.ram-heading button{background:none;color:#80a3cf;font-size:11px;padding:2px 4px;border-radius:4px}.ram-heading button:hover{color:var(--text);background:#1d2d43}.machine-ram{display:grid;grid-template-columns:1fr 1fr;gap:4px 8px}.machine-ram label{display:flex;align-items:center;gap:6px}.machine-ram span{width:24px;font:11px var(--mono);color:#7fa2ce}.machine-ram input{width:100%;min-width:0;height:24px;padding:0 6px;border:1px solid #2e4666;border-radius:4px;background:#0d141e;color:var(--text);font:11px var(--mono);appearance:textfield;-moz-appearance:textfield}.machine-ram input::-webkit-inner-spin-button{appearance:none}.machine-cycles{display:flex;justify-content:space-between;align-items:baseline}.machine-cycles b{font:11px var(--mono);color:#a7bedd}.machine-error{padding:8px 11px;border-radius:6px;background:#3a1f1c;color:var(--red);font:11px var(--mono)}.machine-hint{font-size:11px;color:#7fa2ce}@keyframes machine-blink{50%{opacity:.3}}@media(max-width:760px){.machine-main{flex-direction:column;align-items:stretch}.machine-side{width:auto}.machine-ram{grid-template-columns:repeat(4,1fr)}.machine-status{margin-left:0;width:100%}}.palette-option.locked{display:flex;align-items:center;gap:6px;background:#131d2b;color:#80a2cf;cursor:not-allowed;opacity:1}.palette-option.locked svg{width:12px;height:12px}.palette-option.locked:hover{background:#131d2b}.clear-dialog{width:min(460px,calc(100vw - 32px));padding:0;overflow:hidden;border-color:#547197;background:radial-gradient(120% 70% at 50% 0%,#1c3658,#131d2b 62%);box-shadow:0 0 0 1px #9fc2f122,0 24px 120px #000c,0 0 90px #9fc2f126}.clear-dialog[open]{animation:clear-pop .45s cubic-bezier(.2,1.4,.4,1)}.clear-dialog::backdrop{background:#03070de6;backdrop-filter:blur(4px)}.clear-burst{position:absolute;left:50%;top:96px;pointer-events:none}.clear-burst i{position:absolute;width:5px;height:5px;border-radius:1px;background:var(--accent);box-shadow:0 0 8px var(--accent);opacity:0;animation:clear-spark .9s var(--d) ease-out forwards}.clear-burst i:nth-child(3n){background:var(--amber);box-shadow:0 0 8px var(--amber)}.clear-body{position:relative;padding:34px 30px 26px;display:flex;flex-direction:column;align-items:center;text-align:center}.clear-eyebrow{font:11px var(--mono);letter-spacing:.24em;color:#8fadd4}.clear-title{margin-top:14px;font:700 36px/1.02 var(--mono);letter-spacing:.04em;color:var(--accent);text-shadow:0 0 24px #9fc2f180;animation:clear-title .6s .05s both}.clear-chip{margin-top:14px;display:flex;gap:12px;align-items:baseline;color:#97b2d7;font-size:12px}.clear-chip b{font:500 17px var(--mono);color:var(--text)}.clear-score{margin-top:18px;display:flex;flex-direction:column;align-items:center;gap:8px}.clear-stars{display:flex;gap:10px;font-size:40px;line-height:1}.clear-star{color:#203046;text-shadow:0 0 0 transparent}.clear-star.earned{color:var(--amber);text-shadow:0 0 18px #e9bb79aa;animation:clear-star .45s calc(.4s + var(--i) * .28s) cubic-bezier(.2,1.6,.4,1) both}.clear-nands{display:flex;align-items:baseline;gap:8px}.clear-nands b{font:600 30px var(--mono);color:var(--text)}.clear-nands span{font:11px var(--mono);letter-spacing:.16em;color:#80a3cf}.clear-nands em{font:700 10.5px var(--mono);letter-spacing:.14em;font-style:normal;color:#3a2a10;background:var(--amber);padding:3px 7px;border-radius:4px;align-self:center;animation:clear-rise .4s 1.3s both}.clear-goals{font-size:11px;color:#80a3cf}.clear-score:not([hidden])~.unlock-card{animation-delay:1.4s}.clear-score:not([hidden])~.unlock-card:after{animation-delay:1.85s}@keyframes clear-star{0%{transform:scale(2.4) rotate(-30deg);opacity:0}}.clear-stats{margin-top:18px;width:100%;display:flex;border:1px solid #39506f;border-radius:8px;background:#0d141eaa}.clear-stats>div{flex:1;padding:11px 6px;display:flex;flex-direction:column;gap:6px;animation:clear-rise .4s both}.clear-stats>div+div{border-left:1px solid #39506f}.clear-stats>div:nth-child(2){animation-delay:.1s}.clear-stats>div:nth-child(3){animation-delay:.2s}.clear-stats span{font-size:11px;color:#80a3cf}.clear-stats b{font:500 16px var(--mono);color:var(--text)}.unlock-card{position:relative;margin-top:16px;width:100%;display:flex;align-items:center;gap:16px;padding:16px 16px 14px;border:1px solid var(--amber);border-radius:10px;background:linear-gradient(135deg,#3a2f1c,#121c29 70%);text-align:left;box-shadow:0 0 30px #e9bb7926;animation:clear-unlock .55s .7s both}.unlock-card:after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(105deg,transparent 35%,#fff3 50%,transparent 65%);background-size:250% 100%;animation:clear-shine 1.1s 1.15s both;pointer-events:none}.unlock-badge{position:absolute;top:-9px;left:14px;padding:2px 8px;border-radius:4px;background:var(--amber);color:#3a2a10;font:700 10.5px var(--mono);letter-spacing:.16em}.unlock-chip{width:128px;flex-shrink:0}.unlock-chip svg{display:block;width:100%;height:auto;max-height:120px}.unlock-chip rect{fill:#2b2618;stroke:var(--amber);stroke-width:1.6}.unlock-chip path{stroke:var(--amber);stroke-width:1.6}.unlock-chip circle{fill:var(--amber)}.unlock-chip text{fill:#d8c29c;font:10.5px var(--mono)}.unlock-chip .unlock-chip-name{fill:#f6dcae;font:600 15px var(--mono)}.unlock-text{display:flex;flex-direction:column;gap:6px;min-width:0}.unlock-text strong{font-size:14px;color:#f6dcae;font-weight:600}.unlock-text span{font-size:11px;line-height:1.6;color:#c9b896}.clear-chapter{margin-top:14px;font:11px var(--mono);color:var(--amber);letter-spacing:.04em;animation:clear-rise .4s 1.2s both}.clear-actions{margin-top:24px;width:100%;display:flex;gap:10px;justify-content:flex-end}.clear-actions .button.primary{flex:1}@keyframes clear-pop{0%{transform:scale(.86);opacity:0}}@keyframes clear-title{0%{transform:translateY(8px) scale(1.15);opacity:0;letter-spacing:.3em}}@keyframes clear-rise{0%{transform:translateY(8px);opacity:0}}@keyframes clear-unlock{0%{transform:rotateX(80deg) scale(.9);opacity:0}70%{transform:rotateX(-8deg) scale(1.02);opacity:1}}@keyframes clear-shine{0%{background-position:120% 0}to{background-position:-120% 0}}@keyframes clear-spark{0%{transform:translate(0) scale(1.4);opacity:1}to{transform:translate(var(--x),var(--y)) scale(.3);opacity:0}}@media(max-width:620px){.clear-title{font-size:28px}.unlock-card{flex-direction:column;align-items:flex-start}.clear-actions{flex-direction:column-reverse}}@media(min-width:1600px){.workspace{padding:0 40px}.sidebar{width:236px}.studio{grid-template-columns:minmax(0,1fr) 390px}.truth-intro{width:220px}}@media(max-width:1180px){.sidebar{width:196px}.workspace{padding:0 22px}.studio{grid-template-columns:minmax(0,1fr) 310px}.board-tip,.button.primary kbd{display:none}.truth-intro{width:156px}.truth-layout{gap:18px;padding:16px 18px}}@media(max-width:1100px){:root{--header-height: 64px}.app-header{position:sticky;top:0;z-index:60;height:var(--header-height);padding:0 22px;gap:16px}.header-note,.header-divider{display:none}.mobile-menu{display:inline-flex}.header-right{gap:14px}.header-right .icon-button,.mobile-menu{width:36px;height:36px}.app-layout{min-height:calc(100dvh - var(--header-height))}.sidebar{display:none;position:fixed;left:0;top:var(--header-height);z-index:55;height:calc(100vh - var(--header-height));height:calc(100dvh - var(--header-height));width:min(300px,calc(100vw - 48px));padding:16px 16px 0;box-shadow:12px 0 50px #0006}.sidebar.open{display:flex}.sidebar-close{display:inline-flex;width:40px;height:40px}.sidebar-caption{padding:0 4px;margin-bottom:12px;font-size:11px}.chapter-button{min-height:44px}.exercise-button{min-height:48px}.exercise-list-heading{padding-top:20px}.sidebar-bottom{margin:0 -16px;padding:18px 22px}body.drawer-open{overflow:hidden}.workspace{width:100%;max-width:none}}@media(max-width:959px){.workspace{padding:0 24px}.exercise-header{gap:20px;padding:24px 0}.studio{height:auto;min-height:0;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto}.circuit-panel{height:clamp(620px,72dvh,840px)}.expand-button{display:none}.editor-panel{height:clamp(360px,48dvh,520px);border-left:0;border-top:1px solid var(--line)}.editor-note{display:none}.code-editor{font-size:13px;line-height:24px}.panel-toolbar{padding:0 16px;min-height:52px}.panel-title{font-size:12px}.toolbar-actions .icon-button{width:34px;height:34px}.save-button{min-height:34px;font-size:11px}.input-control{font-size:13px}.input-control button{width:38px;height:38px;font-size:16px}.input-control input{min-height:38px;width:174px;font-size:14px}.palette{padding-top:14px}.chip-button{min-height:36px;font-size:12px}#more-parts{font-size:12px}.palette-option{min-height:36px;font-size:12px}.palette-menu{width:320px;gap:8px}.board-tip{display:inline}.truth-intro{display:none}.test-content{max-height:340px}.test-toolbar{height:auto;min-height:52px;flex-wrap:wrap;gap:0 18px;padding:0 16px}.test-tabs{min-height:52px;gap:20px}.test-tab{min-height:44px;font-size:12px}.test-summary{font-size:11px;padding:8px 0}table{font-size:12px}th{font-size:11px}td{padding:10px 12px}.inspector-actions button{min-height:36px;font-size:11px}.workspace-footer{font-size:11px}.official-results{padding:14px}.official-result p{font-size:12px;line-height:1.8}.official-result pre{font-size:11px;overflow-wrap:anywhere}}@media(max-width:700px){.circuit-panel{height:720px}}@media(max-width:620px){.app-header{padding:0 12px;gap:8px}.brand{font-size:18px;gap:8px}.brand-mark{width:25px;height:25px}.header-right{gap:8px}.local-status{display:none}.header-right .icon-button,.mobile-menu{width:44px;height:44px}.workspace{padding:0 12px}.exercise-header{flex-wrap:wrap;gap:18px;padding:22px 0 20px}.exercise-heading{width:100%}h1{font-size:28px}.breadcrumb{font-size:10.5px;gap:10px}.exercise-tag{font-size:12px}.exercise-heading p{font-size:12px;line-height:1.8}.exercise-actions{width:100%;gap:10px}.exercise-actions .button{min-height:44px;font-size:13px}.exercise-actions .secondary{flex:1}.exercise-actions .primary{flex:2}.circuit-panel{height:740px}.circuit-panel>.panel-toolbar{flex-direction:column;align-items:stretch;height:auto;min-height:100px;padding:6px 12px}.panel-title{min-height:34px}.toolbar-actions{justify-content:space-between;gap:8px}.toolbar-actions .icon-button{width:44px;height:44px}.toolbar-divider{display:none}#zoom-label{font-size:11px;min-width:48px}.palette{padding:12px 12px 0;gap:10px}.palette-caption{display:none}.chip-button{min-height:44px}.palette-menu{left:12px;max-width:calc(100% - 24px);max-height:min(320px,45dvh)}.palette-option{min-height:44px}.input-controls{padding:12px 12px 8px;gap:10px 14px;max-height:164px}.input-control{gap:8px}.input-control button{width:44px;height:44px;font-size:16px}.input-control input{min-height:44px;width:198px;font-size:16px}.board-footer{height:auto;min-height:56px;display:grid;grid-template-columns:1fr auto;gap:6px 10px;padding:8px 12px;font-size:11px}.signal-legend{grid-column:1;grid-row:1;gap:12px}.part-count{grid-column:2;grid-row:1;font-size:11px}.board-tip{grid-column:1 / -1;grid-row:2;margin:0;font-size:11px}.board-notice{font-size:11px;bottom:10px;left:10px;right:10px}.part-inspector{top:8px;right:8px;max-width:calc(100% - 16px)}.inspector-actions button{min-height:44px;font-size:12px}.wire-instruction{bottom:10px;padding-left:10px;font-size:12px}.wire-instruction .icon-button{width:44px;height:44px}.editor-panel{height:clamp(360px,50dvh,480px)}.editor-tab{font-size:12px}.editor-panel .panel-toolbar{min-height:56px;padding:0 12px}.save-button{min-height:44px;font-size:12px}.save-button kbd{display:none}.editor-topline{height:36px}.editor-topline>span:first-child{font-size:11px}#save-status{font-size:11px}.code-editor{font-size:16px;line-height:26px}.editor-status{height:32px;font-size:11px}.test-toolbar{padding:0 12px;gap:0}.test-tabs{width:100%;gap:18px}.test-tab>span:first-child{font-size:11px}.test-summary{display:block;width:100%;padding:2px 0 12px;line-height:1.6}.test-content{max-height:320px}.truth-layout{padding:12px}table{font-size:12px}th{font-size:11px;padding:10px}td{height:44px;padding:10px}.official-result{padding:12px 10px}.official-result-title{flex-wrap:wrap;overflow-wrap:anywhere}.official-result details{font-size:11px}.official-result summary{min-height:36px;display:flex;align-items:center}.workspace-footer>span:last-child{display:none}dialog{padding:20px}.dialog-header .icon-button{width:44px;height:44px}.help-steps{gap:18px}.help-steps>div{gap:12px}.help-steps p span,.help-limits{font-size:12px}.help-steps strong{font-size:13px}.help-shortcuts{flex-wrap:wrap;font-size:12px}.sound-panel{right:-52px;top:52px;width:min(280px,calc(100vw - 24px));max-height:calc(100dvh - 88px);overflow-y:auto}.sound-panel-top{font-size:14px}.sound-volume-label,.sound-caption{font-size:12px}.sound-volume-label output{font-size:12px}.sound-samples button,.sound-mute{min-height:44px;font-size:12px}.sound-panel input[type=range]{height:36px}}@media(pointer:coarse){.icon-button,.toolbar-actions .icon-button,.header-right .icon-button,.input-control button{min-width:44px;min-height:44px}.button,.chip-button,.palette-option,.chapter-button,.exercise-button,.inspector-actions button,.sound-samples button,.sound-mute{min-height:44px}.toolbar-actions{gap:8px}.input-control input{min-height:44px;font-size:16px}.input-controls{max-height:170px;overflow-y:auto}.test-tab{min-height:44px}td{height:44px}}.editor-panel{order:-1;border-left:0;border-right:1px solid var(--line)}.sound-typing{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:11px;color:#a6bedd;cursor:pointer}.sound-typing input{accent-color:var(--accent)}@media(min-width:960px){.studio{grid-template-columns:minmax(0,1fr) minmax(340px,40%)}.code-editor{font-size:13px}}@media(max-width:959px){.editor-panel{border-right:0;border-top:0;border-bottom:1px solid var(--line)}}.machine{container-type:inline-size}.machine>*{flex-shrink:0}@container (max-width: 620px){.machine-main{flex-direction:column;align-items:stretch}.machine-side{width:auto}.machine-ram{grid-template-columns:repeat(4,1fr)}}.side-column{display:flex;flex-direction:column;min-width:0;min-height:0}.side-column .circuit-panel{flex:1 1 58%}.side-column .circuit-panel.machine-mode{flex-basis:72%}.side-column .test-panel{flex:1 1 42%;display:flex;flex-direction:column;min-height:0;margin:0;border:0;border-top:1px solid var(--line);border-radius:0;background:#101823}.side-column .test-toolbar{height:40px;flex-shrink:0;padding:0 14px}.side-column .test-content{flex:1;min-height:0;max-height:none}@media(min-width:960px){.studio.circuit-expanded{grid-template-columns:minmax(300px,34%) minmax(0,1fr)}}@media(max-width:959px){.side-column .circuit-panel,.side-column .test-panel{flex:none}.side-column .test-content{max-height:360px}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.truth-table-wrap{padding:0}.truth-table{width:100%;border-collapse:collapse;font:12px var(--mono)}.truth-table th{position:sticky;top:0;z-index:1;padding:7px 12px;background:#141e2b;color:#80a3cf;font-weight:500;text-align:center;border-bottom:1px solid var(--line)}.truth-table td{padding:5px 12px;text-align:center;color:#bccee5;border-bottom:1px solid #24364f}.truth-table .first-out{border-left:1px solid #3d516c}.truth-table tr[data-case]{cursor:pointer}.truth-table tr[data-case]:hover td{background:#15202f}.truth-table tr.selected td{background:#192b44}.truth-table tr.selected td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.truth-table .out-cell.ok{color:var(--text);font-weight:600}.truth-table .out-cell.bad{color:var(--red);font-weight:600}.truth-table .out-cell.pending{color:#80a3cf}.truth-table .out-cell small{margin-left:6px;font:11px var(--sans);color:#80a3cf;font-weight:400}.truth-table .check-cell{width:28px;padding-left:0;padding-right:10px;color:#81a3cf}.truth-table tr.passed .check-cell{color:var(--accent)}.side-column #truth-content>.truth-table-wrap{padding:0!important}.side-column #truth-content table:not(.truth-table){width:100%;font:11px var(--mono);border-collapse:collapse}.side-column #truth-content table:not(.truth-table) th,.side-column #truth-content table:not(.truth-table) td{padding:5px 10px;text-align:center;border-bottom:1px solid #24364f}.side-column #truth-content table:not(.truth-table) th{position:sticky;top:0;background:#141e2b;color:#80a3cf;font-weight:500}.side-column .official-empty{min-height:0;height:100%;padding:16px}.side-column .official-results{padding:12px 14px}.board>.palette{position:absolute;top:10px;left:10px;z-index:4;padding:4px;gap:4px;border:1px solid #3a4d66;border-radius:8px;background:#101822e6;backdrop-filter:blur(4px);box-shadow:0 4px 16px #0006}.board>.palette .chip-button{padding:5px 9px}.board>.palette .palette-menu{top:calc(100% + 6px);left:0}.save-status{margin-left:10px;font-size:11px;color:#7ea1ce;white-space:nowrap}.mode-note{margin:0 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:6px;color:#a6bedd;font-size:12px;line-height:1.8}.credits-list{font-size:12px;line-height:1.9;color:#a6bedd}.credits-list dt{margin-top:18px;font-size:13px;font-weight:500;color:var(--text)}.credits-list dd{margin:5px 0 0}.credits-list a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.editor-actions,.backup-actions,.workspace-actions{display:flex;gap:8px;align-items:center}.editor-tab{min-width:0}#file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-actions{flex-shrink:0}.music-toggle{display:flex;gap:7px;align-items:center;min-height:36px;padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:#162231;color:var(--text);font:11px var(--mono);white-space:nowrap}.music-toggle span{color:#a6bedd;font:11px var(--sans)}.music-toggle[aria-pressed=true]{border-color:#6f91bc}.music-toggle:hover{background:#203147}@media(max-width:480px){.header-right .sound-control{display:none}}@media(max-width:380px){.app-header,.header-right{gap:4px}.brand-mark{display:none}.brand{gap:0}.exercise-actions{flex-wrap:wrap}}.backup-actions{flex-wrap:wrap;margin-top:14px}.workspace-dialog{width:min(700px,calc(100vw - 32px))}.workspace-note{font-size:12px;line-height:1.9;color:#a6bedd;overflow-wrap:anywhere}.workspace-field{display:block;margin:18px 0 8px;font-size:12px}.workspace-select{width:100%;min-height:40px;padding:8px;border:1px solid #58769d;border-radius:6px;color:var(--text);background:#101b29;font:12px var(--sans)}.workspace-preview{margin:12px 0;padding:14px;min-height:130px;max-height:35vh;overflow:auto;background:#101822;border:1px solid var(--line);border-radius:6px;font:11px/1.8 var(--mono);color:var(--code-text);tab-size:4}.workspace-status{min-height:1.8em;margin-top:10px;font-size:12px;line-height:1.8;color:#a6bedd}.workspace-status.error{color:var(--amber)}.workspace-actions{justify-content:flex-end;flex-wrap:wrap;margin-top:14px}.import-exercises{margin:16px 0;padding:0;list-style:none;max-height:32vh;overflow:auto}.import-exercises li{padding:9px 0;border-bottom:1px solid var(--line);font:12px/1.7 var(--mono);overflow-wrap:anywhere}.import-exercises small{display:block;color:#a6bedd;font:11px/1.7 var(--sans)}.workspace-dialog button,.backup-actions button{min-height:40px}@media(max-width:620px){.editor-panel .panel-toolbar{flex-wrap:wrap;height:auto;padding-top:8px;padding-bottom:8px}.editor-tab{flex:1 1 150px}.editor-actions{margin-left:auto}.music-toggle{min-height:44px;padding:6px 8px}.workspace-actions .button{flex:1 1 auto}}.settings-dialog{width:min(560px,calc(100vw - 32px))}.settings-section{padding:4px 0 18px}.settings-section+.settings-section{border-top:1px solid #395274;padding-top:18px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 0}.settings-label{display:flex;flex-direction:column;gap:4px}.settings-label strong{font-size:13px;font-weight:500;color:var(--text)}.settings-label span{font-size:11px;color:#80a3cf}.settings-slider{display:flex;align-items:center;gap:10px}.settings-slider input{width:180px;accent-color:var(--accent)}.settings-slider output{width:36px;text-align:right;font:11px var(--mono);color:#a6bedd}.switch{position:relative;width:40px;height:22px;flex-shrink:0;cursor:pointer}.switch input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}.switch span{position:absolute;inset:0;border-radius:11px;background:#203046;border:1px solid #445b7a;transition:background .15s;pointer-events:none}.switch span:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#82a4d0;transition:transform .15s,background .15s}.switch input:checked+span{background:#1c3f6d;border-color:var(--accent)}.switch input:checked+span:after{transform:translate(18px);background:var(--accent)}.switch input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}.stage-music{display:flex;flex-direction:column;gap:6px;margin-top:8px}.stage-music-row{display:grid;grid-template-columns:128px minmax(0,1fr) 32px;align-items:center;gap:10px;padding:6px 8px;border-radius:6px}.stage-music-row.current{background:#172538}.stage-name{display:flex;align-items:center;gap:8px;font-size:12px;color:#becfe6}.stage-name b{font:11px var(--mono);color:#7fa2ce;font-weight:400}.stage-music-row.current .stage-name b{color:var(--accent)}.stage-music-row select{min-width:0;height:30px;border:1px solid #405571;border-radius:6px;background:#101b29;color:#c6d5e9;padding:0 8px;font:12px var(--sans)}.audition{width:30px;height:30px;border:1px solid #405571;border-radius:6px;background:#172333;color:#a6bedd;font-size:11px}.audition:hover{border-color:var(--accent);color:var(--text)}.audition.playing{background:var(--accent);border-color:var(--accent);color:#102642}.settings-note{margin-top:10px;font-size:11px;line-height:1.7;color:#80a3cf}@media(max-width:620px){.stage-music-row{grid-template-columns:minmax(0,1fr) 40px}.stage-name{grid-column:1 / -1}.settings-slider input{width:120px}}.lecture-dialog[open]{display:flex;flex-direction:column;margin:0 0 0 auto;width:min(480px,100vw);height:100vh;height:100dvh;max-height:none;max-width:none;padding:0;border:0;border-left:1px solid var(--line);border-radius:0;background:var(--panel);animation:lecture-in .22s ease-out}.lecture-dialog::backdrop{background:#04091180;backdrop-filter:blur(2px)}.lecture-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:22px 22px 16px;border-bottom:1px solid var(--line);flex-shrink:0}.lecture-eyebrow{font:11px var(--mono);letter-spacing:.16em;color:var(--accent)}.lecture-head h2{margin-top:8px;font-size:20px;font-weight:600}.lecture-body{flex:1;overflow-y:auto;padding:6px 22px 18px;scrollbar-width:thin}.lecture-body section{padding:16px 0;border-bottom:1px solid #22385a}.lecture-body section:last-child{border-bottom:0}.lecture-body h3{font-size:13px;font-weight:600;color:var(--muted);margin:0 0 10px}.lecture-body p,.lecture-body li{font-size:13px;line-height:1.8;color:var(--text)}.lecture-body ul{margin:0;padding-left:1.2em}.lecture-body li+li{margin-top:6px}.lecture-focus{margin-top:10px;padding:16px!important;border:1px solid #2f5a85!important;border-radius:10px;background:#15304f}.lecture-focus h3{color:var(--accent)}.lecture-focus h3 span{font-family:var(--mono);color:var(--text);margin-right:4px}.lecture-focus p{margin-bottom:10px}.lecture-focus li::marker{color:var(--signal)}.lecture-summary li::marker{color:var(--accent)}.lecture-note{font-size:12px!important;color:var(--muted)!important;margin-bottom:10px}.lecture-note b{color:var(--signal);font-weight:500}.lecture-units{list-style:none;margin:0;padding:0;display:grid;gap:4px}.lecture-units li{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:6px;margin:0!important}.lecture-units li span{font:11px var(--mono);color:var(--muted);width:30px;flex-shrink:0}.lecture-units li.related{background:#2c2a1c;color:#fff3cf}.lecture-units li.related span{color:var(--signal)}.lecture-units em{margin-left:auto;font-style:normal;font-size:11px;color:var(--signal)}.lecture-links{display:grid;grid-template-columns:1fr 1fr;gap:8px}.lecture-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#102038}.lecture-link:hover{border-color:var(--accent);background:#15304f}.lecture-link>span:nth-child(2){display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.lecture-link b{font-size:13px;font-weight:500}.lecture-link small{font-size:11px;color:var(--muted)}.lecture-link svg{width:16px;height:16px;flex-shrink:0;color:var(--muted)}.lecture-link-icon svg{width:18px;height:18px;color:var(--accent)}.lecture-credit{flex-shrink:0;padding:12px 22px 16px;border-top:1px solid var(--line);font-size:11px;line-height:1.7;color:var(--muted)}.lecture-credit a{color:var(--accent);text-decoration:underline}@keyframes lecture-in{0%{transform:translate(40px);opacity:0}}@media(max-width:620px){.lecture-links{grid-template-columns:1fr}}@media(min-width:1101px){.mobile-menu{display:inline-flex;margin-right:-12px}body.sidebar-collapsed .sidebar{display:none}}@media(min-width:960px)and (min-height:600px){body{height:100vh;height:100dvh;overflow:hidden}.app-layout{height:calc(100dvh - var(--header-height));min-height:0}.sidebar{height:100%}.workspace{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.exercise-header{flex-shrink:0;padding:18px 0 14px}.studio{flex:1 1 auto;height:auto;min-height:0;margin-bottom:14px}.workspace-footer{display:none}}@media(min-width:960px)and (min-height:600px)and (max-height:820px){.editor-note{display:none}.exercise-header{padding:12px 0 10px}.breadcrumb{margin-bottom:8px}.exercise-heading p{margin-top:6px}.studio{margin-bottom:10px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.desktop-notice{display:none}@media(max-width:959px){body{margin:0;height:auto;min-height:100dvh;overflow:auto}body>:not(.desktop-notice){display:none!important}dialog::backdrop{display:none}.desktop-notice{display:flex;min-height:100dvh;padding:40px 24px;flex-direction:column;justify-content:center;align-items:center;text-align:center;outline:none}.desktop-notice-brand{margin-bottom:28px;font:14px var(--mono);color:var(--accent)}.desktop-notice h1{font:500 22px/1.5 var(--sans);letter-spacing:0}.desktop-notice p:not(.desktop-notice-brand){margin-top:20px;font-size:13px;line-height:1.9;color:#a6bedd}}.practice-panel{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.practice-panel[hidden],.lecture-panel[hidden]{display:none!important}.study-tabs{display:flex;flex:0 0 40px;border-bottom:1px solid var(--line);background:#131f2e}.study-tabs button{flex:1;color:#a4bad5;font:12px var(--sans);border-bottom:2px solid transparent}.study-tabs button[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent);background:#192b40}.lecture-panel{display:flex;flex:1;min-height:0;flex-direction:column;background:var(--panel)}.lecture-panel .lecture-head{padding:17px 20px}.lecture-panel .lecture-head h2{font-size:19px;margin-top:5px}.lecture-panel .lecture-body{padding:0 20px 20px;overscroll-behavior:contain}.lecture-panel .lecture-body p,.lecture-panel .lecture-body li{font-size:15px;line-height:1.85}.lecture-panel .lecture-body h3{color:var(--text);font-size:14px}.lecture-panel .lecture-focus{padding:15px!important}.lecture-panel .lecture-links{grid-template-columns:1fr}.lecture-panel .lecture-link{padding:10px 12px}.lecture-panel details{padding:14px 0;border-bottom:1px solid var(--line)}.lecture-panel summary{cursor:pointer;color:var(--accent);font-size:14px}.lecture-panel details[open] summary{margin-bottom:12px}.lecture-panel .lecture-credit{padding:10px 20px;font-size:10px;line-height:1.6}.lecture-preview-note{padding-top:16px;color:var(--muted)}.lecture-invitation{flex-shrink:0;padding:0 0 12px;font-size:12px;color:#a4bad5}.lecture-invitation button{color:var(--accent);text-decoration:underline;padding:4px}.access-note{font-size:11px;line-height:1.65;color:#a4bad5;padding:9px 16px;margin:0}.chapter-reading{margin:0 14px 10px;font-size:11px;padding:8px;flex-shrink:0}.exercise-button.locked{cursor:help}.exercise-button.locked .exercise-title{color:#9aafcb}.exercise-button.locked .exercise-state{color:#91a7c3}.unlock-condition{display:block;font:10px/1.5 var(--sans);color:#91a7c3;margin-top:3px}.exercise-state svg{width:14px;height:14px}.command-trigger{padding:7px 9px;font-size:11px;gap:8px;white-space:nowrap}#commands-dialog{width:min(620px,90vw);padding:22px}#command-search{width:100%;padding:12px;margin:8px 0;border:1px solid var(--line);border-radius:6px;background:#0e1826;color:var(--text);font-size:16px}#commands-dialog label{font-size:12px;color:var(--muted)}.command-list{max-height:46vh;overflow-y:auto;margin-top:12px}.command-option{display:flex;width:100%;align-items:center;justify-content:space-between;text-align:left;gap:16px;min-height:45px;padding:10px;border-radius:5px;color:var(--text);background:transparent}.command-option small{color:#a4bad5;font-size:11px}.command-option[aria-selected=true]{background:#233e5c}.command-option[aria-disabled=true]{color:#91a7c3;cursor:not-allowed}:where(button,a,input,select,summary,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:3px}#circuit-svg [role=button]:focus-visible .node-body{stroke:var(--accent);stroke-width:3px}#circuit-svg [role=button]:focus-visible .port-halo{stroke:var(--accent);stroke-width:2px}@media(min-width:960px){.studio{grid-template-columns:minmax(330px,1fr) minmax(340px,40%)}.studio.reading{grid-template-columns:minmax(330px,1fr) minmax(360px,48%)}}.study-tabs button{background:transparent;cursor:pointer}
