:root{--bg:#0b0f17;--bg2:#111723;--bg3:#171f2e;--line:#243045;--line2:#2f3d56;--fg:#e6edf7;--fg2:#a9b6c9;--fg3:#6f7d93;--cyan:#38d9f5;--green:#5dff8a;--amber:#ffb84d;--red:#ff5470;--violet:#b48cff;--r:14px;--font:"Inter", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;--mono:"JetBrains Mono", "SFMono-Regular", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--fg);font-family:var(--font);margin:0;font-size:15px;line-height:1.65}a{color:var(--cyan);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit}h1,h2,h3,h4{margin:0 0 .5em;line-height:1.3}code{font-family:var(--mono);background:#1a2333;border-radius:6px;padding:1px 6px;font-size:.92em}.top{z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);background:#0b0f17d1;align-items:center;gap:24px;height:60px;padding:0 28px;display:flex;position:sticky;top:0}.brand{color:var(--fg);letter-spacing:.3px;white-space:nowrap;align-items:center;gap:10px;font-size:18px;font-weight:800;display:flex}.brand:hover{text-decoration:none}.brand small{color:var(--fg3);font-size:13px;font-weight:500}.logo{background:var(--cyan);border-radius:6px;width:22px;height:22px;position:relative;box-shadow:0 0 18px #38d9f573}.logo:after{content:"";background:var(--bg);border-radius:2px;position:absolute;inset:6px}.top nav{align-items:center;gap:4px;margin-left:auto;display:flex}.top nav a{color:var(--fg2);white-space:nowrap;border-radius:9px;padding:7px 12px;font-size:14px}.top nav a:hover{background:var(--bg3);color:var(--fg);text-decoration:none}.top nav a.on{background:var(--bg3);color:var(--cyan)}.navprog{font-family:var(--mono);color:var(--green);border:1px solid #2b5a3c;border-radius:99px;margin-left:6px;padding:2px 8px;font-size:12px}.menu{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;margin-left:auto;padding:4px 10px;display:none}main{min-height:calc(100vh - 60px)}.btn{background:var(--cyan);color:#04131a;cursor:pointer;border:0;border-radius:10px;align-items:center;gap:8px;padding:9px 18px;font-weight:700;transition:transform .12s,box-shadow .12s,opacity .12s;display:inline-flex}.btn:hover{text-decoration:none;transform:translateY(-1px);box-shadow:0 6px 22px #38d9f54d}.btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none;transform:none}.btn.big{border-radius:12px;padding:13px 26px;font-size:16px}.btn.small{border-radius:8px;padding:6px 12px;font-size:13px}.btn.ghost{color:var(--fg);border:1px solid var(--line2);background:0 0}.btn.ghost:hover{box-shadow:none;background:var(--bg3)}.btn.power{background:linear-gradient(135deg,#5dff8a,#38d9f5);justify-content:center;width:100%;margin:6px 0 4px;padding:12px;font-size:16px}.link{color:var(--cyan);cursor:pointer;background:0 0;border:0;padding:0;font-size:13px}.pill{background:var(--bg3);border:1px solid var(--line);color:var(--fg2);white-space:nowrap;border-radius:99px;padding:2px 10px;font-size:12px;display:inline-block}.fine{color:var(--fg3);margin:10px 0 0;font-size:12.5px}.row-between{justify-content:space-between;align-items:center;gap:10px;display:flex}.loading{background:radial-gradient(circle at 50% 50%, #142033, var(--bg));width:100%;height:100%;min-height:300px}.card{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}.card.muted{color:var(--fg3);font-size:14px}.side-h{color:var(--fg3);text-transform:uppercase;letter-spacing:.6px;justify-content:space-between;align-items:baseline;margin:18px 0 8px;font-size:13px;display:flex}.side-h small{text-transform:none;letter-spacing:0;font-weight:400}.seg{background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:2px;display:inline-flex}.seg button{cursor:pointer;color:var(--fg2);background:0 0;border:0;border-radius:7px;padding:4px 12px;font-size:13px}.seg button.on{background:var(--bg3);color:var(--cyan)}.home{max-width:1320px;margin:0 auto;padding:0 28px 80px}.hero{grid-template-columns:1fr 1.25fr;align-items:center;gap:28px;min-height:560px;padding:30px 0 10px;display:grid}.kicker{color:var(--cyan);background:#0e2029;border:1px solid #1d4a57;border-radius:99px;margin-bottom:18px;padding:3px 12px;font-size:13px;display:inline-block}.hero h1{letter-spacing:-.5px;margin-bottom:18px;font-size:44px;font-weight:800}.hero .lead{color:var(--fg2);max-width:520px;font-size:17px}.cta{flex-wrap:wrap;gap:12px;margin-top:26px;display:flex}.hero-3d{border:1px solid var(--line);border-radius:20px;height:540px;position:relative;overflow:hidden}.hero-3d .lab.td.embed{height:100%}.sec{margin:50px 0 18px;font-size:22px}.labgrid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.labcard{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);color:var(--fg);padding:20px;transition:border-color .15s,transform .15s}.labcard:hover{border-color:var(--cyan);text-decoration:none;transform:translateY(-2px)}.labcard .ic{margin-bottom:8px;font-size:28px;display:block}.labcard b{font-size:16px}.labcard p{color:var(--fg2);margin:6px 0 0;font-size:13.5px}.tracks{grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:16px;display:grid}.track{background:var(--bg2);border:1px solid var(--line);border-left:3px solid var(--tc);border-radius:var(--r);padding:18px 20px}.track-h{align-items:flex-start;gap:14px;display:flex}.track-h .no{font-family:var(--mono);color:var(--tc);background:color-mix(in srgb, var(--tc) 12%, transparent);border-radius:9px;flex:none;place-items:center;width:34px;height:34px;font-size:22px;font-weight:800;display:grid}.track-h div{flex:1}.track-h b{font-size:16px}.track-h p{color:var(--fg2);margin:2px 0 0;font-size:13.5px}.lessons{counter-reset:l;margin:14px 0 0;padding:0;list-style:none}.lessons li{counter-increment:l;border-top:1px dashed var(--line);align-items:center;gap:10px;padding:7px 0;font-size:14.5px;display:flex}.lessons li:before{content:counter(l);font-family:var(--mono);border:1px solid var(--line2);width:22px;height:22px;color:var(--fg3);border-radius:50%;flex:none;place-items:center;font-size:12px;display:grid}.lessons li.done:before{content:"✓";background:var(--tc);color:#06121a;border-color:var(--tc);font-weight:800}.lessons li a{color:var(--fg);flex:1}.lessons .min{color:var(--fg3);font-size:12px}.plan{color:var(--fg3);margin:12px 0 0;font-size:13.5px}.page{max-width:980px;margin:0 auto;padding:40px 28px 80px}.page .lead,.lesson .lead{color:var(--fg2);font-size:17px}.search{background:var(--bg2);border:1px solid var(--line2);width:100%;color:var(--fg);border-radius:12px;margin:10px 0 20px;padding:12px 16px;font-size:15px}.gloss{margin:0}.gi{border-bottom:1px solid var(--line);padding:12px 0}.gi dt{font-weight:700}.gi dt small{color:var(--fg3);margin-left:6px;font-weight:400}.gi dd{color:var(--fg2);margin:4px 0 0;font-size:14.5px}.lesson-wrap{grid-template-columns:250px minmax(0,1fr);gap:40px;max-width:1160px;margin:0 auto;padding:30px 28px 80px;display:grid}.lesson-nav{align-self:start;font-size:14px;position:sticky;top:84px}.lesson-nav .back{color:var(--fg3);font-size:13px}.lesson-nav .tn{color:var(--tc);margin:16px 0 8px;font-weight:700}.lesson-nav ol{margin:0;padding:0;list-style:none}.lesson-nav li a{color:var(--fg2);border-left:2px solid #0000;border-radius:8px;padding:6px 10px;display:block}.lesson-nav li a:hover{background:var(--bg2);text-decoration:none}.lesson-nav li.cur a{background:var(--bg2);color:var(--fg);border-left-color:var(--cyan)}.lesson-nav li.done a:after{content:" ✓";color:var(--green)}.lesson{min-width:0;max-width:820px}.lesson h1{font-size:34px;font-weight:800}.l-meta{color:var(--fg3);font-size:13px;font-family:var(--mono);gap:14px;margin-bottom:10px;display:flex}.l-meta span:first-child{color:var(--tc);font-weight:700}.goals{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);margin:18px 0 28px;padding:14px 20px}.goals b{color:var(--fg3);font-size:13px}.goals ul{margin:6px 0 0;padding-left:20px}.goals li::marker{content:"◆  ";color:var(--cyan);font-size:11px}.md h2{margin:40px 0 12px;padding-top:8px;font-size:23px}.md h3{margin:26px 0 10px;font-size:18px}.md p,.md li{color:#cfd9e8}.md strong{color:#fff}.md ul,.md ol{padding-left:22px}.md blockquote{border-left:3px solid var(--line2);color:var(--fg2);background:var(--bg2);border-radius:0 10px 10px 0;margin:14px 0;padding:8px 16px}.md table{border-collapse:collapse;width:100%;margin:14px 0;font-size:14px}.md th,.md td{border:1px solid var(--line);text-align:left;padding:7px 10px}.callout{border-radius:var(--r);border:1px solid;margin:20px 0;padding:14px 18px 14px 50px;position:relative}.callout:before{font-size:18px;position:absolute;top:13px;left:16px}.callout .md p:first-child{margin-top:0}.callout .md p:last-child{margin-bottom:0}.callout.story{background:#121a2a;border-color:#263655}.callout.story:before{content:"📖"}.callout.tip{background:#0e1f26;border-color:#1d4a57}.callout.tip:before{content:"💡"}.callout.warn{background:#241913;border-color:#5c3a1d}.callout.warn:before{content:"⚠️"}.callout.key{background:#10221a;border-color:#285a3c}.callout.key:before{content:"🔑"}.callout.try{background:#1d1730;border-color:#43356f}.callout.try:before{content:"🧪"}.quiz{background:var(--bg2);border:1px solid var(--line2);border-radius:var(--r);margin:26px 0;padding:16px 20px;transition:border-color .2s}.quiz.ok{border-color:#2c7a4b}.quiz.bad{border-color:#7a2c3d}.quiz-h{color:var(--amber);letter-spacing:.5px;font-size:12px;font-weight:700}.quiz-q{margin:6px 0 12px;font-size:16px;font-weight:600}.opts{gap:8px;display:grid}.opt{text-align:left;background:var(--bg);border:1px solid var(--line);cursor:pointer;border-radius:10px;align-items:flex-start;gap:12px;padding:10px 14px;transition:border-color .12s,background .12s;display:flex}.opt:hover:not(:disabled){border-color:var(--cyan)}.opt:disabled{cursor:default}.opt .k{font-family:var(--mono);color:var(--fg3);flex:none;font-weight:700}.opt.right{border-color:var(--green);background:#0f2219}.opt.right .k{color:var(--green)}.opt.wrong{border-color:var(--red);background:#26121a}.opt.wrong .k{color:var(--red)}.quiz-fb{color:var(--fg2);flex-wrap:wrap;align-items:baseline;gap:10px;margin-top:12px;font-size:14.5px;display:flex}.quiz.ok .quiz-fb b{color:var(--green)}.quiz.bad .quiz-fb b{color:var(--red)}.flow{gap:10px;margin:18px 0;display:grid}.flow-row{background:var(--bg2);border:1px solid var(--line);border-radius:12px;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 14px;display:flex}.flow-step-wrap{align-items:center;gap:6px;display:inline-flex}.flow-step{background:var(--bg3);border:1px solid var(--line2);border-radius:8px;padding:3px 10px;font-size:14px}.arrow{color:var(--cyan);font-weight:700}.flow-cap{color:var(--fg3);margin-left:auto;padding-left:12px;font-size:12.5px}.cardsx{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin:18px 0;display:grid}.cx{text-align:left;background:var(--bg2);border:1px solid var(--line);cursor:pointer;border-radius:12px;padding:12px 14px;transition:border-color .12s}.cx:hover{border-color:var(--line2)}.cx.on{border-color:var(--cyan);background:#0f1b26;grid-column:1/-1}.cx-h{align-items:center;gap:10px;display:flex}.cx-h .ic{font-size:20px}.cx-h:after{content:"+";color:var(--fg3);margin-left:auto;font-size:18px}.cx.on .cx-h:after{content:"−";color:var(--cyan)}.cx-b{color:#cfd9e8;margin-top:8px;font-size:14.5px}.stepper{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);margin:18px 0;padding:14px 18px}.stepper ol{margin:0;padding-left:22px}.stepper li{color:var(--fg2);padding:6px 0}.stepper li b{color:var(--fg2)}.stepper li.cur b{color:var(--cyan)}.stepper li.cur{color:#dbe5f3}.stepper li p{margin:2px 0 0;font-size:14.5px}.stepper-ctl{border-top:1px solid var(--line);font-family:var(--mono);color:var(--fg3);align-items:center;gap:12px;margin-top:10px;padding-top:10px;font-size:13px;display:flex}.ladder{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);margin:18px 0;padding:12px 16px}.lad-row{border-bottom:1px dashed var(--line);grid-template-columns:120px 1fr 90px 80px;align-items:center;gap:12px;padding:6px 0;font-size:14px;display:grid}.ladder.unit .lad-row{grid-template-columns:150px 1fr 110px}.lad-row:last-child{border-bottom:0}.lad-bar{background:var(--bg);border-radius:99px;height:10px;overflow:hidden}.lad-bar i{background:linear-gradient(90deg, var(--green), var(--cyan), var(--amber), var(--red));background-size:600px 100%;border-radius:99px;height:100%;display:block}.lad-v{font-family:var(--mono);color:var(--cyan);text-align:right;font-size:13px}.lad-h{font-family:var(--mono);color:var(--amber);text-align:right;font-size:12.5px}.lad-n{color:var(--fg3);grid-column:1/-1;margin-top:-4px;font-size:12.5px}.bits{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);text-align:center;margin:18px 0;padding:18px}.bit-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.bit{border:1px solid var(--line2);background:var(--bg);cursor:pointer;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;width:54px;height:70px;transition:all .12s;display:flex}.bit .bv{font-family:var(--mono);color:var(--fg3);font-size:24px;font-weight:800}.bit .bw{color:var(--fg3);font-size:11px;font-family:var(--mono)}.bit.on{border-color:var(--cyan);background:#0e2a33;box-shadow:0 0 16px #38d9f540}.bit.on .bv{color:var(--cyan)}.bit-out{font-size:20px;font-family:var(--mono);margin-top:14px}.bit-out b{color:var(--green);font-size:28px}.bit-out .hex{color:var(--fg3);margin-left:8px;font-size:15px}.switches{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);text-align:center;margin:18px 0;padding:14px}.switches svg{width:100%;max-width:460px}.switches .w{fill:none;stroke:#3a465c;stroke-width:3px}.switches .w.on{stroke:var(--amber)}.switches .bat{fill:#263247;stroke:#3a465c}.switches text{fill:var(--fg2);text-anchor:middle;font-size:13px;font-family:var(--mono)}.switches .sm{font-size:10px}.switches .sw circle{fill:var(--fg2)}.switches .lever{stroke:var(--fg2);stroke-width:4px;stroke-linecap:round;transition:all .15s}.switches .sw.on .lever{stroke:var(--amber)}.switches .lamp{fill:#2a2f36;stroke:#4a5568;stroke-width:2px;transition:all .2s}.switches .lamp.on{fill:#ffe066;stroke:#ffd43b;filter:drop-shadow(0 0 12px #ffd43b)}.sw-out{font-family:var(--mono);margin-top:4px}.sw-out b{color:var(--amber);font-size:20px}.pipe{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);margin:18px 0;padding:14px 16px;overflow-x:auto}.pipe-ctl{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.pipe-ctl input{flex:1;min-width:120px}.mono{font-family:var(--mono);color:var(--fg3);font-size:13px}.pipe-grid{gap:3px;min-width:560px;display:grid}.pipe-grid .ph{font-family:var(--mono);color:var(--fg3);text-align:center;font-size:11px}.pipe-grid .ph.past{color:var(--cyan)}.pipe-grid .pl{font-family:var(--mono);color:var(--fg2);align-self:center;font-size:13px}.pc{background:var(--bg);height:30px;font-family:var(--mono);color:#06121a;border-radius:6px;place-items:center;font-size:10.5px;font-weight:700;transition:opacity .2s;display:grid}.pc.fut{opacity:.12}.pc.s0{background:#38d9f5}.pc.s1{background:#5dff8a}.pc.s2{background:#ffb84d}.pc.s3{background:#b48cff}.pc.s4{background:#ff6fa8}.lab-link{border-radius:var(--r);color:var(--fg);background:linear-gradient(135deg,#0f2430,#141d33);border:1px solid #1d4a57;align-items:center;gap:10px;margin:22px 0;padding:14px 18px;font-weight:600;display:flex}.lab-link:hover{border-color:var(--cyan);text-decoration:none}.embed-wrap{border:1px solid var(--line);border-radius:var(--r);background:var(--bg2);margin:20px 0;overflow:hidden}.embed-wrap.td-embed{height:480px}.finish{border-top:1px solid var(--line);text-align:center;margin-top:50px;padding-top:24px}.done-box{flex-direction:column;align-items:center;gap:14px;display:flex}.done-box b{color:var(--green);font-size:18px}.pn{justify-content:space-between;margin-top:30px;font-size:14px;display:flex}.labpage{max-width:1600px;margin:0 auto;padding:18px 28px 30px}.lab-title{flex-wrap:wrap;align-items:baseline;gap:16px;margin-bottom:12px;display:flex}.lab-title h1{margin:0;font-size:24px}.lab-title p{color:var(--fg2);margin:0;font-size:14px}.lab{grid-template-columns:minmax(0,1fr) 360px;gap:16px;height:calc(100vh - 150px);min-height:560px;display:grid}.lab.embed{grid-template-columns:1fr;height:100%;min-height:0;position:relative}.lab-canvas{border:1px solid var(--line);background:var(--bg);border-radius:16px;min-height:0;position:relative;overflow:hidden}.lab.embed .lab-canvas{border:0;border-radius:0}.lab-side{padding-right:4px;overflow-y:auto}.lab-hud{color:var(--fg3);pointer-events:none;font-size:12px;position:absolute;top:12px;left:14px}.td-bar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);background:#111723d9;border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;display:flex;position:absolute;bottom:14px;left:14px;right:14px}.lab.embed .td-bar{max-width:calc(100% - 28px);right:auto}.td-slider{color:var(--fg2);flex:1;align-items:center;gap:10px;min-width:160px;font-size:13px;display:flex}.td-slider input{accent-color:var(--cyan);flex:1}.td-overlay{flex-direction:column;align-items:flex-end;gap:6px;width:320px;max-height:calc(100% - 90px);display:flex;position:absolute;top:12px;right:12px;overflow-y:auto}.td-overlay .card{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111723e6;width:100%}.td-overlay .link{background:#111723d9;border-radius:8px;padding:4px 10px;font-size:12.5px}.toggles{color:var(--fg2);flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:12px;font-size:13px;display:flex}.toggles input{accent-color:var(--cyan)}.info-h{flex-direction:column;margin-bottom:6px;display:flex}.info-h h3{margin:0;font-size:19px}.info-h .en{color:var(--fg3);font-size:12px;font-family:var(--mono)}.info p{color:#cfd9e8;margin:6px 0;font-size:14px}.info h4{color:var(--fg3);letter-spacing:.5px;margin:12px 0 6px;font-size:12px}.info.compact p{font-size:13px}.hots{gap:4px;margin:0;padding:0;list-style:none;display:grid}.hots li{cursor:pointer;border:1px solid #0000;border-radius:8px;gap:10px;padding:6px 8px;font-size:13.5px;display:flex}.hots li:hover{background:var(--bg3)}.hots li.on{background:#0f1f2a;border-color:#1d4a57}.hots .num{background:var(--cyan);color:#04131a;border-radius:50%;flex:none;place-items:center;width:20px;height:20px;margin-top:2px;font-size:11px;font-weight:800;display:grid}.hots li p{color:var(--fg2);margin:4px 0 0;font-size:13px}.tip{color:#f1d9c0;background:#241913;border:1px solid #5c3a1d;border-radius:10px;margin-top:12px;padding:10px 12px;font-size:13px}.tip b{color:var(--amber);margin-bottom:2px;font-size:12px;display:block}.chips,.tray{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--bg2);border:1px solid var(--line);cursor:pointer;color:var(--fg2);border-radius:99px;align-items:center;gap:6px;padding:5px 12px;font-size:13px;display:inline-flex}.chip:hover{border-color:var(--line2);color:var(--fg)}.chip.seen{color:var(--fg)}.chip.seen:before{content:"";background:var(--green);border-radius:50%;width:6px;height:6px}.chip.on{border-color:var(--cyan);color:var(--cyan);background:#0e2029}.chip .x{color:var(--fg3);cursor:pointer;background:0 0;border:0;padding:0 0 0 2px;font-size:15px;line-height:1}.chip .x:hover{color:var(--red)}.pin{background:var(--cyan);color:#04131a;cursor:pointer;width:24px;height:24px;font-size:11.5px;font-weight:800;font-family:var(--mono);border:2px solid #04131a;border-radius:50%;padding:0;transition:transform .12s;box-shadow:0 0 0 3px #38d9f540,0 2px 8px #00000080}.pin:hover{transform:scale(1.15)}.pin.on{background:var(--amber);box-shadow:0 0 0 4px #ffb84d59}.plabel{border:1px solid var(--line2);white-space:nowrap;color:var(--fg);background:#0b0f17d9;border-radius:6px;padding:2px 8px;font-size:11.5px}.zlabel{background:var(--cyan);color:#04131a;white-space:nowrap;border-radius:6px;padding:2px 8px;font-size:12px;font-weight:700}.b-msg{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);background:#111723e6;border-radius:12px;padding:12px 16px;font-size:14px;position:absolute;bottom:14px;left:14px;right:14px}.b-msg.ok{color:#c9f7d8;border-color:#2c7a4b}.b-msg.bad{color:#ffd0da;background:#2e1018eb;border-color:#a0334a}.b-msg.warn{color:#ffe2bd;border-color:#8a5a1d}.zone-pick{color:var(--fg3);flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;font-size:12.5px;display:flex}.paste{background:var(--amber);justify-content:center;width:100%;margin-top:10px}.paste.done{color:var(--green);background:#2a3a2f}.steps{margin:0;padding-left:28px;font-size:13.5px}.steps li{color:var(--fg2);padding:3px 0}.steps li span{color:var(--fg3);font-size:12px;display:block}.steps li.done{color:var(--fg3);text-decoration:line-through}.steps li.done::marker{color:var(--green)}.log{gap:4px;margin:0;padding:0;font-size:12.5px;list-style:none;display:grid}.log li{background:var(--bg2);border-left:3px solid var(--line2);color:var(--fg2);border-radius:8px;padding:6px 10px}.log li.ok{border-left-color:var(--green)}.log li.bad{border-left-color:var(--red)}.log li.warn,.log li.power{border-left-color:var(--amber)}.monitor{border:1px solid var(--line2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111723eb;border-radius:14px;width:300px;padding:12px;position:absolute;top:14px;right:14px}.monitor.static{width:auto;position:static}.monitor.ok{border-color:#2c7a4b}.monitor .screen{height:90px;font-family:var(--mono);color:#7f8a9c;background:#000;border:4px solid #1c222c;border-radius:8px;place-items:center;font-size:13px;display:grid}.monitor.ok .screen{color:#fff;font-size:18px;font-family:var(--font);background:linear-gradient(135deg,#1b4fd8,#6a2bd8)}.monitor .leds{align-items:center;gap:6px;margin-top:10px;display:flex}.led{font-family:var(--mono);color:var(--fg3);border:1px solid var(--line);border-radius:5px;align-items:center;gap:5px;padding:2px 6px;font-size:10.5px;display:inline-flex}.led:before{content:"";background:var(--c);width:8px;height:8px;box-shadow:0 0 8px var(--c);border-radius:50%}.fanst{font-family:var(--mono);color:var(--fg3);margin-left:auto;font-size:10.5px}.fanst.on{color:var(--green)}.fanst.on:before{content:"⟳ ";animation:1s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.monitor p{margin:8px 0 0;font-size:13.5px}.monitor .sub{color:var(--fg2);font-size:12.5px}.fault{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:20px;display:grid}.fault-main{flex-direction:column;gap:14px;display:flex}.case .story{margin:12px 0;font-size:17px}.win{background:#0f2219;border-color:#2c7a4b;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.win h3{color:var(--green);margin:0;font-size:17px}.grid2{grid-template-columns:1fr 1fr;gap:8px;display:grid}.tool{text-align:left;background:var(--bg2);border:1px solid var(--line);cursor:pointer;color:var(--fg);border-radius:10px;padding:9px 12px;font-size:13.5px}.tool:hover:not(:disabled){border-color:var(--cyan)}.tool.fix:hover:not(:disabled){border-color:var(--amber)}.tool:disabled{opacity:.45;cursor:default}.logic{background:var(--bg2);border:1px solid var(--line);border-radius:16px;padding:18px}.logic.embed{border:0;border-radius:0}.lv-tabs{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.lv-tabs button{background:var(--bg);border:1px solid var(--line);cursor:pointer;color:var(--fg2);border-radius:8px;padding:5px 12px;font-size:13px}.lv-tabs button.on{border-color:var(--cyan);color:var(--cyan)}.lv-tabs button.ok{color:var(--green)}.lv-head h3{margin-bottom:2px;font-size:18px}.lv-head p{color:var(--fg2);margin:0 0 12px;font-size:14px}.lv-body{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start;gap:18px;display:grid}.logic.embed .lv-body{grid-template-columns:1fr}.lv-board svg{background:var(--bg);border:1px solid var(--line);border-radius:12px;width:100%}.wire{fill:none;stroke:#33405a;stroke-width:3px}.wire.on{stroke:var(--cyan);filter:drop-shadow(0 0 4px #38d9f599)}.wire.nil{stroke-dasharray:5 5;stroke:#2a3346}.lv-board text{font-family:var(--mono);text-anchor:middle;fill:var(--fg);pointer-events:none;font-size:15px;font-weight:700}.lv-board text.nm{fill:var(--fg3);font-size:12px;font-weight:400}.lv-board .in{cursor:pointer}.lv-board .in rect{fill:#1a2333;stroke:var(--line2);stroke-width:2px}.lv-board .in.on rect{fill:#0e2a33;stroke:var(--cyan)}.lv-board .gate{cursor:pointer}.lv-board .gate rect{fill:#1a2030;stroke:var(--line2);stroke-width:2px}.lv-board .gate.empty rect{stroke-dasharray:6 4;stroke:var(--amber)}.lv-board .gate.empty text{fill:var(--amber)}.lv-board .gate.on rect{stroke:var(--cyan)}.lv-board .gate.sel rect{stroke:var(--amber);stroke-dasharray:none;fill:#2a2214}.lv-board .out circle{fill:#1a2030;stroke:var(--line2);stroke-width:2px}.lv-board .out.on circle{fill:#10301e;stroke:var(--green)}.lv-board .out.on text{fill:var(--green)}.palette{color:var(--fg2);flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;font-size:13px;display:flex}.palette span{margin-right:6px}.palette button{font-family:var(--mono);background:var(--bg);border:1px solid var(--line2);cursor:pointer;border-radius:8px;padding:5px 12px;font-weight:700}.palette button:hover:not(:disabled){border-color:var(--amber)}.palette button.on{border-color:var(--amber);color:var(--amber)}.palette button:disabled{opacity:.4;cursor:default}.lv-table h4{color:var(--fg3);margin:0 0 6px;font-size:13px}.lv-table table{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:13.5px}.lv-table th,.lv-table td{border:1px solid var(--line);text-align:center;padding:4px 8px}.lv-table th{color:var(--fg3);font-size:12px;font-weight:500}.lv-table .tg{color:var(--fg2);background:#121a28}.lv-table td.ok{color:var(--green)}.lv-table td.bad{color:var(--red);background:#26121a}.lv-table tr.cur td{outline:1px solid var(--cyan);outline-offset:-1px}.win-inline{color:var(--green);background:#0f2219;border:1px solid #2c7a4b;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;font-weight:700;display:flex}.page.wide{max-width:1320px}.real-tabs{flex-wrap:wrap;gap:6px;margin:6px 0 18px;display:flex}.real-tabs button{background:var(--bg2);border:1px solid var(--line);cursor:pointer;color:var(--fg2);border-radius:10px;padding:7px 16px;font-size:14px}.real-tabs button.on{border-color:var(--cyan);color:var(--cyan);background:#0e2029}.real-head{flex-wrap:wrap;align-items:baseline;gap:14px;margin-bottom:8px;display:flex}.real-head h2{margin:0;font-size:24px}.real-head p{color:var(--fg2);margin:0}.real-head .link{margin-left:auto;font-size:14px}.real-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:start;gap:22px;display:grid}.photos{grid-template-columns:1fr 1fr;gap:10px;display:grid}.photo{border:1px solid var(--line);cursor:zoom-in;background:#000;border-radius:12px;margin:0;overflow:hidden}.photo:first-child,.photo:nth-child(2):last-child{grid-column:1/-1}.photo img{object-fit:contain;background:#0a0d12;width:100%;height:auto;max-height:420px;display:block}.photo figcaption{color:var(--fg3);background:var(--bg2);padding:6px 10px;font-size:11.5px}.photo figcaption a{color:var(--fg2)}.look{margin-top:12px}.look b{font-size:14px}.look ul{color:#cfd9e8;margin:8px 0 0;padding-left:20px;font-size:14px}.look li{margin:3px 0}.sf{background:var(--bg2);border:1px solid var(--line);border-radius:14px;margin-bottom:14px;overflow:hidden}.sf-frame{aspect-ratio:16/10;background:#05070b;position:relative}.sf-frame iframe{border:0;width:100%;height:100%;display:block}.sf-cover{cursor:pointer;background:#05070b;border:0;justify-content:flex-start;align-items:flex-end;padding:0 0 14px 14px;display:flex;position:absolute;inset:0}.sf-cover img{object-fit:cover;opacity:.75;width:100%;height:100%;transition:opacity .15s;position:absolute;inset:0}.sf-cover:hover img{opacity:.95}.sf-play{background:var(--cyan);color:#04131a;border-radius:10px;padding:10px 18px;font-weight:800;position:relative;box-shadow:0 6px 30px #0009}.sf.heavy .sf-meta{color:#ffd59a}.sf-meta{font-family:var(--mono);color:#fff;background:#0000008c;border-radius:6px;padding:2px 8px;font-size:11px;position:absolute;bottom:8px;right:10px}.sf-cap{padding:10px 14px 12px}.sf-cap b{font-size:15px}.sf-cap p{color:var(--fg2);margin:4px 0 6px;font-size:13.5px}.lightbox{z-index:500;cursor:zoom-out;background:#000000e6;flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.lightbox img{object-fit:contain;max-width:100%;max-height:calc(100vh - 80px)}.lb-cap{color:#aab;margin-top:10px;font-size:13px}.real-link{background:#0e1f26;border:1px solid #1d4a57;border-radius:10px;flex-direction:column;gap:6px;margin-top:12px;padding:8px;font-size:13px;font-weight:600;display:flex}.real-link:hover{border-color:var(--cyan);text-decoration:none}.real-link img{object-fit:cover;border-radius:6px;width:100%;max-height:150px}.real-link.top{flex-direction:row;align-items:center;gap:10px;margin:8px 0 4px}.real-link.top img{flex:none;width:84px;height:56px;max-height:none}.credits ul{color:var(--fg2);padding-left:20px;font-size:13.5px}.credits li{margin:4px 0}.hifi-load{z-index:5;color:var(--fg2);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:10px;font-size:14px;display:flex;position:absolute;inset:0}.hifi-load i{background:var(--cyan);border-radius:99px;width:0;max-width:260px;height:4px;transition:width .2s;display:block}.hifi-load .bad{color:var(--red)}.hf-head h3{margin:0 0 4px;font-size:18px}.hf-head p{color:var(--fg2);margin:0 0 12px;font-size:13px}.hifi-index{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;display:grid}.hcard{background:var(--bg2);border:1px solid var(--line);color:var(--fg);border-radius:14px;flex-direction:column;transition:border-color .15s,transform .15s;display:flex;overflow:hidden}.hcard:hover{border-color:var(--cyan);text-decoration:none;transform:translateY(-2px)}.hcard img{aspect-ratio:16/9;object-fit:cover;background:#05070b;width:100%}.hcard div{padding:12px 14px 14px}.hcard b{font-size:15px}.hcard p{color:var(--fg2);margin:4px 0 8px;font-size:13px}@media (width<=1100px){.hero{grid-template-columns:1fr}.labgrid{grid-template-columns:repeat(2,1fr)}.lab{grid-template-columns:1fr;height:auto}.lab-canvas{height:62vh}.lesson-wrap{grid-template-columns:1fr}.lesson-nav{position:static}.fault,.lv-body,.real-grid{grid-template-columns:1fr}}@media (width<=760px){.menu{display:block}.top nav{background:var(--bg2);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;padding:8px;display:none;position:absolute;top:60px;left:0;right:0}.top nav.open{display:flex}.hero h1{font-size:32px}.hero-3d{height:420px}.labgrid,.grid2,.tracks{grid-template-columns:1fr}.td-overlay{display:none}.lad-row{grid-template-columns:90px 1fr 70px}.lad-h{display:none}}.td-mode{z-index:6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0b0f17d1;position:absolute;top:12px;right:12px}.td-mode button{padding:5px 14px}.rk-model{color:var(--fg2);align-items:baseline;gap:8px;margin:-2px 0 8px;font-size:12.5px;display:flex}.rk-model span{color:#04131a;background:var(--cyan);border-radius:5px;flex:none;padding:0 6px;font-size:11px;font-weight:700}.rk-note{color:var(--fg2);border-left:2px solid var(--line2);padding-left:10px;font-size:13.5px}.rk-spec b{margin-bottom:8px;display:block}.rk-spec dl{gap:5px;margin:0;font-size:13px;display:grid}.rk-spec dl div{grid-template-columns:4.5em 1fr;gap:8px;display:grid}.rk-spec dt{color:var(--fg3)}.rk-spec dd{color:var(--fg);margin:0}.lab.bd .monitor{top:56px}.photos{margin:20px 0}.photos .ph-row{gap:10px;display:grid}.photos .ph-row.n2{grid-template-columns:1fr 1fr}.photos .ph-row.n3{grid-template-columns:repeat(3,1fr)}.photos img{object-fit:cover;border:1px solid var(--line);background:#05070b;border-radius:10px;width:100%;height:260px;display:block}.photos .ph-row.n1 img{object-fit:contain;height:340px}.photos figcaption{color:var(--fg2);margin-top:8px;font-size:14px}.photos .fine{margin-top:4px}.hifi-embed{position:relative}.hifi-go{all:unset;cursor:pointer;place-items:center;display:grid;position:absolute;inset:0}.hifi-go img{object-fit:cover;opacity:.45;width:100%;height:100%;position:absolute;inset:0}.hifi-go span{border:1px solid var(--cyan);color:var(--cyan);background:#0b0f17d9;border-radius:10px;padding:10px 18px;font-weight:700;position:relative}.hifi-go:hover span{background:var(--cyan);color:#04131a}.lab.hifi.embed .lab-canvas{border:0;border-radius:0}.hf-ov{max-width:320px}@media (width<=760px){.photos .ph-row.n2,.photos .ph-row.n3{grid-template-columns:1fr}}.wdg{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);margin:18px 0;padding:16px 18px}.wdg-ctl{color:var(--fg2);flex-wrap:wrap;align-items:center;gap:14px 22px;font-size:13.5px;display:flex}.wdg-ctl.col{flex-direction:column;align-items:stretch}.wdg-ctl label{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.wdg-ctl input[type=range]{min-width:160px;accent-color:var(--cyan);flex:1}.wdg-ctl .mono,.wdg-grid .mono{color:var(--fg)}.wdg-out{font-family:var(--mono);margin:16px 0 10px;font-size:15px}.wdg-big{color:var(--green);margin-left:4px;font-size:24px}.wdg-sub{color:var(--fg3);margin-top:4px;font-family:inherit;font-size:12.5px;display:block}.wdg-list{gap:2px;display:grid}.wdg-row{border-bottom:1px dashed var(--line);grid-template-columns:170px 1fr 84px 150px;align-items:center;gap:12px;padding:6px 0;font-size:13.5px;display:grid}.wdg-row:last-child{border-bottom:0}.wdg-bar{background:var(--bg);border-radius:99px;height:10px;position:relative}.wdg-bar i{background:var(--green);opacity:.8;border-radius:99px;transition:width .2s;position:absolute;top:0;bottom:0;left:0}.wdg-bar i.lim{background:var(--amber)}.wdg-bar .mk{background:var(--cyan);width:2px;transition:left .2s;position:absolute;top:-4px;bottom:-4px}.wdg-v{font-family:var(--mono);color:var(--fg2);text-align:right;font-size:12.5px}.wdg-st{font-size:12.5px}.wdg-st.ok,.wdg-grid .ok{color:var(--green)}.wdg-st.lim,.wdg-grid .warn{color:var(--amber)}.wdg-grid .bad{color:var(--red)}.wdg-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0 10px;display:grid}.wdg-grid>div{background:var(--bg);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.wdg-grid span{color:var(--fg2);font-size:12.5px}.wdg-grid b{font-size:20px}.wdg-msg{border:1px solid var(--line);border-radius:10px;margin-top:8px;padding:9px 12px;font-size:13.5px}.wdg-msg.ok{color:var(--green);border-color:#5dff8a4d}.wdg-msg.warn{color:var(--amber);border-color:#ffb84d59}.wdg-msg.bad{color:var(--red);border-color:#ff547059}.wdg-msg.info{color:var(--fg2)}.raid-disks{flex-wrap:wrap;gap:8px;margin:14px 0 4px;display:flex}.raid-disks .rd{border:1px solid var(--line2);background:var(--bg);width:58px;height:76px;font-family:var(--mono);color:var(--fg);background-image:linear-gradient(#0000 30%,#5dff8a38 30%);border-radius:8px;justify-content:center;align-items:flex-end;padding-bottom:8px;font-size:14px;font-weight:700;display:flex}.raid-disks .rd.red{background-image:linear-gradient(#0000 30%,#ffb84d47 30%)}.wiring{width:100%;overflow-x:auto}.wiring table{min-width:520px}@media (width<=760px){.wdg-row{grid-template-columns:1fr 84px}.wdg-row .wdg-bar{grid-area:2/1/auto/-1}.wdg-row .wdg-st{grid-column:1/-1}.wdg-grid{grid-template-columns:1fr;gap:6px}.wdg-grid>div{flex-direction:row;justify-content:space-between;align-items:baseline;padding:8px 12px}.wdg-grid b{white-space:nowrap;font-size:17px}.wdg-ctl .seg button{white-space:nowrap;padding:4px 9px}.wdg-ctl label{width:100%}.wiring table{min-width:0;font-size:13px}.wiring th,.wiring td{white-space:normal;word-break:break-word;padding:6px 7px}.wiring td:first-child{white-space:nowrap}}.md pre{border:1px solid var(--line);background:#0d1320;border-radius:12px;margin:14px 0;padding:14px 16px;line-height:1.55;overflow-x:auto}.md pre code{color:#cfe3ff;background:0 0;padding:0;font-size:12.8px}
