:root{color-scheme:light;--bg: #f8fafc;--surface: #ffffff;--surface-2: #f1f5f9;--text: #0f172a;--muted: #475569;--border: #cbd5e1;--accent: #1d4ed8;--accent-contrast: #ffffff;--accent-soft: #dbeafe;--success: #15803d;--success-soft: #dcfce7;--warn: #a16207;--warn-soft: #fef9c3;--danger: #b91c1c;--danger-soft: #fee2e2;--code-bg: #0f172a;--code-text: #e2e8f0;--code-muted: #94a3b8;--hl-keyword: #c4b5fd;--hl-string: #86efac;--hl-number: #fdba74;--hl-comment: #94a3b8;--hl-title: #7dd3fc;--hl-attr: #f9a8d4;--radius: .6rem;--topbar-h: 3.25rem;--sidebar-w: 17rem;--bottombar-h: 3.75rem;--font: system-ui, -apple-system, "Segoe UI", sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, monospace}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #0b1120;--surface: #111a2e;--surface-2: #1a2540;--text: #e2e8f0;--muted: #94a3b8;--border: #2b3a5a;--accent: #7aa2ff;--accent-contrast: #0b1120;--accent-soft: #1e3a8a;--success: #4ade80;--success-soft: #14532d;--warn: #facc15;--warn-soft: #422006;--danger: #f87171;--danger-soft: #450a0a;--code-bg: #060b17;--code-text: #e2e8f0}}:root[data-theme=dark]{color-scheme:dark;--bg: #0b1120;--surface: #111a2e;--surface-2: #1a2540;--text: #e2e8f0;--muted: #94a3b8;--border: #2b3a5a;--accent: #7aa2ff;--accent-contrast: #0b1120;--accent-soft: #1e3a8a;--success: #4ade80;--success-soft: #14532d;--warn: #facc15;--warn-soft: #422006;--danger: #f87171;--danger-soft: #450a0a;--code-bg: #060b17;--code-text: #e2e8f0}:root{color:var(--text);background:var(--bg);font-family:var(--font);line-height:1.6}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:var(--accent)}h1{line-height:1.15;margin:.25rem 0 .5rem;font-size:clamp(1.7rem,4vw,2.3rem)}h2{line-height:1.25}.eyebrow,.muted{color:var(--muted);margin:0}.lead{font-size:1.1rem;color:var(--muted);margin:0 0 1rem}.button,button{display:inline-block;margin:.5rem .5rem .5rem 0;border:0;border-radius:.4rem;padding:.6rem .9rem;background:var(--accent);color:var(--accent-contrast);font:inherit;cursor:pointer;text-decoration:none}.button.secondary{background:var(--surface-2);color:var(--text);border:1px solid var(--border)}.button.secondary.on,.button.secondary[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent)}.button.danger{background:var(--danger);color:#fff}button:disabled{opacity:.5;cursor:not-allowed}progress{width:100%;height:.6rem;accent-color:var(--accent)}input,select,textarea{display:block;width:100%;margin-top:.3rem;padding:.55rem;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:.4rem;font:inherit}textarea,pre,code{font-family:var(--mono)}label{display:block;margin-top:.75rem;font-weight:600}:is(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--accent);outline-offset:2px}.panel{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);padding:1.1rem 1.25rem;margin:1.25rem 0}.chips{display:flex;flex-wrap:wrap;gap:.35rem;padding:0;margin:.5rem 0;list-style:none}.chip{display:inline-block;padding:.1rem .55rem;border-radius:1rem;font-size:.8rem;background:var(--surface-2);border:1px solid var(--border);color:var(--muted)}.chip.status{text-transform:capitalize}.chip.status.completed{background:var(--success-soft);color:var(--success);border-color:transparent}.chip.status.in-progress{background:var(--warn-soft);color:var(--warn);border-color:transparent}[tabindex="-1"]:focus-visible{outline:none}.panel>h2:first-child{margin-top:0}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.hero-card{background:linear-gradient(135deg,var(--accent-soft),var(--surface))}.phase-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1rem}.phase-tile{display:grid;gap:.4rem;color:inherit;text-decoration:none;margin:0}.phase-tile:hover{border-color:var(--accent)}.filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:.5rem 1rem}.filters label{margin-top:0}.phase{margin:2rem 0}.phase-header{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1rem}.phase-header h2{margin:0}.phase-map{display:flex;flex-wrap:wrap;gap:.25rem;list-style:none;padding:0;margin:0 0 0 auto}.phase-map a,.phase-units a[data-state]:before{display:block;width:.85rem;height:.85rem;border-radius:50%;background:var(--border)}.phase-map a[data-state=completed]{background:var(--success)}.phase-map a[data-state=in-progress]{background:var(--warn)}.unit-card{display:grid;gap:.25rem;color:inherit;text-decoration:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1.1rem;margin:.6rem 0}.unit-card:hover{border-color:var(--accent)}.unit-card .chips{margin:.25rem 0 0}@media(max-width:760px){.filters{grid-template-columns:1fr}.phase-map{margin-left:0}}.lesson{font-size:1.04rem}.lesson h2{margin-top:2.5rem;padding-bottom:.3rem;border-bottom:1px solid var(--border);scroll-margin-top:5rem}.lesson h3{scroll-margin-top:5rem}.lesson :not(pre)>code{background:var(--surface-2);border:1px solid var(--border);border-radius:.3rem;padding:.05rem .3rem;font-size:.9em}.code-block,.command{position:relative;margin:1rem 0}.code-block pre{margin:0;overflow-x:auto;padding:1rem;border-radius:.5rem;background:var(--code-bg);color:var(--code-text);font-size:.9rem;line-height:1.5;white-space:pre}.code-block .code-title{padding:.3rem .8rem;border-radius:.5rem .5rem 0 0;background:var(--surface-2);color:var(--muted);font:.8rem var(--mono);border:1px solid var(--border);border-bottom:0}.code-title+.copy-button+pre,.code-title~pre{border-top-left-radius:0;border-top-right-radius:0}.copy-button{position:absolute;top:.4rem;right:.4rem;margin:0;padding:.25rem .55rem;font-size:.8rem;background:var(--surface-2);color:var(--text);border:1px solid var(--border)}.command code{display:block;overflow-x:auto;padding:1rem 4.5rem 1rem 1rem;border-radius:.5rem;background:var(--code-bg);color:var(--code-text)}.hljs-keyword,.hljs-built_in,.hljs-literal,.hljs-selector-tag{color:var(--hl-keyword)}.hljs-string,.hljs-regexp,.hljs-addition{color:var(--hl-string)}.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-meta{color:var(--hl-number)}.hljs-comment,.hljs-quote{color:var(--hl-comment);font-style:italic}.hljs-title,.hljs-section,.hljs-type,.hljs-class .hljs-title{color:var(--hl-title)}.hljs-attr,.hljs-attribute,.hljs-name,.hljs-variable,.hljs-property{color:var(--hl-attr)}.hljs-deletion{color:#fca5a5}.table-scroll{overflow-x:auto;margin:1rem 0}table{border-collapse:collapse;width:100%;font-size:.95rem}th,td{border:1px solid var(--border);padding:.45rem .7rem;text-align:left;vertical-align:top}th{background:var(--surface-2)}.zoom-image{display:block;width:100%;padding:0;margin:1rem 0;background:var(--surface);border:1px solid var(--border);cursor:zoom-in}.zoom-image img{display:block;width:100%;height:auto}.zoom-image.zoomed{position:fixed;inset:0;z-index:60;margin:0;padding:1rem;overflow:auto;cursor:zoom-out;background:var(--bg)}.zoom-image.zoomed img{width:auto;max-width:none;min-width:100%}.step{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin:1.25rem 0}.step[hidden]{display:none}.step[data-done=true]{border-color:var(--success)}.step-header{display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;border-bottom:1px solid var(--border)}.step-header h3{margin:0;flex:1;font-size:1.05rem}.step-number{display:grid;place-items:center;width:1.8rem;height:1.8rem;border-radius:50%;background:var(--accent);color:var(--accent-contrast);font-weight:700;font-size:.9rem}.step[data-done=true] .step-number{background:var(--success)}.step-body{padding:.25rem 1rem 1rem}.check{display:inline-flex;align-items:center;gap:.4rem;margin:0;font-weight:500;cursor:pointer}.check input{width:auto;margin:0}.checkpoint{border:1px dashed var(--accent);border-radius:var(--radius);background:var(--accent-soft);padding:.75rem 1rem;margin:1.25rem 0}.checkpoint[data-done=true]{border-color:var(--success);background:var(--success-soft)}.callout,.try{border-left:4px solid var(--accent);background:var(--surface-2);border-radius:0 var(--radius) var(--radius) 0;padding:.6rem 1rem;margin:1rem 0}.callout-label{display:block;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.callout-tip{border-color:var(--success)}.callout-warning{border-color:var(--warn)}.callout-danger{border-color:var(--danger)}.try{border-color:var(--success);background:var(--success-soft)}.tabs [role=tablist]{display:flex;gap:.25rem;border-bottom:1px solid var(--border)}.tabs [role=tab]{margin:0;background:transparent;color:var(--muted);border-radius:.4rem .4rem 0 0}.tabs [role=tab].active{background:var(--surface-2);color:var(--text);font-weight:700}.trouble{border:1px solid var(--border);border-radius:.4rem;margin:.5rem 0;background:var(--surface)}.trouble summary{cursor:pointer;padding:.6rem .9rem;font-weight:600}.trouble dl{margin:0;padding:0 .9rem .8rem}.trouble dt{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-top:.5rem}.trouble dd{margin:0}.lesson{overflow-wrap:anywhere}.code-block pre,.table-scroll{overflow-wrap:normal}.unit-hero{margin-bottom:1rem}.prereqs a{margin-left:.5rem}.unit-progress{display:grid;gap:.25rem;max-width:32rem;margin:.75rem 0;color:var(--muted);font-size:.9rem}.objectives{margin:.75rem 0}.objectives summary{cursor:pointer;font-weight:700}.downloads{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1rem;color:var(--muted)}.stepper{display:flex;gap:.5rem;list-style:none;padding:0;counter-reset:s}.stepper li{counter-increment:s;flex:1;padding:.4rem .6rem;border-radius:.4rem;background:var(--surface-2);color:var(--muted);font-size:.9rem}.stepper li:before{content:counter(s) ". "}.stepper li[data-active=true]{background:var(--accent-soft);color:var(--text);font-weight:700}.stepper li[data-done=true]{background:var(--success-soft);color:var(--success)}.notes-drawer{position:fixed;top:0;right:0;bottom:0;width:min(26rem,100vw);z-index:50;padding:1rem;overflow-y:auto;background:var(--surface);border-left:1px solid var(--border);box-shadow:-8px 0 24px #0003}.notes-drawer[hidden]{display:none}.notes-drawer header{display:flex;justify-content:space-between;align-items:center}.shell{min-height:100vh}.skip-link{position:absolute;left:-999px;top:0;padding:.5rem 1rem;background:var(--accent);color:var(--accent-contrast);z-index:100}.skip-link:focus{left:0}.topbar{position:sticky;top:0;z-index:40;height:var(--topbar-h);display:flex;align-items:center;gap:.75rem;padding:0 1rem;background:var(--surface);border-bottom:1px solid var(--border)}.topbar .brand{font-size:1.1rem;font-weight:700;color:var(--text);text-decoration:none;white-space:nowrap}.topbar .crumb{color:var(--muted);font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.topbar nav{display:flex;gap:1rem;margin-left:.75rem;flex:1}.topbar nav a{text-decoration:none;color:var(--muted);padding:.2rem 0;border-bottom:2px solid transparent}.topbar nav a.active{color:var(--text);font-weight:700;border-bottom-color:var(--accent)}.topbar-progress{display:flex;align-items:center;gap:.5rem;margin-left:auto;color:var(--muted);font-size:.85rem;text-decoration:none}.topbar-progress progress{width:5rem}.topbar nav+.topbar-progress{margin-left:0}.icon-button{margin:0!important;padding:.35rem .6rem!important;background:var(--surface-2)!important;color:var(--text)!important;border:1px solid var(--border)!important;line-height:1}.notice-banner{position:sticky;top:var(--topbar-h);z-index:39;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem 1rem;background:var(--danger-soft);color:var(--text);border-bottom:1px solid var(--danger)}.notice-banner ul{margin:0;padding-left:1.1rem}.shell-body{display:grid;grid-template-columns:minmax(0,1fr);align-items:start}.shell[data-sidebar=open] .shell-body{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}.page{width:100%;max-width:90rem;margin:0 auto;padding:1.5rem 1.25rem 3rem}.page:focus{outline:none}.shell[data-route=unit] .page{padding-bottom:calc(var(--bottombar-h) + 2rem)}.course-sidebar{position:sticky;top:var(--topbar-h);height:calc(100vh - var(--topbar-h));overflow-y:auto;padding:.75rem .75rem 2rem;background:var(--surface);border-right:1px solid var(--border);font-size:.9rem}.course-sidebar h2{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:.25rem .5rem .5rem}.course-sidebar details{margin:.15rem 0}.course-sidebar summary{display:flex;justify-content:space-between;gap:.5rem;padding:.35rem .5rem;cursor:pointer;font-weight:700;border-radius:.35rem}.course-sidebar summary:hover{background:var(--surface-2)}.course-sidebar ol{list-style:none;margin:0;padding:0 0 .25rem}.course-sidebar li a{display:flex;align-items:baseline;gap:.45rem;padding:.3rem .5rem .3rem .75rem;border-left:2px solid transparent;border-radius:0 .35rem .35rem 0;color:var(--muted);text-decoration:none}.course-sidebar li a:hover{background:var(--surface-2);color:var(--text)}.course-sidebar li a[aria-current=page]{border-left-color:var(--accent);background:var(--accent-soft);color:var(--text);font-weight:700}.course-sidebar .dot{flex:none;width:.6rem;height:.6rem;border-radius:50%;background:var(--border);align-self:center}.course-sidebar a[data-state=completed] .dot{background:var(--success)}.course-sidebar a[data-state=in-progress] .dot{background:var(--warn)}.course-sidebar .unit-id{font-variant-numeric:tabular-nums;font-size:.8rem}.course-sidebar .unit-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sidebar-primary{display:grid;gap:.1rem;padding-bottom:.75rem;margin-bottom:.5rem;border-bottom:1px solid var(--border)}.sidebar-primary a{padding:.5rem;text-decoration:none;color:var(--text);border-radius:.35rem}.sidebar-primary a.active{background:var(--accent-soft);font-weight:700}.drawer-backdrop{display:none}.bottom-bar{position:fixed;left:0;right:0;bottom:0;z-index:30;height:var(--bottombar-h);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.5rem;padding:0 1rem;padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface);border-top:1px solid var(--border)}.shell[data-sidebar=open] .bottom-bar{left:var(--sidebar-w)}.bottom-bar .button{margin:0;white-space:nowrap}.bottom-bar .button.disabled{opacity:.5;cursor:default}.bar-prev{justify-self:start}.bar-next{justify-self:end}.bar-tools{display:flex;align-items:center;gap:.5rem}.bar-steps{display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem;white-space:nowrap}.bar-steps[data-visible=false]{visibility:hidden}.unit-layout{display:grid;grid-template-columns:minmax(0,1fr) 12rem;justify-content:start;gap:2rem;align-items:start}.unit-rail{grid-column:2;grid-row:1;position:sticky;top:calc(var(--topbar-h) + 1rem);max-height:calc(100vh - var(--topbar-h) - var(--bottombar-h) - 2rem);overflow-y:auto;font-size:.9rem}.unit-main{grid-column:1;grid-row:1;min-width:0}.unit-rail summary{display:none}.unit-rail h2{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:1rem 0 .4rem}.unit-rail ol,.unit-rail ul{list-style:none;padding:0;margin:0}.unit-rail a,.checklist button{display:block;margin:0;padding:.25rem .6rem;border-left:2px solid var(--border);color:var(--muted);text-decoration:none;background:none;text-align:left;width:100%;border-radius:0}.unit-rail a[aria-current]{border-left-color:var(--accent);color:var(--text);font-weight:700}.checklist li[data-done=true] button{color:var(--success)}.lesson h2,.lesson h3,.step{scroll-margin-top:calc(var(--topbar-h) + 1rem)}@media(max-width:1279px){.unit-layout{grid-template-columns:minmax(0,1fr)}.unit-rail{grid-column:1;grid-row:1;position:static;max-height:none;margin-bottom:1rem;border:1px solid var(--border);border-radius:var(--radius);padding:.25rem 1rem;background:var(--surface)}.unit-main{grid-row:2}.unit-rail summary{display:block;cursor:pointer;font-weight:700;padding:.5rem 0}}@media(max-width:959px){:root{--bottombar-h: 6.5rem}.topbar{padding:0 .75rem;gap:.5rem}.topbar .crumb{display:none}.course-sidebar{position:fixed;top:var(--topbar-h);bottom:0;left:0;z-index:45;width:min(20rem,85vw);height:auto!important;box-shadow:8px 0 24px #00000040}.drawer-backdrop{display:block;position:fixed;inset:var(--topbar-h) 0 0 0;z-index:44;margin:0;border-radius:0;background:#00000073}.page{padding-inline:1rem}.bottom-bar{grid-template-columns:1fr 1fr;grid-template-rows:auto auto;align-content:center;row-gap:.35rem}.shell[data-sidebar=open] .bottom-bar{left:0}.bar-tools{grid-column:1 / -1;grid-row:1;justify-content:center}.bar-prev{grid-row:2;grid-column:1}.bar-next{grid-row:2;grid-column:2}.bottom-bar .button{padding:.45rem .7rem;font-size:.9rem}}
