:root{--color-bg:#f5f6fb;--color-surface:#fff;--color-surface-raised:#fff;--color-border:#e5e8f0;--color-border-strong:#d3d8e4;--ink-1:#1a1e2b;--ink-2:#545c72;--ink-3:#868ea3;--color-text-muted:var(--ink-3);--brand:#5257e6;--brand-strong:#6b70f0;--brand-weak:#5257e61a;--brand-soft:#5257e640;--brand-contrast:#fff;--state-success:#2f9e6f;--state-warning:#c2872f;--state-danger:#d0524d;--state-info:#4a76b2;--steam-science:#3f9d8f;--steam-technology:#4a76b2;--steam-engineering:#b5843f;--steam-arts:#a05fb0;--steam-math:#c05f78;--steam-extra:#5f8f5a;--grade-1:#c05f78;--grade-2:#c2872f;--grade-3:#b09141;--grade-4:#77934f;--grade-5:#2f9e6f;--medal-gold:#e6b800;--medal-silver:#9aa0a6;--medal-bronze:#c47a3a;--shadow-overlay:0 8px 24px #1a1e2b1f;--shadow-card:0 1px 2px #1a1e2b0a;--font-display:"Space Grotesk", "IBM Plex Sans", system-ui, sans-serif;--font-body:"IBM Plex Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--fs-display-xl:44px;--lh-display-xl:48px;--fs-display-lg:34px;--lh-display-lg:40px;--fs-title-lg:24px;--lh-title-lg:30px;--fs-title:20px;--lh-title:28px;--fs-body:15px;--lh-body:24px;--fs-label:14px;--lh-label:20px;--fs-caption:13px;--lh-caption:18px;--fs-mono:14px;--lh-mono:22px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--radius-control:6px;--radius-card:12px;--radius-pill:999px;--motion-micro:.15s;--motion-base:.22s;--motion-enter:.42s;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.4, .64, 1);--focus-ring:0 0 0 2px var(--color-bg), 0 0 0 4px var(--brand);--student-hero-from:color-mix(in srgb, var(--brand) 14%, var(--color-bg));--student-hero-to:color-mix(in srgb, var(--steam-science) 8%, var(--color-bg));--student-path-line:color-mix(in srgb, var(--brand) 28%, var(--color-border));--student-path-line-done:color-mix(in srgb, var(--state-success) 55%, var(--color-border));--student-node-size:64px;--shadow-student-card:0 2px 0 var(--color-border-strong), 0 8px 20px color-mix(in srgb, var(--ink-1) 4%, transparent)}html.dark{--color-bg:#0e1017;--color-surface:#161a23;--color-surface-raised:#1e2330;--color-border:#272d3b;--color-border-strong:#343b4c;--ink-1:#e8eaf2;--ink-2:#a7aec0;--ink-3:#6d7588;--color-text-muted:var(--ink-3);--brand:#7c81f2;--brand-strong:#9498f6;--brand-weak:#7c81f224;--brand-soft:#7c81f247;--brand-contrast:#0e1017;--state-success:#4fb98a;--state-warning:#d29a4c;--state-danger:#e0665f;--state-info:#6a97d0;--steam-science:#4fb3a3;--steam-technology:#6a97d0;--steam-engineering:#ca9a55;--steam-arts:#b878c8;--steam-math:#d5788f;--steam-extra:#74a56f;--grade-1:#d5788f;--grade-2:#d29a4c;--grade-3:#c2a24e;--grade-4:#86a25e;--grade-5:#4fb98a;--medal-gold:#f0c040;--medal-silver:#b0b8c4;--medal-bronze:#d49055;--shadow-overlay:0 8px 24px #0006;--shadow-card:0 1px 2px #00000040;--student-hero-from:color-mix(in srgb, var(--brand) 18%, var(--color-bg));--student-hero-to:color-mix(in srgb, var(--steam-science) 10%, var(--color-bg));--student-path-line:color-mix(in srgb, var(--brand) 22%, var(--color-border));--student-path-line-done:color-mix(in srgb, var(--state-success) 45%, var(--color-border));--shadow-student-card:0 2px 0 var(--color-border-strong), 0 10px 24px #00000047}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background-color:var(--color-bg);color:var(--ink-1);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}#app{min-height:100%}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink-1);margin:0;font-weight:600}p{margin:0}a{color:var(--brand);transition:color var(--motion-micro) var(--ease-out);text-decoration:none}a:hover{color:var(--brand-strong)}code,kbd,samp,.mono{font-family:var(--font-mono);font-size:var(--fs-mono);line-height:var(--lh-mono)}:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-control);outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}.el-table{--el-table-font-size:var(--fs-body)!important}.el-form-item__label{font-size:var(--fs-label)!important}.el-input,.el-button,.el-tabs__item,.el-select-dropdown__item{font-size:var(--fs-body)!important}.el-tag{font-size:var(--fs-caption)!important}.lesson-content{color:var(--ink-1)}.lesson-content h1,.lesson-content h2,.lesson-content h3{color:var(--ink-1);font-family:var(--font-display);letter-spacing:0}.lesson-content h1{margin:0 0 var(--space-4);font-size:var(--fs-display-lg);line-height:var(--lh-display-lg)}.lesson-content h2{margin:var(--space-6) 0 var(--space-3);font-size:var(--fs-title-lg);line-height:var(--lh-title-lg)}.lesson-content h3{margin:var(--space-4) 0 var(--space-2);font-size:var(--fs-title);line-height:var(--lh-title)}.lesson-content p{margin:0 0 var(--space-3);color:var(--ink-1);font-size:var(--fs-body);line-height:var(--lh-body)}.lesson-content a{color:var(--brand);text-decoration:none}.lesson-content a:hover{text-decoration:underline}.lesson-content ul,.lesson-content ol{margin:var(--space-2) 0 var(--space-3);padding-left:var(--space-6);color:var(--ink-1);font-size:var(--fs-body);line-height:var(--lh-body)}.lesson-content li{margin-bottom:var(--space-1)}.lesson-content blockquote{margin:var(--space-3) 0;padding:var(--space-3) var(--space-4);border-left:3px solid var(--brand);border-radius:0 var(--radius-control) var(--radius-control) 0;background-color:var(--brand-weak)}.lesson-content blockquote p{margin:0}.lesson-content img{width:min(100%,920px);max-width:100%;height:auto;margin:var(--space-4) auto;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-raised);display:block}.lesson-content code{background-color:var(--color-surface-raised);color:var(--brand);font-family:var(--font-mono);border-radius:3px;padding:1px 4px;font-size:.9em}.lesson-content .hljs-pre{margin:var(--space-3) 0;border:1px solid var(--color-border);border-radius:var(--radius-control);background-color:var(--color-surface-raised);overflow-x:auto}.lesson-content .hljs-pre code{padding:var(--space-4);color:var(--ink-1);font-size:var(--fs-mono);line-height:var(--lh-mono);background:0 0;display:block}.lesson-content table{width:100%;margin:var(--space-3) 0;border-collapse:collapse;font-size:var(--fs-label)}.lesson-content th,.lesson-content td{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);text-align:left}.lesson-content th{background-color:var(--color-surface-raised);color:var(--ink-1);font-weight:600}.lesson-content td{color:var(--ink-2)}.lesson-resource-card,.lesson-directive{margin:var(--space-4) 0;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-raised)}.lesson-resource-card{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);color:var(--ink-1);text-decoration:none;display:flex}.lesson-resource-card:hover{border-color:var(--brand);text-decoration:none}.lesson-resource-card__kicker,.lesson-directive__kicker{color:var(--ink-2);font-size:var(--fs-caption);letter-spacing:0;text-transform:uppercase;flex-shrink:0;font-weight:700}.lesson-resource-card__label{color:var(--ink-1);font-size:var(--fs-label);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.lesson-resource-card--pdf{border-left:3px solid var(--state-info)}.lesson-resource-card--video{border-left:3px solid var(--steam-arts)}.lesson-resource-card--tool{border-left:3px solid var(--brand)}.lesson-directive{padding:var(--space-4)}.lesson-directive__header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.lesson-directive__header strong{color:var(--ink-1);font-size:var(--fs-body);line-height:var(--lh-body)}.lesson-directive__body{color:var(--ink-2);font-size:var(--fs-label);line-height:var(--lh-body)}.lesson-directive__body>:last-child{margin-bottom:0}.lesson-directive--quiz{border-left:3px solid var(--state-info)}.lesson-directive--challenge{border-left:3px solid var(--state-warning)}.lesson-directive--note{border-left:3px solid var(--state-info)}.lesson-directive--tip{border-left-color:var(--state-success)}.lesson-directive--warning{border-left-color:var(--state-warning)}.lesson-quiz__options{gap:var(--space-2);margin-top:var(--space-3);display:grid}.lesson-quiz__option{align-items:flex-start;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--ink-2);font-size:var(--fs-label);line-height:var(--lh-body);display:flex}.lesson-quiz__option input{margin-top:4px}.lesson-quiz__option:has(input:checked){border-color:var(--brand);color:var(--ink-1)}.lesson-directive--quiz.is-correct .lesson-quiz__option:has(input[data-correct]:checked){border-color:var(--state-success);background:color-mix(in srgb, var(--state-success) 10%, var(--color-surface))}.lesson-directive--quiz.is-incorrect .lesson-quiz__option:has(input:checked){border-color:var(--state-warning);background:color-mix(in srgb, var(--state-warning) 10%, var(--color-surface))}.lesson-quiz__feedback{margin:var(--space-3) 0 0;font-size:var(--fs-caption);font-weight:600}.lesson-directive--quiz.is-correct .lesson-quiz__feedback{color:var(--state-success)}.lesson-directive--quiz.is-incorrect .lesson-quiz__feedback{color:var(--state-warning)}.lesson-video{margin:var(--space-4) 0}.lesson-video video{border:1px solid var(--color-border);border-radius:var(--radius-control);background:#000;width:100%;max-height:70vh;display:block}.lesson-video--embed{aspect-ratio:16/9;border:1px solid var(--color-border);border-radius:var(--radius-control);background:#000;width:100%;position:relative;overflow:hidden}.lesson-video__embed{border:0;width:100%;height:100%;position:absolute;inset:0}.lesson-simulator{margin:var(--space-4) 0;border:1px solid var(--color-border);border-radius:var(--radius-control);background-color:var(--color-surface-raised);overflow:hidden}.lesson-simulator__bar{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-surface);display:flex}.lesson-simulator__kicker{text-transform:uppercase;letter-spacing:.04em;color:var(--brand);font-size:11px;font-weight:600}.lesson-simulator__label{color:var(--ink-2);font-size:var(--fs-caption)}.lesson-simulator__frame{background:#fff;border:0;width:100%;height:480px;display:block}.lesson-pytutor{margin:var(--space-4) 0;border:1px solid var(--color-border);border-radius:var(--radius-control);background-color:var(--color-surface-raised);overflow:hidden}.lesson-pytutor__bar{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-surface);display:flex}.lesson-pytutor__kicker{text-transform:uppercase;letter-spacing:.04em;color:var(--brand);font-size:11px;font-weight:600}.lesson-pytutor__frame{background:#fff;border:0;width:100%;height:520px;display:block}.lesson-mermaid{margin:var(--space-4) 0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-control);background-color:var(--color-surface-raised);justify-content:center;display:flex;overflow-x:auto}.lesson-mermaid svg{max-width:100%}.lesson-mermaid__error{color:var(--state-danger);font-family:var(--font-mono);font-size:var(--fs-caption);white-space:pre-wrap;margin:0}:root{--hl-comment:#6a737d;--hl-keyword:#d73a49;--hl-string:#032f62;--hl-number:#005cc5;--hl-title:#6f42c1;--hl-type:#e36209;--hl-attr:#005cc5;--hl-tag:#22863a;--hl-symbol:#e36209;--hl-meta:#6a737d}html.dark{--hl-comment:#8b949e;--hl-keyword:#ff7b72;--hl-string:#a5d6ff;--hl-number:#79c0ff;--hl-title:#d2a8ff;--hl-type:#ffa657;--hl-attr:#79c0ff;--hl-tag:#7ee787;--hl-symbol:#ffa657;--hl-meta:#8b949e}.hljs-comment,.hljs-quote{color:var(--hl-comment);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-section{color:var(--hl-keyword)}.hljs-string,.hljs-regexp,.hljs-addition{color:var(--hl-string)}.hljs-number,.hljs-variable,.hljs-template-variable{color:var(--hl-number)}.hljs-title,.hljs-title.function_,.hljs-built_in{color:var(--hl-title)}.hljs-type,.hljs-class .hljs-title,.hljs-params{color:var(--hl-type)}.hljs-attr,.hljs-attribute,.hljs-property{color:var(--hl-attr)}.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:var(--hl-tag)}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta .hljs-keyword{color:var(--hl-symbol)}.hljs-meta{color:var(--hl-meta)}.hljs-deletion{color:#b31d28}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}:root:root{--el-color-primary:var(--brand);--el-color-primary-light-3:var(--brand-strong);--el-color-primary-light-5:var(--brand-strong);--el-color-primary-light-7:var(--brand-weak);--el-color-primary-light-8:var(--brand-weak);--el-color-primary-light-9:var(--brand-weak);--el-color-primary-dark-2:var(--brand-strong);--el-bg-color:var(--color-surface);--el-bg-color-page:var(--color-bg);--el-bg-color-overlay:var(--color-surface-raised);--el-fill-color-blank:var(--color-surface);--el-fill-color:var(--color-surface-raised);--el-fill-color-light:var(--color-surface-raised);--el-fill-color-lighter:var(--color-surface);--el-text-color-primary:var(--ink-1);--el-text-color-regular:var(--ink-2);--el-text-color-secondary:var(--ink-3);--el-text-color-placeholder:var(--ink-3);--el-text-color-disabled:var(--ink-3);--el-border-color:var(--color-border);--el-border-color-light:var(--color-border);--el-border-color-lighter:var(--color-border);--el-border-color-extra-light:var(--color-border);--el-border-color-dark:var(--color-border-strong);--el-border-color-darker:var(--color-border-strong);--el-border-color-hover:var(--color-border-strong);--el-color-danger:var(--state-danger);--el-color-error:var(--state-danger);--el-color-warning:var(--state-warning);--el-color-success:var(--state-success);--el-color-info:var(--state-info);--el-border-radius-base:var(--radius-control);--el-border-radius-small:var(--radius-control);--el-font-family:var(--font-body);--el-font-size-base:var(--fs-body);--el-box-shadow:var(--shadow-overlay);--el-box-shadow-light:var(--shadow-overlay);--el-box-shadow-lighter:var(--shadow-overlay)}.el-button{box-shadow:none}.el-table .cell.is-mono{font-family:var(--font-mono);font-size:var(--fs-mono)}
