.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}.navbar[data-astro-cid-ms53uln7]{position:fixed;top:0;left:0;right:0;z-index:100;background:color-mix(in oklab,var(--c-bg) 85%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid color-mix(in oklab,var(--c-line) 50%,transparent);transition:transform .3s ease}.navbar[data-astro-cid-ms53uln7].is-hidden{transform:translateY(-100%)}.navbar__inner[data-astro-cid-ms53uln7]{display:flex;align-items:center;gap:1rem;height:56px;padding:0 1rem}@media(min-width:768px){.navbar__inner[data-astro-cid-ms53uln7]{height:64px;padding:0 2rem}}.navbar__menu-btn[data-astro-cid-ms53uln7]{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:none;border:none;border-radius:8px;color:var(--c-fg);cursor:pointer;transition:background .15s ease}.navbar__menu-btn[data-astro-cid-ms53uln7] svg[data-astro-cid-ms53uln7]{width:24px;height:24px}.navbar__menu-btn[data-astro-cid-ms53uln7]:hover{background:var(--c-surface)}.navbar__menu-btn[data-astro-cid-ms53uln7]:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.navbar__brand[data-astro-cid-ms53uln7]{font-family:var(--font-display);font-size:1.25rem;font-weight:700;color:var(--c-fg);text-decoration:none;letter-spacing:.02em}.navbar__brand[data-astro-cid-ms53uln7]:hover{color:var(--c-accent)}@media(min-width:768px){.navbar__brand[data-astro-cid-ms53uln7]{font-size:1.5rem}}.navbar__nav[data-astro-cid-ms53uln7]{display:none;flex:1;justify-content:center;gap:.25rem}@media(min-width:768px){.navbar__nav[data-astro-cid-ms53uln7]{display:flex}}.navbar__link[data-astro-cid-ms53uln7]{padding:.5rem .75rem;font-size:.9rem;color:var(--c-muted);text-decoration:none;border-radius:8px;transition:color .15s ease,background .15s ease}.navbar__link[data-astro-cid-ms53uln7]:hover{color:var(--c-fg);background:var(--c-surface)}.navbar__link[data-astro-cid-ms53uln7]:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.navbar__link[data-astro-cid-ms53uln7].is-current{color:var(--c-accent);font-weight:600}.navbar__actions[data-astro-cid-ms53uln7]{margin-left:auto;display:flex;align-items:center;gap:.5rem}.navbar__icon-btn[data-astro-cid-ms53uln7]{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:none;border:none;border-radius:50%;color:var(--c-muted);cursor:pointer;transition:color .15s ease,background .15s ease}.navbar__icon-btn[data-astro-cid-ms53uln7] svg[data-astro-cid-ms53uln7]{width:20px;height:20px}.navbar__icon-btn[data-astro-cid-ms53uln7]:hover{color:var(--c-fg);background:var(--c-surface)}.navbar__overlay[data-astro-cid-ms53uln7]{position:fixed;inset:0;z-index:150;background:#00000080;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.navbar__overlay[data-astro-cid-ms53uln7].is-open{opacity:1;visibility:visible}.navbar__sidebar[data-astro-cid-ms53uln7]{position:fixed;top:0;left:0;bottom:0;z-index:200;width:280px;max-width:85vw;background:var(--c-bg);border-right:1px solid var(--c-line);transform:translate(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);overflow-y:auto}.navbar__sidebar[data-astro-cid-ms53uln7].is-open{transform:translate(0);height:100vh}.navbar__sidebar-header[data-astro-cid-ms53uln7]{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid var(--c-line)}.navbar__sidebar-title[data-astro-cid-ms53uln7]{font-family:var(--font-display);font-weight:600;font-size:1.1rem}.navbar__close-btn[data-astro-cid-ms53uln7]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:none;border:none;border-radius:8px;color:var(--c-muted);cursor:pointer;transition:color .15s ease,background .15s ease}.navbar__close-btn[data-astro-cid-ms53uln7] svg[data-astro-cid-ms53uln7]{width:20px;height:20px}.navbar__close-btn[data-astro-cid-ms53uln7]:hover{color:var(--c-fg);background:var(--c-surface)}.navbar__sidebar-nav[data-astro-cid-ms53uln7]{display:flex;flex-direction:column;padding:.75rem 0;border-bottom:1px solid var(--c-line)}.navbar__sidebar-link[data-astro-cid-ms53uln7]{padding:.75rem 1.5rem;font-size:1rem;color:var(--c-fg);text-decoration:none;transition:background .15s ease,color .15s ease}.navbar__sidebar-link[data-astro-cid-ms53uln7]:hover{background:var(--c-surface);color:var(--c-accent)}.navbar__sidebar-link[data-astro-cid-ms53uln7]:focus-visible{outline:2px solid var(--c-accent);outline-offset:-2px}.navbar__sidebar-link[data-astro-cid-ms53uln7].is-current{color:var(--c-accent);font-weight:600;background:color-mix(in oklab,var(--c-accent) 10%,transparent)}.navbar__sidebar-section[data-astro-cid-ms53uln7]{padding:1rem 1.5rem;border-bottom:1px solid var(--c-line)}.navbar__sidebar-label[data-astro-cid-ms53uln7]{display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--c-muted);margin-bottom:.75rem}.navbar__sidebar-options[data-astro-cid-ms53uln7]{display:flex;gap:.5rem;flex-wrap:wrap}.navbar__option[data-astro-cid-ms53uln7]{padding:.5rem .75rem;font-size:.85rem;background:var(--c-surface);border:1px solid var(--c-line);border-radius:8px;color:var(--c-fg);cursor:pointer;transition:all .15s ease}.navbar__option[data-astro-cid-ms53uln7]:hover{border-color:var(--c-accent);color:var(--c-accent)}.navbar__option[data-astro-cid-ms53uln7].is-active{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-bg)}.footer[data-astro-cid-4gse77of]{position:relative;z-index:2;background:var(--c-surface);border-top:1px solid var(--c-line);margin-top:auto}.footer__inner[data-astro-cid-4gse77of]{display:grid;grid-template-columns:1fr;gap:2rem;padding:3rem 1.5rem}@media(min-width:640px){.footer__inner[data-astro-cid-4gse77of]{grid-template-columns:2fr 1fr 1fr}}.footer__brand[data-astro-cid-4gse77of]{max-width:280px}.footer__logo[data-astro-cid-4gse77of]{font-family:var(--font-display);font-size:1.5rem;font-weight:700;color:var(--c-fg);text-decoration:none;letter-spacing:-.02em}.footer__logo[data-astro-cid-4gse77of]:hover{color:var(--c-accent)}.footer__tagline[data-astro-cid-4gse77of]{margin-top:.75rem;font-size:.9rem;color:var(--c-muted);line-height:1.6}.footer__nav-title[data-astro-cid-4gse77of]{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--c-muted);margin-bottom:.75rem}.footer__links[data-astro-cid-4gse77of]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.footer__links[data-astro-cid-4gse77of] a[data-astro-cid-4gse77of]{font-size:.9rem;color:var(--c-fg);text-decoration:none;transition:color .15s ease}.footer__links[data-astro-cid-4gse77of] a[data-astro-cid-4gse77of]:hover{color:var(--c-accent)}.footer__bottom[data-astro-cid-4gse77of]{padding:1rem 1.5rem;border-top:1px solid var(--c-line)}.footer__bottom[data-astro-cid-4gse77of] p[data-astro-cid-4gse77of]{font-size:.85rem;color:var(--c-muted);text-align:center;margin:0}:root[data-theme][data-contrast=low]{--c-bg: color-mix(in oklab, var(--c-bg-base) 97%, var(--c-fg-base));--c-surface: color-mix(in oklab, var(--c-surface-base) 97%, var(--c-fg-base));--c-fg: color-mix(in oklab, var(--c-fg-base) 70%, var(--c-bg-base));--c-muted: color-mix(in oklab, var(--c-muted-base) 60%, var(--c-bg-base));--c-line: color-mix(in oklab, var(--c-line-base) 70%, var(--c-bg-base));--c-accent: color-mix(in oklab, var(--c-accent-base) 75%, var(--c-bg-base));--c-error: color-mix(in oklab, var(--c-error-base) 75%, var(--c-bg-base));--c-success: color-mix(in oklab, var(--c-success-base) 75%, var(--c-bg-base));--c-warning: color-mix(in oklab, var(--c-warning-base) 75%, var(--c-bg-base));--c-info: color-mix(in oklab, var(--c-info-base) 75%, var(--c-bg-base))}:root[data-theme][data-contrast=normal]{--c-bg: var(--c-bg-base);--c-surface: var(--c-surface-base);--c-fg: var(--c-fg-base);--c-muted: var(--c-muted-base);--c-line: var(--c-line-base);--c-accent: var(--c-accent-base);--c-accent-strong: var(--c-accent-strong-base);--c-error: var(--c-error-base);--c-success: var(--c-success-base);--c-warning: var(--c-warning-base);--c-info: var(--c-info-base)}:root[data-theme][data-contrast=high]{--c-bg: color-mix(in oklab, var(--c-bg-base) 92%, var(--c-fg-base));--c-surface: color-mix(in oklab, var(--c-surface-base) 88%, var(--c-fg-base));--c-fg: var(--c-fg-base);--c-muted: color-mix(in oklab, var(--c-muted-base) 50%, var(--c-fg-base));--c-line: color-mix(in oklab, var(--c-line-base) 40%, var(--c-fg-base));--c-accent: color-mix(in oklab, var(--c-accent-base) 85%, var(--c-fg-base));--c-accent-strong: color-mix(in oklab, var(--c-accent-strong-base) 90%, var(--c-fg-base));--c-error: color-mix(in oklab, var(--c-error-base) 90%, var(--c-fg-base));--c-success: color-mix(in oklab, var(--c-success-base) 90%, var(--c-fg-base));--c-warning: color-mix(in oklab, var(--c-warning-base) 90%, var(--c-fg-base));--c-info: color-mix(in oklab, var(--c-info-base) 90%, var(--c-fg-base))}:root[data-theme=light]{--c-bg-base: #f6f4ef;--c-surface-base: #ffffff;--c-fg-base: #1c1c18;--c-muted-base: #4b4b43;--c-accent-base: #1f6f5c;--c-accent-strong-base: #0e4b3d;--c-line-base: #dcd9cf;--c-glow-base: #f0ede6;--c-error-base: #dc2626;--c-error-soft-base: #fef2f2;--c-success-base: #16a34a;--c-success-soft-base: #f0fdf4;--c-warning-base: #d97706;--c-warning-soft-base: #fffbeb;--c-info-base: #2563eb;--c-info-soft-base: #eff6ff;--font-display: "Fraunces", "Iowan Old Style", serif;--font-body: "Manrope", "Segoe UI", sans-serif;--c-bg: var(--c-bg-base);--c-surface: var(--c-surface-base);--c-fg: var(--c-fg-base);--c-muted: var(--c-muted-base);--c-accent: var(--c-accent-base);--c-accent-strong: var(--c-accent-strong-base);--c-line: var(--c-line-base);--c-glow: var(--c-glow-base);--c-error: var(--c-error-base);--c-error-soft: var(--c-error-soft-base);--c-success: var(--c-success-base);--c-success-soft: var(--c-success-soft-base);--c-warning: var(--c-warning-base);--c-warning-soft: var(--c-warning-soft-base);--c-info: var(--c-info-base);--c-info-soft: var(--c-info-soft-base)}:root[data-theme=sepia]{--c-bg-base: #f2e7d5;--c-surface-base: #f8efdf;--c-fg-base: #140b07;--c-muted-base: #3c2c20;--c-accent-base: #7a3f22;--c-accent-strong-base: #5b2c16;--c-line-base: #d3bda1;--c-glow-base: #e8d3b6;--c-error-base: #b91c1c;--c-error-soft-base: #fef2f2;--c-success-base: #15803d;--c-success-soft-base: #f0fdf4;--c-warning-base: #b45309;--c-warning-soft-base: #fffbeb;--c-info-base: #1d4ed8;--c-info-soft-base: #eff6ff;--font-display: "Newsreader", "Georgia", serif;--font-body: "Source Sans 3", "Trebuchet MS", sans-serif;--c-bg: var(--c-bg-base);--c-surface: var(--c-surface-base);--c-fg: var(--c-fg-base);--c-muted: var(--c-muted-base);--c-accent: var(--c-accent-base);--c-accent-strong: var(--c-accent-strong-base);--c-line: var(--c-line-base);--c-glow: var(--c-glow-base);--c-error: var(--c-error-base);--c-error-soft: var(--c-error-soft-base);--c-success: var(--c-success-base);--c-success-soft: var(--c-success-soft-base);--c-warning: var(--c-warning-base);--c-warning-soft: var(--c-warning-soft-base);--c-info: var(--c-info-base);--c-info-soft: var(--c-info-soft-base)}:root[data-theme=dark]{--c-bg-base: #0f1418;--c-surface-base: #161c21;--c-fg-base: #f8fbff;--c-muted-base: #c1c9d2;--c-accent-base: #7ed1b6;--c-accent-strong-base: #4ba98b;--c-line-base: #2a3239;--c-glow-base: #131b20;--c-error-base: #f87171;--c-error-soft-base: #450a0a;--c-success-base: #4ade80;--c-success-soft-base: #052e16;--c-warning-base: #fbbf24;--c-warning-soft-base: #451a03;--c-info-base: #60a5fa;--c-info-soft-base: #1e3a5f;--font-display: "Fraunces", "Iowan Old Style", serif;--font-body: "Manrope", "Segoe UI", sans-serif;--c-bg: var(--c-bg-base);--c-surface: var(--c-surface-base);--c-fg: var(--c-fg-base);--c-muted: var(--c-muted-base);--c-accent: var(--c-accent-base);--c-accent-strong: var(--c-accent-strong-base);--c-line: var(--c-line-base);--c-glow: var(--c-glow-base);--c-error: var(--c-error-base);--c-error-soft: var(--c-error-soft-base);--c-success: var(--c-success-base);--c-success-soft: var(--c-success-soft-base);--c-warning: var(--c-warning-base);--c-warning-soft: var(--c-warning-soft-base);--c-info: var(--c-info-base);--c-info-soft: var(--c-info-soft-base)}:root{color-scheme:light dark;--transition-fast: .16s ease;--transition-slow: .52s cubic-bezier(.2, .8, .2, 1);--hero-parallax-shift: 540px;--hero-parallax-boost: 1.55}*{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;background:var(--c-bg);color:var(--c-fg)}body{min-height:100vh;font-family:var(--font-body);background:radial-gradient(circle at 20% 10%,var(--c-glow),transparent 55%),radial-gradient(circle at 80% 0%,color-mix(in oklab,var(--c-accent) 30%,transparent),transparent 50%),var(--c-bg);transition:background var(--transition-slow),color var(--transition-fast)}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}html,body{overflow-x:hidden;max-width:100vw}main{display:block}main.edu-main>*{padding-left:0;padding-right:0;padding-bottom:0}.container{width:min(1100px,100%);margin:0 auto}.section-title{font-family:var(--font-display);font-size:clamp(1.8rem,2.6vw,2.6rem);margin-bottom:1rem}.article{background:color-mix(in oklab,var(--c-surface) 94%,transparent);border-radius:16px;padding:.25rem;border:1px solid color-mix(in oklab,var(--c-line) 70%,transparent);box-shadow:0 18px 48px #00000014;display:grid;gap:.5rem;max-width:100%;margin:0 auto}@media(min-width:640px){.article{padding:2rem;max-width:720px}}@media(min-width:768px){.article{max-width:780px}}@media(min-width:1024px){.article{max-width:1140px}}@media(min-width:1280px){.article{max-width:1280px}}.article h1,.article h2,.article h3{font-family:var(--font-display)}.article p{color:var(--c-muted);line-height:1.7}:root[data-theme=dark] .article p{color:color-mix(in oklab,var(--c-fg) 82%,var(--c-muted))}.article .katex-display{overflow-x:auto;padding:.5rem 0}@media(max-width:720px){main>*:not(.hero):not(.edu-layout):not(.edu-main):not(.course-index){padding-left:0;padding-right:0}}.skip-link{position:absolute;top:-100%;left:1rem;z-index:10000;padding:.75rem 1rem;background:var(--c-accent);color:var(--c-bg);font-weight:600;border-radius:8px;text-decoration:none;transition:top .2s ease}.skip-link:focus{top:1rem;outline:2px solid var(--c-fg);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
