:root{--brand-navy:#021c33;--brand-gold:#c8963e;--brand-gold-on-light:#946e2a;--brand-cyan:#12c2ea;--brand-teal:#0a7896;--surface-inverse:#010d18;--surface-inverse-deep:#000;--ink-inverse:#fff;--ink-inverse-muted:#c5d2de;--ink-inverse-subtle:#9db0c4;--color-bg:#f3f6f9;--color-surface:#fff;--color-surface-raised:#fff;--color-border:#dde4eb;--color-border-strong:#c3ced9;--ink-1:#021c33;--ink-2:#3a4756;--ink-3:#5b6776;--color-text-muted:var(--ink-3);--brand:var(--brand-navy);--brand-strong:#0e3a61;--brand-weak:#021c3312;--brand-soft:#021c332e;--brand-contrast:#fff;--brand-light-3:#4e6070;--brand-light-5:#818e99;--brand-light-7:#b3bbc2;--brand-light-8:#ccd2d6;--brand-light-9:#e6e8eb;--brand-dark-2:#021629;--link:var(--brand-teal);--link-hover:#075a71;--accent:var(--brand-gold);--accent-ink:var(--brand-gold-on-light);--accent-weak:#c8963e24;--highlight:var(--brand-cyan);--highlight-ink:var(--brand-teal);--highlight-weak:#12c2ea1f;--state-success:#2f9e6f;--state-warning:#c2872f;--state-danger:#d0524d;--state-info:var(--brand-teal);--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 #021c331f;--shadow-card:0 1px 2px #021c330a;--font-display:"Montserrat", "Inter", system-ui, sans-serif;--font-body:"Inter", 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(--highlight) 12%, var(--color-bg));--student-hero-to:color-mix(in srgb, var(--accent) 10%, 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:#010d18;--color-surface:#061a2c;--color-surface-raised:#0b2439;--color-border:#173149;--color-border-strong:#23405c;--ink-1:#fff;--ink-2:#c5d2de;--ink-3:#9db0c4;--color-text-muted:var(--ink-3);--brand:var(--brand-cyan);--brand-strong:#5ad6f2;--brand-weak:#12c2ea24;--brand-soft:#12c2ea47;--brand-contrast:#010d18;--brand-light-3:#0d8cab;--brand-light-5:#0a6881;--brand-light-7:#064357;--brand-light-8:#043142;--brand-light-9:#031f2d;--brand-dark-2:#41ceee;--link:var(--brand-cyan);--link-hover:#7fddf3;--accent-ink:var(--brand-gold);--accent-weak:#c8963e2e;--highlight-ink:var(--brand-cyan);--highlight-weak:#12c2ea29;--state-success:#4fb98a;--state-warning:#d29a4c;--state-danger:#e0665f;--state-info:#4fc3e0;--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(--highlight) 12%, var(--color-bg));--student-hero-to:color-mix(in srgb, var(--accent) 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-2);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:700}p{margin:0}a{color:var(--link);transition:color var(--motion-micro) var(--ease-out);text-decoration:none}a:hover{color:var(--link-hover)}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);overflow-wrap:break-word}.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-table-scroll{max-width:100%;overflow-x:auto}.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}.lesson-pytutor.lesson-package--mounted{background:0 0;border:0;overflow:visible}.lesson-pytutor.lesson-package--mounted>.lesson-pytutor__bar,.lesson-pytutor.lesson-package--mounted>.lesson-pytutor__code{display:none}@media print{.lesson-pytutor.lesson-package--mounted>.lesson-pytutor__bar,.lesson-pytutor.lesson-package--mounted>.lesson-pytutor__code{display:block}.lesson-pytutor.lesson-package--mounted>:not(.lesson-pytutor__bar,.lesson-pytutor__code){display:none!important}}.lesson-package{margin:var(--space-4) 0}.lesson-resource-card--slides{border-left:3px solid var(--accent)}.lesson-resource-card--guide{border-left:3px solid var(--state-info)}.lesson-package-btn{align-items:center;gap:var(--space-2);min-height:40px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);color:var(--ink-1);font:inherit;font-size:var(--fs-label);font-weight:600;line-height:var(--lh-label);cursor:pointer;transition:background-color var(--motion-micro) var(--ease-out), border-color var(--motion-micro) var(--ease-out);display:inline-flex}.lesson-package-btn:hover:not(:disabled){border-color:var(--brand);background:var(--brand-weak)}.lesson-package-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.lesson-package-btn:disabled{cursor:not-allowed;opacity:.45}.lesson-package-btn--primary{border-color:var(--brand);background:var(--brand);color:var(--brand-contrast)}.lesson-package-btn--primary:hover:not(:disabled){border-color:var(--brand-strong);background:var(--brand-strong)}.lesson-package-btn svg{flex-shrink:0;width:1em;height:1em}.lesson-package-badge{padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--accent-weak);color:var(--accent-ink);font-size:var(--fs-caption);font-weight:700;line-height:var(--lh-caption);align-items:center;display:inline-flex}.lesson-package-status{color:var(--ink-3);font-size:var(--fs-caption);line-height:var(--lh-caption);margin:0}@media (prefers-reduced-motion:reduce){.lesson-package-btn{transition:none}}.lesson-guide{--guide-paper:var(--color-surface);--guide-navy:var(--ink-1);--guide-ink:var(--ink-2);--guide-muted:var(--ink-3);--guide-line:var(--color-border);--guide-slate:#9db0c4;--guide-gold:var(--brand-gold);--guide-gold-ink:var(--accent-ink);--guide-code-bg:var(--color-bg);--guide-soft:var(--brand-weak);--guide-link:var(--link);--guide-warnred:#d64545;--guide-measure:43.5rem;--guide-margin-label:7.25rem;--guide-step-col:2.75rem;max-width:calc(var(--guide-measure) + 2 * var(--guide-pad,3.5rem));margin:0 auto var(--space-8);padding:var(--guide-pad,3.5rem);border:1px solid var(--guide-line);background:var(--guide-paper);color:var(--guide-ink);font-family:var(--font-body);font-size:16px;line-height:1.55}.lesson-guide p,.lesson-guide ul,.lesson-guide ol,.lesson-guide td,.lesson-guide th,.lesson-guide .lesson-directive__body{color:var(--guide-ink);font-size:1em;line-height:inherit}.lesson-guide p{margin:0 0 .55em}.lesson-guide strong{font-weight:600}.lesson-guide a{color:var(--guide-link)}.lesson-guide h1,.lesson-guide h2{color:var(--guide-navy);font-family:var(--font-display);letter-spacing:0;font-weight:700}.lesson-guide h1{margin:1.1em 0 .9em;font-size:1.58em;line-height:1.25}.lesson-guide>h1:first-child{margin-top:0}.lesson-guide h1:after{content:"";background:linear-gradient(var(--guide-gold), var(--guide-gold)) left center / calc(100% - 3px) 1.2px no-repeat, radial-gradient(circle, var(--guide-gold) 2.1px, transparent 2.6px) right center / 5px 5px no-repeat;width:3.6rem;height:5px;margin-top:.45em;display:block}.lesson-guide h2{margin:1.4em 0 .5em;font-size:1.31em;line-height:1.3}.lesson-guide h3{color:var(--guide-ink);font-family:var(--font-body);font-size:1em;font-weight:600;line-height:inherit;margin:1.1em 0 .35em}.lesson-heading-number{color:var(--guide-gold-ink);margin-right:.15em}.lesson-guide ul,.lesson-guide ol{margin:.3em 0 .75em;padding-left:1.5em}.lesson-guide li{margin-bottom:.25em}.lesson-guide ul>li::marker{color:var(--guide-gold);font-size:.8em}.lesson-guide ul ul{list-style:"–  "}.lesson-guide ul ul>li::marker{color:var(--guide-slate);font-size:1em}.lesson-guide ol>li::marker{color:var(--guide-navy);font-weight:600}.lesson-guide code{color:inherit;background:0 0;border-radius:0;padding:0;font-size:.86em}.lesson-guide blockquote{border-left:1px solid var(--guide-line);background:0 0;border-radius:0;padding:0 0 0 1em}.lesson-guide table{border-top:1.4px solid var(--guide-navy);border-bottom:1.4px solid var(--guide-navy);margin:.6em 0 1.1em;font-size:.94em}.lesson-guide th,.lesson-guide td{background:0 0;border:0;padding:.35em .75em .35em 0}.lesson-guide th{border-bottom:.8px solid var(--guide-navy);color:var(--guide-navy);font-weight:600}.lesson-guide th:last-child,.lesson-guide td:last-child{padding-right:0}.lesson-guide .lesson-callout__kicker,.lesson-guide .lesson-task__kicker,.lesson-guide .lesson-predict__kicker,.lesson-guide .lesson-teacher__label,.lesson-guide .lesson-code__title,.lesson-time,.lesson-tag{font-family:var(--font-display);letter-spacing:.16em;text-transform:uppercase;font-size:.66em;font-weight:600;line-height:1.5}.lesson-callout--rule,.lesson-task{border-top:1px solid var(--guide-navy);border-bottom:1px solid var(--guide-line);margin:1.1em 0;padding:.6em 0 .65em}.lesson-guide .lesson-callout--rule .lesson-callout__kicker,.lesson-guide .lesson-task__kicker{color:var(--guide-gold-ink);margin:0 0 .4em}.lesson-guide .lesson-callout--fact .lesson-callout__kicker{color:var(--guide-muted)}.lesson-callout--caution{border-top:2px solid var(--guide-gold)}.lesson-callout--margin,.lesson-teacher{grid-template-columns:var(--guide-margin-label) minmax(0, 1fr);border-top:1px solid var(--guide-line);column-gap:1.2rem;margin:1.1em 0;padding:.7em 0 .2em;display:grid}.lesson-guide .lesson-callout--margin .lesson-callout__kicker,.lesson-guide .lesson-teacher__label{color:var(--guide-navy);margin:.35em 0 0}.lesson-callout__body>:last-child,.lesson-task__body>:last-child,.lesson-step__body>:last-child,.lesson-predict__body>:last-child,.lesson-teacher__body>:last-child,.lesson-question__body>:last-child{margin-bottom:0}.lesson-checklist{padding-left:0;list-style:none}.lesson-guide .lesson-checklist>li{padding-left:1.5em;position:relative}.lesson-checklist>li:before{content:"";border:1.2px solid var(--guide-navy);width:.78em;height:.78em;position:absolute;top:.32em;left:0}.lesson-step{border-top:1px solid var(--guide-line);margin:1.4em 0 .9em;padding-top:.5em}.lesson-step__header{grid-template-columns:var(--guide-step-col) minmax(0, 1fr);align-items:baseline;margin-bottom:.3em;display:grid}.lesson-step__number{color:var(--guide-gold-ink);font-family:var(--font-display);font-size:1.75em;font-weight:700;line-height:1}.lesson-step__title{color:var(--guide-navy);font-family:var(--font-display);margin:0;font-size:1.2em;font-weight:700;line-height:1.3}.lesson-predict{margin:.9em 0}.lesson-guide .lesson-predict__kicker{color:var(--guide-navy);margin:0 0 .3em;font-weight:700}.lesson-guide .lesson-teacher__label{color:var(--guide-link)}.lesson-figure{margin:1.2em 0}.lesson-figure__frame{border:.8px solid var(--guide-line);background:#fff;border-radius:2px;width:92%;max-width:100%;margin:0 auto;overflow:hidden}.lesson-guide .lesson-figure__frame img{border:0;border-radius:0;width:100%;height:auto;margin:0;display:block}.lesson-figure__missing{color:var(--guide-muted);text-align:center;padding:2em 1em;font-size:.9em;display:block}.lesson-figure__caption,.lesson-table__caption{color:var(--guide-ink);text-align:left;margin-top:.6em;font-size:.91em;line-height:1.45}.lesson-figure__caption>p{margin:0;font-size:1em;display:inline}.lesson-figure__label,.lesson-table__label{color:var(--guide-navy);font-weight:700}.lesson-figures{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 3%;margin:1.2em 0;display:grid}.lesson-figures .lesson-figure{margin:0}.lesson-figures .lesson-figure__frame{width:97%}.lesson-table{margin:1.1em 0;overflow-x:auto}.lesson-table__caption{margin:0 0 .4em}.lesson-table table{width:100%;margin:0}.lesson-code{border-top:1px solid var(--guide-navy);background:var(--guide-code-bg);margin:1.1em 0}.lesson-guide .lesson-code__title{color:var(--guide-navy);margin:0;padding:.7em 1.2rem .1em}.lesson-code__listing{background:0 0;margin:0;padding:.5em 1rem .8em .4rem;font-size:.85em;line-height:1.6;overflow-x:auto}.lesson-guide .lesson-code__listing code{color:var(--guide-navy);background:0 0;padding:0;font-size:1em;display:block}.lesson-code__line{grid-template-columns:auto minmax(0,1fr);align-items:baseline;display:grid}.lesson-code__gutter{-webkit-user-select:none;user-select:none;grid-template-columns:1.4em 1.7em;align-self:stretch;align-items:baseline;margin-right:.8em;display:grid}.lesson-code--zones .lesson-code__gutter{grid-template-columns:5.2em 1.4em 1.7em}.lesson-code__number:before{content:attr(data-line);color:var(--guide-muted);text-align:right;font-size:.72em;display:block}.lesson-code__zone{align-self:stretch;margin-right:.45em}.lesson-code__line--zone .lesson-code__zone{border-right:2px solid var(--guide-gold)}.lesson-code__zone:before{content:attr(data-label);color:var(--guide-gold-ink);font-family:var(--font-display);letter-spacing:.18em;text-align:right;text-transform:uppercase;white-space:nowrap;padding-right:.5em;font-size:.66em;font-weight:600;line-height:2.4;display:block}.lesson-code__text{white-space:pre-wrap;overflow-wrap:anywhere}.lesson-guide .lesson-code__listing .hljs-keyword,.lesson-guide .lesson-code__listing .hljs-built_in,.lesson-guide .lesson-code__listing .hljs-literal{color:var(--guide-navy);font-weight:700}.lesson-guide .lesson-code__listing .hljs-comment{color:var(--guide-muted);font-style:italic}.lesson-guide .lesson-code__listing .hljs-string{color:var(--guide-link)}.lesson-guide .lesson-code__listing [class^=hljs-]:not(.hljs-keyword,.hljs-built_in,.hljs-literal,.hljs-comment,.hljs-string){color:inherit}.lesson-mark{background:var(--guide-navy,var(--ink-1));width:1.3em;height:1.3em;color:var(--guide-paper,var(--color-surface));font-family:var(--font-display);vertical-align:.12em;border-radius:50%;place-items:center;font-size:.72em;font-weight:700;line-height:1;display:inline-grid}.lesson-pin{background:var(--guide-warnred,#d64545);color:#fff;width:1.3em;height:1.3em;font-family:var(--font-display);vertical-align:.12em;border-radius:50%;place-items:center;font-size:.72em;font-weight:700;line-height:1;display:inline-grid}.lesson-mark--code{vertical-align:baseline;font-size:.78em}.lesson-mark--code:before{content:attr(data-marker)}.lesson-ui,.lesson-kbd{white-space:nowrap;border-radius:2px;padding:.05em .3em;font-size:.9em;line-height:1}.lesson-ui{border:.8px solid var(--guide-slate,#9db0c4);background:var(--guide-soft,var(--brand-weak));color:var(--guide-navy,var(--ink-1));font-family:var(--font-body)}.lesson-kbd{border:.8px solid var(--guide-muted,var(--ink-3));background:var(--guide-code-bg,var(--color-bg));color:var(--guide-navy,var(--ink-1));font-family:var(--font-mono)}.lesson-time,.lesson-tag{border-radius:1.5px;margin-right:.35em;padding:.2em .45em .15em .6em;display:inline-block}.lesson-time{border:.8px solid var(--guide-navy,var(--ink-1));color:var(--guide-navy,var(--ink-1))}.lesson-tag{border:.8px solid var(--guide-slate,#9db0c4);color:var(--guide-muted,var(--ink-3))}.lesson-question{margin:1.2em 0}.lesson-question__number{float:left;color:var(--guide-gold-ink);margin-right:.35em;font-weight:600}.lesson-question__lines{clear:both;padding-top:.2em}.lesson-question__line{border-bottom:1px solid color-mix(in srgb, var(--guide-slate) 70%, transparent);height:2.1em;display:block}.lesson-guide .katex{font-size:1.08em}.lesson-math{margin:.8em 0;overflow:auto hidden}.lesson-xref{color:var(--guide-link,var(--link));white-space:nowrap}.lesson-authoring-error{border-left:2px solid var(--state-danger);color:var(--state-danger);margin:.4em 0;padding:.4em 0 .4em .75em;font-size:.85em;display:block}.lesson-xref--missing{color:var(--state-danger);-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.lesson-guide .lesson-directive{border:0;border-top:1px solid var(--guide-navy);border-bottom:1px solid var(--guide-line);background:0 0;border-radius:0;padding:.6em 0 .65em}.lesson-guide .lesson-directive__kicker,.lesson-guide .lesson-pytutor__kicker{color:var(--guide-gold-ink);font-family:var(--font-display);letter-spacing:.18em;font-size:.72em;font-weight:600}.lesson-guide .lesson-quiz__option{background:0 0;border-radius:0}.lesson-guide .lesson-pytutor{border:0;border-top:1px solid var(--guide-navy);background:var(--guide-code-bg);border-radius:0}.lesson-guide .lesson-pytutor__bar{background:0 0;border:0}.lesson-guide .lesson-pytutor.lesson-package--mounted{background:0 0;border-top:0}.lesson-guide .lesson-pytutor__code{background:0 0;border:0;border-radius:0;margin:0}@media (width<=640px){.lesson-guide{--guide-pad:1.1rem;--guide-step-col:2.2rem;font-size:15.5px}.lesson-callout--margin,.lesson-teacher{grid-template-columns:minmax(0,1fr)}.lesson-callout--margin .lesson-callout__kicker,.lesson-teacher__label{margin-bottom:.3em}.lesson-figures{grid-template-columns:minmax(0,1fr);gap:1.2em}.lesson-figure__frame,.lesson-figures .lesson-figure__frame{width:100%!important}.lesson-code--zones .lesson-code__gutter{grid-template-columns:.6em 1.5em 2.1em}.lesson-code__zone:before{content:none}.lesson-guide .lesson-code__listing code{min-width:max-content}.lesson-code__text{white-space:pre;overflow-wrap:normal}.lesson-code__line--zone-start:before{content:attr(data-zone);color:var(--guide-gold-ink);font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;grid-column:1/-1;padding:.3em 0 .1em .2em;font-size:.66em;font-weight:600}}@page lesson-guide{size:letter;margin:2.7cm 2.2cm 2.3cm;@bottom-right{content:counter(page) " / " counter(pages);color:#c8963e;font-family:Montserrat,Inter,sans-serif;font-size:8pt;font-weight:700}}@media print{html,body{background:#fff!important}:root:has(.lesson-guide){page:lesson-guide}.lesson-guide{--guide-paper:#fff;--guide-navy:#021c33;--guide-ink:#3a4756;--guide-muted:#5b6776;--guide-line:#dde4eb;--guide-gold:#c8963e;--guide-gold-ink:#c8963e;--guide-code-bg:#f4f6f9;--guide-soft:#eef2f6;--guide-link:#0b7fa0;--guide-warnred:#d64545;page:lesson-guide;-webkit-print-color-adjust:exact;print-color-adjust:exact;border:0;max-width:none;margin:0;padding:0;font-size:10.5pt;line-height:1.45}.lesson-guide h1,.lesson-guide h2,.lesson-guide h3,.lesson-step__header,.lesson-callout__kicker,.lesson-task__kicker,.lesson-predict__kicker,.lesson-table__caption,.lesson-code__title{break-after:avoid}.lesson-callout--margin,.lesson-callout--caution,.lesson-callout--hint,.lesson-teacher,.lesson-figure,.lesson-figures,.lesson-question,.lesson-predict,.lesson-guide .lesson-directive,.lesson-math,.lesson-guide tr{break-inside:avoid}.lesson-guide p,.lesson-guide li{orphans:3;widows:3;text-align:justify;-webkit-hyphens:auto;hyphens:auto}.lesson-guide .lesson-callout__kicker,.lesson-guide .lesson-task__kicker,.lesson-guide .lesson-predict__kicker,.lesson-guide .lesson-teacher__label{text-align:left;-webkit-hyphens:manual;hyphens:manual}.lesson-guide .lesson-pytutor,.lesson-guide .lesson-pytutor.lesson-package--mounted{border-top:1px solid var(--guide-navy);background:var(--guide-code-bg);break-inside:avoid}.lesson-guide .lesson-figure__frame{max-height:13cm}.lesson-guide .lesson-figure__frame img{object-fit:contain;max-height:13cm}.lesson-guide a{color:inherit;text-decoration:none}.lesson-table-scroll,.lesson-table,.lesson-guide .lesson-code__listing{overflow:visible}.lesson-guide .lesson-code__listing code{min-width:0}.lesson-guide .lesson-code__text{white-space:pre-wrap;overflow-wrap:anywhere}.lesson-guide .lesson-quiz__feedback,.lesson-package-btn{display:none!important}}: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-light-3);--el-color-primary-light-5:var(--brand-light-5);--el-color-primary-light-7:var(--brand-light-7);--el-color-primary-light-8:var(--brand-light-8);--el-color-primary-light-9:var(--brand-light-9);--el-color-primary-dark-2:var(--brand-dark-2);--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--primary{--el-button-text-color:var(--brand-contrast);--el-button-hover-text-color:var(--brand-contrast);--el-button-active-text-color:var(--brand-contrast);--el-button-disabled-text-color:var(--brand-contrast)}.el-button--primary.is-plain,.el-button--primary.is-text,.el-button--primary.is-link{--el-button-text-color:var(--el-color-primary);--el-button-hover-text-color:var(--brand-contrast);--el-button-active-text-color:var(--brand-contrast)}.el-button--primary.is-dashed{--el-button-text-color:var(--el-color-primary);--el-button-hover-text-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-primary-dark-2)}.el-radio-button{--el-radio-button-checked-text-color:var(--brand-contrast)}.el-checkbox{--el-checkbox-checked-icon-color:var(--brand-contrast)}.el-tag--dark.el-tag--primary{--el-tag-text-color:var(--brand-contrast)}.el-segmented{--el-segmented-item-selected-color:var(--brand-contrast)}.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .el-pager li.is-active,.el-picker-panel td:is(.current,.selected,.start-date,.end-date):not(.disabled) :is(.el-date-table-cell,.el-date-table-cell__text){color:var(--brand-contrast)}.el-button{box-shadow:none}.el-table .cell.is-mono{font-family:var(--font-mono);font-size:var(--fs-mono)}
