:root{--bg:#f4f7f8;--surface:#fff;--surface-2:#f8fafb;--ink:#142231;--muted:#617181;--line:#dbe4e8;--line-strong:#c7d4da;--teal:#009f83;--teal-dark:#007c68;--teal-soft:#e8f7f3;--blue:#2d7ff9;--red:#ef5148;--amber:#eaa526;--danger:#d9473f;--shadow:0 10px 30px rgba(26,50,62,.08);--radius:16px;--focus:0 0 0 3px rgba(0,159,131,.22);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
.breadboard-lab{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.bb-tools{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--line);background:#f8fbfb}.bb-tools>button{border:1px solid #c5d3d8;background:#fff;border-radius:7px;padding:7px 10px;font-size:10px;font-weight:800;cursor:pointer}.bb-tools>button.active{background:var(--teal);border-color:var(--teal);color:#fff}.bb-colors{display:flex;gap:5px;margin-left:auto}.bb-colors button{width:20px;height:20px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1px #8aa0a8;cursor:pointer}.bb-colors .red{background:#e84f48}.bb-colors .blue{background:#367ddd}.bb-colors .black{background:#273b44}.bb-colors button.active{box-shadow:0 0 0 3px rgba(0,159,131,.25)}.bb-stage{display:grid;grid-template-columns:210px minmax(560px,1fr);gap:16px;padding:16px;background:#edf4f4;overflow:auto}.bb-schematic{background:#17333f;color:#eef7f5;border-radius:12px;padding:16px;align-self:start}.bb-schematic .eyebrow{color:#65dfbd}.bb-schematic svg{width:100%;margin:12px 0}.bb-schematic svg path,.bb-schematic svg circle{fill:none;stroke:#68dfbf;stroke-width:3}.bb-schematic svg text{fill:#c9dcdf;font-size:9px;text-anchor:middle}.bb-schematic p{font-size:12px;line-height:1.5}.bb-schematic small{color:#a9c2c7;line-height:1.4}.bb-board-wrap{min-width:560px}.bb-board{position:relative;background:#fff;border:1px solid #bccbd0;border-radius:15px;padding:32px 25px 28px;box-shadow:0 12px 24px rgba(30,54,64,.13),inset 0 0 30px rgba(98,126,137,.06)}.bb-brand{position:absolute;left:12px;top:10px;font-size:8px;font-weight:900;color:#71848d;letter-spacing:.08em}.bb-brand span{font-weight:500;margin-left:8px}.bb-rail,.bb-hole-row{display:grid;grid-template-columns:15px repeat(16,1fr);gap:5px;align-items:center}.bb-rail{margin:4px 0}.bb-rail b{font-size:12px;color:#dd544f}.bb-hole-row{grid-template-columns:15px repeat(16,1fr) 15px;margin:3px 0}.bb-hole-row>span{font-size:8px;color:#8da0a8;text-align:center}.bb-hole{position:relative;z-index:3;aspect-ratio:1;border:0;border-radius:50%;padding:0;background:radial-gradient(circle,#263942 0 25%,#8799a1 28% 39%,#f7f9fa 43% 66%,#c9d4d8 70%);cursor:pointer}.bb-hole:hover,.bb-hole:focus-visible{outline:0;transform:scale(1.35);box-shadow:0 0 0 4px rgba(0,159,131,.18)}.bb-hole.node-lit{background:radial-gradient(circle,#087561 0 24%,#38d0aa 28% 43%,#edfaf6 47% 67%,#0fa486 71%);box-shadow:0 0 0 4px rgba(0,159,131,.14)}.bb-hole.occupied:after{content:"";position:absolute;inset:25%;background:#dca647;border-radius:50%}.bb-field{position:relative;margin:14px 0}.bb-hole-row.after-gap{margin-top:17px}.bb-center-gap{position:absolute;left:20px;right:20px;top:50%;height:13px;translate:0 -50%;border-top:1px solid #d6dfe2;border-bottom:1px solid #d6dfe2;text-align:center}.bb-center-gap span{position:relative;top:-5px;background:#fff;padding:0 8px;font-size:7px;color:#8b9da5}.bb-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.bb-jumper-shadow,.bb-jumper{fill:none;stroke-width:1.8;vector-effect:non-scaling-stroke}.bb-jumper-shadow{stroke:#fff;stroke-width:4}.bb-jumper.red{stroke:#e64d47}.bb-jumper.blue{stroke:#357bda}.bb-jumper.black{stroke:#273b44}.bb-part line{stroke:#74878f;stroke-width:1}.bb-part rect{fill:#deb66e;stroke:#946d38;stroke-width:.4}.bb-part text{font-size:2.3px;text-anchor:middle;fill:#425761}.bb-legend{display:flex;gap:18px;padding:8px 2px;font-size:9px;color:#687d86}.bb-status{display:flex;gap:12px;padding:11px 16px;border-top:1px solid var(--line);font-size:11px}.bb-status b{color:var(--teal-dark);white-space:nowrap}.breadboard-workspace .feedback{margin-top:12px}@media(max-width:900px){.bb-stage{grid-template-columns:1fr}.bb-schematic{display:none}}
.lesson-components{margin:18px 0 24px;padding:14px;background:#f5faf8;border:1px solid #cfe8e1;border-radius:13px}.lesson-components>h3{margin:0;font-size:13px}.lesson-components>p{font-size:11px!important;margin:5px 0 12px!important}.lesson-components>div{display:grid;gap:7px}.component-lesson-card{background:#fff;border:1px solid #dbe6e7;border-radius:9px;overflow:hidden}.component-lesson-card summary{display:grid;grid-template-columns:54px 1fr;gap:9px;align-items:center;cursor:pointer;padding:8px;list-style:none}.component-lesson-card summary::-webkit-details-marker{display:none}.component-lesson-card summary small,.component-lesson-card summary strong{display:block}.component-lesson-card summary small{color:#087864;font-size:8px;text-transform:uppercase;letter-spacing:.08em;font-weight:900}.component-lesson-card summary strong{font-size:12px;margin-top:2px}.mini-component{width:52px;height:34px;display:block}.mini-component svg{width:100%;height:100%}.component-lesson-card>div{padding:0 11px 12px 72px;font-size:11px;color:#506575;line-height:1.45}.component-lesson-card p{font-size:11px!important;margin:0 0 8px!important}.component-lesson-card dl{margin:0}.component-lesson-card dt{font-weight:900;color:#29434f;margin-top:6px}.component-lesson-card dd{margin:1px 0}.deep-library{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}.deep-library .library-card{min-height:0}.component-category{display:block;margin-top:14px;color:#087864;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.1em}.deep-library .library-card h2{margin-top:5px}.deep-library dl{border-top:1px solid var(--line);padding-top:7px}.deep-library dt{font-weight:900;color:#38515d}.deep-library dd{line-height:1.45}.used-in{border-top:1px solid var(--line);margin-top:13px;padding-top:10px}.used-in strong{display:block;font-size:10px;margin-bottom:6px}.used-in button{border:0;background:#eaf6f2;color:#087864;border-radius:5px;padding:5px 7px;margin:2px;font-size:9px;font-weight:800;cursor:pointer}.used-in button:hover{background:#d4eee6}@media(max-width:1000px){.deep-library{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.deep-library{grid-template-columns:1fr}}
*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{color:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.app-shell{min-height:100vh;display:grid;grid-template-columns:72px 1fr;grid-template-rows:76px 1fr;background:linear-gradient(180deg,#fff 0,#f4f7f8 240px)}
.topbar{grid-column:1/-1;display:flex;align-items:center;gap:28px;padding:0 28px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.95);position:sticky;top:0;z-index:30}.brand{display:flex;align-items:center;gap:11px;min-width:190px}.brand-mark{width:34px;height:34px;border:3px solid var(--ink);border-right-color:transparent;border-radius:7px;position:relative}.brand-mark:after{content:"";position:absolute;width:12px;height:12px;border:3px solid var(--teal);border-radius:50%;inset:7px}.brand b{font-size:14px;letter-spacing:.18em;line-height:1.05}.crumb{border-left:1px solid var(--line);padding-left:24px}.crumb strong{display:block;font-size:15px}.crumb span{font-size:12px;color:var(--muted)}.objective{flex:1;border-left:1px solid var(--line);padding-left:24px}.eyebrow{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.13em;color:var(--muted);font-weight:800;margin-bottom:4px}.objective b{font-size:14px}.xp{min-width:210px}.xp-row{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:7px}.xp-track{height:7px;background:#e7edef;border-radius:9px;overflow:hidden}.xp-fill{height:100%;background:var(--teal);border-radius:9px}.top-action{display:flex;gap:9px;align-items:center}
.icon-btn,.nav-btn,.ghost,.primary,.tray-item,.tab,.placed-part,.row-node{border:0;cursor:pointer}.icon-btn{width:40px;height:40px;border-radius:10px;background:transparent;font-size:20px}.icon-btn:hover,.icon-btn:focus-visible{background:var(--teal-soft);outline:0;box-shadow:var(--focus)}
.side-nav{grid-row:2;display:flex;flex-direction:column;align-items:center;padding:18px 10px;border-right:1px solid var(--line);background:#fbfcfc;gap:10px;position:sticky;top:76px;height:calc(100vh - 76px);z-index:20}.nav-btn{width:48px;height:48px;border-radius:12px;background:transparent;color:#667789;display:grid;place-items:center;font-size:20px;position:relative}.nav-btn:hover,.nav-btn:focus-visible{background:var(--teal-soft);color:var(--teal-dark);outline:0;box-shadow:var(--focus)}.nav-btn.active{background:var(--teal-soft);color:var(--teal-dark)}.nav-btn.active:before{content:"";position:absolute;left:-10px;width:3px;height:28px;border-radius:0 3px 3px 0;background:var(--teal)}.nav-glyph{display:grid;place-items:center;flex:0 0 24px}.nav-icon{display:block;width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;overflow:visible}.nav-icon .nav-node{fill:#fbfcfc;stroke:currentColor;stroke-width:1.55}.nav-btn:hover .nav-icon,.nav-btn:focus-visible .nav-icon{transform:translateY(-1px)}.nav-btn.active .nav-icon{stroke-width:1.8}.nav-btn.active .nav-icon .nav-node{fill:currentColor}.nav-spacer{flex:1}
.main{min-width:0;padding:22px;max-width:1600px;width:100%;margin:auto}.workspace-view{display:grid;grid-template-columns:320px minmax(0,1fr);gap:18px;align-items:start}.lesson-panel,.canvas-card,.feedback,.map-card,.library-card,.sandbox-card,.modal-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.lesson-panel{height:calc(100vh - 120px);min-height:620px;display:flex;flex-direction:column;padding:0 20px;position:sticky;top:98px}.tabs{display:flex;border-bottom:1px solid var(--line);padding-top:8px}.tab{flex:1;padding:16px 6px 13px;background:transparent;color:var(--muted);font-weight:700;border-bottom:2px solid transparent}.tab.active{color:var(--teal-dark);border-color:var(--teal)}.learn-content{padding:22px 4px;overflow:auto}.lesson-panel h2{font-size:22px;line-height:1.2;margin:0 0 12px}.lesson-panel p{font-size:14.5px;line-height:1.65;color:#4b5f70;margin:0 0 18px}.concept-card{border-top:1px solid var(--line);padding-top:20px;margin-top:22px}.concept-card h3{font-size:15px;margin:0 0 8px}.loop-visual{height:96px;margin:14px 0 8px;position:relative}.loop-track{position:absolute;inset:14px 34px;border:9px solid #94a4ae;border-radius:50px}.loop-gap{position:absolute;background:#fff;width:30px;height:15px;bottom:8px;left:calc(50% - 15px)}.loop-dot{width:20px;height:20px;background:var(--teal);border-radius:50%;position:absolute;left:28%;top:7px;box-shadow:0 2px 8px rgba(0,159,131,.3)}.build-objective{background:var(--teal-soft);border:1px solid #bde9dc;border-radius:12px;padding:14px;margin-bottom:18px}.build-objective strong{display:block;margin-bottom:5px}.checklist{list-style:none;padding:0;margin:0}.checklist li{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px;color:#506273}.check{width:20px;height:20px;border:1px solid var(--line-strong);border-radius:50%;display:grid;place-items:center;color:#fff;flex:0 0 auto}.check.done{background:var(--teal);border-color:var(--teal)}.lesson-foot{margin-top:auto;padding:16px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.lesson-foot small{color:var(--muted)}
.work-area{min-width:0}.canvas-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.lesson-title h1{font-size:18px;margin:0}.lesson-title p{font-size:12px;color:var(--muted);margin:3px 0 0}.toolbar-actions{display:flex;gap:9px}.primary,.ghost{border-radius:10px;padding:11px 16px;font-weight:800;font-size:13px}.primary{background:var(--teal);color:#fff;box-shadow:0 4px 12px rgba(0,159,131,.2)}.primary:hover{background:var(--teal-dark)}.primary:focus-visible,.ghost:focus-visible{outline:0;box-shadow:var(--focus)}.ghost{background:#fff;border:1px solid var(--line);color:#42566a}.ghost:hover{border-color:var(--teal);color:var(--teal-dark)}
.canvas-card{overflow:hidden}.canvas{height:min(57vh,570px);min-height:420px;position:relative;background-color:#fbfdfe;background-image:linear-gradient(#e6edf0 1px,transparent 1px),linear-gradient(90deg,#e6edf0 1px,transparent 1px),linear-gradient(#f1f5f6 1px,transparent 1px),linear-gradient(90deg,#f1f5f6 1px,transparent 1px);background-size:40px 40px,40px 40px,8px 8px,8px 8px;overflow:hidden}.canvas.dragover{box-shadow:inset 0 0 0 3px var(--teal)}.empty-canvas{position:absolute;inset:0;display:grid;place-items:center;text-align:center;color:var(--muted);pointer-events:none}.empty-canvas strong{display:block;color:#455a6b;font-size:17px;margin-bottom:6px}.wire-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.wire{fill:none;stroke:var(--blue);stroke-width:4;stroke-linecap:round;stroke-dasharray:9 8;animation:flow 1.2s linear infinite}.wire.unpowered{stroke:#aebbc3;stroke-dasharray:0}.wire.return{stroke:var(--red)}@keyframes flow{to{stroke-dashoffset:-34}}
.placed-part{position:absolute;width:116px;min-height:88px;border:1px solid #bbc8ce;border-radius:10px;background:linear-gradient(#fff,#eaf0f2);box-shadow:0 7px 14px rgba(26,50,62,.13);display:grid;grid-template-columns:12px 1fr 12px;grid-template-rows:58px auto auto;align-items:center;padding:5px 6px;z-index:4}.placed-part:hover,.placed-part:focus-visible{outline:0;box-shadow:var(--focus),0 7px 14px rgba(26,50,62,.13)}.part-visual{display:block;width:86px;height:56px;grid-column:2}.component-svg{display:block;width:100%;height:100%;overflow:visible}.part-name{grid-column:1/-1;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.part-detail{grid-column:1/-1;font-size:10px;color:var(--muted)}.terminal{width:12px;height:12px;border:3px solid #fff;background:#344655;border-radius:50%;box-shadow:0 0 0 1px #647682}.terminal-a{margin-left:-12px}.terminal-b{margin-right:-12px}.part-led.sim-on .component-svg{filter:drop-shadow(0 0 9px #ff5a50)}.part-breadboard{width:70%;height:52%;min-width:300px;background:#fff;opacity:.9}.part-breadboard .part-visual{width:90%;height:76%;grid-column:1/-1;justify-self:center}.part-breadboard .terminal{display:none}.part-breadboard .part-name{font-size:12px}
.breadboard-nodes{position:absolute;inset:18% 12%;z-index:5;display:flex;justify-content:space-around;align-items:center}.row-node{width:74px;height:74px;border-radius:50%;background:#fff;border:2px dashed var(--line-strong);color:var(--muted);font-weight:900}.row-node.selected{background:var(--teal-soft);border:2px solid var(--teal);color:var(--teal-dark)}
.tray{min-height:112px;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:12px 16px;background:#fff;overflow-x:auto}.tray-label{font-size:12px;color:var(--muted);width:82px;flex:0 0 auto}.tray-item{width:102px;height:86px;flex:0 0 auto;border:1px solid var(--line);border-radius:11px;background:#fbfcfd;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.tray-item:hover,.tray-item:focus-visible{border-color:var(--teal);outline:0;box-shadow:var(--focus)}.tray-visual{display:block;width:76px;height:52px}.tray-item>span:last-child{font-size:11px;font-weight:700}.tray-item.added{background:var(--teal-soft);border-color:#bde9dc}
.feedback{margin-top:14px;padding:17px 20px;display:flex;gap:15px;align-items:flex-start;min-height:76px}.feedback-icon{width:38px;height:38px;border:2px solid var(--line-strong);color:var(--muted);border-radius:50%;display:grid;place-items:center;font-weight:900;flex:0 0 auto}.feedback h3{font-size:15px;margin:1px 0 4px}.feedback p{font-size:13px;color:var(--muted);margin:0;line-height:1.5}.feedback.success{border-color:#a7dfd1;background:#fbfffe}.feedback.success .feedback-icon{border-color:var(--teal);color:var(--teal)}.feedback.error{border-color:#efc1bd}.feedback.error .feedback-icon{border-color:var(--danger);color:var(--danger)}.readings{margin-left:auto;display:flex;gap:18px}.reading small{display:block;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.reading b{font-size:13px;color:var(--teal-dark)}
.view-title{display:flex;justify-content:space-between;align-items:end;margin:5px 0 20px}.view-title h1{font-size:28px;margin:0}.view-title p{color:var(--muted);margin:7px 0 0}.map-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.map-card{padding:20px;min-height:180px;position:relative}.map-card.complete{border-color:#a7dfd1}.map-card.locked{opacity:.62}.chapter-num{color:var(--teal-dark);font-size:12px;font-weight:900;letter-spacing:.12em}.map-card h2{font-size:18px;margin:25px 0 6px}.map-card p{font-size:13px;color:var(--muted);line-height:1.45}.map-card button{margin-top:10px}.library-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.library-card{padding:20px}.library-visual{width:120px;height:72px;border-radius:12px;background:#f4f8f9;display:grid;place-items:center;padding:4px}.library-visual .component-svg{width:108px;height:65px}.locked-mark{font-size:28px;color:var(--muted)}.library-card h2{font-size:17px;margin:15px 0 5px}.library-card p{font-size:13px;color:var(--muted);line-height:1.5}.library-card dl{font-size:12px}.library-card dt{color:var(--muted);margin-top:8px}.library-card dd{margin:2px 0}.glossary{margin-top:28px}.glossary details{background:#fff;border:1px solid var(--line);border-radius:10px;padding:13px 16px;margin:8px 0}.glossary summary{font-weight:800;cursor:pointer}.glossary p{color:var(--muted);font-size:13px}.sandbox-card{padding:28px}.sandbox-card h2{margin-top:0}
.modal{position:fixed;inset:0;background:rgba(15,31,41,.38);z-index:100;display:grid;place-items:center;padding:20px}.modal-card{width:min(470px,100%);padding:28px}.modal-card h1{margin:0 0 8px}.modal-card p{color:var(--muted);line-height:1.55}.field{display:block;margin:20px 0}.field span{display:block;font-size:12px;font-weight:800;margin-bottom:7px}.field input{width:100%;padding:12px 13px;border:1px solid var(--line-strong);border-radius:10px;color:var(--ink);background:#fff}.field input:focus{outline:0;box-shadow:var(--focus);border-color:var(--teal)}.toast{position:fixed;right:24px;bottom:24px;background:#153244;color:white;padding:12px 16px;border-radius:10px;box-shadow:var(--shadow);z-index:90;font-size:13px}
@media(max-width:1050px){.workspace-view{grid-template-columns:270px minmax(0,1fr)}.lesson-panel{padding:0 15px}.xp{display:none}.objective{display:none}.map-grid,.library-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.app-shell{grid-template-columns:1fr;grid-template-rows:64px 1fr 64px}.topbar{padding:0 14px;gap:12px}.brand{min-width:auto}.brand b{display:none}.crumb{padding-left:12px}.crumb span{display:none}.top-action .icon-btn{display:none}.side-nav{grid-row:3;position:fixed;bottom:0;top:auto;left:0;right:0;width:100%;height:64px;flex-direction:row;justify-content:flex-start;gap:2px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;border-right:0;border-top:1px solid var(--line);padding:7px;z-index:50}.side-nav::-webkit-scrollbar{display:none}.nav-spacer{display:none}.main{grid-row:2;padding:12px 12px 82px}.workspace-view{display:block}.lesson-panel{height:auto;min-height:0;position:static;margin-bottom:12px;padding:0 15px}.learn-content{max-height:290px}.lesson-foot{display:none}.canvas-toolbar{align-items:flex-end}.canvas{height:390px;min-height:390px}.tray{min-height:92px}.tray-label{display:none}.placed-part{min-width:82px}.feedback{flex-wrap:wrap}.readings{width:100%;margin-left:53px}.map-grid,.library-grid{grid-template-columns:1fr}.view-title h1{font-size:23px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}

/* Live lesson instruments */
.lesson-instrument{margin-top:14px;border:1px solid #c8d9dc;border-radius:14px;background:#f8fbfa;display:grid;grid-template-columns:minmax(180px,.8fr) minmax(280px,1.4fr) 120px;gap:16px;align-items:center;padding:18px 20px;box-shadow:0 8px 22px rgba(25,56,65,.07)}
.instrument-copy h2{font-size:16px;margin:5px 0 6px;color:#203a46}.instrument-copy>p{font-size:12px;line-height:1.5;color:var(--muted);margin:0}.instrument-plot svg{display:block;width:100%;max-height:154px;overflow:visible}.lab-grid path{fill:none;stroke:#dce7e8;stroke-width:1}.lab-grid path:first-child{stroke:#81959d;stroke-width:1.4}.lab-curve{fill:none;stroke:var(--teal);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 3px 3px rgba(0,143,119,.13))}.threshold{stroke:#df9b45;stroke-width:1.5;stroke-dasharray:4 4}.lab-marker circle{fill:#fff;stroke:#0b846e;stroke-width:3}.lab-marker text{font-size:9px;font-weight:800;fill:#61747d}.lab-marker .marker-value{font-size:10px;fill:#173b46}.instrument-readout{border-left:1px solid #d8e4e5;padding-left:16px}.instrument-readout strong{display:block;font-size:21px;color:var(--teal-dark);font-variant-numeric:tabular-nums}.instrument-readout span{display:block;margin-top:4px;font-size:10px;line-height:1.35;color:var(--muted)}.instrument-control{display:block;margin-top:13px}.instrument-control span{display:flex;justify-content:space-between;font-size:10px;color:#556b75}.instrument-control input{width:100%;accent-color:var(--teal);margin-top:7px}.instrument-tip{margin-top:12px!important;padding:8px 10px;border-radius:8px;background:#eaf5f2;color:#286052!important;font-size:10px!important}
@media(max-width:900px){.lesson-instrument{grid-template-columns:1fr 1.4fr}.instrument-readout{grid-column:1/-1;border-left:0;border-top:1px solid #d8e4e5;padding:10px 0 0;display:flex;align-items:baseline;gap:8px}}
@media(max-width:620px){.lesson-instrument{grid-template-columns:1fr;padding:15px}.instrument-readout{grid-column:auto}.instrument-plot{order:3}}

/* Component Detective assessment */
.detective-shell{display:grid;grid-template-columns:275px minmax(0,1fr);gap:18px;min-height:calc(100vh - 118px)}
.detective-brief,.detective-lab,.detective-results{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}
.detective-brief{padding:24px;position:sticky;top:88px;height:fit-content}.detective-brief h2{margin:12px 0 8px}.detective-brief>p{font-size:13px;color:var(--muted);line-height:1.55}.detective-brief ol{padding:0;list-style:none;margin:24px 0}.detective-brief li{padding:10px 0 10px 28px;border-bottom:1px solid var(--line);font-size:12px;position:relative}.detective-brief li:before{content:'○';position:absolute;left:3px;color:#8da0aa}.detective-brief li.done:before{content:'✓';color:var(--teal);font-weight:900}.detective-score{padding:15px;background:var(--teal-soft);border-radius:12px;margin:18px 0}.detective-score b{font-size:28px;color:var(--teal-dark);display:block}.detective-score span{font-size:10px;text-transform:uppercase;letter-spacing:.1em}.detective-brief button{width:100%;margin-top:8px}
.detective-lab{padding:26px;overflow:auto}.detective-lab>header{display:flex;align-items:start;justify-content:space-between}.detective-lab h1{margin:5px 0 16px;font-size:25px}.safety-chip{background:#eaf7f3;color:#08755f;border:1px solid #a9dfd1;border-radius:999px;padding:7px 11px;font-size:9px;font-weight:900;letter-spacing:.1em}.mystery-stage{display:grid;grid-template-columns:220px 1fr;gap:24px;align-items:center;padding:20px;background:linear-gradient(135deg,#f4f8f9,#fff);border:1px solid var(--line);border-radius:15px}.mystery-part{height:155px;display:grid;place-items:center;position:relative;background:#fff;border:1px dashed #aebfc7;border-radius:13px}.mystery-part .component-svg{width:170px;height:105px;filter:saturate(.28)}.mystery-part>span{position:absolute;right:13px;top:10px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#193540;color:#fff;font-weight:900}.physical-clues h3,.test-bench h3,.evidence-board h3{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:#536a76}.physical-clues p{margin:9px 0;font-size:13px;color:#3f5663}.physical-clues p span{color:var(--teal);margin-right:8px}.test-bench{margin-top:18px}.test-bench>p{font-size:12px;color:var(--muted)}.test-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.test-grid button{min-height:78px;text-align:left;padding:11px;border:1px solid var(--line);border-radius:10px;background:#fafcfc;color:var(--ink)}.test-grid button:hover,.test-grid button:focus-visible{border-color:var(--teal);outline:0;box-shadow:var(--focus)}.test-grid button.used{background:var(--teal-soft);border-color:#a8dfd2}.test-grid b,.test-grid small{display:block}.test-grid b{font-size:11px}.test-grid small{font-size:9px;line-height:1.35;color:var(--muted);margin-top:5px}.discharge-action{margin-top:10px;border:1px solid #d6a43d;background:#fff8dd;padding:10px;border-radius:9px;color:#6b4c0e;font-weight:800}.evidence-board{margin-top:18px;padding:15px;border-radius:12px;background:#f6f8f8}.evidence-board h3{margin-top:0}.evidence-board h3 span{float:right;color:var(--teal);font-size:9px}.evidence-board p{display:flex;gap:10px;margin:8px 0;font-size:12px;color:#405864}.evidence-board p b{color:var(--teal-dark)}.identify-row{display:flex;align-items:end;gap:12px;margin-top:18px}.identify-row label{flex:1}.identify-row label>span{display:block;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}.identify-row select{width:100%;padding:11px;border:1px solid var(--line-strong);border-radius:9px;background:#fff}.detective-feedback{min-height:20px;color:#37515e;font-size:12px;border-left:3px solid var(--teal);padding-left:10px}.detective-results{padding:28px}.detective-results h1{margin-top:0}.detective-results article{display:flex;gap:14px;padding:15px 0;border-bottom:1px solid var(--line)}.detective-results article p{font-size:12px;color:var(--muted);margin:5px 0}.detective-results article small{color:var(--teal-dark)}.result-mark{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#fbe8e7;color:#a43d36}.result-mark.correct{background:var(--teal-soft);color:var(--teal)}
@media(max-width:900px){.detective-shell{grid-template-columns:1fr}.detective-brief{position:static}.test-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.mystery-stage{grid-template-columns:1fr}.identify-row{align-items:stretch;flex-direction:column}.test-grid{grid-template-columns:1fr}}
.high-contrast{--line:#8a9aa3;--muted:#3f515e;--teal:#00755f;--teal-dark:#005c4b}.high-contrast .placed-part,.high-contrast .tray-item{border-width:2px}

/* Tactile workbench interactions */
.wire-layer{overflow:visible}
.wire{filter:drop-shadow(0 2px 2px rgba(45,127,249,.14))}
.wire.preview{stroke:var(--teal);stroke-width:3;stroke-dasharray:6 5;filter:drop-shadow(0 0 5px rgba(0,159,131,.35))}
.wire-hit{fill:none;stroke:transparent;stroke-width:16;pointer-events:stroke;cursor:pointer}
.wire-hit:hover+.wire{stroke:var(--danger);stroke-width:6}
.placed-part{cursor:grab;touch-action:none;transition:box-shadow .18s ease,scale .18s ease}
.placed-part:active{cursor:grabbing;scale:1.025}
.terminal{position:relative;cursor:crosshair;touch-action:none;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}
.terminal:hover,.terminal:focus-visible,.terminal-target{background:var(--teal);transform:scale(1.55);box-shadow:0 0 0 5px rgba(0,159,131,.16),0 0 12px rgba(0,159,131,.55);outline:0}
.terminal-pending{background:var(--teal);animation:terminalPulse .8s ease-in-out infinite alternate}
.terminal:after{content:attr(data-label);position:absolute;top:17px;left:50%;translate:-50% 0;font-size:9px;line-height:1;font-weight:900;color:#425765;white-space:nowrap;background:rgba(255,255,255,.92);padding:2px 4px;border-radius:4px;pointer-events:none}
.terminal-a:after{left:0}.terminal-b:after{left:100%}
@keyframes terminalPulse{to{transform:scale(1.65);box-shadow:0 0 0 7px rgba(0,159,131,.13),0 0 14px rgba(0,159,131,.5)}}

/* Precision schematic connectors */
.terminal{width:18px;height:18px;border:0;background:radial-gradient(circle at 42% 38%,#172832 0 28%,#546873 30% 43%,#dce4e7 46% 60%,#7d9099 63% 72%,#f7fafb 75%);box-shadow:0 0 0 1px #637781,0 2px 3px rgba(24,45,56,.2);z-index:3}
.terminal-a{margin-left:-15px}.terminal-b{margin-right:-15px}
.terminal:after{top:23px;min-width:22px;text-align:center;color:#2f4652;border:1px solid #d8e2e6;box-shadow:0 1px 2px rgba(20,45,58,.08);letter-spacing:.02em}
.terminal-connected{background:radial-gradient(circle,#087763 0 26%,#3bd0ae 29% 42%,#dce4e7 45% 60%,#71858f 63% 72%,#f7fafb 75%);box-shadow:0 0 0 1px #087763,0 0 0 4px rgba(0,159,131,.09),0 2px 4px rgba(24,45,56,.18)}
.terminal:hover,.terminal:focus-visible,.terminal-target{background:radial-gradient(circle,#075e50 0 25%,#44ddba 28% 44%,#eef6f4 47% 61%,#16a98e 64% 74%,#f7fafb 77%);transform:scale(1.28);box-shadow:0 0 0 6px rgba(0,159,131,.11),0 0 15px rgba(0,159,131,.42)}
.wire{stroke-linejoin:round;stroke-linecap:square}
.node-dot{fill:#fff;stroke:#5c7480;stroke-width:.3;pointer-events:none;filter:drop-shadow(0 1px 1px rgba(20,43,54,.18))}
.wire-new{animation:wireSeat .28s cubic-bezier(.22,1,.36,1)}
@keyframes wireSeat{from{opacity:.1;transform:scale(.992)}to{opacity:1;transform:scale(1)}}
.rotate-control{position:absolute;right:-9px;top:-10px;width:26px;height:26px;border:1px solid #cbd8dd;border-radius:50%;background:#fff;color:#425a66;display:grid;place-items:center;padding:0;font-size:15px;line-height:1;cursor:pointer;opacity:0;transform:scale(.86);box-shadow:0 3px 8px rgba(24,45,56,.14);transition:opacity .16s ease,transform .16s ease,background .16s ease,color .16s ease;z-index:5}
.placed-part:hover .rotate-control,.placed-part:focus-within .rotate-control{opacity:1;transform:scale(1)}
.rotate-control:hover,.rotate-control:focus-visible{opacity:1;background:var(--teal);color:#fff;border-color:var(--teal);outline:0;box-shadow:0 0 0 4px rgba(0,159,131,.13),0 4px 10px rgba(24,45,56,.16)}

/* Node rotation leaves component artwork upright */
.placed-part .terminal{position:absolute;margin:0;translate:0 0}
.terminals-2.rotation-0 .terminal-a{left:-9px;top:25px}.terminals-2.rotation-0 .terminal-b{right:-9px;top:25px}
.terminals-2.rotation-90 .terminal-a{left:calc(50% - 9px);top:-9px}.terminals-2.rotation-90 .terminal-b{left:calc(50% - 9px);bottom:-9px}
.terminals-2.rotation-180 .terminal-a{right:-9px;top:25px}.terminals-2.rotation-180 .terminal-b{left:-9px;top:25px}
.terminals-2.rotation-270 .terminal-a{left:calc(50% - 9px);bottom:-9px}.terminals-2.rotation-270 .terminal-b{left:calc(50% - 9px);top:-9px}
.terminals-3.rotation-0 .terminal-a{left:-9px;top:25px}.terminals-3.rotation-0 .terminal-b{left:calc(50% - 9px);bottom:-9px}.terminals-3.rotation-0 .terminal-c{right:-9px;top:25px}
.terminals-3.rotation-90 .terminal-a{left:calc(50% - 9px);top:-9px}.terminals-3.rotation-90 .terminal-b{left:-9px;top:25px}.terminals-3.rotation-90 .terminal-c{left:calc(50% - 9px);bottom:-9px}
.terminals-3.rotation-180 .terminal-a{right:-9px;top:25px}.terminals-3.rotation-180 .terminal-b{left:calc(50% - 9px);top:-9px}.terminals-3.rotation-180 .terminal-c{left:-9px;top:25px}
.terminals-3.rotation-270 .terminal-a{left:calc(50% - 9px);bottom:-9px}.terminals-3.rotation-270 .terminal-b{right:-9px;top:25px}.terminals-3.rotation-270 .terminal-c{left:calc(50% - 9px);top:-9px}
.rotation-0 .terminal:after,.rotation-180 .terminal:after{top:23px;left:50%;translate:-50% 0}
.rotation-90 .terminal:after,.rotation-270 .terminal:after{top:1px;left:27px;translate:0 0}
.switch-svg.is-closed{filter:drop-shadow(0 2px 2px rgba(0,159,131,.18))}
.switch-svg.is-closed path{animation:switchSeat .18s cubic-bezier(.22,1,.36,1)}
@keyframes switchSeat{from{opacity:.55;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}

/* Circuit Quest identity */
.brand{gap:9px}
.brand-logo{width:43px;height:43px;flex:0 0 auto;overflow:visible;filter:drop-shadow(0 4px 8px rgba(0,127,107,.12))}
.logo-frame{fill:#f7fbfa;stroke:#18313e;stroke-width:3;stroke-linejoin:round}
.logo-trace,.logo-tail{fill:none;stroke:url(#logoTrace);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.logo-node{fill:#fff;stroke:#008e77;stroke-width:3}
.logo-core{fill:#15313e}
.brand b{font-size:13px;line-height:1.02;letter-spacing:.19em;color:#17303d}
.brand b span{color:#008d76}
.brand:hover .logo-node{animation:logoNode .7s cubic-bezier(.22,1,.36,1)}
@keyframes logoNode{50%{transform:scale(1.35);transform-origin:center;fill:#45d5b2}}

/* Rich learning modules */
.rich-learn{padding-bottom:36px}.learn-summary{font-size:15px!important;color:#354f5e!important;border-left:3px solid var(--teal);padding-left:13px}.analogy-card{margin-bottom:25px}.deep-dive>h3{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:#647784;margin:0 0 10px}.learn-detail{border-top:1px solid var(--line);background:#fff}.learn-detail:last-child{border-bottom:1px solid var(--line)}.learn-detail summary{list-style:none;display:grid;grid-template-columns:27px 1fr;align-items:center;gap:8px;padding:12px 2px;cursor:pointer;font-size:13px;line-height:1.35;font-weight:800;color:#2c4350}.learn-detail summary::-webkit-details-marker{display:none}.learn-detail summary>span{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#edf4f3;color:#087864;font-size:9px;letter-spacing:.04em}.learn-detail summary:after{content:"+";grid-column:3;color:#69808b;font-size:17px;font-weight:500}.learn-detail[open] summary:after{content:"−"}.learn-detail summary:hover,.learn-detail summary:focus-visible{color:var(--teal-dark);outline:0}.detail-body{padding:0 3px 15px 35px;color:#506575;font-size:13px;line-height:1.62}.detail-body strong{color:#253c49}.detail-body p{font-size:13px!important;margin:8px 0 0!important}.knowledge-check{margin-top:12px;border:1px solid #bde5db!important;border-radius:10px;background:#f7fcfa}.knowledge-check summary{padding:12px 10px}.knowledge-check .detail-body{padding-right:12px}.knowledge-check summary>span{background:var(--teal);color:#fff}

/* Multi-lesson curriculum map */
.curriculum-grid{align-items:start}.curriculum-card{min-height:0}.chapter-lessons{display:grid;gap:7px;margin-top:17px}.lesson-row{width:100%;border:1px solid var(--line);border-radius:10px;background:#f9fbfb;display:grid;grid-template-columns:28px 1fr 20px;gap:9px;align-items:center;text-align:left;padding:9px;cursor:pointer;color:#304754}.lesson-row>span:first-child{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#eaf2f1;color:#087864;font-size:9px;font-weight:900}.lesson-row strong{display:block;font-size:12px}.lesson-row small{display:block;font-size:10px;color:#72848e;margin-top:2px}.lesson-row>b{color:var(--teal);font-size:15px}.lesson-row:hover,.lesson-row:focus-visible{border-color:#86cdbc;background:#f1faf7;outline:0;box-shadow:0 0 0 3px rgba(0,159,131,.1)}.lesson-row.is-complete{border-color:#b8e2d8;background:#f7fcfa}.lesson-row.is-complete>span:first-child{background:var(--teal);color:#fff}
.syllabus-preview{margin-top:14px;border-top:1px solid var(--line)}.syllabus-preview summary{padding:12px 0 2px;cursor:pointer;color:#087864;font-size:11px;font-weight:900}.syllabus-preview summary:hover,.syllabus-preview summary:focus-visible{color:#005f50;outline:0}.syllabus-preview>div{max-height:230px;overflow:auto;padding:7px 2px}.syllabus-preview p{display:grid;grid-template-columns:82px 1fr;gap:8px;margin:0!important;padding:7px 0;border-bottom:1px solid #edf1f2;font-size:11px!important;color:#354d5a!important}.syllabus-preview p>span{font-size:8px;text-transform:uppercase;letter-spacing:.07em;color:#758791;font-weight:900}.soldering-roadmap{margin-top:16px;background:#17333f;color:#f1f7f5;border-radius:16px;padding:22px;display:grid;grid-template-columns:1fr 1fr;gap:24px;box-shadow:var(--shadow)}.soldering-roadmap h2{margin:6px 0;font-size:20px}.soldering-roadmap p{margin:0;color:#bcd0d5}.soldering-roadmap .chapter-num{color:#54dbb8}.soldering-roadmap .syllabus-preview{border-color:#36515b;margin:0}.soldering-roadmap .syllabus-preview summary{color:#67e4c2}.soldering-roadmap .syllabus-preview p{color:#d6e4e7!important;border-color:#2d4853}.soldering-roadmap .syllabus-preview p>span{color:#89a8b0}@media(max-width:760px){.soldering-roadmap{grid-template-columns:1fr}.syllabus-preview p{grid-template-columns:70px 1fr}}

/* Virtual multimeter */
.probe-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:12;overflow:visible}.probe-lead{fill:none;stroke-width:2.2;stroke-linecap:round;filter:drop-shadow(0 2px 2px rgba(20,40,50,.18))}.probe-lead.red{stroke:#d84f49}.probe-lead.black{stroke:#263b45}.probe-lead.preview{stroke-dasharray:4 3;opacity:.8}.meter-panel{position:absolute;right:16px;bottom:16px;width:280px;background:#f3c949;border:2px solid #2f4148;border-radius:18px;padding:12px;box-shadow:0 16px 34px rgba(27,48,58,.22);z-index:14;color:#20333c}.meter-head{display:flex;justify-content:space-between;align-items:center;font-size:11px}.meter-head strong{font-size:13px;letter-spacing:.04em}.power-indicator{font-size:8px;font-weight:900;letter-spacing:.08em;background:#e6b937;padding:4px 6px;border-radius:5px}.power-indicator.live{background:#d9594f;color:#fff}.meter-lcd{margin:9px 0;background:#c7d9c3;border:3px solid #37484e;border-radius:7px;padding:8px 10px;min-height:62px;box-shadow:inset 0 2px 7px rgba(34,56,63,.18)}.meter-lcd b{display:block;font-family:"SFMono-Regular",Consolas,monospace;font-size:22px;letter-spacing:.04em;text-align:right}.meter-lcd small{display:block;font-size:9px;line-height:1.3;color:#365147;margin-top:4px}.meter-modes{display:flex;justify-content:center;gap:7px;margin:8px 0}.meter-mode{width:43px;height:43px;border-radius:50%;border:2px solid #3c4c51;background:#f7db74;font-weight:900;cursor:pointer}.meter-mode.active{background:#273c45;color:#fff;box-shadow:0 0 0 4px rgba(39,60,69,.13)}.meter-mode:focus-visible{outline:3px solid rgba(0,111,94,.35);outline-offset:2px}.meter-probes{display:flex;justify-content:space-between;gap:10px}.probe-dock{flex:1;border:1px solid rgba(31,52,60,.35);border-radius:8px;background:#f8dd77;padding:7px;font-size:9px;font-weight:900;cursor:grab;display:flex;align-items:center;gap:7px}.probe-dock>span{width:12px;height:12px;border-radius:50%;background:#263b45;box-shadow:0 0 0 3px #fff,0 0 0 4px #263b45}.probe-dock.red>span{background:#d84f49;box-shadow:0 0 0 3px #fff,0 0 0 4px #a6322e}.probe-dock.attached{background:#fff1b9}.meter-foot{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-top:8px}.meter-foot span{font-size:8px;line-height:1.25}.meter-foot button{border:0;background:transparent;text-decoration:underline;font-size:9px;cursor:pointer}.terminal[data-probed="red"]{box-shadow:0 0 0 4px rgba(216,79,73,.2),0 0 0 6px #d84f49}.terminal[data-probed="black"]{box-shadow:0 0 0 4px rgba(38,59,69,.18),0 0 0 6px #263b45}.terminal.probe-target{transform:scale(1.35);box-shadow:0 0 0 7px rgba(243,201,73,.28),0 0 14px rgba(243,201,73,.8)}@media(max-width:760px){.meter-panel{position:fixed;left:12px;right:12px;bottom:76px;width:auto}.probe-layer{position:fixed;z-index:49}}

/* Soldering workshop */
.solder-workshop{display:grid;grid-template-columns:250px minmax(0,1fr);gap:18px;align-items:start}.solder-path,.solder-bench,.solder-guide>section{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.solder-path{position:sticky;top:18px;max-height:calc(100vh - 118px);overflow:hidden}.solder-path-head{padding:18px;border-bottom:1px solid var(--line)}.solder-path-head h2{font-size:18px;margin:5px 0}.solder-path-head p,.solder-header p{color:var(--muted);font-size:11px;line-height:1.5}.solder-path nav{padding:7px;max-height:calc(100vh - 250px);overflow:auto}.solder-path-item{width:100%;display:grid;grid-template-columns:27px 1fr;gap:9px;align-items:center;border:0;background:transparent;border-radius:9px;padding:8px;text-align:left;color:#314a57;cursor:pointer}.solder-path-item>span:first-child{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#edf3f3;color:#087864;font-size:8px;font-weight:900}.solder-path-item b,.solder-path-item small{display:block}.solder-path-item b{font-size:10px}.solder-path-item small{font-size:8px;color:#7b8c94}.solder-path-item:hover,.solder-path-item.active{background:#e7f6f1}.solder-path-item.done>span:first-child{background:var(--teal);color:#fff}.solder-header{display:flex;justify-content:space-between;gap:20px;margin-bottom:14px}.solder-header h1{font-size:27px;margin:5px 0}.solder-header p{max-width:690px;margin:0}.solder-score{min-width:78px;background:#17333f;color:#fff;border-radius:14px;padding:10px;text-align:center}.solder-score b,.solder-score span{display:block}.solder-score b{font-size:24px;color:#67e4c2}.solder-score span{font-size:8px;text-transform:uppercase}.solder-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:13px}.solder-guide{display:grid;gap:12px;align-content:start}.solder-guide>section{padding:13px;border-radius:13px}.solder-guide h3{font-size:11px;margin:0 0 9px;display:flex;justify-content:space-between}.safety-check,.stage-check{display:grid;grid-template-columns:17px 1fr;gap:7px;padding:8px 0;border-top:1px solid #edf1f2;cursor:pointer}.safety-check input,.stage-check input{accent-color:var(--teal)}.safety-check b,.safety-check small,.stage-check b,.stage-check small{display:block}.safety-check b,.stage-check b{font-size:9px;text-transform:capitalize}.safety-check small,.stage-check small{font-size:8px;line-height:1.35;color:#758790}.checked b{color:#087864}.concept-list p{font-size:9px;color:#536975}.solder-bench{overflow:hidden}.bench-toolbar{display:flex;gap:14px;align-items:center;padding:11px 14px;background:#f8fbfb;border-bottom:1px solid var(--line)}.bench-toolbar>div{min-width:125px}.bench-toolbar b,.bench-toolbar small{display:block;font-size:9px}.iron-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#9cabaf;margin-right:6px}.iron-dot.on{background:#ef5148;box-shadow:0 0 0 4px rgba(239,81,72,.12)}.bench-toolbar label{display:flex;gap:8px;align-items:center;flex:1;font-size:9px;font-weight:800}.bench-toolbar input{width:100%;accent-color:var(--teal)}.pcb-stage{height:330px;background:radial-gradient(circle at 50% 20%,#f8fbfa,#dce8e6);position:relative;display:grid;place-items:center;overflow:hidden}.pcb{width:min(520px,76%);height:250px;border-radius:14px;background:#267861;position:relative;box-shadow:0 18px 28px rgba(23,49,59,.2),inset 0 0 0 5px rgba(255,255,255,.08)}.pcb:after{content:"";position:absolute;inset:7px;border:1px solid rgba(216,239,220,.28);border-radius:10px}.pcb>svg{position:absolute;inset:0;width:100%;height:100%}.pcb>svg *{fill:none;stroke:rgba(224,202,119,.36)}.board-label{position:absolute;left:18px;top:13px;color:#c8e5d8;font-size:7px;font-weight:900}.solder-pad{position:absolute;left:var(--x);top:var(--y);translate:-50% -50%;width:54px;height:54px;border:0;background:transparent;color:#fff;cursor:pointer;z-index:3}.pad-ring{position:absolute;inset:9px;border-radius:50%;background:#bd9653;box-shadow:inset 0 0 0 5px #ddbc72}.lead{position:absolute;left:25px;top:3px;width:5px;height:44px;border-radius:4px;background:linear-gradient(90deg,#879296,#e2e6e6,#707d80)}.solder-fillet{position:absolute;left:50%;top:50%;translate:-50% -50%;width:calc(var(--blob) * 2.4);height:calc(var(--blob) * 1.55);border-radius:50%;background:radial-gradient(circle at 35% 28%,#fff,#aeb8ba 40%,#56686e)}.solder-pad>b,.solder-pad>small{position:absolute;left:0;right:0;font-size:8px}.solder-pad>b{top:48px}.solder-pad>small{top:59px;color:#bce8d8}.solder-pad.selected .pad-ring{box-shadow:inset 0 0 0 5px #f1d48f,0 0 0 5px rgba(101,232,195,.4),0 0 18px #5adabb}.solder-pad.bridge:after{content:"";position:absolute;left:35px;top:23px;width:50px;height:10px;border-radius:50%;background:#aab3b5}.solder-pad.damaged .pad-ring{background:#84483d}.bench-lock{position:absolute;inset:0;background:rgba(242,247,246,.86);display:grid;place-content:center;text-align:center;z-index:8}.bench-lock b,.bench-lock span{display:block}.bench-lock span{font-size:9px;color:#627780}.iron-tool{position:absolute;right:4%;bottom:4%;width:130px;height:25px;border-radius:14px;background:#263d48;rotate:-17deg}.iron-tool:before{content:"";position:absolute;left:-70px;top:8px;width:76px;height:8px;background:linear-gradient(90deg,#83735f,#e4d3ae);clip-path:polygon(0 40%,100% 0,100% 100%,0 60%)}.iron-tool span{position:absolute;right:8px;top:6px;width:50px;height:13px;border-radius:9px;background:#0d9380}.process-controls{display:grid;grid-template-columns:1.3fr repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.selected-readout,.process-controls>button{min-height:70px;padding:10px;border:0;border-right:1px solid var(--line);background:#fff;text-align:left}.selected-readout *,.process-controls button *{display:block}.selected-readout span,.selected-readout small,.process-controls small{font-size:8px;color:#748790}.selected-readout b{font-size:17px}.process-controls button{cursor:pointer}.process-controls button:hover:not(:disabled){background:#eff9f6}.process-controls button span{font-size:16px;color:#078570}.process-controls button b{font-size:9px}.process-controls button:disabled{opacity:.4}.solder-feedback{display:grid;grid-template-columns:36px 1fr auto;gap:10px;margin:12px;padding:11px;border:1px solid var(--line);border-radius:11px;background:#f8fbfb}.solder-feedback h3{font-size:11px;margin:0}.solder-feedback p,.solder-feedback small{font-size:9px;color:#566d78}.solder-feedback.success{background:#f2fbf8;border-color:#a7dfd1}.solder-feedback.warning{background:#fffaf0;border-color:#ebca8e}.fault-tags span{display:inline-block;background:#f7e0dc;color:#993d36;border-radius:5px;padding:4px 6px;font-size:7px}.solder-footer{display:flex;justify-content:space-between;align-items:center;padding:0 13px 12px}.solder-footer b,.solder-footer span{display:block;font-size:9px}.solder-footer span{color:#788991}.fume-flow{display:none}
@media(max-width:1100px){.solder-workshop{grid-template-columns:210px 1fr}.solder-layout{grid-template-columns:210px 1fr}.process-controls{grid-template-columns:repeat(3,1fr)}.selected-readout{grid-column:1/-1}}
@media(max-width:850px){.solder-workshop{grid-template-columns:1fr}.solder-path{position:static;max-height:none}.solder-path nav{display:flex;max-height:none;overflow:auto}.solder-path-item{min-width:180px}.solder-layout{grid-template-columns:1fr}.solder-guide{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.solder-guide{grid-template-columns:1fr}.bench-toolbar{flex-wrap:wrap}.bench-toolbar label{flex-basis:100%}.pcb{width:90%;height:225px}.process-controls{grid-template-columns:1fr 1fr}.selected-readout{grid-column:1/-1}.solder-footer{align-items:stretch;gap:8px;flex-direction:column}.solder-footer button{width:100%}}

/* ESP32 foundations */
.esp32-workspace{grid-template-columns:320px minmax(0,1fr)}.esp32-overview,.esp32-lab{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.esp32-overview{min-height:670px;display:grid;grid-template-columns:minmax(350px,.9fr) 1fr;align-items:center;gap:40px;padding:46px;background:radial-gradient(circle at 25% 40%,#e9f8f5,#fff 48%)}.esp32-overview h1{font-size:34px;line-height:1.08;margin:8px 0 13px}.esp32-overview p{font-size:15px;line-height:1.6;color:#536975}.esp32-hero-board{position:relative;min-height:430px;display:grid;place-items:center}.esp32-hero-board>svg{width:280px;height:390px;filter:drop-shadow(0 22px 24px rgba(20,64,72,.2))}.pin-callout{position:absolute;background:#fff;border:1px solid #a9dacf;border-radius:8px;padding:8px 10px;font-size:9px;font-weight:900;color:#087864;box-shadow:0 7px 16px rgba(27,62,70,.1)}.pin-callout.power{left:0;top:12%}.pin-callout.digital{right:0;top:30%}.pin-callout.analog{left:1%;bottom:28%}.pin-callout.bus{right:2%;bottom:12%}.pin-rule-strip{display:grid;gap:8px;margin-top:26px}.pin-rule-strip b{border-left:3px solid var(--teal);padding:8px 11px;background:#f2faf7;font-size:11px}.esp32-concept{background:#17333f;color:#eef8f5;border-radius:12px;padding:14px;margin:18px 0}.esp32-concept h3{font-size:10px;color:#68e0bf;text-transform:uppercase;letter-spacing:.08em;margin:0 0 5px}.esp32-concept p{font-size:12px!important;margin:0!important;color:#d2e2e5!important}.esp32-focus-part{display:grid;grid-template-columns:58px 1fr;gap:9px;align-items:center;border-top:1px solid #e8eeee;padding:8px 0}.esp32-focus-part>span svg{width:58px;height:42px}.esp32-focus-part b,.esp32-focus-part small{display:block}.esp32-focus-part b{font-size:10px}.esp32-focus-part small{font-size:8px;color:#087864;font-weight:800}.esp32-focus-part p{font-size:8px!important;margin:3px 0!important}.esp32-checklist{list-style:none;padding:0;margin:16px 0}.esp32-checklist li{display:grid;grid-template-columns:27px 1fr;gap:8px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line)}.esp32-checklist li>span{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#edf3f3;color:#087864;font-size:9px;font-weight:900}.esp32-checklist li.done>span{background:var(--teal);color:#fff}.esp32-checklist p{font-size:10px!important;margin:3px 0!important}.esp32-lab{overflow:hidden}.esp32-lab>header{display:flex;justify-content:space-between;gap:20px;padding:18px 20px;border-bottom:1px solid var(--line)}.esp32-lab>header h1{font-size:24px;margin:5px 0}.esp32-lab>header p{font-size:11px;color:#637680;margin:0}.esp32-progress{min-width:72px;border-radius:13px;background:#17333f;color:#fff;padding:10px;text-align:center}.esp32-progress b,.esp32-progress span{display:block}.esp32-progress b{font-size:21px;color:#67e4c2}.esp32-progress span{font-size:8px;text-transform:uppercase}.esp32-system{min-height:260px;display:grid;grid-template-columns:180px 1fr;gap:18px;align-items:center;padding:18px;background:linear-gradient(135deg,#edf8f5,#f7fafb);position:relative}.esp32-board-large svg{width:170px;height:190px;filter:drop-shadow(0 14px 17px rgba(28,68,75,.18))}.esp32-parts-rail{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.esp32-parts-rail article{background:#fff;border:1px solid #cae2dc;border-radius:10px;padding:9px;min-height:105px}.esp32-parts-rail article>span{display:block;height:52px}.esp32-parts-rail svg{width:100%;height:52px}.esp32-parts-rail b,.esp32-parts-rail small{display:block}.esp32-parts-rail b{font-size:9px}.esp32-parts-rail small{font-size:7px;color:#6e8189;margin-top:2px}.decision-stack{display:grid;gap:8px;padding:14px;background:#f7f9fa}.decision-card{display:grid;grid-template-columns:34px 1fr 24px;gap:10px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px}.decision-card.correct{border-color:#9ed8ca;background:#f7fcfa}.decision-card.incorrect{border-color:#e7b8a9;background:#fff9f7}.decision-num{font-size:9px;font-weight:900;color:#087864}.decision-card h3{font-size:10px;line-height:1.35;margin:0 0 7px}.decision-options{display:flex;gap:5px;flex-wrap:wrap}.decision-options button{border:1px solid #cad7db;border-radius:6px;background:#f9fbfb;padding:6px 8px;font-size:8px;font-weight:800;cursor:pointer}.decision-options button:hover,.decision-options button.selected{border-color:var(--teal);background:#e6f6f1;color:#006e5c}.decision-mark{color:var(--teal);font-size:16px}.esp32-lab>.feedback{margin:0;border-width:1px 0 0;border-radius:0;box-shadow:none}.library-card .library-visual svg{max-height:120px}
@media(max-width:1100px){.esp32-workspace{grid-template-columns:270px 1fr}.esp32-overview{grid-template-columns:1fr;padding:28px}.esp32-hero-board{min-height:300px}.esp32-hero-board>svg{height:280px}.esp32-system{grid-template-columns:140px 1fr}.esp32-board-large svg{width:135px}.esp32-parts-rail{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.esp32-workspace{display:block}.esp32-overview{min-height:0}.esp32-hero-board{display:none}.esp32-overview h1{font-size:26px}.esp32-system{grid-template-columns:1fr}.esp32-board-large{text-align:center}.esp32-parts-rail{grid-template-columns:repeat(2,1fr)}.decision-card{grid-template-columns:28px 1fr 20px}}

/* Guided learning journey */
:root{--space-xs:6px;--space-sm:10px;--space-md:16px;--space-lg:24px;--space-xl:36px;--space-2xl:56px;--shadow-sm:0 4px 14px rgba(26,50,62,.06);--shadow-lg:0 20px 50px rgba(26,50,62,.11)}
@media(min-width:1060px){.app-shell{grid-template-columns:164px 1fr}.side-nav{align-items:stretch;padding:18px 12px}.nav-btn{width:100%;height:44px;display:flex;justify-content:flex-start;gap:11px;padding:0 12px;font-size:16px}.nav-glyph{width:24px;text-align:center}.nav-label{font-size:11px;font-weight:800}.nav-btn.active:before{left:-12px}.main{padding-inline:clamp(22px,3vw,46px)}}
@media(max-width:1059px){.nav-label{display:none}}
.text-action{border:0;background:transparent;color:var(--teal-dark);font-size:11px;font-weight:800;padding:0;cursor:pointer}.journey-stage{display:block;color:var(--teal-dark);font-size:9px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px}
.learning-home{max-width:1240px;margin:auto}.learning-home-head{display:flex;justify-content:space-between;gap:40px;align-items:end;padding:12px 0 24px}.learning-home-head h1{font-size:clamp(28px,3vw,42px);letter-spacing:-.035em;margin:5px 0 8px}.learning-home-head p{color:var(--muted);font-size:15px;margin:0}.course-progress{width:260px;flex:0 0 auto}.course-progress>span,.course-progress>small{display:block;font-size:10px;color:var(--muted)}.course-progress>span{font-weight:800;color:#3c5662}.course-progress>div{height:8px;background:#dfe9e8;border-radius:8px;margin:8px 0;overflow:hidden}.course-progress i{display:block;height:100%;background:var(--teal);border-radius:8px}.continue-lesson{min-height:340px;background:#173842;color:#edf8f5;display:grid;grid-template-columns:1.1fr .9fr;gap:30px;align-items:center;padding:clamp(28px,4vw,54px);border-radius:18px;box-shadow:var(--shadow-lg);overflow:hidden}.continue-lesson .eyebrow{color:#67e4c2}.continue-copy h2{font-size:clamp(28px,4vw,48px);letter-spacing:-.04em;line-height:1.05;margin:10px 0 15px}.continue-copy>p{max-width:650px;color:#c8dadd;font-size:14px;line-height:1.6}.next-meta{display:flex;gap:18px;margin:20px 0}.next-meta span{font-size:10px;color:#b8cdd1}.continue-cta{font-size:14px;padding:14px 18px}.continue-visual{position:relative;height:230px}.continue-visual>span{position:absolute;width:150px;height:110px;left:calc(var(--i)*17%);top:calc(var(--i)*14px);background:#f8fbfa;border:1px solid rgba(255,255,255,.25);border-radius:16px;padding:14px;rotate:calc((var(--i) - 1.5)*5deg);box-shadow:0 15px 30px rgba(5,27,31,.25)}.continue-visual svg{width:100%;height:100%}.current-skill{position:absolute;right:0;bottom:0;background:#f1c862;color:#253b42;padding:12px 15px;border-radius:10px;box-shadow:0 10px 20px rgba(5,27,31,.2)}.current-skill small,.current-skill b{display:block}.current-skill small{font-size:8px;text-transform:uppercase;letter-spacing:.08em}.current-skill b{font-size:11px;margin-top:2px}.path-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:clamp(28px,4vw,56px);margin-top:56px}.section-heading{display:flex;justify-content:space-between;align-items:end;padding-bottom:18px}.section-heading h2,.mastery-panel h2{font-size:24px;margin:5px 0}.section-heading>span{font-size:10px;color:var(--muted)}.path-chapter{display:grid;grid-template-columns:46px 1fr;gap:14px}.chapter-marker{display:flex;flex-direction:column;align-items:center}.chapter-marker b{width:34px;height:34px;display:grid;place-items:center;border:1px solid #cbd9dc;border-radius:50%;background:#fff;color:#60747e;font-size:9px;z-index:2}.chapter-marker i{width:1px;flex:1;background:#dbe5e7}.path-chapter.active .chapter-marker b,.path-chapter.complete .chapter-marker b{background:var(--teal);color:#fff;border-color:var(--teal)}.chapter-content{padding-bottom:12px}.chapter-summary{width:100%;border:0;background:transparent;display:flex;justify-content:space-between;gap:16px;text-align:left;padding:3px 0 17px;cursor:pointer}.chapter-summary span>*{display:block}.chapter-summary small{font-size:8px;color:#087864;text-transform:uppercase;font-weight:900;letter-spacing:.08em}.chapter-summary strong{font-size:15px;margin:3px 0}.chapter-summary em{font-size:11px;color:#6e8088;font-style:normal}.chapter-summary>b{color:#087864}.active-lessons{display:grid;gap:7px;margin:0 0 20px}.path-lesson{width:100%;display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center;border:1px solid #d9e4e5;background:#fff;border-radius:9px;padding:9px;text-align:left;cursor:pointer}.path-lesson>span:first-child{width:27px;height:27px;border-radius:50%;background:#edf4f2;color:#087864;display:grid;place-items:center;font-size:8px;font-weight:900}.path-lesson span:nth-child(2)>*{display:block}.path-lesson span b{font-size:10px}.path-lesson span small{font-size:8px;color:#76878e}.path-lesson>strong{font-size:9px;color:#087864}.path-lesson.current{border-color:#76cdb7;background:#f3fbf8;box-shadow:0 0 0 3px rgba(0,159,131,.08)}.path-lesson.complete>span:first-child{background:var(--teal);color:#fff}.chapter-preview{border-left:2px solid #dce7e5;padding-left:13px;margin-bottom:20px}.chapter-preview p{display:grid;grid-template-columns:85px 1fr;font-size:9px;color:#536a74}.chapter-preview p span{color:#809198;text-transform:uppercase;font-size:7px;font-weight:900}.chapter-preview>small{font-size:8px;color:#7c8d94}.workshop-chapter{margin-top:3px}.mastery-panel{align-self:start;position:sticky;top:100px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:var(--shadow-sm)}.mastery-panel>p{font-size:11px;color:var(--muted);line-height:1.5}.mastery-row{display:grid;grid-template-columns:1fr auto;gap:6px 12px;padding:11px 0;border-top:1px solid #edf1f2}.mastery-row span>*{display:block}.mastery-row b{font-size:10px}.mastery-row small{font-size:8px;color:#7a8a91}.mastery-row>strong{font-size:10px;color:#087864}.mastery-row>i{grid-column:1/-1;height:4px;background:#e5edee;border-radius:4px;overflow:hidden}.mastery-row>i em{display:block;height:100%;background:var(--teal)}.mastery-panel .ghost{width:100%;margin-top:14px}.full-syllabus{margin-top:45px;border-top:1px solid var(--line);padding-top:18px}.full-syllabus>summary{cursor:pointer;color:#087864;font-size:11px;font-weight:900}.full-syllabus>div{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:20px}.full-syllabus h3{font-size:11px}.full-syllabus p{display:grid;grid-template-columns:80px 1fr;gap:6px;font-size:9px;border-bottom:1px solid #edf1f2;padding:5px 0}.full-syllabus p span{font-size:7px;color:#7d8e95;text-transform:uppercase}
.guided-lesson{max-width:1320px;margin:auto}.guided-header{display:flex;justify-content:space-between;align-items:end;padding:5px 0 14px}.guided-header h1{font-size:clamp(25px,3vw,36px);letter-spacing:-.03em;margin:5px 0}.guided-header p{color:var(--muted);font-size:11px}.lesson-rail{display:flex;align-items:center;max-width:520px;margin-bottom:22px}.lesson-rail span{display:flex;align-items:center;gap:6px;font-size:9px;font-weight:800;color:#86969c}.lesson-rail span b{width:23px;height:23px;border:1px solid #c9d7da;border-radius:50%;display:grid;place-items:center}.lesson-rail span.active{color:#087864}.lesson-rail span.active b{background:var(--teal);border-color:var(--teal);color:#fff}.lesson-rail i{height:1px;width:52px;background:#d6e1e3;margin:0 7px}.guided-body{display:grid;grid-template-columns:220px minmax(0,1fr) 230px;gap:22px;align-items:start}.topic-rail{position:sticky;top:100px}.topic-rail>span{font-size:8px;color:#087864;font-weight:900;text-transform:uppercase}.topic-rail h2{font-size:17px;margin:5px 0 14px}.topic-rail button{width:100%;border:0;background:transparent;text-align:left;display:grid;grid-template-columns:25px 1fr;gap:8px;align-items:center;padding:7px 4px;color:#6a7c84;font-size:9px;line-height:1.3;cursor:pointer}.topic-rail button>span{width:23px;height:23px;border-radius:50%;display:grid;place-items:center;background:#edf3f3;color:#70838a;font-size:7px;font-weight:900}.topic-rail button.active{color:#173842;font-weight:900}.topic-rail button.active>span,.topic-rail button.done>span{background:var(--teal);color:#fff}.concept-stage{min-height:560px;background:#fff;border:1px solid var(--line);border-radius:15px;padding:clamp(25px,4vw,50px);box-shadow:var(--shadow-sm);display:flex;flex-direction:column}.concept-stage>h2{max-width:780px;font-size:clamp(24px,3vw,38px);line-height:1.18;letter-spacing:-.025em;margin:8px 0 18px}.concept-lead,.concept-prose{font-size:15px;line-height:1.8;color:#405966;max-width:760px}.concept-prose strong{color:#173842}.concept-demonstration{display:grid;grid-template-columns:230px 1fr;gap:24px;align-items:center;background:#edf8f5;margin-top:26px;padding:20px;border-radius:12px}.concept-demonstration .loop-visual{margin:0}.concept-demonstration h3{font-size:15px;margin:0 0 7px}.concept-demonstration p{font-size:12px;line-height:1.6;color:#4f6872}.concept-demonstration small{font-size:9px;line-height:1.5;color:#607780}.apply-note{margin-top:28px;border-left:3px solid var(--teal);padding:12px 16px;background:#f5faf8}.apply-note b{font-size:10px}.apply-note p{font-size:11px;color:#5c717a;margin:4px 0}.model-answer{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0}.model-answer span{font-size:8px;text-transform:uppercase;color:#087864;font-weight:900}.model-answer p{font-size:14px;line-height:1.7;color:#405965}.transfer-prompt{margin-top:20px;background:#f5f8f9;padding:15px;border-radius:9px}.transfer-prompt b{font-size:10px}.transfer-prompt p{font-size:11px;color:#667b84}.guided-actions{margin-top:auto;padding-top:28px;display:flex;justify-content:space-between}.lesson-kit{position:sticky;top:100px}.lesson-kit h3{font-size:15px;margin:6px 0 12px}.lesson-kit>button{width:100%;border:0;border-top:1px solid #dfe7e8;background:transparent;display:grid;grid-template-columns:60px 1fr;gap:7px;align-items:center;padding:8px 2px;text-align:left;cursor:pointer}.lesson-kit>button>span:first-child{height:42px}.lesson-kit svg{width:60px;height:42px}.lesson-kit button b,.lesson-kit button small{display:block}.lesson-kit button b{font-size:9px}.lesson-kit button small{font-size:7px;color:#7c8c93}.lesson-kit>p{font-size:8px;line-height:1.5;color:#809097}.lesson-mode-tabs .tab:last-child:after{content:""}
.field-guide{max-width:1280px;margin:auto}.field-guide-head{display:flex;justify-content:space-between;gap:40px;align-items:end;margin:5px 0 18px}.field-guide-head h1{font-size:32px;letter-spacing:-.03em;margin:5px 0}.field-guide-head p{color:var(--muted);font-size:13px}.library-search{width:330px;position:relative}.library-search label{display:block;font-size:9px;font-weight:900;margin-bottom:6px}.library-search input{width:100%;border:1px solid #cbd8dc;border-radius:9px;padding:11px 44px 11px 12px;background:#fff}.library-search input:focus{outline:0;box-shadow:var(--focus);border-color:var(--teal)}.library-search span{position:absolute;right:10px;bottom:13px;font-size:8px;color:#7b8c93}.category-filter{display:flex;gap:6px;overflow:auto;padding-bottom:14px;border-bottom:1px solid var(--line)}.category-filter button{border:1px solid #d6e1e3;background:#fff;border-radius:7px;padding:7px 10px;font-size:8px;font-weight:800;white-space:nowrap;cursor:pointer}.category-filter button.active{background:#173842;color:#fff;border-color:#173842}.field-guide-layout{display:grid;grid-template-columns:310px 1fr;gap:30px;margin-top:22px}.component-index{max-height:calc(100vh - 220px);overflow:auto;padding-right:7px}.component-index-row{width:100%;border:0;border-bottom:1px solid #e5ebec;background:transparent;display:grid;grid-template-columns:62px 1fr 12px;gap:9px;align-items:center;padding:9px 5px;text-align:left;cursor:pointer}.component-index-row:hover,.component-index-row.active{background:#eaf7f3;border-radius:8px}.component-index-row>span:first-child{height:45px}.component-index-row svg{width:62px;height:45px}.component-index-row b,.component-index-row small{display:block}.component-index-row b{font-size:10px}.component-index-row small{font-size:7px;color:#7a8b92}.component-index-row>strong{color:#087864}.no-components{padding:30px 10px;text-align:center}.no-components b{font-size:13px}.no-components p{font-size:10px;color:#71828a}.component-detail{min-width:0}.component-detail-hero{display:grid;grid-template-columns:240px 1fr;gap:30px;align-items:center;padding:20px 0 30px}.detail-visual{height:180px;background:#edf6f4;border-radius:15px;padding:18px}.detail-visual svg{width:100%;height:100%}.component-detail-hero h2{font-size:clamp(27px,4vw,44px);letter-spacing:-.04em;margin:7px 0}.component-detail-hero p{font-size:14px;line-height:1.6;color:#526a74;max-width:650px}.risk-flags{display:flex;gap:6px;flex-wrap:wrap}.risk-flags span{background:#f5e7c2;color:#72551a;border-radius:6px;padding:5px 7px;font-size:7px;font-weight:900}.component-facts{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-left:1px solid var(--line)}.component-facts section{padding:20px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.component-facts section>span,.common-uses>span{font-size:7px;text-transform:uppercase;letter-spacing:.1em;color:#087864;font-weight:900}.component-facts h3{font-size:12px;margin:5px 0}.component-facts p{font-size:10px;line-height:1.55;color:#586f79}.warning-fact{background:#fff9f1}.common-uses{padding:18px 0}.common-uses p{font-size:11px;color:#536b75}.related-lessons{margin-top:16px;border-top:1px solid var(--line);padding-top:20px}.related-lessons h3{font-size:18px;margin:5px 0}.related-lessons>div:last-child{display:grid;grid-template-columns:1fr 1fr;gap:7px}.related-lessons button{display:grid;grid-template-columns:26px 1fr 14px;gap:8px;align-items:center;border:1px solid #dce5e6;border-radius:8px;background:#fff;padding:8px;text-align:left;cursor:pointer}.related-lessons button>span:first-child{font-size:8px;color:#087864;font-weight:900}.related-lessons button span:nth-child(2)>*{display:block}.related-lessons button b{font-size:9px}.related-lessons button small{font-size:7px;color:#7a8a91}.related-lessons button>strong{color:#087864}
@media(max-width:1000px){.path-layout{grid-template-columns:1fr}.mastery-panel{position:static}.guided-body{grid-template-columns:180px 1fr}.lesson-kit{display:none}.field-guide-layout{grid-template-columns:260px 1fr}.component-detail-hero{grid-template-columns:180px 1fr}}
@media(max-width:760px){.nav-glyph{display:block}.nav-label{display:block;font-size:7px}.nav-btn{width:52px;height:51px;flex:0 0 52px;scroll-snap-align:start;display:flex;flex-direction:column;gap:1px;font-size:16px}.learning-home-head,.field-guide-head{display:block}.course-progress,.library-search{width:100%;margin-top:18px}.continue-lesson{grid-template-columns:1fr;min-height:0}.continue-visual{display:none}.path-layout{margin-top:34px}.full-syllabus>div{grid-template-columns:1fr}.guided-header{align-items:start}.guided-header .ghost{display:none}.lesson-rail{overflow:auto}.guided-body{display:block}.topic-rail{position:static;display:flex;overflow:auto;gap:4px;margin-bottom:12px}.topic-rail>span,.topic-rail h2{display:none}.topic-rail button{min-width:46px;width:auto;display:block;padding:4px;font-size:0}.topic-rail button>span{font-size:7px}.concept-stage{min-height:0;padding:23px}.concept-demonstration{grid-template-columns:1fr}.lesson-kit{display:none}.field-guide-layout{display:block}.component-index{max-height:310px;margin-bottom:22px}.component-detail-hero{grid-template-columns:110px 1fr;gap:14px}.detail-visual{height:110px;padding:9px}.component-facts{grid-template-columns:1fr}.related-lessons>div:last-child{grid-template-columns:1fr}.continue-copy h2{font-size:30px}}
@media(max-width:389px){.side-nav{gap:1px}.nav-btn{width:48px;flex-basis:48px}}
@media(max-width:350px){.side-nav{gap:0;padding-inline:6px}.nav-btn{width:44px;flex-basis:44px}.nav-label{font-size:0}.nav-label:after{content:attr(data-short);font-size:6px}}
.welcome-card{width:min(650px,100%);padding:clamp(25px,4vw,44px);text-align:left}.welcome-mark{width:80px;height:70px;float:right;margin-left:20px}.welcome-card h1{font-size:clamp(27px,4vw,40px);line-height:1.08;letter-spacing:-.035em;max-width:520px}.welcome-card>p{max-width:540px;font-size:14px}.welcome-path{display:flex;align-items:center;margin:24px 0;background:#edf8f5;border-radius:10px;padding:13px}.welcome-path span{display:flex;align-items:center;gap:6px;font-size:9px;font-weight:800}.welcome-path span b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--teal);color:#fff;font-size:8px}.welcome-path i{height:1px;width:24px;background:#b9d9d2;margin:0 8px}.welcome-card .field{margin:20px 0 12px}.welcome-card>.primary{width:100%;font-size:14px;padding:14px}.welcome-card>small{display:block;text-align:center;color:#71848c;font-size:8px;margin-top:9px}@media(max-width:600px){.welcome-mark{display:none}.welcome-path{display:grid;gap:8px}.welcome-path i{display:none}}
.app-shell:has(.guided-lesson) .topbar .objective{display:none}.app-shell:has(.guided-lesson) .topbar .crumb{flex:1}

/* Chapter 7 sensor evidence labs */
.sensor-workspace{grid-template-columns:330px minmax(0,1fr)}
.sensor-intro{min-height:670px;display:grid;grid-template-columns:1fr .8fr;gap:48px;align-items:center;background:#173842;color:#eef8f5;border:1px solid #284c56;padding:clamp(32px,5vw,64px)}
.sensor-intro h1{font-size:clamp(31px,4vw,50px);line-height:1.06;letter-spacing:-.04em;margin:9px 0 16px}.sensor-intro>div>p{color:#c7dadd;font-size:15px;line-height:1.65}.sensor-intro .eyebrow{color:#67e4c2}.evidence-flow{display:grid;gap:10px;margin-top:30px}.evidence-flow span{display:flex;align-items:center;gap:9px;font-size:10px;font-weight:900}.evidence-flow b{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#67e4c2;color:#173842;font-size:8px}.intro-sensor{background:#f7fbfa;color:#173842;border:1px solid #8ebdb4;padding:25px}.intro-sensor>svg{width:100%;height:210px}.intro-sensor>div{border-top:1px solid #d5e3e1;padding-top:15px}.intro-sensor span,.intro-sensor b{display:block}.intro-sensor span{font-size:8px;text-transform:uppercase;letter-spacing:.1em;color:#087864;font-weight:900}.intro-sensor b{font-size:18px;margin:4px 0}.intro-sensor p{font-size:9px;line-height:1.6;color:#5e737b}
.sensor-evidence{list-style:none;padding:0;margin:8px 0 0}.sensor-evidence li{display:grid;grid-template-columns:22px 1fr;gap:7px;align-items:center;border-bottom:1px solid var(--line);padding:8px 0;color:#647780;font-size:8px}.sensor-evidence li span{width:20px;height:20px;border:1px solid #cbd8da;border-radius:50%;display:grid;place-items:center}.sensor-evidence li.done{color:#173842;font-weight:900}.sensor-evidence li.done span{background:var(--teal);border-color:var(--teal);color:#fff}.evidence-title{display:block;margin-top:16px}.sensor-lab{background:#f4f7f8;border:1px solid var(--line);min-width:0}.sensor-lab>header{display:flex;justify-content:space-between;gap:20px;padding:18px 20px;background:#fff;border-bottom:1px solid var(--line)}.sensor-lab>header h1{font-size:24px;margin:5px 0}.sensor-lab>header p{max-width:690px;font-size:10px;line-height:1.5;color:#647881;margin:0}.sensor-progress{min-width:76px;border-left:3px solid #d39d45;padding:6px 11px}.sensor-progress.ready{border-color:var(--teal)}.sensor-progress b,.sensor-progress span{display:block}.sensor-progress b{font-size:20px}.sensor-progress span{font-size:7px;text-transform:uppercase;color:#72858c}.sensor-lab-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(270px,.7fr);gap:14px;padding:14px}.sensor-bench{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-content:start}.sensor-controls,.sensor-live,.sensor-chart,.sample-strip{background:#fff;border:1px solid #d6e2e3}.sensor-controls{padding:12px}.sensor-controls>header,.sensor-chart>header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:9px}.sensor-controls>header span,.sensor-chart>header span{font-size:8px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.sensor-controls>header small,.sensor-chart>header b{font-size:7px;color:#76888f}.sensor-range{display:block;padding:9px 0;border-bottom:1px solid #edf1f2}.sensor-range>span{display:flex;justify-content:space-between;align-items:center}.sensor-range b{font-size:8px}.sensor-range strong{font:9px ui-monospace,SFMono-Regular,Menlo,monospace;color:#087864}.sensor-range input{width:100%;accent-color:var(--teal);margin:9px 0 0}.sensor-toggle{width:100%;display:grid;grid-template-columns:34px 1fr auto;gap:8px;align-items:center;border:1px solid #d3dfe1;background:#fff;padding:10px;text-align:left;cursor:pointer}.sensor-toggle>span{width:30px;height:16px;border-radius:10px;background:#cbd8d8;position:relative}.sensor-toggle>span:after{content:"";position:absolute;width:12px;height:12px;left:2px;top:2px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #789}.sensor-toggle.active>span{background:var(--teal)}.sensor-toggle.active>span:after{left:16px}.sensor-toggle b,.sensor-toggle small{font-size:8px}.sensor-toggle small{color:#6e8189}.sensor-select{display:grid;gap:6px}.sensor-select span{font-size:8px;font-weight:900}.sensor-select select{border:1px solid #cad8db;background:#fff;padding:9px;font-size:9px}.sensor-live{padding:13px;display:grid;grid-template-columns:90px 1fr;gap:12px;align-items:center;position:relative}.sensor-part{height:90px;background:#edf7f5;padding:7px}.sensor-part svg{width:100%;height:100%}.sensor-live>div:nth-child(2)>span,.sensor-live>div:nth-child(2)>b,.sensor-live>div:nth-child(2)>strong{display:block}.sensor-live>div:nth-child(2)>span{font-size:7px;text-transform:uppercase;color:#71838a}.sensor-live>div:nth-child(2)>b{font:22px ui-monospace,SFMono-Regular,Menlo,monospace;margin:4px 0}.sensor-live>div:nth-child(2)>b small{font-size:9px}.sensor-live>div:nth-child(2)>strong{font:9px ui-monospace,SFMono-Regular,Menlo,monospace;color:#087864}.sensor-live p{font-size:8px;color:#60757d}.sensor-live>.primary{grid-column:1/-1;width:100%}.sensor-chart{grid-column:1/-1;padding:11px}.sensor-chart svg{display:block;width:100%;height:170px}.sensor-chart text{font:7px ui-monospace,SFMono-Regular,Menlo,monospace;fill:#6d7f86}.sample-strip{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr)}.sample-strip p{margin:0;padding:9px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.sample-strip p>*{display:block}.sample-strip p b{font-size:7px;color:#087864}.sample-strip p span{font:8px ui-monospace,SFMono-Regular,Menlo,monospace;margin:3px 0}.sample-strip p small{font-size:7px;color:#6d7f87}.sample-strip .empty-note{grid-column:1/-1}.sensor-code{align-self:start;background:#10262d;color:#d8e8e6;border:1px solid #304c54;overflow:hidden}.sensor-code>header{display:flex;justify-content:space-between;padding:10px;background:#19343c;font-size:7px}.sensor-code>div{display:grid;grid-template-columns:28px 1fr;min-height:34px;align-items:center;border-top:1px solid rgba(255,255,255,.04)}.sensor-code>div span{height:100%;display:grid;place-items:center;background:rgba(255,255,255,.03);color:#6f8a90;font-size:7px}.sensor-code code{white-space:pre-wrap;overflow-wrap:anywhere;padding:7px;color:#a9e8d8;font:9px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.sensor-analysis{margin:0;border-width:1px 0 0;border-radius:0;box-shadow:none}.sensor-analysis button:disabled{opacity:.45}
@media(max-width:1120px){.sensor-workspace{grid-template-columns:285px minmax(0,1fr)}.sensor-lab-grid{grid-template-columns:1fr}.sensor-code{order:-1}.sensor-intro{grid-template-columns:1fr}.intro-sensor{max-width:620px}}
@media(max-width:760px){.sensor-workspace{display:block}.sensor-intro{min-height:0;padding:24px;gap:28px}.sensor-intro h1{font-size:30px}.intro-sensor>svg{height:150px}.sensor-lab>header{display:block}.sensor-progress{margin-top:12px}.sensor-lab-grid{padding:8px}.sensor-bench{grid-template-columns:1fr}.sensor-chart,.sample-strip{grid-column:auto}.sample-strip{grid-template-columns:1fr 1fr}.sensor-live{grid-template-columns:72px 1fr}.sensor-chart svg{height:140px}}

/* ESP32 code labs */
.code-workspace{grid-template-columns:330px minmax(0,1fr)}
.code-intro{min-height:670px;display:grid;grid-template-columns:minmax(300px,.8fr) minmax(420px,1.2fr);gap:46px;align-items:center;background:#173842;color:#eef8f5;border:1px solid #284c56;padding:clamp(30px,5vw,62px)}
.code-intro h1{font-size:clamp(31px,4vw,50px);line-height:1.06;letter-spacing:-.04em;margin:9px 0 16px}.code-intro>div>p{color:#c7dadd;font-size:15px;line-height:1.65;max-width:590px}.code-intro .eyebrow{color:#67e4c2}
.firmware-flow{display:flex;align-items:center;gap:8px;margin-top:34px;flex-wrap:wrap}.firmware-flow span{display:flex;align-items:center;gap:7px;font-size:9px;font-weight:900}.firmware-flow span b{width:25px;height:25px;display:grid;place-items:center;background:#67e4c2;color:#173842;border-radius:50%}.firmware-flow i{color:#719299;font-style:normal}
.intro-code,.code-editor{background:#10262d;color:#d9e8e7;border:1px solid #35515a;box-shadow:0 22px 45px rgba(3,17,22,.27);overflow:hidden}.intro-code{padding:18px 0}
.code-lab{background:#f5f8f8;border:1px solid var(--line);min-width:0}.code-lab>header{display:flex;justify-content:space-between;gap:20px;align-items:start;background:#fff;border-bottom:1px solid var(--line);padding:18px 20px}.code-lab>header h1{font-size:24px;margin:5px 0}.code-lab>header p{max-width:670px;font-size:10px;line-height:1.5;color:#657982;margin:0}.code-run-status{min-width:115px;border-left:3px solid #d59a45;padding:7px 10px}.code-run-status.complete{border-color:var(--teal)}.code-run-status b,.code-run-status span{display:block}.code-run-status b{font-size:10px}.code-run-status span{font-size:8px;color:#71848c;margin-top:3px}
.code-lab-grid{display:grid;grid-template-columns:minmax(380px,1.05fr) minmax(300px,.95fr);gap:14px;padding:14px}.code-editor{box-shadow:none;align-self:start}.code-editor>header,.code-editor>footer{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:#19343c;border-bottom:1px solid #31505a;font-size:8px}.code-editor>header button{border:1px solid #62d3b5;background:#0a8d75;color:#fff;padding:7px 9px;font-size:8px;font-weight:900;cursor:pointer}.code-editor>header button:disabled{opacity:.4;cursor:not-allowed}.code-editor>footer{justify-content:flex-start;gap:7px;border:0;border-top:1px solid #31505a;color:#9eb4b8}.status-dot{width:7px;height:7px;background:#d59a45;border-radius:50%}.status-dot.ready{background:#67e4c2}
.code-line{display:grid;grid-template-columns:31px 1fr 18px;min-height:29px;align-items:center;padding-right:8px;border-left:3px solid transparent}.code-line>span{height:100%;display:grid;place-items:center;background:rgba(255,255,255,.035);color:#69858b;font:8px ui-monospace,SFMono-Regular,Menlo,monospace}.code-line code{white-space:pre;color:#d9e8e7;font:10px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.code-line i{color:#67e4c2;font-style:normal;font-size:9px}.code-line.active{background:#22434b;border-left-color:#f1c862}.code-line.executed code{color:#8fd9c7}.code-line code::selection{background:#317b6b}
.code-coach .code-instruction{font-size:10px!important;line-height:1.5}.code-decisions{margin-top:15px}.code-decision{display:grid;grid-template-columns:24px 1fr;gap:8px;border-top:1px solid var(--line);padding:12px 0}.code-decision>span{width:21px;height:21px;display:grid;place-items:center;background:#edf3f3;color:#087864;border-radius:50%;font-size:8px;font-weight:900}.code-decision.correct>span{background:var(--teal);color:#fff}.code-decision.incorrect>span{background:#c86444;color:#fff}.code-decision b{display:block;font-size:9px;line-height:1.4}.code-decision div>div{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px}.code-decision button{border:1px solid #ccd9dc;background:#fff;padding:5px 7px;cursor:pointer}.code-decision button code{font-size:8px}.code-decision button:hover,.code-decision button.selected{border-color:var(--teal);background:#eaf7f3}.code-decision.incorrect button.selected{border-color:#c86444;background:#fff2ed}.code-decision small{display:block;color:#a34d32;font-size:7px;line-height:1.4;margin-top:5px}
.code-hardware{background:#fff;border:1px solid #d6e2e3;min-width:0}.code-hardware>header{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 12px;font-size:8px}.hardware-stage{min-height:264px;position:relative;background:radial-gradient(circle at 45% 45%,#edf8f5,#f8fbfb 65%);padding:15px}.mini-esp32{position:absolute;left:14px;top:19px;width:115px;height:145px}.mini-esp32 svg{width:100%;height:100%;filter:drop-shadow(0 10px 10px rgba(20,57,64,.15))}.live-led{position:absolute;right:20px;top:30px;text-align:center}.live-led>span{display:block;width:56px;height:56px;margin:auto;border-radius:50% 50% 44% 44%;background:#9eaaa6;border:7px solid #d7dfdc;box-shadow:inset 0 -8px 13px rgba(20,40,40,.2)}.live-led.on>span{background:rgba(255,76,49,var(--brightness));box-shadow:0 0 calc(8px + 28px * var(--brightness)) rgba(255,77,43,calc(var(--brightness)*.65)),inset 0 -7px 12px rgba(120,20,5,.18)}.live-led b,.live-led small{display:block}.live-led b{font-size:9px;margin-top:7px}.live-led small{font-size:7px;color:#6f8289;margin-top:2px}.live-button{position:absolute;right:17px;bottom:20px;border:1px solid #bed2d1;background:#fff;padding:10px 12px;text-align:left;cursor:pointer}.live-button>span{display:block;width:38px;height:16px;background:#dbe4e3;border:3px solid #71848a;margin-bottom:6px}.live-button.pressed>span{transform:translateY(3px);background:#67e4c2}.live-button b,.live-button small{display:block}.live-button b{font-size:8px}.live-button small{font-size:7px;color:#71838a;margin-top:2px}.live-pot{position:absolute;left:15px;right:15px;bottom:18px;background:#fff;border:1px solid #cedcdd;padding:10px}.live-pot b,.live-pot span{display:block;font-size:8px}.live-pot input{width:100%;accent-color:var(--teal);margin:8px 0}.live-pot span{color:#62777f}.signal-readout{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line)}.signal-readout>span{padding:10px;border-right:1px solid var(--line)}.signal-readout>span:last-child{border:0}.signal-readout small,.signal-readout b{display:block}.signal-readout small{font-size:7px;color:#76878e}.signal-readout b{font:10px ui-monospace,SFMono-Regular,Menlo,monospace;margin-top:3px}.serial-monitor{margin:0 12px 12px;border:1px solid #29464f;background:#10262d;color:#d8e8e6}.serial-monitor header{display:flex;justify-content:space-between;padding:7px 9px;border-bottom:1px solid #29464f;font-size:7px}.serial-monitor pre{min-height:75px;margin:0;padding:9px;white-space:pre-wrap;font:9px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.code-success{margin:0;border-width:1px 0 0;border-radius:0;box-shadow:none}
@media(max-width:1120px){.code-workspace{grid-template-columns:285px minmax(0,1fr)}.code-lab-grid{grid-template-columns:1fr}.code-intro{grid-template-columns:1fr}.intro-code{max-width:700px;width:100%}}
@media(max-width:760px){.code-workspace{display:block}.code-intro{min-height:0;padding:24px;gap:28px}.code-intro h1{font-size:30px}.firmware-flow i{display:none}.code-lab>header{display:block}.code-run-status{margin-top:12px}.code-lab-grid{padding:8px}.code-line code{font-size:8px}.hardware-stage{min-height:250px}.signal-readout{grid-template-columns:1fr 1fr}.signal-readout>span:last-child{grid-column:1/-1;border-top:1px solid var(--line)}}

/* Quiet workshop surfaces — structure comes from depth, not rounded boxes */
:root{--radius:3px;--shadow-sm:0 1px 2px rgba(20,34,49,.07),0 7px 18px rgba(26,50,62,.055);--shadow:0 1px 3px rgba(20,34,49,.08),0 12px 28px rgba(26,50,62,.075);--shadow-lg:0 2px 5px rgba(10,28,35,.12),0 22px 52px rgba(10,28,35,.16)}
.lesson-panel,.canvas-card,.feedback,.map-card,.library-card,.sandbox-card,.modal-card,.breadboard-lab,.esp32-overview,.esp32-lab,.soldering-roadmap,.solder-path,.concept-stage,.mastery-panel{border-radius:3px;box-shadow:var(--shadow)}
.continue-lesson{border-radius:4px;box-shadow:var(--shadow-lg)}
.continue-visual>span{border-radius:3px;box-shadow:0 2px 4px rgba(5,27,31,.15),0 16px 32px rgba(5,27,31,.24)}
.current-skill{border-radius:2px;box-shadow:0 2px 4px rgba(5,27,31,.14),0 12px 24px rgba(5,27,31,.2)}
.concept-stage{border-color:#d7e1e4;box-shadow:0 1px 2px rgba(20,34,49,.06),0 14px 32px rgba(26,50,62,.07)}
.concept-demonstration{border-radius:0;border-left:3px solid #9dd9ca;background:#edf8f5}
.apply-note{background:transparent}
.transfer-prompt{border-radius:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:transparent;padding-left:0;padding-right:0}
.mastery-panel{border-color:#d6e1e3;box-shadow:0 1px 2px rgba(20,34,49,.06),0 10px 24px rgba(26,50,62,.07)}
.detail-visual{border-radius:2px;box-shadow:inset 0 0 0 1px rgba(23,56,66,.045)}
.welcome-path,.lesson-components,.component-lesson-card,.glossary details,.build-objective,.lesson-instrument,.bb-schematic,.bb-board,.pin-callout,.esp32-concept,.esp32-parts-rail article,.decision-card,.solder-feedback{border-radius:2px}
.component-index-row:hover,.component-index-row.active{border-radius:2px}
.risk-flags span,.fault-tags span{border-radius:2px}
.placed-part{border-radius:3px;box-shadow:0 2px 4px rgba(26,50,62,.12),0 9px 18px rgba(26,50,62,.12)}
.tray-item{border-radius:8px;box-shadow:0 1px 2px rgba(20,34,49,.035)}
.library-visual{border-radius:2px}
.toast{border-radius:3px;box-shadow:var(--shadow-lg)}

/* Compact secondary-heading scale */
.lesson-panel h2{font-size:18px}
.map-card h2{font-size:14px}
.library-card h2{font-size:14px}
.instrument-copy h2{font-size:13px}
.soldering-roadmap h2{font-size:16px}
.solder-path-head h2{font-size:14px}
.continue-copy h2{font-size:clamp(22px,3.2vw,38px)}
.section-heading h2,.mastery-panel h2{font-size:19px}
.topic-rail h2{font-size:14px}
.concept-stage>h2{font-size:clamp(19px,2.4vw,30px)}
.component-detail-hero h2{font-size:clamp(22px,3.2vw,35px)}
@media(max-width:760px){.continue-copy h2{font-size:24px}}

/* Readability floor for interface text; SVG diagram labels retain coordinate-based sizing */
.bb-tools>button,
.bb-brand,
.bb-hole-row>span,
.bb-center-gap span,
.bb-legend,
.bb-status,
.lesson-components>p,
.component-lesson-card summary small,
.component-lesson-card>div,
.component-lesson-card p,
.component-category,
.used-in strong,
.used-in button,
.eyebrow,
.xp-row,
.part-name,
.part-detail,
.tray-item>span:last-child,
.reading small,
.lab-marker .marker-value,
.instrument-readout span,
.instrument-control span,
.instrument-tip,
.detective-score span,
.safety-chip,
.test-grid b,
.test-grid small,
.evidence-board h3 span,
.identify-row label>span,
.terminal:after,
.learn-detail summary>span,
.lesson-row>span:first-child,
.lesson-row small,
.syllabus-preview summary,
.syllabus-preview p,
.syllabus-preview p>span,
.meter-head,
.power-indicator,
.meter-lcd small,
.probe-dock,
.meter-foot span,
.meter-foot button,
.solder-path-head p,.solder-header p,
.solder-path-item>span:first-child,
.solder-path-item b,
.solder-path-item small,
.solder-score span,
.solder-guide h3,
.safety-check b,.stage-check b,
.safety-check small,.stage-check small,
.concept-list p,
.bench-toolbar b,.bench-toolbar small,
.bench-toolbar label,
.board-label,
.solder-pad>b,.solder-pad>small,
.bench-lock span,
.selected-readout span,.selected-readout small,.process-controls small,
.process-controls button b,
.solder-feedback h3,
.solder-feedback p,.solder-feedback small,
.fault-tags span,
.solder-footer b,.solder-footer span,
.pin-callout,
.pin-rule-strip b,
.esp32-concept h3,
.esp32-focus-part b,
.esp32-focus-part small,
.esp32-focus-part p,
.esp32-checklist li>span,
.esp32-checklist p,
.esp32-lab>header p,
.esp32-progress span,
.esp32-parts-rail b,
.esp32-parts-rail small,
.decision-num,
.decision-card h3,
.decision-options button,
.text-action,
.journey-stage,
.course-progress>span,.course-progress>small,
.next-meta span,
.current-skill small,
.current-skill b,
.section-heading>span,
.chapter-marker b,
.chapter-summary small,
.chapter-summary em,
.path-lesson>span:first-child,
.path-lesson span b,
.path-lesson span small,
.path-lesson>strong,
.chapter-preview p,
.chapter-preview p span,
.chapter-preview>small,
.mastery-panel>p,
.mastery-row b,
.mastery-row small,
.mastery-row>strong,
.full-syllabus>summary,
.full-syllabus h3,
.full-syllabus p,
.full-syllabus p span,
.guided-header p,
.lesson-rail span,
.topic-rail>span,
.topic-rail button,
.topic-rail button>span,
.concept-demonstration small,
.apply-note b,
.apply-note p,
.model-answer span,
.transfer-prompt b,
.transfer-prompt p,
.lesson-kit button b,
.lesson-kit button small,
.lesson-kit>p,
.library-search label,
.library-search span,
.category-filter button,
.component-index-row b,
.component-index-row small,
.no-components p,
.risk-flags span,
.component-facts section>span,.common-uses>span,
.component-facts p,
.common-uses p,
.related-lessons button>span:first-child,
.related-lessons button b,
.related-lessons button small,
.welcome-path span,
.welcome-path span b,
.welcome-card>small{font-size:12px}

/* Chapter 8 · power drivers and actuator safety */
.power-workspace{grid-template-columns:330px minmax(0,1fr);background:#edf3f3}.power-workspace .lesson-panel{height:calc(100vh - 76px)}.power-intro{min-height:calc(100vh - 76px);display:grid;grid-template-columns:minmax(280px,.85fr) minmax(380px,1.15fr);align-items:center;gap:clamp(28px,4vw,58px);padding:clamp(30px,4vw,60px);background:#f7faf9}.power-intro h1{font-size:clamp(34px,4.5vw,66px);line-height:1;letter-spacing:-.05em;margin:13px 0 18px;max-width:760px}.power-intro>div>p{font-size:15px;line-height:1.65;color:#536976;max-width:650px}.intro-power-chain{display:grid;grid-template-columns:1fr 34px 1fr 34px 1fr;align-items:center;padding:26px;background:#173b43;color:#fff;border-radius:18px;box-shadow:0 18px 44px rgba(23,59,67,.16)}.intro-power-chain>span{min-width:0;text-align:center}.intro-power-chain svg{width:100%;height:100px}.intro-power-chain b,.intro-power-chain small{display:block}.intro-power-chain b{margin-top:8px;font-size:13px}.intro-power-chain small{color:#9ebfc3;font-size:9px}.intro-power-chain>i{font-style:normal;text-align:center;color:#54d9b9;font-size:24px}.power-coach .learn-content{padding-bottom:30px}.power-decisions{margin:12px 0 26px}.power-lab{min-width:0;padding:24px}.power-lab>header{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;background:#fff;border:1px solid var(--line);padding:22px 24px}.power-lab>header h1{font-size:27px;letter-spacing:-.035em;margin:5px 0 4px}.power-lab>header p{margin:0;color:#58707b;font-size:11px;line-height:1.45}.power-progress{min-width:78px;border-left:3px solid #bdc9cc;padding-left:12px}.power-progress.ready{border-color:#00a889}.power-progress b,.power-progress span{display:block}.power-progress b{font-size:23px}.power-progress span{font-size:7px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:#617680}.power-lab-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px;padding:12px;background:#e8eeee;border:1px solid var(--line);border-top:0}.power-bench{min-width:0;display:grid;grid-template-columns:minmax(230px,.75fr) minmax(300px,1.25fr);gap:12px}.power-controls,.power-readout,.power-path,.power-observations,.power-code{background:#fff;border:1px solid #cfdddf}.power-controls{padding:15px}.power-controls>header,.power-observations>header{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #dbe5e6;padding-bottom:10px;margin-bottom:12px}.power-controls>header span,.power-observations>header span{font-size:9px;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.power-controls>header small,.power-observations>header b{font-size:8px;color:#71848c}.power-range,.power-select{display:block;padding:10px 0;border-bottom:1px solid #edf1f2}.power-range>span{display:flex;justify-content:space-between;align-items:center}.power-range b,.power-select>span{font-size:9px}.power-range strong{font-size:9px;color:#008a73}.power-range input{width:100%;accent-color:#00a889;margin-top:10px}.power-select select{width:100%;margin-top:7px;border:1px solid #c7d5d8;background:#fff;border-radius:5px;padding:8px;font:700 10px inherit;color:#29414d}.power-toggle{width:100%;min-height:48px;margin:8px 0;border:1px solid #cbd9db;background:#fff;display:grid;grid-template-columns:28px 1fr;grid-template-rows:1fr 1fr;text-align:left;align-items:center;padding:7px 9px;cursor:pointer}.power-toggle>span{grid-row:1/-1;width:26px;height:15px;border-radius:9px;background:#aab9bd;position:relative}.power-toggle>span:after{content:"";position:absolute;left:2px;top:2px;width:11px;height:11px;border-radius:50%;background:#fff;transition:transform .16s}.power-toggle.active>span{background:#00a889}.power-toggle.active>span:after{transform:translateX(11px)}.power-toggle b{font-size:9px}.power-toggle small{font-size:7px;color:#75878e}.power-readout{padding:15px;display:grid;grid-template-columns:1fr 1fr;gap:12px;border-top:4px solid #d3a442}.power-readout.safe{border-top-color:#00a889}.power-readout>div{background:#f4f8f7;padding:12px}.power-readout>div span{display:block;font-size:7px;font-weight:900;letter-spacing:.08em;color:#647983}.power-readout>div b{font-size:25px}.power-readout>div b small{font-size:9px}.power-readout>div:nth-child(3){grid-column:1/-1;background:#173b43;color:#fff}.power-readout>div strong{font-size:11px;color:#ffd979}.power-readout.safe>div strong{color:#67e2c1}.power-readout>div p{margin:5px 0 0;color:#c2d5d7;font-size:9px}.power-readout>button{grid-column:1/-1}.power-path{grid-column:1/-1;display:grid;grid-template-columns:1fr 70px 1fr 70px 1fr;align-items:center;padding:18px;min-height:170px}.path-node{text-align:center;min-width:0}.path-node small,.path-node b{display:block}.path-node small{font-size:7px;letter-spacing:.1em;font-weight:900;color:#6d818a}.path-node svg{height:78px;width:100%}.path-node b{font-size:9px}.power-path>i{height:3px;background:#9eb0b5;position:relative}.power-path>i:after{content:"";position:absolute;right:-2px;top:-4px;border-left:8px solid #9eb0b5;border-top:5px solid transparent;border-bottom:5px solid transparent}.power-path>i span{position:absolute;left:50%;bottom:7px;translate:-50% 0;font-size:7px;color:#71858c;font-style:normal}.power-path.safe>i{background:#00a889}.power-path.safe>i:after{border-left-color:#00a889}.power-observations{grid-column:1/-1;padding:14px}.power-observations>p{display:grid;grid-template-columns:28px 130px 1fr;gap:8px;align-items:center;margin:0;padding:8px;border-top:1px solid #e5ecec}.power-observations>p:first-of-type{border-top:0}.power-observations>p>b{font-size:8px;color:#008a73}.power-observations>p>span{font-size:9px;font-weight:800}.power-observations>p>small{font-size:8px;color:#647983}.power-observations>p.risk{border-left:3px solid #d5a23b}.power-observations>p.safe{border-left:3px solid #00a889}.power-code{background:#102e35;color:#d5f4ec;align-self:start}.power-code>header{display:flex;justify-content:space-between;padding:10px 12px;background:#173b43;font-size:8px}.power-code>div{display:grid;grid-template-columns:27px 1fr;border-top:1px solid rgba(255,255,255,.05);min-height:44px}.power-code>div>span{padding:13px 8px;color:#718f93;background:#14343b;font-size:8px}.power-code code{padding:12px 9px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:9px;line-height:1.55;color:#96efd6}.power-analysis{margin:0;border-radius:0;border-top:0}.power-analysis>button{margin-left:auto}
@media(max-width:1500px){.power-lab-grid{grid-template-columns:1fr}.power-code{order:-1}}
@media(max-width:1300px){.power-workspace{grid-template-columns:285px minmax(0,1fr)}.power-lab-grid{grid-template-columns:1fr}.power-code{order:-1}.power-intro{grid-template-columns:1fr}.intro-power-chain{max-width:720px}.power-bench{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.power-workspace{display:block}.power-workspace .lesson-panel{height:auto;min-height:0}.power-coach .learn-content{max-height:none}.power-intro{min-height:0;padding:24px;gap:28px}.power-intro h1{font-size:30px}.intro-power-chain{grid-template-columns:1fr 20px 1fr 20px 1fr;padding:13px}.intro-power-chain svg{height:65px}.intro-power-chain b{font-size:9px}.intro-power-chain small{font-size:7px}.power-lab{padding:0}.power-lab>header{display:block}.power-progress{margin-top:12px}.power-lab-grid{padding:8px}.power-bench{grid-template-columns:1fr}.power-path,.power-observations{grid-column:auto}.power-path{grid-template-columns:1fr 34px 1fr 34px 1fr;padding:10px}.path-node svg{height:56px}.power-observations>p{grid-template-columns:24px 100px 1fr}.power-analysis{align-items:flex-start}.power-analysis>button{width:100%;margin:8px 0 0}}
