@import"https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=Recursive:CASL,MONO,wght@0,1,500;0,1,700&display=swap";:root{color-scheme:light;--ink: oklch(24% .025 148);--muted: oklch(46% .026 148);--paper: oklch(96% .018 91);--panel: oklch(99% .012 91);--terminal: oklch(18% .026 154);--terminal-ink: oklch(93% .028 128);--rule: oklch(82% .025 91);--accent: oklch(58% .16 38);--accent-dark: oklch(42% .13 38);--green: oklch(52% .13 151);--red: oklch(55% .16 27);--amber: oklch(72% .14 79);--space-2xs: 4px;--space-xs: 8px;--space-sm: 12px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--radius-sm: 6px;--shadow: 0 18px 50px color-mix(in oklch, var(--ink), transparent 88%)}*{box-sizing:border-box}html{min-height:100%;background:var(--paper)}body{margin:0;min-height:100%;color:var(--ink);font-family:Atkinson Hyperlegible,Segoe UI,sans-serif;letter-spacing:0}button,input{font:inherit}button{min-height:44px;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}.shell-app{min-height:100dvh;padding:max(var(--space-md),env(safe-area-inset-top)) var(--space-md) max(calc(var(--space-md) + env(safe-area-inset-bottom)),var(--space-md));display:flex;flex-direction:column;gap:var(--space-md)}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}.eyebrow,.lesson-count,.lesson-badge,.task span,.runtime-pill,.terminal-head,.tabs button,.tree-row,.exit-code{font-family:Recursive,Courier New,monospace}.eyebrow{margin:0 0 var(--space-2xs);color:var(--accent-dark);font-size:.78rem;font-weight:700;text-transform:uppercase}h1,h2{margin:0;letter-spacing:0}h1{font-size:1.45rem;line-height:1.05}h2{font-size:2rem;line-height:1}p{line-height:1.45}code,pre,.command-line label,.command-line input,.terminal-entry{font-family:Recursive,Courier New,monospace}.runtime-pill{flex:none;min-height:36px;padding:0 var(--space-sm);border:1px solid var(--rule);border-radius:999px;display:grid;place-items:center;background:color-mix(in oklch,var(--panel),var(--green) 6%);color:var(--muted);font-size:.8rem;font-weight:700}.runtime-pill.is-linux{background:color-mix(in oklch,var(--panel),var(--accent) 16%);color:var(--accent-dark)}.course-shell{flex:1;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-md)}.lesson-panel,.support-panel{border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--panel);box-shadow:var(--shadow)}.lesson-panel{padding:var(--space-md);display:grid;gap:var(--space-sm)}.lesson-count{color:var(--muted);font-size:.82rem}.lesson-badge{width:fit-content;padding:var(--space-2xs) var(--space-xs);border:1px solid color-mix(in oklch,var(--accent),white 28%);border-radius:999px;color:var(--accent-dark);font-size:.8rem;font-weight:700}.lesson-panel p{margin:0;color:var(--muted)}.example{margin:0;padding:var(--space-sm);border-radius:var(--radius-sm);background:color-mix(in oklch,var(--paper),var(--ink) 4%);color:var(--ink);font-size:.9rem;overflow-x:auto}.task{display:grid;gap:var(--space-xs);padding:var(--space-sm);border-radius:var(--radius-sm);background:color-mix(in oklch,var(--amber),white 77%)}.task span{color:var(--accent-dark);font-weight:700;font-size:.8rem;text-transform:uppercase}.task code,.hint code{padding:0 .25em;border-radius:4px;background:color-mix(in oklch,var(--panel),var(--ink) 7%);color:var(--ink)}.lesson-actions,.runtime-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-xs)}.button,.nav-button,.run-button{border:1px solid transparent;border-radius:var(--radius-sm);font-weight:700}.button.primary,.run-button{background:var(--accent);color:#fbf8f0}.button.secondary,.nav-button{border-color:var(--rule);background:var(--panel);color:var(--ink)}.hint,.check,.file-placeholder,.runtime-panel{padding:var(--space-sm);border-radius:var(--radius-sm);background:color-mix(in oklch,var(--paper),var(--green) 7%)}.check{display:grid;gap:var(--space-2xs)}.check strong{color:var(--green)}.check.fail strong{color:var(--red)}.terminal-panel{min-height:420px;border-radius:var(--radius-sm);background:var(--terminal);color:var(--terminal-ink);box-shadow:var(--shadow);overflow:hidden;display:grid;grid-template-rows:auto minmax(280px,1fr) auto}.terminal-head{min-height:44px;padding:0 var(--space-sm);display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);border-bottom:1px solid color-mix(in oklch,var(--terminal-ink),transparent 82%);color:color-mix(in oklch,var(--terminal-ink),transparent 24%);font-size:.78rem}.dot{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:50%}.dot.red{background:var(--red)}.dot.amber{background:var(--amber)}.dot.green{background:var(--green)}.terminal-screen{min-height:0;padding:var(--space-sm);overflow-y:auto;font-size:.96rem}.terminal-empty{min-height:120px;display:grid;place-items:center;color:color-mix(in oklch,var(--terminal-ink),transparent 45%);text-align:center}.terminal-entry{margin-bottom:var(--space-sm)}.entered{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-xs)}.entered span{color:color-mix(in oklch,var(--terminal-ink),var(--green) 20%)}.entered strong{font-weight:700;color:var(--terminal-ink);overflow-wrap:anywhere}.exit-code{color:color-mix(in oklch,var(--terminal-ink),var(--red) 35%);font-size:.74rem}.terminal-entry pre{margin:var(--space-2xs) 0 0;white-space:pre-wrap;overflow-wrap:anywhere;color:color-mix(in oklch,var(--terminal-ink),white 8%)}.command-line{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--space-xs);align-items:center;margin-top:var(--space-md)}.command-line label{color:color-mix(in oklch,var(--terminal-ink),var(--green) 20%)}.command-line input{min-width:0;min-height:44px;border:1px solid color-mix(in oklch,var(--terminal-ink),transparent 78%);border-radius:var(--radius-sm);padding:0 var(--space-sm);background:color-mix(in oklch,var(--terminal),black 18%);color:var(--terminal-ink);font-size:1rem}.run-button{padding:0 var(--space-md)}.quick-keys{display:grid;grid-template-columns:repeat(11,minmax(42px,1fr));gap:1px;border-top:1px solid color-mix(in oklch,var(--terminal-ink),transparent 82%);overflow-x:auto}.quick-keys button{min-width:42px;border:0;border-radius:0;background:color-mix(in oklch,var(--terminal),white 8%);color:var(--terminal-ink);font-family:Recursive,Courier New,monospace}.support-panel{min-height:260px;overflow:hidden}.tabs{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--rule)}.tabs button{border:0;border-radius:0;background:transparent;color:var(--muted);font-weight:700}.tabs button.active{background:color-mix(in oklch,var(--paper),var(--green) 8%);color:var(--ink)}.tree,.runtime-panel,.file-placeholder{padding:var(--space-sm)}.tree-row{min-height:30px;display:flex;align-items:center;gap:var(--space-xs);padding-left:calc(var(--depth) * 18px);font-size:.86rem}.tree-row span{width:14px;height:14px;border-radius:3px;border:1px solid var(--rule);background:var(--panel)}.tree-row.dir{font-weight:700}.tree-row.dir span{background:var(--amber);border-color:color-mix(in oklch,var(--amber),var(--ink) 12%)}.lesson-list{list-style:none;margin:0;padding:var(--space-sm);display:grid;gap:var(--space-xs)}.lesson-list button{width:100%;border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);text-align:left;display:flex;align-items:center;gap:var(--space-sm)}.lesson-list span{font-family:Recursive,Courier New,monospace;color:var(--muted)}.lesson-list .current button{border-color:var(--accent)}.lesson-list .done button{background:color-mix(in oklch,var(--panel),var(--green) 12%)}.runtime-panel{display:grid;gap:var(--space-sm)}.runtime-panel>div:not(.runtime-actions){display:flex;justify-content:space-between;gap:var(--space-sm)}.runtime-panel span,.file-placeholder p{color:var(--muted)}.runtime-actions{grid-template-columns:1fr 1fr}.bottom-nav{position:sticky;bottom:max(var(--space-md),env(safe-area-inset-bottom));display:grid;grid-template-columns:auto minmax(80px,1fr) auto;gap:var(--space-sm);align-items:center;padding:var(--space-xs);border:1px solid var(--rule);border-radius:var(--radius-sm);background:color-mix(in oklch,var(--panel),transparent 5%);box-shadow:var(--shadow)}.nav-button{padding:0 var(--space-sm)}.progress-meter{height:10px;border-radius:999px;overflow:hidden;background:color-mix(in oklch,var(--paper),var(--ink) 7%)}.progress-meter span{display:block;height:100%;background:var(--green)}@media(max-width:430px){.shell-app{padding-left:var(--space-sm);padding-right:var(--space-sm)}h1{font-size:1.2rem}h2{font-size:1.55rem}.lesson-actions{grid-template-columns:1fr}.terminal-panel{min-height:390px}.command-line{grid-template-columns:1fr auto}.command-line label{grid-column:1 / -1}}@media(min-width:900px){.shell-app{padding:var(--space-lg)}.topbar{max-width:1180px;width:100%;margin:0 auto}.course-shell{width:min(1180px,100%);margin:0 auto;grid-template-columns:310px minmax(420px,1fr) 280px;align-items:stretch}.lesson-panel,.support-panel{min-height:0}.terminal-panel{min-height:calc(100dvh - 190px)}.bottom-nav{width:min(1180px,100%);margin:0 auto}}.vm-notice{margin:var(--space-sm) 0;padding:var(--space-sm);border:1px solid var(--rule);border-radius:var(--radius-sm);background:color-mix(in oklch,var(--panel),var(--amber) 12%);display:flex;flex-direction:column;gap:var(--space-2xs)}.vm-notice strong{font-size:.9rem}.vm-notice p{margin:0;color:var(--muted);font-size:.85rem}.vm-notice .button{margin-top:var(--space-2xs)}.lesson-list .module-head{display:flex;align-items:baseline;justify-content:space-between;margin-top:var(--space-sm);padding:var(--space-2xs) var(--space-xs);font-weight:700;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--rule)}.lesson-list .module-head:first-child{margin-top:0}.lesson-list .module-head em{font-style:normal;font-variant-numeric:tabular-nums}.vm-tag{margin-left:var(--space-2xs);padding:0 4px;border-radius:4px;font-size:.62rem;font-style:normal;font-weight:700;letter-spacing:.04em;vertical-align:middle;color:var(--green);background:color-mix(in oklch,var(--panel),var(--green) 16%)}
