.lab-hero{padding:6px 0 2px}.lab-hero .prompt{font-family:var(--mono);font-size:13px;color:var(--faint);margin-bottom:10px}.lab-hero .lede{font-size:16.5px;color:var(--muted);max-width:720px}.lab-meta{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:14px;font-size:13.5px}.lab-chip{color:var(--faint);font-size:13.5px;font-weight:600}.lab-chip+.lab-chip:before{content:"·";margin-right:10px;color:var(--faint)}.lab-progress{height:6px;background:var(--bg-soft);border:1px solid var(--border);border-radius:999px;overflow:hidden;margin:22px 0 8px}.lab-progress>div{height:100%;width:0;background:var(--accent2);transition:width .35s ease;border-radius:999px}.lab-progress-label{font-size:13px;color:var(--faint)}.lab-steps{counter-reset:labstep;margin-top:18px;display:grid;gap:14px}.step{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:22px 22px 20px}.prose .step h3{margin:0 0 10px;padding-right:118px;font-size:20px}.prose .step h3:before{counter-increment:labstep;content:counter(labstep) ". ";color:var(--accent2);font-weight:700}.prose .step p{margin:0 0 12px;color:var(--muted)}.prose .step p:last-child{margin-bottom:0}.prose .step ul,.prose .step ol,.prose .step li{color:var(--muted)}.prose .step.done h3{color:var(--faint)}.step-check{position:absolute;top:22px;right:20px;cursor:pointer;font-size:12.5px;font-weight:600}.step-check input{display:none}.step-check span{display:inline-block;color:var(--muted);border:1px solid var(--border);background:var(--bg-soft);padding:4px 12px;border-radius:999px;transition:all .15s ease}.step-check span:before{content:"☐ "}.step-check:hover span{border-color:var(--accent);color:var(--text)}.step-check input:checked+span{background:var(--accent2-soft);border-color:var(--accent2);color:var(--accent2)}.step-check input:checked+span:before{content:"☑ "}.prose .step.challenge{border-left:3px solid var(--accent)}.prose .step.challenge h3:after{content:" ⚡"}.prose pre.lab-code{position:relative;background:#101a30;border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:34px 16px 28px;margin:16px 0;overflow-x:auto;font-family:var(--mono);font-size:13.5px;line-height:1.7;color:#d6deeb;tab-size:4}.code-in{position:absolute;top:10px;left:14px;font-family:var(--mono);font-size:12px;font-weight:700;color:#8b7cf6;user-select:none}.code-lang{position:absolute;bottom:8px;right:14px;font-size:11px;color:#7f90b3;font-family:ui-sans-serif,system-ui,sans-serif;user-select:none}.copy-btn{position:absolute;top:8px;right:8px;display:inline-flex;align-items:center;gap:5px;background:#1c2a4d;border:1px solid #3c537f;color:#a9b8d6;font-size:11px;font-weight:600;padding:3px 8px;border-radius:6px;cursor:pointer;opacity:.9;transition:opacity .15s ease,border-color .15s ease}.prose pre.lab-code:hover .copy-btn,.prose pre.lab-code:focus-within .copy-btn{opacity:1}.copy-btn:hover{border-color:#8fc3ff;color:#fff}.copy-btn.ok{border-color:#4ade80;color:#4ade80;opacity:1}.copy-btn svg{width:12px;height:12px;flex:none}.prose .nb-cell{margin:16px 0}.prose .nb-cell pre.lab-code{margin:0;border-radius:10px 10px 0 0;border-bottom:none}.prose .nb-output{margin:0;padding:10px 16px 12px;background:#0c1526;border:1px solid rgba(255,255,255,.14);border-top:1px dashed rgba(255,255,255,.16);border-radius:0 0 10px 10px;font-family:var(--mono);font-size:12.5px;line-height:1.65;color:#a9b8d6;white-space:pre-wrap;overflow-x:auto}.prose .nb-output .out-prompt{color:#4ade80;font-weight:700;user-select:none}.nb-dl{display:inline-flex;align-items:center;gap:7px;margin-top:14px;padding:7px 13px;border-radius:8px;background:var(--accent2-soft);border:1px solid var(--accent2);color:var(--text);font-size:13px;font-weight:600;text-decoration:none}.nb-dl:hover{background:var(--accent2);color:#fff}.nb-dl svg{width:12px;height:12px;flex:none}.tok-k{color:#f78c6c}.tok-s{color:#c3e88d}.tok-c{color:#63718f;font-style:italic}.tok-n{color:#f78c6c}.tok-f{color:#82aaff}.checkpoint,.stuck{border-radius:0 10px 10px 0;padding:12px 16px;margin:16px 0 4px;font-size:14.5px;color:var(--muted)}.checkpoint{border-left:3px solid var(--accent2);background:var(--accent2-soft)}.checkpoint strong{color:var(--accent2)}.stuck{border-left:3px solid #e3b341;background:#e3b34114}.stuck strong{color:#e3b341}.checkpoint code,.stuck code{background:#7f90b329;border-radius:4px;padding:1px 6px;font-size:13px;color:var(--text)}.lab-complete{margin-top:34px;width:100%;padding:15px;font-size:15.5px;font-weight:700;border-radius:10px;border:1px solid var(--accent);cursor:pointer;background:var(--accent);color:#fff;transition:filter .15s ease}.lab-complete:hover{filter:brightness(1.1)}.lab-complete.is-done{background:var(--good);border-color:var(--good);color:#04120a}.how-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:20px}.how-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;transition:border-color .15s ease}.how-card:hover{border-color:var(--accent)}.how-card .ic{font-size:24px;display:block;margin-bottom:8px}.prose .how-card h3{margin:0 0 6px;font-size:15.5px}.prose .how-card p{margin:0;font-size:13.5px;color:var(--muted)}.lab-list{display:grid;gap:12px;margin-top:26px}.lab-card{display:block;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;text-decoration:none;transition:border-color .15s ease}a.lab-card:hover{border-color:var(--accent);text-decoration:none}.lab-num{display:inline-block;font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent2);margin-bottom:8px}.prose .lab-card h2{margin:0 0 8px;font-size:20px}.prose .lab-card p{margin:0;font-size:14.5px;color:var(--muted)}.lab-card.soon{opacity:.75}.soon-tag{display:inline-block;margin-left:8px;font-size:11.5px;font-weight:700;color:#e3b341;border:1px solid #e3b341;border-radius:999px;padding:2px 10px;vertical-align:middle}.confetti-bit{position:fixed;top:-12px;width:8px;height:12px;z-index:300;pointer-events:none;animation:confetti-fall 2.4s ease-in forwards}@keyframes confetti-fall{to{transform:translateY(72vh) rotate(720deg);opacity:0}}@media(max-width:640px){.step{padding:18px 16px 16px}.prose .step h3{padding-right:0;font-size:18px}.step-check{position:static;display:block;margin-top:14px}.prose pre.lab-code{font-size:12.5px;padding:32px 12px 26px}}
