:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#122d35;--paper:#f7fbf6;--white:#fff;--green:#2b834f;--green-dark:#17653c;--green-badge:#2b834f;--coral:#f0644b;--coral-deep:#c9452f;--coral-deeper:#a93a26;--yellow:#f6c746;--blue:#2878c8;--line:#c8d9cf;--muted:#4c696f;--shadow:0 14px 34px #163d361a;--btn:#122d35;--btn-text:#fff;--btn-hover:#17653c;--tab-hover:#e8f2e9;--trailbar-bg:#fff;--figure-bg:#dcefed;--playground-bg:#dcefed;--lab-bg:#eaf4ec;--lab-text:#315a4a;--tip-bg:#e5f2e6;--tip-text:#30564a;--key-bg:#fff2bc;--note-bg:#fff8d8;--note-border:#e4c76b;--note-text:#4c5a48;--hint-text:#375c52;--foot-text:#4e6c64;--details-text:#4f5f4d;--summary-text:#604b08;--quiz-border:#b6d0bd;--quiz-opt-bg:#ffffffb8;--takehome-bg:#ffffff9e;--playlink-hover:#fff7cf;--divider:#2f8f5859;--badge-text:#122d35;--cheat-badge-bg:#e5f2e6;--cheat-badge-text:#17653c;--good-bg:#cbe8d3;--good-text:#155a34;--try-bg:#fff0bd;--try-text:#664c00;--focus-ring:#f0644b33;--focus-ring-strong:#f0644b47;--code-bg:#102e35;--code-deep:#0a252b;--code-text:#f5faf6;--code-head:#b9d6cc;--code-head2:#9fc2b5;--code-border:#5d7c75;--code-card-border:transparent;--copy-border:#456962;--copy-text:#d9ece5;--copy-hover-bg:#173b42;--copy-hover-border:#71948c;--dot-green:#63be7b}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#edf5f0;--paper:#0d1b20;--white:#15262c;--green:#57b87f;--green-dark:#93dcb2;--green-badge:#2b834f;--coral:#f0644b;--coral-deep:#c9452f;--coral-deeper:#a93a26;--yellow:#f6c746;--blue:#6aa5dc;--line:#2b434b;--muted:#a4c3bc;--shadow:0 14px 34px #00000080;--btn:#23434d;--btn-text:#fff;--btn-hover:#2e5560;--tab-hover:#1a2f35;--trailbar-bg:#15262c;--figure-bg:#dcefed;--playground-bg:#15262c;--lab-bg:#12241c;--lab-text:#a9cdb8;--tip-bg:#14251d;--tip-text:#a9cdb8;--key-bg:#4a3d12;--note-bg:#26260f;--note-border:#7d6c2e;--note-text:#d6d2b4;--hint-text:#a9c9bb;--foot-text:#9fb8ae;--details-text:#c3c9bb;--summary-text:#f0d488;--quiz-border:#2f4a43;--quiz-opt-bg:#ffffff0d;--takehome-bg:#ffffff0a;--playlink-hover:#22333a;--divider:#6ec89161;--badge-text:#122d35;--cheat-badge-bg:#e5f2e6;--cheat-badge-text:#17653c;--good-bg:#cbe8d3;--good-text:#155a34;--try-bg:#fff0bd;--try-text:#664c00;--focus-ring:#f0644b59;--focus-ring-strong:#f0644b73;--code-bg:#102e35;--code-deep:#0a252b;--code-text:#f5faf6;--code-head:#b9d6cc;--code-head2:#9fc2b5;--code-border:#5d7c75;--code-card-border:#2b4a53;--copy-border:#456962;--copy-text:#d9ece5;--copy-hover-bg:#173b42;--copy-hover-border:#71948c;--dot-green:#63be7b}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#edf5f0;--paper:#0d1b20;--white:#15262c;--green:#57b87f;--green-dark:#93dcb2;--green-badge:#2b834f;--coral:#f0644b;--coral-deep:#c9452f;--coral-deeper:#a93a26;--yellow:#f6c746;--blue:#6aa5dc;--line:#2b434b;--muted:#a4c3bc;--shadow:0 14px 34px #00000080;--btn:#23434d;--btn-text:#fff;--btn-hover:#2e5560;--tab-hover:#1a2f35;--trailbar-bg:#15262c;--figure-bg:#dcefed;--playground-bg:#15262c;--lab-bg:#12241c;--lab-text:#a9cdb8;--tip-bg:#14251d;--tip-text:#a9cdb8;--key-bg:#4a3d12;--note-bg:#26260f;--note-border:#7d6c2e;--note-text:#d6d2b4;--hint-text:#a9c9bb;--foot-text:#9fb8ae;--details-text:#c3c9bb;--summary-text:#f0d488;--quiz-border:#2f4a43;--quiz-opt-bg:#ffffff0d;--takehome-bg:#ffffff0a;--playlink-hover:#22333a;--divider:#6ec89161;--badge-text:#122d35;--cheat-badge-bg:#e5f2e6;--cheat-badge-text:#17653c;--good-bg:#cbe8d3;--good-text:#155a34;--try-bg:#fff0bd;--try-text:#664c00;--focus-ring:#f0644b59;--focus-ring-strong:#f0644b73;--code-bg:#102e35;--code-deep:#0a252b;--code-text:#f5faf6;--code-head:#b9d6cc;--code-head2:#9fc2b5;--code-border:#5d7c75;--code-card-border:#2b4a53;--copy-border:#456962;--copy-text:#d9ece5;--copy-hover-bg:#173b42;--copy-hover-border:#71948c;--dot-green:#63be7b}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);margin:0;font-family:DM Sans,sans-serif;line-height:1.55}button,textarea{font:inherit}button{cursor:pointer}.page{max-width:1180px;margin:auto;padding:32px 26px 70px}.theme-bar{justify-content:flex-end;padding:16px 0 0;display:flex}.theme-toggle{border:2px solid var(--ink);color:var(--ink);background:0 0;border-radius:99px;align-items:center;gap:8px;padding:8px 16px;font-size:.85rem;font-weight:800;display:inline-flex}.theme-toggle:hover{background:var(--tab-hover)}.resume-banner{background:var(--note-bg);border:1.5px solid var(--note-border);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 18px;margin:20px 0 0;padding:14px 18px;display:flex}.resume-banner p{color:var(--note-text);margin:0;font-size:.95rem}.resume-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.resume-go{background:var(--coral-deep);color:var(--btn-text);border:0;border-radius:6px;min-height:44px;padding:9px 16px;font-weight:800}.resume-go:hover{background:var(--coral-deeper)}.resume-hide{color:var(--muted);text-underline-offset:3px;background:0 0;border:0;min-height:44px;padding:8px;font-weight:700;text-decoration:underline}.intro{border-bottom:2px solid var(--ink);grid-template-columns:minmax(0,1.25fr) minmax(270px,.75fr);align-items:end;gap:32px;padding:34px 0 28px;display:grid}.intro h1{letter-spacing:-.065em;max-width:760px;margin:0;font-size:clamp(2.5rem,7vw,5.5rem);font-weight:800;line-height:.93}.intro h1 em{color:var(--green);font-style:normal}.intro-copy{padding-bottom:6px}.intro-copy p{color:var(--muted);max-width:35ch;margin:0 0 18px;font-size:1.08rem}.rule{color:var(--green-dark);align-items:center;gap:10px;font-weight:700;display:flex}.rule span{border:2px solid;border-radius:50%;place-items:center;width:30px;height:30px;font-family:IBM Plex Mono,monospace;display:grid}.rule+.rule{margin-top:8px}.intro-time{margin:16px 0 0;font-size:.92rem}.start-trail{background:var(--coral-deep);color:var(--btn-text);border:0;border-radius:8px;margin-top:14px;padding:12px 24px;font-size:1rem;font-weight:800;display:inline-block}.start-trail:hover{background:var(--coral-deeper)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.course{grid-template-columns:280px minmax(0,1fr);gap:36px;padding-top:30px;display:grid}.roadmap{align-self:start;position:sticky;top:18px}@media (width>=821px){.roadmap{max-height:calc(100vh - 36px);overflow-y:auto}}.roadmap h2{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;font-size:.82rem}.track-switch{gap:8px;margin-bottom:16px;display:flex}.track-btn{border:2px solid var(--code-border);background:var(--code-bg);min-height:56px;color:var(--ink);text-align:left;cursor:pointer;border-radius:10px;flex-direction:column;flex:1;justify-content:center;gap:2px;padding:8px 10px;display:flex}.track-btn strong{font-size:.9rem;line-height:1.2}.track-btn small{opacity:.72;font-size:.74rem}.track-btn.active{border-color:var(--green-badge);background:var(--btn);color:var(--btn-text)}.track-btn.active small{opacity:.85}@media (width<=360px){.track-switch{flex-direction:column}.track-btn{min-height:44px}}.lesson-nav{flex-direction:column;gap:8px;display:flex}.lesson-tab{width:100%;color:var(--ink);text-align:left;background:0 0;border:0;border-radius:10px;grid-template-columns:40px 1fr;align-items:center;gap:11px;padding:12px 10px;display:grid;position:relative}.lesson-tab:hover{background:var(--tab-hover)}.lesson-tab[aria-selected=true]{background:var(--btn);color:var(--btn-text)}.lesson-tab .num{border:1.5px solid;border-radius:50%;place-items:center;width:36px;height:36px;font-family:IBM Plex Mono,monospace;font-size:.85rem;font-weight:600;display:grid}.done-badge{background:var(--green-badge);width:22px;height:22px;color:var(--btn-text);pointer-events:none;border-radius:50%;place-items:center;font-size:.72rem;font-weight:800;display:grid;position:absolute;top:7px;right:7px}.trail-progress{margin:2px 0 14px}.trail-progress p{color:var(--green-dark);margin:0 0 8px;font-size:.85rem;font-weight:700}.trail-bar{border:2px solid var(--ink);background:var(--trailbar-bg);border-radius:99px;height:12px;overflow:hidden}.trail-bar span{background:var(--green-badge);border-radius:99px;height:100%;transition:width .3s;display:block}.trail-cheer{color:var(--green-dark);margin:8px 0 0;font-size:.85rem;font-weight:800}.reset-progress{color:var(--muted);text-underline-offset:3px;background:0 0;border:0;min-height:44px;margin-top:4px;padding:8px 2px;font-size:.8rem;font-weight:700;text-decoration:underline}.lesson-tab strong{font-size:.95rem;display:block}.lesson-tab small{opacity:.72;margin-top:1px;font-size:.78rem;display:block}.road-tip{background:var(--tip-bg);color:var(--tip-text);border-radius:6px 18px 18px;margin-top:20px;padding:15px 16px;font-size:.86rem}.lesson{animation:.24s appear;display:none}.lesson.active{display:block}@keyframes appear{0%{opacity:.25;transform:translateY(5px)}to{opacity:1;transform:none}}.lesson-head{grid-template-columns:minmax(0,1.2fr) minmax(220px,.8fr);align-items:stretch;gap:24px;margin-bottom:26px;display:grid}.lesson-title{padding:12px 0}.step{color:var(--green-dark);align-items:center;gap:8px;margin-bottom:14px;font-family:IBM Plex Mono,monospace;font-size:.8rem;font-weight:600;display:inline-flex}.step:before{content:"";background:var(--yellow);width:32px;height:3px}.lesson-title h2{letter-spacing:-.045em;margin:0 0 14px;font-size:clamp(2rem,4.7vw,3.75rem);line-height:1}.lesson-title p{color:var(--muted);max-width:54ch;margin:0;font-size:1.05rem}.lesson-figure{aspect-ratio:1;background:var(--figure-bg);border-radius:30px 8px;min-height:245px;margin:0;overflow:hidden}.lesson-figure img{object-fit:cover;width:100%;height:100%;display:block}.concept{grid-template-columns:minmax(0,1fr) minmax(300px,.88fr);gap:22px;margin-bottom:24px;display:grid}.explain{background:var(--white);border:1.5px solid var(--line);border-radius:10px;padding:26px}.explain h3,.lab h3{letter-spacing:-.02em;margin:0 0 14px;font-size:1.35rem}.explain p{margin:0 0 14px}.explain p:last-child{margin-bottom:0}.key{background:var(--key-bg);border-radius:4px;padding:2px 6px;font-family:IBM Plex Mono,monospace;font-size:.88em}.when-why{background:var(--note-bg);border:1.5px dashed var(--note-border);border-radius:8px;margin-top:18px;padding:16px 18px}.when-why h3{margin:0 0 8px;font-size:1.05rem}.when-why p{color:var(--note-text);margin:0 0 10px;font-size:.94rem}.when-why p:last-child{margin-bottom:0}.code-card{background:var(--code-bg);color:var(--code-text);border:1px solid var(--code-card-border);box-shadow:var(--shadow);border-radius:10px;align-self:start;overflow:hidden}.code-top{background:var(--code-deep);color:var(--code-head2);align-items:center;gap:10px;padding:8px 12px 8px 14px;font-family:IBM Plex Mono,monospace;font-size:.76rem;display:flex}.dots{gap:5px;margin-left:2px;display:flex}.dots i{background:var(--coral);border-radius:50%;width:8px;height:8px}.dots i:nth-child(2){background:var(--yellow)}.dots i:nth-child(3){background:var(--dot-green)}.copy-example{border:1px solid var(--copy-border);color:var(--copy-text);background:0 0;border-radius:5px;margin-left:auto;padding:5px 8px;font:600 .7rem IBM Plex Mono,monospace}.copy-example:hover{background:var(--copy-hover-bg);border-color:var(--copy-hover-border)}.copy-example:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:20px;font:500 .9rem/1.65 IBM Plex Mono,monospace}.pink{color:#ff9f8d}.gold{color:#ffd76a}.aqua{color:#80d8cb}.dim{color:#87aaa0}.lab{background:var(--lab-bg);border:2px solid var(--green);border-radius:24px 8px;padding:26px}.lab-grid{grid-template-columns:minmax(0,1fr) minmax(280px,.95fr);gap:24px;display:grid}.mission{color:var(--lab-text);margin:0 0 16px}.tasks{gap:10px;margin:0;padding:0;list-style:none;display:grid}.tasks li{grid-template-columns:26px 1fr;align-items:start;gap:9px;display:grid}.tasks b{background:var(--green-badge);width:24px;height:24px;color:var(--btn-text);border-radius:50%;place-items:center;margin-top:1px;font:600 .75rem IBM Plex Mono,monospace;display:grid}.try-box label{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:7px;font-size:.86rem;font-weight:700;display:flex}.editor-shortcut{color:var(--muted);white-space:nowrap;font:500 .72rem IBM Plex Mono,monospace}textarea{resize:vertical;border:2px solid var(--ink);background:var(--code-bg);width:100%;min-height:154px;color:var(--code-text);border-radius:7px;outline:none;padding:15px;font:500 .86rem/1.6 IBM Plex Mono,monospace;display:block}textarea:focus{border-color:var(--coral);box-shadow:0 0 0 3px var(--focus-ring)}.actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;display:flex}.run,.check,.next{border:0;border-radius:6px;padding:10px 16px;font-weight:800}.run{background:var(--btn);color:var(--btn-text)}.run:hover{background:var(--btn-hover)}.run:disabled{cursor:wait;opacity:.68}.share-link{background:var(--btn);color:var(--btn-text);border:0;border-radius:6px;min-height:44px;padding:10px 16px;font-weight:800}.share-link:hover{background:var(--btn-hover)}.share-note{color:var(--muted);margin:10px 0 0;font-size:.88rem;font-weight:700}.check{background:var(--coral-deep);color:var(--btn-text)}.check:hover{background:var(--coral-deeper)}.hint-btn{color:var(--green-dark);text-underline-offset:3px;background:0 0;border:0;padding:8px;font-weight:800;text-decoration:underline}.run-output{border:1.5px solid var(--code-border);background:var(--code-bg);color:var(--code-text);border-radius:7px;margin-top:13px;overflow:hidden}.run-output[hidden]{display:none}.output-head{background:var(--code-deep);color:var(--code-head);padding:7px 12px;font:600 .75rem IBM Plex Mono,monospace}.run-output pre{white-space:pre-wrap;overflow-wrap:anywhere;min-height:48px;padding:12px;font-size:.82rem}.run-output.error{border-color:var(--coral)}.run-output.error .output-head{color:#ffc1b5}.plot-output{background:#fff;border-radius:5px;max-width:100%;height:auto;margin:12px 12px 0;display:block}.output-retry{padding:0 12px 12px}.retry-run{background:var(--coral-deep);color:var(--btn-text);border:0;border-radius:6px;padding:9px 16px;font-weight:800}.retry-run:hover{background:var(--coral-deeper)}.feedback{border-radius:6px;margin-top:13px;padding:11px 13px;font-size:.9rem;font-weight:600;display:none}.feedback.show{display:block}.feedback.good{background:var(--good-bg);color:var(--good-text);position:relative}.feedback.try{background:var(--try-bg);color:var(--try-text)}.confetti{pointer-events:none;position:absolute;top:-4px;left:20px}.confetti>span{opacity:0;width:9px;height:9px;animation:.85s cubic-bezier(.2,.7,.3,1) forwards confetti-pop;position:absolute;top:0;left:0}@keyframes confetti-pop{0%{opacity:1;transform:translate(0)rotate(0)}70%{opacity:1}to{transform:translate(var(--tx),var(--ty)) rotate(var(--rot));opacity:0}}.hint{color:var(--hint-text);margin-top:10px;font-size:.9rem;display:none}.hint.show{display:block}.quiz{border-top:1.5px solid var(--divider);margin-top:22px;padding:18px 0 2px}.quiz h4{margin:0 0 5px;font-size:1.08rem}.quiz-question{color:var(--lab-text);margin:0 0 12px}.quiz-question p{margin:0 0 8px}.quiz-question .traceback{margin:10px 0 4px}.quiz-options{gap:8px;display:grid}.quiz-option{border:1.5px solid var(--quiz-border);background:var(--quiz-opt-bg);cursor:pointer;border-radius:7px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.quiz-option:hover{border-color:var(--green)}.quiz-option input{accent-color:var(--green);margin-top:5px}.quiz-result{border-radius:6px;margin-top:11px;padding:10px 12px;font-size:.9rem;font-weight:700;display:none}.quiz-result.show{display:block}.quiz-result.good{background:var(--good-bg);color:var(--good-text)}.quiz-result.try{background:var(--try-bg);color:var(--try-text)}.quiz-check{background:var(--coral-deep);color:var(--btn-text);border:0;border-radius:6px;margin-top:11px;padding:9px 15px;font-weight:800}.quiz-check:hover{background:var(--coral-deeper)}.take-home{border-top:1.5px solid var(--divider);margin-top:22px;padding:20px 0 2px}.take-home h4{letter-spacing:-.01em;margin:0 0 5px;font-size:1.08rem}.take-home .goal{color:var(--lab-text);margin:0 0 12px}.take-home-editor{background:var(--takehome-bg);border-radius:8px;margin:14px 0 16px;padding:16px}.take-home-editor label{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:8px;font-size:.88rem;font-weight:800;display:flex}.take-home-editor textarea{min-height:176px}.take-home details{background:var(--note-bg);border:1px solid var(--note-border);border-radius:8px;margin-top:8px;padding:10px 13px}.take-home summary{cursor:pointer;color:var(--summary-text);font-weight:800}.take-home details p{color:var(--details-text);margin:9px 0 0;font-size:.9rem}.take-home pre{border:1px solid var(--code-card-border);background:var(--code-bg);color:var(--code-text);border-radius:6px;margin-top:10px;padding:14px;font-size:.8rem}.lesson-foot{border-top:1.5px solid var(--divider);justify-content:space-between;align-items:center;gap:14px;margin-top:18px;padding-top:17px;display:flex}.lesson-foot p{color:var(--foot-text);margin:0;font-size:.84rem}.next{background:var(--btn);color:var(--btn-text);white-space:nowrap}.next:hover{background:var(--btn-hover)}.final-note{text-align:center;color:var(--green-dark);padding:20px 14px 4px;font-weight:800;display:none}.final-note.show{animation:.45s note-pop;display:block}@keyframes note-pop{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:none}}.crash-note{background:var(--white);border:1.5px solid var(--line);text-align:center;border-radius:12px;max-width:560px;margin:60px auto;padding:32px}.crash-note h1{letter-spacing:-.02em;margin:0 0 12px;font-size:1.6rem}.crash-note p{color:var(--muted);margin:0 0 20px}.spark{color:var(--coral);display:inline-block}.playground-link,.cheatsheet-link{color:var(--ink);border:2px solid var(--ink);background:var(--white);border-radius:8px;grid-template-columns:38px 1fr;align-items:center;column-gap:10px;margin-top:13px;padding:12px;text-decoration:none;display:grid}.playground-link:hover,.cheatsheet-link:hover{background:var(--playlink-hover)}.playground-link:focus-visible,.cheatsheet-link:focus-visible{outline:3px solid var(--coral);outline-offset:2px}.skip-link{z-index:200;background:var(--btn);color:var(--btn-text);border-radius:8px;padding:12px 18px;font-weight:800;text-decoration:none;position:absolute;top:-64px;left:14px}.skip-link:focus{color:var(--btn-text);top:14px}button:focus-visible{outline:3px solid var(--coral);outline-offset:2px}.take-home summary:focus-visible{outline:3px solid var(--coral);outline-offset:2px;border-radius:6px}.quiz-option:focus-within{border-color:var(--coral);box-shadow:0 0 0 3px var(--focus-ring-strong)}.playground-link>span,.cheatsheet-link>span{background:var(--yellow);width:36px;height:36px;color:var(--badge-text);border-radius:6px;grid-row:1/3;place-items:center;font:700 .85rem IBM Plex Mono,monospace;display:grid}.playground-link strong,.cheatsheet-link strong{font-size:.92rem}.playground-link small,.cheatsheet-link small{color:var(--muted);font-size:.76rem}.cheatsheet-link>span{background:var(--good-bg)}.playground{border-top:2px solid var(--ink);grid-template-columns:minmax(0,.72fr) minmax(320px,1.28fr);align-items:start;gap:30px;margin-top:42px;padding-top:32px;display:grid}.playground-copy h2{letter-spacing:-.04em;margin:0 0 12px;font-size:clamp(2rem,4vw,3.25rem);line-height:1}.playground-copy p{color:var(--muted);max-width:38ch;margin:0}.playground-editor{background:var(--playground-bg);border-radius:10px 28px;padding:20px}.playground-editor label{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:8px;font-weight:800;display:flex}.playground-editor textarea{min-height:260px}.cheatsheet{border-top:2px solid var(--ink);margin-top:48px;padding-top:34px}.cheatsheet-head{grid-template-columns:minmax(0,.8fr) minmax(280px,1.2fr);align-items:end;gap:28px;margin-bottom:24px;display:grid}.cheatsheet-head h2{letter-spacing:-.045em;margin:0;font-size:clamp(2.15rem,4.5vw,3.7rem);line-height:1}.cheatsheet-head p{color:var(--muted);max-width:52ch;margin:0;font-size:1.03rem}.cheat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.cheat-card{background:var(--white);border:1.5px solid var(--line);border-radius:10px;min-width:0;padding:20px}.cheat-card:nth-child(3n+1){border-top:5px solid var(--green)}.cheat-card:nth-child(3n+2){border-top:5px solid var(--coral)}.cheat-card:nth-child(3n){border-top:5px solid var(--yellow)}.cheat-title{align-items:center;gap:10px;margin-bottom:6px;display:flex}.cheat-title span{background:var(--cheat-badge-bg);width:28px;height:28px;color:var(--cheat-badge-text);border-radius:50%;flex:0 0 28px;place-items:center;font:700 .72rem IBM Plex Mono,monospace;display:grid}.cheat-title h3{margin:0;font-size:1.08rem}.cheat-card>p{color:var(--muted);margin:0 0 12px;font-size:.9rem}.cheat-card label{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:7px;font-size:.82rem;font-weight:800;display:flex}.cheat-card textarea{min-height:150px;font-size:.8rem}.cheat-card .run-output pre{min-height:42px}@media (width<=820px){.page{padding:18px 18px 50px}.intro{grid-template-columns:1fr;gap:18px;padding:24px 0}.intro h1{font-size:clamp(2.65rem,14vw,4.6rem)}.course{grid-template-columns:1fr;gap:25px}.roadmap{position:static}.lesson-nav{grid-template-columns:1fr 1fr;display:grid}.road-tip{display:none}.lesson-head,.concept,.lab-grid,.playground,.cheatsheet-head{grid-template-columns:minmax(0,1fr)}.lesson-figure{order:-1;min-height:220px;max-height:340px}.lesson-title{padding:0}.concept{gap:14px}.lab{padding:20px}.cheat-grid{grid-template-columns:1fr}textarea,.cheat-card textarea{font-size:16px}.run,.check,.next,.quiz-check,.hint-btn,.share-link,.quiz-option{min-height:44px}}@media (width<=480px){.page{padding-left:14px;padding-right:14px}.lesson-nav{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.lesson-tab{grid-template-columns:32px minmax(0,1fr);gap:8px;padding:8px 6px}.lesson-tab .num{width:30px;height:30px;font-size:.74rem}.lesson-tab strong{font-size:.84rem;line-height:1.2}.lesson-tab small{display:none}.lesson-head{gap:16px}.lesson-figure{min-height:190px}.explain{padding:20px}.lab{padding:17px}.take-home-editor{padding:12px}.lesson-foot{flex-direction:column;align-items:flex-start}.next{width:100%}.try-box label,.take-home-editor label,.playground-editor label,.cheat-card label{flex-direction:column;align-items:flex-start;gap:2px}.cheat-card{padding:16px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto}.lesson{animation:none}.confetti{display:none}.trail-bar span{transition:none}.final-note.show{animation:none}}.traceback{background:var(--code-bg);color:var(--code-text);border:1px solid var(--code-border);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:7px;margin:12px 0;padding:14px 16px;font:500 .82rem/1.6 IBM Plex Mono,monospace;display:block}.lab .traceback{margin-top:4px}.take-home .traceback{margin:0 0 4px}.take-home-challenge{border-top:1px dashed var(--divider);padding:16px 0}.take-home-challenge:first-of-type{border-top:0;padding-top:0}.take-home-challenge h5{letter-spacing:-.01em;align-items:center;gap:10px;margin:0 0 6px;font-size:1rem;display:flex}.level{letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:99px;padding:4px 10px;font:800 .68rem IBM Plex Mono,monospace;display:inline-block}.level-easy{background:var(--green-badge);color:#fff}.level-medium{background:var(--key-bg);color:var(--summary-text)}.level-spicy{background:var(--coral-deep);color:#fff}.lesson-head.no-figure{grid-template-columns:minmax(0,1fr)}.review-card{background:var(--note-bg);border:1.5px solid var(--note-border);border-radius:10px;margin:14px 0 0;padding:14px 18px}.review-card p{color:var(--note-text);margin:0 0 10px;font-size:.92rem}.review-overlay{z-index:300;background:#0a191d8c;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.review-box{background:var(--paper);width:min(560px,100%);max-height:calc(100vh - 60px);color:var(--ink);border:2px solid var(--ink);box-shadow:var(--shadow);border-radius:14px;padding:26px;overflow-y:auto}.review-box h2{letter-spacing:-.02em;margin:0 0 6px;font-size:1.5rem}.review-box h2:focus{outline:none}.review-progress{color:var(--muted);margin:0 0 6px;font-size:.85rem;font-weight:700}.review-actions{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.review-next{background:var(--btn);color:var(--btn-text);border:0;border-radius:6px;min-height:44px;padding:10px 18px;font-weight:800}.review-next:hover{background:var(--btn-hover)}.review-close{color:var(--muted);text-underline-offset:3px;background:0 0;border:0;min-height:44px;padding:10px;font-weight:700;text-decoration:underline}.review-done{text-align:center;padding:10px 0}.review-done p{margin:0 0 6px;font-size:1.05rem;font-weight:700}.review-done small{color:var(--muted)}@media (width<=480px){.review-box{padding:20px}}
