@font-face{font-family:LabSans;src:local('Segoe UI')}*{box-sizing:border-box} :root{font-family:LabSans,'Microsoft YaHei','PingFang SC',sans-serif;color:#26372f;background:#f5f7f4;font-synthesis:none;--ink:#26372f;--muted:#8c9890;--line:#e2e8df;--green:#d9eea7;--orange:#ed7647;--power:#b29a68;--signal:#77a591;--control:#a38bbf;--story:#e4a15e}body{margin:0}button,input{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:9px;color:var(--ink);padding:10px 16px;transition:background .18s,box-shadow .18s,transform .18s}button:hover{background:#edf3e8}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:3px solid #6b9e79;outline-offset:4px}button.primary{background:var(--ink);color:#fff;border-color:var(--ink);padding:12px 23px;font-weight:600}button.primary:hover{background:#415c4b}button.secondary{background:transparent}.topbar{height:85px;border-bottom:1px solid var(--line);background:#fcfdfb;display:flex;align-items:center;padding:0 32px;gap:40px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);font-size:19px;letter-spacing:.5px;min-width:204px}.brand b{font-size:15px;font-weight:500;letter-spacing:1.8px}.brand small{display:block;font-size:10px;color:#7f8d82;letter-spacing:2px;margin-top:4px}.brand-icon{width:42px;height:42px;display:grid;place-items:center;background:var(--ink);color:var(--green);border-radius:13px;font-size:25px;letter-spacing:-8px;padding-right:7px}.header-meta{font-size:12px;color:#78847d;display:flex;gap:9px;align-items:center}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#80a77e;flex-shrink:0}.toolbar{margin-left:auto;display:flex;gap:9px;align-items:center}.icon-button{border:none;background:transparent;display:flex;gap:9px;align-items:center}.toolbar button{font-size:12px}.toolbar #start{background:var(--orange);border-color:var(--orange);min-width:136px}.toolbar #start:hover{background:#df6636}.shell{display:grid;grid-template-columns:236px 1fr;min-height:calc(100vh - 85px)}.sidebar{border-right:1px solid var(--line);padding:33px 19px 20px;display:flex;flex-direction:column;background:#f9faf7}.side-heading{font-size:14px;font-weight:600;margin:0 8px;display:flex;justify-content:space-between}.side-heading span{font:11px monospace;border:1px solid var(--line);border-radius:4px;padding:2px 5px;color:#879388}.side-hint{font-size:11px;color:#99a196;margin:10px 8px 23px}.module-nav-item{display:flex;width:100%;padding:11px 9px;margin-bottom:6px;gap:12px;text-align:left;border:1px solid transparent;background:transparent;align-items:center;border-radius:12px}.module-nav-item:hover,.module-nav-item.active{background:#edf2e7;border-color:#dce4d4}.nav-thumb{width:43px;height:43px;display:grid;place-items:center;background:#fff;border:1px solid #e7ebdf;border-radius:9px;flex-shrink:0}.nav-thumb img{width:35px;height:35px;object-fit:contain}.nav-info strong{font-size:12px;font-weight:600;display:block}.nav-info small{font-size:10px;color:#969e94;display:block;margin-top:4px}.nav-arrow{margin-left:auto;font-size:17px;color:#abb5a5}.side-bottom{margin-top:auto;padding:40px 9px 6px}.tiny-cap{font:8px monospace;letter-spacing:1.3px;color:#9aa58f}.side-bottom p{line-height:1.8;font-size:20px;font-weight:500;margin:15px 0 24px;color:#5b6b56}.simulation-label{font-size:10px;color:#86947b;border-top:1px solid var(--line);padding-top:18px}main{min-width:0;padding:31px 34px 15px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}.eyebrow{font:9px LabSans,sans-serif;letter-spacing:2.1px;color:#809077;display:flex;align-items:center;gap:7px;font-weight:600}.eyebrow>span{display:inline-block;width:15px;height:1px;background:#90a579}h1{font-size:34px;letter-spacing:2px;font-weight:500;margin:10px 0 10px;line-height:1.35}h1>span{position:relative}h1>span:after{content:'';position:absolute;height:9px;background:var(--green);left:0;right:0;bottom:2px;z-index:-1}h1 i{font-style:normal;color:#aac575;font-size:37px;margin-left:16px;display:inline-block;transform:rotate(10deg)}.intro p{font-size:11px;color:#8d978a;letter-spacing:.3px;margin:0}.intro-separator{color:#bcc6b2;margin:0 8px}.edit-button{display:flex;gap:7px;align-items:center;font-size:11px;background:#fcfdf9}.edit-button small{font-size:9px;color:#8a9683;padding-left:6px;border-left:1px solid var(--line)}.workbench{border:1px solid #dce4d6;border-radius:16px;background:#fcfdf9;box-shadow:0 5px 25px #35452b04;overflow:hidden}.board-top{display:flex;justify-content:space-between;padding:16px 22px;font-size:10px;border-bottom:1px solid #edf0e6;align-items:center;height:49px;background:#ffffff80}.board-top>span:first-child{display:flex;gap:8px;align-items:center}.board-top b{font-weight:500}.board-divider{color:#d4dbcd;margin:0 6px}.board-top #board-instruction{color:#9aA390}.board-mark{letter-spacing:1.7px;font-size:8px;color:#a2ae96}#viewport{position:relative;height:clamp(480px,calc(100vh - 365px),850px);overflow:hidden;touch-action:none;background-color:#fcfdf9;background-image:radial-gradient(#cbd5c3 0.65px,transparent .65px);background-size:20px 20px;cursor:grab}#viewport:active{cursor:grabbing}#world{position:absolute;left:0;top:0;width:1280px;height:800px;transform-origin:0 0;will-change:transform}.world-note{position:absolute;left:48px;top:36px;pointer-events:none}.world-note>span{font-size:13px;color:#9aab91;letter-spacing:2px}.world-note small{display:block;font-size:10px;color:#b1bba9;margin-top:7px}.world-signature{position:absolute;right:54px;bottom:25px;font:8px monospace;color:#b2bda7;letter-spacing:1.8px}#wires{position:absolute;width:1280px;height:800px;inset:0;overflow:visible}.wire{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round;opacity:.78}.wire-flow{stroke-dasharray:3 15;stroke-width:3;opacity:0;animation:flow 1s linear infinite}.running .wire-flow{opacity:.8}.wire-story{stroke-dasharray:6 6}.running .wire-flow.wire-story{opacity:0}.burst .wire-flow.wire-story,.done .wire-flow.wire-story{opacity:1}.wire-dot{stroke:#fcfdf9;stroke-width:2}.wire-label{font:10px 'Microsoft YaHei',sans-serif;fill:#8a9981;paint-order:stroke;stroke:#fcfdf9;stroke-width:7px;stroke-linejoin:round}.module{position:absolute;border:0;padding:0;background:transparent!important;cursor:pointer;border-radius:12px;display:block;transition:none;overflow:visible}.module:before{content:'';position:absolute;inset:-12px;border:1px solid transparent;border-radius:16px;transition:.2s;background:transparent}.module:hover:before,.module:focus-visible:before{border-color:#aec1a1;background:#dcecc322;box-shadow:0 0 0 5px #dcecc319}.module-img{width:100%;height:100%;object-fit:contain;display:block;position:relative;filter:drop-shadow(0 6px 4px #2c412618);pointer-events:none;user-select:none}.module-label{position:absolute;left:50%;top:calc(100% + 15px);transform:translateX(-50%);white-space:nowrap;display:flex;align-items:center;gap:8px;font-size:13px;letter-spacing:.6px;pointer-events:none}.module-label small{color:#9aa78f;font-size:9px;letter-spacing:.7px;font-family:monospace}.module-sub{position:absolute;left:50%;top:calc(100% + 39px);transform:translateX(-50%);font-size:9px;color:#9ba78f;white-space:nowrap;pointer-events:none}.module[data-id="led"] .module-label{top:-34px}.module[data-id="led"] .module-sub{display:none}.module[data-id="buzzer"] .module-label{top:-32px}.module[data-id="buzzer"] .module-sub{display:none}.lcd{position:absolute;left:3.8%;top:13.5%;width:61%;height:68%;background:#030307;image-rendering:pixelated;pointer-events:none;border-radius:1px}.led-glow{position:absolute;inset:-16% -50% 35%;background:radial-gradient(ellipse,#ff532090,transparent 65%);opacity:0;pointer-events:none}.lit .led-glow{opacity:1}.sound-waves{position:absolute;left:32%;top:-22px;color:#7f9c72;font-size:23px;letter-spacing:-7px;transform:rotate(-90deg);opacity:0;pointer-events:none}.lit .sound-waves{opacity:1}.relay-badge{position:absolute;right:-12px;top:-24px;font:9px monospace;background:#ede7f5;color:#9276ad;padding:5px 7px;border-radius:5px;opacity:0}.switched .relay-badge{opacity:1}.resize-handle{position:absolute;right:-10px;bottom:-10px;width:14px;height:14px;border-radius:3px;border:2px solid #fff;background:#708c62;cursor:nwse-resize;display:none}.editing .resize-handle{display:block}.editing .module:before{border:1px dashed #adc09e}.editing .module{cursor:move}.wire-handle{cursor:move;stroke:white;stroke-width:3}.wire-hit{fill:none;stroke:transparent;stroke-width:16;cursor:move}.editor-bar{padding:12px 18px;display:flex;gap:9px;align-items:center;background:#eaf0df;border-bottom:1px solid #d7e1c9;flex-wrap:wrap;font-size:11px}.editor-bar[hidden]{display:none}.editor-bar>span{font-size:10px;color:#8b987e;margin-right:auto}.editor-bar button{padding:7px 10px;font-size:10px}.zoom-tools{position:absolute;bottom:18px;right:20px;display:flex;align-items:center;background:#fff;border:1px solid #e3e8dc;border-radius:8px;box-shadow:0 3px 9px #23321a05}.zoom-tools button{border:0;background:transparent;border-radius:6px;padding:5px 10px;font-size:16px}.zoom-tools output{font:10px monospace;color:#88947f;min-width:35px;text-align:center}.zoom-tools #fit{border-left:1px solid #e7ecdf;margin-left:5px;border-radius:0 8px 8px 0}.legend{position:absolute;bottom:23px;left:22px;display:flex;gap:18px;font-size:9px;color:#95a188;background:#fcfdf9d9;padding:4px 0}.legend>span{display:flex;gap:6px;align-items:center}.legend i{width:18px;height:2px;display:inline-block;background:var(--power)}.legend i.signal{background:var(--signal)}.legend i.story{background:repeating-linear-gradient(90deg,var(--story) 0 3px,transparent 3px 5px)}.timeline{height:80px;border-top:1px solid #e6ecde;display:flex;align-items:center;padding:0 24px;gap:45px;background:#ffffff80}.timeline-caption small{font-size:7px;letter-spacing:1.4px;color:#9aa78e;white-space:nowrap}.timeline-caption b{display:block;font:25px monospace;margin-top:5px;white-space:nowrap}.timeline-caption b>span{font:9px 'Microsoft YaHei',sans-serif;color:#98a38e;margin-left:13px}.steps{display:flex;justify-content:space-between;position:relative;flex:1;margin-right:10px}.steps>span{font-size:10px;color:#a2ac98;display:flex;align-items:center;gap:7px;z-index:1;background:#fdfefb;padding:5px 6px}.steps i{font:9px monospace;border:1px solid #dae3d0;background:#fbfcf8;width:23px;height:23px;display:grid;place-items:center;border-radius:50%}.steps .current{color:#47633b}.steps .current i{background:var(--green);border-color:#cde199;color:#4a6538}.progress-track{position:absolute;left:0;right:0;top:50%;height:2px;background:#e6ebdf}#progress{height:100%;width:0;background:#b3ca8c}.page-foot{display:flex;justify-content:space-between;font-size:9px;color:#9da890;padding:15px 3px 0}.page-foot b{font-size:8px;font-weight:400;letter-spacing:1.5px;margin-left:24px}.asset-status{position:absolute;inset:0;background:#fcfdf9f0;display:flex;justify-content:center;align-items:center;flex-direction:column;gap:13px;z-index:5}.asset-status[hidden]{display:none}.asset-status strong{font-size:16px;font-weight:500}.asset-status>span:not(.spinner){font-size:11px;color:#8f9b86}.spinner{width:25px;height:25px;border:2px solid #e0e8d5;border-top-color:#7f9b5c;border-radius:50%;animation:spin .9s linear infinite}#hover-tip{position:absolute;z-index:9;max-width:230px;pointer-events:none;background:#293b2f;color:#f2f5eb;border-radius:10px;padding:12px 15px;box-shadow:0 8px 25px #22351e22;line-height:1.7;font-size:11px}#hover-tip b{display:block;font-size:12px;margin-bottom:3px}#hover-tip small{display:block;color:#b8c9a9;margin-top:5px;font-size:9px}.burst-effect{position:absolute;width:380px;height:330px;pointer-events:none;z-index:3;transform:translate(-50%,-50%);opacity:0}.burst-effect .flash{position:absolute;width:220px;height:220px;left:80px;top:55px;background:radial-gradient(circle,#fffad9 5%,#ffd85d 26%,#f3943980 50%,transparent 70%);border-radius:50%}.burst-effect .ring{position:absolute;width:200px;height:200px;left:90px;top:65px;border:3px solid #f6bb61;border-radius:50%}.burst-effect .spark{position:absolute;left:50%;top:50%;width:9px;height:5px;background:#e9a746;border-radius:2px}.burst-effect .smoke{position:absolute;left:50%;top:42%;width:78px;height:70px;border-radius:50%;background:#75807733;filter:blur(5px)}.burst-effect .boom-label{position:absolute;left:50%;top:12%;transform:translate(-50%,-50%) rotate(-8deg);font:italic 900 48px LabSans,sans-serif;color:#455b35;text-shadow:3px 3px #dfebad;letter-spacing:-3px;white-space:nowrap}.detail-dialog{border:1px solid #e0e6d6;border-radius:22px;padding:32px 38px 20px;width:min(850px,92vw);max-height:92vh;color:var(--ink);overflow:auto;background:#fcfdf9;box-shadow:0 30px 100px #24341e35}.detail-dialog::backdrop,.login-dialog::backdrop{background:#20342666;backdrop-filter:blur(5px)}.close-dialog{position:absolute;right:20px;top:16px;border:0;background:transparent;font-size:25px;color:#8a987c;padding:4px 10px}.detail-copy h2{font-size:30px;font-weight:500;margin:12px 0 8px;letter-spacing:1px}.detail-copy p{font-size:12px;color:#8a9782;line-height:1.8;margin:0}.detail-stage{height:330px;position:relative;margin:24px 0;background:#f1f5ea;border:1px solid #e5ebdc;border-radius:14px;overflow:hidden;display:flex;justify-content:center;align-items:center;background-image:radial-gradient(#d2dec8 1px,transparent 1px);background-size:20px 20px}.detail-controls{display:flex;align-items:center;justify-content:space-between;gap:10px}.detail-controls>div{display:flex;gap:9px;align-items:center;font-size:13px}.detail-controls button{font-size:12px}.detail-foot{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:14px;font-size:10px;color:#9ca88f;margin:20px 0 0}.detail-image{position:relative;width:260px;height:220px;object-fit:contain;filter:drop-shadow(0 12px 9px #2b3f1e15)}.detail-stage .detail-screen-wrap{position:relative;width:510px;height:290px}.detail-screen-wrap img{width:100%;height:100%;object-fit:contain}.detail-screen-wrap .lcd{top:10%;height:72%;left:3.8%;width:61%}.detail-stage .detail-led{height:210px;width:120px;position:relative}.detail-led img{width:100%;height:100%;object-fit:contain}.detail-led .led-glow{inset:-30% -45% 10%}.detail-stage .detail-buzzer{position:relative;width:280px;height:190px}.detail-buzzer img{width:100%;height:100%;object-fit:contain}.detail-buzzer .sound-waves{font-size:70px;top:-40px;left:30%;letter-spacing:-23px;animation:wave .5s infinite}.detail-battery{display:flex;align-items:center;gap:60px}.detail-battery img{width:150px;height:220px;object-fit:contain}.battery-meter{font:40px monospace;position:relative;color:#afbd9d}.battery-meter.on{color:#537e39}.battery-meter small{font:10px 'Microsoft YaHei',sans-serif;display:block;margin-top:13px;color:#8b9b79}.battery-bar{margin-top:18px;display:flex;gap:4px}.battery-bar i{width:20px;height:10px;background:#dce5d1;border-radius:2px}.on .battery-bar i{background:#a9ca77}.detail-stage .mcu-demo{position:relative;width:450px;height:220px}.mcu-demo img{width:100%;height:100%;object-fit:contain}.mcu-orbit{position:absolute;border:2px dashed #aac295;inset:-15px -35px;border-radius:50%;opacity:0}.mcu-demo.on .mcu-orbit{opacity:1;animation:spin 5s linear infinite}.mcu-output{position:absolute;font:10px monospace;color:#5f8050;background:#e6efd9;padding:7px 10px;border-radius:7px}.mcu-output.one{left:-30px;top:-20px}.mcu-output.two{right:-40px;top:30px}.mcu-output.three{right:30px;bottom:-20px}.relay-demo{width:100%;height:100%}.relay-demo text{font-family:'Microsoft YaHei',sans-serif;fill:#7c8e6a;font-size:13px}.relay-demo .circuit{stroke:#a9b69b;stroke-width:4;fill:none}.relay-demo .switch-arm{transform-origin:345px 165px;transition:transform .28s cubic-bezier(.2,.9,.3,1.2);stroke:#d59547;stroke-width:6;stroke-linecap:round}.relay-demo.on .switch-arm{transform:rotate(47deg)}.relay-demo .coil{fill:#dce7cf;stroke:#91aa75;stroke-width:2}.relay-demo.on .coil{fill:#d9ed9a;filter:drop-shadow(0 0 12px #bbd978)}.relay-demo .nc-lamp{fill:#d5e69d}.relay-demo .no-lamp{fill:#e2e7dc}.relay-demo.on .nc-lamp{fill:#e2e7dc}.relay-demo.on .no-lamp{fill:#eac578}.relay-demo .magnet-field{opacity:0;stroke:#9ab86c;stroke-dasharray:6 5;fill:none}.relay-demo.on .magnet-field{opacity:1;animation:flow 1s linear infinite}.detail-capacitor{width:180px;height:140px;object-fit:contain;position:relative;z-index:2}.login-dialog{border:1px solid var(--line);border-radius:18px;width:min(440px,90vw);padding:36px;background:#fcfdf9;color:var(--ink)}.login-dialog h2{font-size:22px;line-height:1.6;font-weight:500;margin:15px 0}.login-dialog p{font-size:12px;color:#8b9783;line-height:1.8}.login-dialog label{display:block;font-size:12px;margin:24px 0 10px}.login-dialog input{border:1px solid #d6dfcc;border-radius:8px;background:#fff;padding:13px;width:100%;font-size:13px}.login-dialog .primary{width:100%;font-size:13px}.login-dialog .form-error{color:#bd6650;min-height:20px;font-size:11px}.login-dialog .close-dialog{top:12px;right:12px}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);z-index:100;background:#2c4030;color:#f4f7e9;padding:13px 23px;border-radius:10px;font-size:12px;box-shadow:0 8px 30px #25361e30;max-width:90vw}.editing .legend{display:none}.editing #viewport{height:clamp(430px,calc(100vh - 420px),800px)}@keyframes flow{to{stroke-dashoffset:-36}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes wave{50%{opacity:.3}}@media(min-width:1700px){.topbar{padding:0 43px}.shell{grid-template-columns:256px 1fr}.sidebar{padding:36px 24px}main{padding:36px 46px 15px}h1{font-size:40px}.intro{margin-bottom:30px}#viewport{height:clamp(540px,calc(100vh - 395px),900px)}.module-nav-item{padding:14px 9px}.side-bottom p{font-size:23px}}@media(max-width:1150px){.shell{grid-template-columns:190px 1fr}.sidebar{padding:26px 11px}.brand{min-width:155px}.topbar{padding:0 22px;gap:25px}.header-meta{display:none}main{padding:25px 20px 10px}.intro p{max-width:450px;line-height:1.8}.intro-separator{display:none}.board-mark{display:none}.timeline{gap:20px;padding:0 15px}.steps>span{font-size:8px;gap:4px}.timeline-caption b>span{display:none}.side-bottom p{font-size:18px}.nav-info strong{font-size:11px}.nav-info small{font-size:9px}}@media(max-width:760px){.topbar{height:73px;padding:0 15px;gap:10px}.brand{min-width:0;gap:8px;font-size:15px}.brand b{font-size:11px;letter-spacing:1px}.brand small{font-size:8px;letter-spacing:1px}.brand-icon{width:32px;height:35px;font-size:20px}.toolbar{gap:3px}.toolbar .icon-button{padding:8px}.toolbar .icon-button span,.toolbar .secondary span{display:none}.toolbar .secondary{padding:8px}.toolbar #start{min-width:95px;padding:10px 12px;font-size:11px}.shell{display:block}.sidebar{padding:12px 15px;border-right:0;border-bottom:1px solid var(--line);overflow:auto}.side-heading,.side-hint,.side-bottom{display:none}#module-nav{display:flex;gap:7px;width:max-content}.module-nav-item{width:auto;gap:5px;margin:0;padding:6px 9px;border-color:#e5ebde}.nav-thumb{width:25px;height:25px}.nav-thumb img{width:23px;height:23px}.nav-info small,.nav-arrow{display:none}.nav-info strong{font-size:10px}main{padding:23px 12px 10px}.intro{gap:6px;margin-bottom:20px}.eyebrow{font-size:7px;letter-spacing:1.5px}h1{font-size:27px;margin:8px 0}h1 i{font-size:28px;margin-left:8px}.intro p{font-size:9px;max-width:245px}.edit-button{padding:8px;font-size:10px}.edit-button small{display:none}.board-top{padding:12px;font-size:9px}.board-top #board-instruction{font-size:8px}#viewport{height:460px}.timeline{height:75px;gap:15px;padding:0 12px}.timeline-caption small{font-size:6px;letter-spacing:.7px}.timeline-caption b{font-size:20px}.steps{margin:0}.steps>span{flex-direction:column;gap:4px;padding:3px;font-size:7px}.progress-track{top:16px}.page-foot{font-size:8px}.page-foot>span:last-child{display:none}.legend{gap:8px;left:12px;font-size:8px}.zoom-tools{right:10px}.editor-bar>span{display:none}.editor-bar{padding:8px;gap:4px}.editor-bar strong{font-size:10px;margin-right:auto}.editor-bar button{padding:7px}.detail-dialog{padding:25px 18px 18px}.detail-stage{height:280px}.detail-copy h2{font-size:25px}.detail-copy p{font-size:11px}.detail-stage .detail-screen-wrap{width:95%;height:200px}.detail-battery{gap:22px}.detail-battery img{width:110px}.battery-meter{font-size:29px}.detail-stage .mcu-demo{width:73%;height:160px}.detail-controls>div{font-size:11px}.detail-controls button{padding:10px 15px;font-size:11px}.detail-foot{font-size:8px}.detail-buzzer{transform:scale(.8)}.world-note{display:none}}@media(prefers-reduced-motion:reduce){.wire-flow,.spinner,.mcu-orbit,.sound-waves{animation:none!important}.module:before,button,.switch-arm{transition:none!important}}
/* Readable labels and a correctly fitted native display window. */
.module-label{font-size:17px}.module-label small{font-size:10px}.module-sub{font-size:12px}.wire-label{font-size:13px}.world-note>span{font-size:16px}.world-note small{font-size:12px}.lcd{object-fit:contain}.relay-demo.on .switch-arm{transform:rotate(48.89deg)}
@media(min-width:761px){#viewport{height:clamp(440px,calc(100vh - 405px),850px)}.editing #viewport{height:clamp(400px,calc(100vh - 460px),800px)}}
/* A single viewport: the canvas takes the space left by the controls. */
html,body{height:100%;overflow:hidden}body{height:100dvh;display:flex;flex-direction:column}.topbar{height:72px;flex:0 0 72px}.shell{flex:1;min-height:0}.sidebar{min-height:0;overflow:hidden;padding-top:23px}.side-hint{margin-bottom:12px}.module-nav-item{padding-top:8px;padding-bottom:8px}.side-bottom{padding-top:16px}.side-bottom p{font-size:17px;margin:10px 0 15px}main{display:flex;flex-direction:column;min-height:0;padding-top:23px}.intro{flex-shrink:0;margin-bottom:20px}h1{font-size:32px;margin:7px 0}.workbench{flex:1;min-height:0;display:flex;flex-direction:column}.board-top{flex:0 0 43px;height:43px}.editor-bar{flex-shrink:0}#viewport,.editing #viewport{flex:1;min-height:0;height:auto}.timeline{flex:0 0 69px;height:69px}.page-foot{flex:0 0 25px;padding-top:10px}.detail-dialog{width:min(1000px,94vw);max-height:94dvh;overflow:hidden;padding:26px 32px 18px;}.detail-stage{height:min(400px,calc(94dvh - 240px));min-height:180px;margin:18px 0}.detail-copy h2{font-size:27px;margin:9px 0}.detail-foot{margin-top:15px}.detail-stage .demo-circuit{width:100%;height:100%;position:absolute;inset:0}.demo-circuit text{font-family:'Microsoft YaHei',sans-serif;font-size:13px;fill:#77896b}.demo-circuit .part-title{font-size:17px;fill:#4b653e}.demo-circuit .diagram-note{font-size:11px;fill:#96a38c}.circuit-wire{fill:none;stroke:#a5b69a;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.signal-wire{fill:none;stroke:#9b8db1;stroke-width:2.5;stroke-linejoin:round}.source-symbol path{stroke:#829b70;stroke-width:3;fill:none}.source-symbol text{font-size:12px}.resistor{stroke:#ad9463;stroke-width:2.5;fill:none}.switch-hit{fill:#e8f0da;stroke:#d4e2c0}.circuit-switch{cursor:pointer;outline:none}.circuit-switch:focus .switch-hit{stroke:#6d8f51;stroke-width:3}.circuit-switch circle{fill:#7f9b65}.contact,.contact-closed{fill:none;stroke:#819d64;stroke-width:4;stroke-linecap:round}.contact-closed{display:none}.on .contact{display:none}.on .contact-closed{display:block}.current-flow{fill:none;stroke:#99b65e;stroke-width:3;stroke-dasharray:4 17;animation:flow .9s linear infinite;pointer-events:none}.flow-on{opacity:0}.on .flow-on{opacity:.9}.circuit-led-glow{fill:#ff7d4355;filter:blur(14px);opacity:0}.on .circuit-led-glow{opacity:1}.logic-block{fill:#eaf0e0;stroke:#c6d4b5;stroke-width:1.5}.circuit-zone{fill:#fbfdf688;stroke:#d7e1cc;stroke-width:1;stroke-dasharray:5 5}.coil-box{fill:#e1e9d6;stroke:#a1b88a;stroke-width:2}.coil-turns{stroke:#8fa775;stroke-width:3;fill:none}.on .coil-box{fill:#d6ed9c}.magnetic-link{fill:none;stroke:#a6bc7a;stroke-width:2;stroke-dasharray:4 5;opacity:0}.on .magnetic-link{opacity:1;animation:flow 1s linear infinite}.junction{fill:#aa9968}.relay-contact{stroke:#c69957;stroke-width:5;transform-origin:530px 195px;transition:transform .2s}.on .relay-contact{transform:rotate(67.1deg)}.nc-load{fill:#e6af70}.no-load,.supply-load{fill:#dfe6d6;stroke:#acbc98;stroke-width:2}.on .nc-load{fill:#dfe6d6}.on .no-load,.on .supply-load{fill:#e6af70;filter:drop-shadow(0 0 7px #ebbf81)}.nc-flow{opacity:.8}.no-flow{opacity:0}.on .nc-flow{opacity:0}.on .no-flow{opacity:.8}.buzz-wave{font-size:32px!important;fill:#9db978!important;opacity:0}.on .buzz-wave{opacity:1;animation:wave .4s infinite}.output-block rect{fill:#e7eddf;stroke:#c7d5b5}.on .output-block rect{fill:#dceab9}.detail-stage .contextual-screen{position:absolute;width:43%;height:58%;left:51%;top:20%;}.story-block rect{fill:#f5e8d2;stroke:#dec49d}.story-arrow{fill:none;stroke:#d5a568;stroke-width:2;stroke-dasharray:5 4}.polarity-label{font:700 27px monospace!important;fill:#d28c54!important}.polarity-caption{font-size:12px!important}.detail-stage .contextual-capacitor{position:absolute;width:19%;height:33%;left:66%;top:37%}.contextual-burst{left:76%;top:54%;transform:translate(-50%,-50%) scale(.7)}.pin-label{font:10px monospace;fill:#536e60;paint-order:stroke;stroke:#fcfdf9;stroke-width:4px}.wire-label{font-size:11px}.wire-label.minor{opacity:0}.wires-detail .wire-label.minor,.editing .wire-label.minor{opacity:1}.wire{stroke-width:1.5}.wire-dot{r:2.5;stroke-width:1}.polarity-badge{position:absolute;left:50%;top:-20px;transform:translateX(-50%);font-size:11px;color:#b48752;white-space:nowrap;pointer-events:none}.pin-labels{pointer-events:none}.pin-labels text{opacity:0}.module:hover~.pin-labels text,.wires-detail .pin-labels text,.editing .pin-labels text{opacity:1}.wire-front{pointer-events:none;position:absolute;inset:0;width:1280px;height:800px;overflow:visible;z-index:2}.port-help{position:absolute;right:44px;top:30px;font-size:10px;color:#a3af98}.legend i.ground{background:#9da8b0}
@media(max-height:800px) and (min-width:761px){.topbar{height:62px;flex-basis:62px}main{padding-top:15px}.intro{margin-bottom:12px}h1{font-size:28px}.intro p{font-size:10px}.sidebar{padding-top:18px}.module-nav-item{padding:6px 9px;margin-bottom:3px}.side-bottom p{display:none}.side-bottom{padding-top:12px}.side-hint{margin-bottom:10px}.timeline{flex-basis:60px;height:60px}.board-top{flex-basis:36px;height:36px}.detail-copy p{font-size:11px}.detail-controls button{padding:10px 20px}.detail-foot{padding-top:10px}}
@media(max-width:760px){.shell{display:flex;flex-direction:column}.sidebar{flex:0 0 58px;padding:8px 12px;overflow-x:auto}.topbar{flex-basis:64px;height:64px}main{flex:1;padding:14px 12px 8px}.intro{margin-bottom:12px}h1{font-size:25px}.intro p{max-width:230px}.page-foot{flex-basis:20px}.detail-dialog{padding:23px 15px 16px}.detail-stage{height:min(360px,calc(94dvh - 255px))}.board-top{flex-basis:38px}.timeline{flex-basis:66px}}
@media(prefers-reduced-motion:reduce){.current-flow,.magnetic-link,.buzz-wave{animation:none!important}.relay-contact{transition:none}}
.scene-plane{position:absolute}.detail-stage .scene-plane .demo-circuit{width:100%;height:100%}.module-img{transform-origin:center;transition:none}.detail-stage .scene-plane .contextual-screen{width:43.75%;height:58%;left:52.5%;top:20%}.wires-detail .wire-label.minor{font-size:10px}.world-note{top:165px}.world-signature{display:none}
.detail-pin-front{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.sidebar::-webkit-scrollbar{height:3px}.sidebar::-webkit-scrollbar-thumb{background:#d4dec9;border-radius:3px}
/* Module-level overview and aspect-preserving display content. */
#wires .wire{stroke-width:3;opacity:.85}
#wires .wire-flow{stroke-width:3;opacity:0}
.running #wires .wire-flow{opacity:.8}
.running #wires .wire-flow.wire-story{opacity:0}
.burst #wires .wire-flow.wire-story,.done #wires .wire-flow.wire-story{opacity:.9}
#wires .wire-label{font-size:15px;fill:#697e65;stroke-width:9px}
.world-note{left:560px;top:25px}
.module:before{inset:0;border-color:#dce5d5;background:#f8fbf588}
.lcd-matte{position:absolute;display:block;background:#030307;pointer-events:none}
.lcd{object-fit:contain}
.on .buzz-wave{animation:none;opacity:1}
.detail-controls{flex-wrap:wrap}
.detail-controls>div{flex:1;min-width:180px;line-height:1.6}
.detail-controls button{flex-shrink:0}
@media(max-width:760px){.detail-dialog{overflow-y:auto}.detail-controls{gap:12px}.detail-controls>div{font-size:11px}}
