@charset "UTF-8";.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 .4s cubic-bezier(.4,0,.2,1)}.navbar[data-astro-cid-ms53uln7].is-hidden{transform:translateY(-100%)}.navbar__inner[data-astro-cid-ms53uln7]{display:flex;align-items:center;gap:1rem;height:var(--navbar-h);padding:0 1rem}@media(min-width:768px){.navbar__inner[data-astro-cid-ms53uln7]{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;min-width:40px;justify-content:flex-end}.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__cart-btn[data-astro-cid-ms53uln7]{position:relative}.navbar__cart-count[data-astro-cid-ms53uln7]{position:absolute;top:2px;right:2px;background-color:var(--c-accent);color:var(--c-bg);font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 0 0 2px var(--c-bg)}.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;gap:.5rem;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;flex:1}.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__user-btn[data-astro-cid-ms53uln7]{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;overflow:hidden;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease}.navbar__user-btn[data-astro-cid-ms53uln7].has-photo{box-shadow:0 0 0 2.5px var(--c-bg),0 0 0 4px var(--c-success)}.navbar__user-btn[data-astro-cid-ms53uln7]:hover{transform:scale(1.05);box-shadow:0 0 0 2.5px var(--c-bg),0 0 0 4px color-mix(in oklab,var(--c-success) 80%,var(--c-accent))}.navbar__user-btn[data-astro-cid-ms53uln7]:hover:not(.has-photo){box-shadow:0 0 0 3px color-mix(in oklab,var(--c-accent) 30%,transparent)}.navbar__avatar[data-astro-cid-ms53uln7]{width:100%;height:100%;object-fit:cover}.navbar__avatar-placeholder[data-astro-cid-ms53uln7]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:linear-gradient(135deg,var(--c-accent),color-mix(in oklab,var(--c-accent) 70%,var(--c-fg)));color:#fff;font-weight:600;font-size:1rem}.navbar__sidebar-user[data-astro-cid-ms53uln7]{padding:1rem 1.5rem;border-bottom:1px solid var(--c-line);min-height:80px;display:flex;align-items:center}.navbar__user-card[data-astro-cid-ms53uln7]{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--c-surface);border-radius:16px;text-decoration:none;transition:background .15s ease,transform .15s ease;width:100%}.navbar__user-card[data-astro-cid-ms53uln7]:hover{background:color-mix(in oklab,var(--c-accent) 10%,var(--c-surface));transform:translate(4px)}.navbar__user-avatar[data-astro-cid-ms53uln7]{width:44px;height:44px;border-radius:50%;overflow:hidden;flex-shrink:0}.navbar__user-avatar[data-astro-cid-ms53uln7].has-photo{box-shadow:0 0 0 2px var(--c-surface),0 0 0 3.5px var(--c-success)}.navbar__user-avatar[data-astro-cid-ms53uln7] img[data-astro-cid-ms53uln7]{width:100%;height:100%;object-fit:cover}.navbar__user-avatar[data-astro-cid-ms53uln7] span[data-astro-cid-ms53uln7]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:linear-gradient(135deg,var(--c-accent),color-mix(in oklab,var(--c-accent) 70%,var(--c-fg)));color:#fff;font-weight:600;font-size:1.1rem}.navbar__user-info[data-astro-cid-ms53uln7]{display:flex;flex-direction:column;gap:2px;min-width:0}.navbar__user-name[data-astro-cid-ms53uln7]{font-weight:600;color:var(--c-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.navbar__user-action[data-astro-cid-ms53uln7]{font-size:.8rem;color:var(--c-accent)}.navbar__login-btn[data-astro-cid-ms53uln7]{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--c-accent);border-radius:16px;color:#fff;text-decoration:none;font-weight:600;transition:background .15s ease,transform .15s ease;width:100%}.navbar__login-btn[data-astro-cid-ms53uln7] svg[data-astro-cid-ms53uln7]{width:22px;height:22px}.navbar__login-btn[data-astro-cid-ms53uln7]:hover{background:color-mix(in oklab,var(--c-accent) 85%,black);transform:translateY(-2px)}: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))}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-8px) scale(.95);padding:.4rem .6rem;background:var(--c-surface);color:var(--c-fg);border:1px solid var(--c-line);border-radius:6px;font-size:.75rem;white-space:nowrap;opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.2,.8,.2,1);box-shadow:0 4px 12px #0000001a;z-index:100;font-weight:500}[data-tooltip]:hover:after{opacity:1;transform:translate(-50%) translateY(-12px) scale(1)}[data-tooltip-pos=right]:after{bottom:auto;left:100%;top:50%;transform:translateY(-50%) translate(8px) scale(.95)}[data-tooltip-pos=right]:hover:after{transform:translateY(-50%) translate(12px) scale(1)}[data-tooltip-pos=bottom]:after{bottom:auto;top:100%;left:50%;transform:translate(-50%) translateY(8px) scale(.95)}[data-tooltip-pos=bottom]:hover:after{transform:translate(-50%) translateY(12px) scale(1)}::-webkit-scrollbar{width:14px;height:14px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--c-surface-3, color-mix(in oklab, var(--c-fg) 10%, transparent));border:4px solid transparent;background-clip:content-box;border-radius:99px;min-height:48px;transition:background-color .2s ease}::-webkit-scrollbar-thumb:hover{background-color:var(--c-muted, color-mix(in oklab, var(--c-fg) 30%, transparent))}::-webkit-scrollbar-thumb:active{background-color:var(--c-fg, #888);border-width:3px}::-webkit-scrollbar-corner{background:transparent}*{scrollbar-width:thin;scrollbar-color:var(--c-surface-3, color-mix(in oklab, var(--c-fg) 10%, transparent)) transparent}: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;--navbar-h: 56px}@media(min-width:768px){:root{--navbar-h: 64px}}*{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}}.sidebar-layout{display:flex;margin-top:var(--navbar-h);height:calc(100vh - var(--navbar-h));overflow:hidden}.sidebar-layout>main#main-content{flex:1;overflow-y:auto;min-width:0;transition:padding-left .3s ease}body.gs-sidebar-closed .sidebar-layout>main#main-content{padding-left:52px}
