.lab-shell{display:grid;grid-template-columns:230px 1fr;min-height:680px;border:1px solid var(--line);border-radius:18px;background:#fff;overflow:hidden;box-shadow:0 10px 35px rgba(25,70,60,.07)}
.challenge-rail{padding:18px 12px;background:#f2f7f5;border-right:1px solid var(--line)}
.rail-head{display:flex;justify-content:space-between;gap:10px;padding:3px 7px}.rail-head small{color:var(--muted)}
.progress-track.light{background:#d9e7e2;margin:12px 7px 18px}
.challenge-list{display:grid;gap:5px}.challenge-list button{display:flex;align-items:center;gap:10px;width:100%;border:0;border-radius:9px;padding:10px 9px;text-align:left;background:transparent;color:var(--ink);cursor:pointer}
.challenge-list button:hover,.challenge-list button.active{background:#fff;box-shadow:0 3px 12px rgba(20,70,60,.08)}
.challenge-list button span{display:grid;place-items:center;min-width:27px;height:27px;border-radius:50%;background:#dce9e5;color:#54706b;font-size:.78rem}
.challenge-list button b{font-size:.84rem}.challenge-list button.passed span{background:var(--green);color:#fff}.challenge-list button.active span{outline:2px solid var(--green);outline-offset:2px}
.lab-main{display:grid;grid-template-columns:minmax(220px,34%) 1fr;min-width:0}.instructions-pane{padding:28px;border-right:1px solid var(--line)}
.instructions-pane h2{font-size:1.65rem;margin:10px 0}.instructions-pane p{color:var(--muted);line-height:1.7}
.concept-chip{display:inline-block;margin:12px 0 24px;padding:7px 10px;border-radius:7px;background:var(--mint);color:var(--green2);font-size:.78rem;font-weight:700}
.instructions-pane details{border-top:1px solid var(--line);padding-top:17px}.instructions-pane summary{font-weight:700;cursor:pointer}
.editor-pane{display:grid;grid-template-rows:auto minmax(300px,1fr) auto 190px;min-width:0;background:#102628}
.editor-toolbar,.run-bar,.console-title{display:flex;justify-content:space-between;align-items:center}
.editor-toolbar{padding:12px 16px;color:#d9eee8;background:#173235;border-bottom:1px solid #294548;font-size:.82rem}.editor-toolbar>div{display:flex;align-items:center;gap:8px}
.file-dot{width:9px;height:9px;border-radius:50%;background:var(--green)}
.editor-wrap{display:grid;grid-template-columns:45px 1fr;min-height:0;background:#102628}
.line-nums{padding:17px 9px;overflow:hidden;text-align:right;color:#597677;background:#0c2022;font:400 15px/1.7 'Fira Code'}.line-nums span{display:block}
.editor-wrap textarea{width:100%;height:100%;min-height:330px;border:0;outline:0;resize:none;padding:17px 18px;background:#102628;color:#ddf7ec;caret-color:#69e0aa;font:400 15px/1.7 'Fira Code';white-space:pre;overflow:auto;tab-size:4}
.run-bar{padding:10px 14px;background:#ecf3f1;border-top:1px solid #cbded8}.run-bar>span{color:#6d817d;font-size:.78rem}.run-bar>div{display:flex;gap:8px}.run-bar .btn{padding:8px 13px;font-size:.84rem}
.console{background:#0a1b1d;color:#cde3dd;min-width:0}.console-title{padding:9px 14px;border-bottom:1px solid #203a3d;color:#779794;font-size:.72rem;font-weight:700;letter-spacing:.1em}
.console-title button{border:0;background:transparent;color:#779794;cursor:pointer}.console pre{margin:0;padding:14px 16px;white-space:pre-wrap;font:400 .85rem/1.55 'Fira Code';max-height:145px;overflow:auto}.console-pass{color:#65d99e}.console-fail{color:#ffad78}
@media(max-width:1050px){.lab-main{grid-template-columns:1fr}.instructions-pane{border-right:0;border-bottom:1px solid var(--line)}}
@media(max-width:850px){.lab-shell{grid-template-columns:1fr}.challenge-rail{border-right:0;border-bottom:1px solid var(--line)}.challenge-list{display:flex;overflow-x:auto;padding-bottom:5px}.challenge-list button{min-width:155px}.lab-main{grid-template-columns:1fr}}
