@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(../media/af21ab248943f479-s.3gj6ciom31zjc.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(../media/4ae66b896b591e96-s.0_kz_z3o_slvt.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(../media/21ca8f3f56c22ca2-s.p.1cp9-4nby68jc.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Fallback;src:local(Arial);ascent-override:88.96%;descent-override:21.28%;line-gap-override:0.0%;size-adjust:98.7%}.archivo_a54005a4-module__TJH1Da__className{font-family:Archivo,Archivo Fallback;font-style:normal}.archivo_a54005a4-module__TJH1Da__variable{--font-display:"Archivo", "Archivo Fallback"}
@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:400;font-display:swap;src:url(../media/cc6c75d91fb27f62-s.3j-lqo2q-puhp.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ed5f1f9bced69653-s.p.2li_3lqay9qjq.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:700;font-display:swap;src:url(../media/574e5b2a8fe8e45b-s.061jvc6_x84nn.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:700;font-display:swap;src:url(../media/89ea96820aa96980-s.p.0hs6q6udzld4a.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible Fallback;src:local(Arial);ascent-override:95.6%;descent-override:29.18%;line-gap-override:0.0%;size-adjust:99.37%}.atkinson_hyperlegible_76e53565-module__1DcD8G__className{font-family:Atkinson Hyperlegible,Atkinson Hyperlegible Fallback;font-style:normal}.atkinson_hyperlegible_76e53565-module__1DcD8G__variable{--font-body:"Atkinson Hyperlegible", "Atkinson Hyperlegible Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.0rgnxg2b64rzs.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.2vemzm0itqzfy.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.3cb5lpr2l6xud.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1u30mmyq6lnsd.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.40sczeszzbjw1.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.1yd4_i3e35931.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.29yke99gs9qpn.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.1i-sca43-qwng.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.0oace-s_gkfks.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_30c7ab4c-module__VCrZzq__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_30c7ab4c-module__VCrZzq__variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--ground:#e8edec;--surface:#f7f9f8;--ink:#16201e;--muted:#566462;--rule:#c3cdca;--accent:#5a3c9e;--ok:#22764a;--warn:#9c6a0c;--miss:#a3363a;--accent-ink:#fff;--accent-soft:color-mix(in srgb, var(--accent) 10%, var(--surface));--ok-soft:color-mix(in srgb, var(--ok) 12%, var(--surface));--warn-soft:color-mix(in srgb, var(--warn) 12%, var(--surface));--miss-soft:color-mix(in srgb, var(--miss) 12%, var(--surface));--shadow:0 1px 2px color-mix(in srgb, var(--ink) 8%, transparent);--radius:10px;--radius-sm:6px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--page-max:1040px;--gutter:16px;--text-xs:.8125rem;--text-sm:.9375rem;--text-md:1.0625rem;--text-lg:1.25rem;--text-xl:1.625rem;--text-2xl:2.125rem}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--ground:#0f1514;--surface:#161f1e;--ink:#e2eae8;--muted:#95a5a2;--rule:#2c3836;--accent:#b9a5f3;--ok:#5cc48b;--warn:#e2b04f;--miss:#ee8787;--accent-ink:#16201e;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--ground:#0f1514;--surface:#161f1e;--ink:#e2eae8;--muted:#95a5a2;--rule:#2c3836;--accent:#b9a5f3;--ok:#5cc48b;--warn:#e2b04f;--miss:#ee8787;--accent-ink:#16201e;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (min-width:720px){:root{--gutter:32px}}*,:before,:after{box-sizing:border-box}html{-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--ground);min-height:100dvh;color:var(--ink);font-family:var(--font-body), system-ui, sans-serif;font-size:var(--text-md);-webkit-font-smoothing:antialiased;margin:0;line-height:1.55}h1,h2,h3{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:-.01em;margin:0 0 var(--space-3);text-wrap:balance;font-weight:650;font-stretch:108%;line-height:1.15}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin:0 0 var(--space-3)}a{color:var(--accent);text-underline-offset:.2em}code,kbd,.mono{font-family:var(--font-mono), ui-monospace, monospace;font-size:.92em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}hr{border:0;border-top:1px solid var(--rule);margin:var(--space-5) 0}.page{width:100%;max-width:var(--page-max);padding:var(--space-5) var(--gutter) var(--space-7);margin:0 auto}.page--narrow{max-width:460px}.stack>*+*{margin-top:var(--space-4)}.row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.spread{justify-content:space-between;align-items:baseline;gap:var(--space-3);flex-wrap:wrap;display:flex}.site-header{border-bottom:1px solid var(--rule);background:var(--surface)}.site-header__inner{max-width:var(--page-max);padding:var(--space-3) var(--gutter);align-items:center;gap:var(--space-4);flex-wrap:wrap;margin:0 auto;display:flex}.brand{font-family:var(--font-display), system-ui, sans-serif;font-weight:700;font-stretch:125%;font-size:var(--text-lg);color:var(--ink);letter-spacing:-.01em;text-decoration:none}.brand span{color:var(--accent)}.nav{gap:var(--space-4);font-size:var(--text-sm);flex-wrap:wrap;align-items:center;margin-left:auto;display:flex}.nav a{color:var(--muted);text-decoration:none}.nav a:hover,.nav a[aria-current=page]{color:var(--ink)}.nav .who{color:var(--muted)}.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:var(--space-5);box-shadow:var(--shadow)}.card--link{color:inherit;text-decoration:none;transition:border-color .12s;display:block}.card--link:hover{border-color:var(--accent)}.grid--course{gap:var(--space-4);grid-template-columns:1fr;display:grid}@media (min-width:820px){.grid--course{grid-template-columns:minmax(280px,1fr) 2fr}}.grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));display:grid}.eyebrow{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:var(--space-2)}.muted{color:var(--muted)}.small{font-size:var(--text-sm)}.countdown{font-family:var(--font-display), system-ui, sans-serif;font-weight:700;font-stretch:112%;font-size:var(--text-xl);color:var(--accent);line-height:1.1}.pill{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-xs);border:1px solid var(--rule);color:var(--muted);white-space:nowrap;border-radius:999px;padding:2px 8px;display:inline-block}.pill--accent{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.pill--ok{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}.pill--warn{border-color:var(--warn);color:var(--warn);background:var(--warn-soft)}.pill--miss{border-color:var(--miss);color:var(--miss);background:var(--miss-soft)}.list{margin:0;padding:0;list-style:none}.list>li{padding:var(--space-3) 0;border-top:1px solid var(--rule)}.list>li:first-child{border-top:0}.form{gap:var(--space-4);display:grid}.field{gap:var(--space-1);display:grid}.field label{font-weight:700;font-size:var(--text-sm)}.field .hint{font-size:var(--text-xs);color:var(--muted)}.field .field-error{font-size:var(--text-sm);color:var(--miss)}input[type=text],input[type=password],input[type=number],select,textarea{font:inherit;color:var(--ink);background:var(--ground);border:1px solid var(--rule);border-radius:var(--radius-sm);width:100%;min-height:44px;padding:10px 12px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}.btn{font:inherit;font-weight:700;font-size:var(--text-sm);justify-content:center;align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);cursor:pointer;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.6;cursor:progress}.btn--ghost{color:var(--accent);background:0 0}.btn--small{min-height:34px;padding:0 var(--space-3);font-size:var(--text-xs)}.btn--danger{border-color:var(--miss);color:var(--miss);background:0 0}.linklike{font:inherit;color:var(--muted);cursor:pointer;text-underline-offset:.2em;background:0 0;border:0;padding:0;text-decoration:underline}.linklike:hover{color:var(--ink)}.notice{border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);border:1px solid var(--rule);background:var(--surface);font-size:var(--text-sm)}.notice--error{border-color:var(--miss);background:var(--miss-soft)}.notice--ok{border-color:var(--ok);background:var(--ok-soft)}.notice--warn{border-color:var(--warn);background:var(--warn-soft)}.table-wrap{-webkit-overflow-scrolling:touch;position:relative;overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:var(--text-sm)}table.data th,table.data td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--rule);vertical-align:top}table.data th{font-family:var(--font-mono), ui-monospace, monospace;font-weight:500;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);white-space:nowrap}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums}.meter{background:var(--ground);border:1px solid var(--rule);border-radius:999px;height:8px;overflow:hidden}.meter>span{background:var(--accent);height:100%;display:block}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
:root{--pp:#0d7480;--ipe:#a2561c;--ar:#5a3c9e;--blue:#2c5fb3;--orange:#b9661b}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--pp:#4cc0c9;--ipe:#e3a067;--ar:#b9a5f3;--blue:#86adf0;--orange:#eda560}}:root[data-theme=dark]{--pp:#4cc0c9;--ipe:#e3a067;--ar:#b9a5f3;--blue:#86adf0;--orange:#eda560}.c-pp{--c:var(--pp)}.c-ipe{--c:var(--ipe)}.c-ar{--c:var(--ar)}.c-pp,.c-ipe,.c-ar{--c-soft:color-mix(in srgb, var(--c) 11%, var(--surface))}.site-header__inner{row-gap:var(--space-2)}.mainnav{gap:var(--space-4);font-size:var(--text-sm);scrollbar-width:none;flex:auto;align-items:center;min-width:0;display:flex;overflow-x:auto}.mainnav::-webkit-scrollbar{display:none}.mainnav a{color:var(--muted);white-space:nowrap;padding:6px 0;text-decoration:none}.mainnav a:hover,.mainnav a[aria-current=page]{color:var(--ink)}.mainnav a[aria-current=page]{box-shadow:inset 0 -2px 0 var(--accent)}.mainnav .sep{background:var(--rule);flex:none;align-self:stretch;width:1px}.usernav{gap:var(--space-3);font-size:var(--text-sm);align-items:center;margin-left:auto;display:flex}.usernav .who{color:var(--muted)}@media (max-width:760px){.mainnav{flex-basis:100%;order:3}}.ctag{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-xs);letter-spacing:.03em;color:var(--c);background:var(--c-soft);white-space:nowrap;border-radius:4px;padding:0 6px;font-weight:500;line-height:1.6;text-decoration:none;display:inline-block}.rid{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-xs);color:var(--muted)}.tag{font-size:var(--text-xs);border:1px solid var(--rule);color:var(--muted);white-space:nowrap;border-radius:4px;padding:0 6px;font-weight:700;line-height:1.6;display:inline-block}.tag--req{color:var(--ink);border-color:var(--ink)}.tag--warn{color:var(--warn);border-color:var(--warn)}.tag--ok{color:var(--ok);border-color:var(--ok)}.theme-dot{background:var(--rule);vertical-align:baseline;border-radius:50%;width:9px;height:9px;display:inline-block}.theme-dot--blue{background:var(--blue)}.theme-dot--orange{background:var(--orange)}.lede{color:var(--muted);max-width:68ch}.section-h{justify-content:space-between;align-items:baseline;gap:var(--space-2) var(--space-3);margin:var(--space-6) 0 var(--space-3);flex-wrap:wrap;display:flex}.section-h h2{margin:0}.bar{background:var(--ground);border:1px solid var(--rule);border-radius:3px;height:6px;overflow:hidden}.bar>span{background:var(--ok);height:100%;display:block}.prose{max-width:70ch}.prose ul{margin:0 0 var(--space-3);padding-left:1.2em}.prose li+li{margin-top:4px}.datebox{border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--rule);font-variant-numeric:tabular-nums;justify-items:center;min-width:52px;padding:6px 6px 5px;line-height:1.05;display:grid}.datebox .dow,.datebox .mon{font-family:var(--font-mono), ui-monospace, monospace;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px}.datebox .day{font-family:var(--font-display), system-ui, sans-serif;font-size:22px;font-weight:700;font-stretch:110%}.datebox--today{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.agenda{gap:var(--space-4);display:grid}.agenda-day{gap:var(--space-3);grid-template-columns:auto minmax(0,1fr);align-items:start;display:grid}.agenda-items{gap:var(--space-2);min-width:0;display:grid}.ag{gap:2px var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--c,var(--rule));border-radius:var(--radius-sm);color:inherit;grid-template-columns:7.2em minmax(0,1fr) auto;align-items:baseline;text-decoration:none;display:grid}a.ag:hover{border-color:var(--c)}.ag__time{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-xs);color:var(--muted);font-variant-numeric:tabular-nums}.ag__body{min-width:0}.ag__meta{font-size:var(--text-xs);color:var(--muted);gap:2px var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.ag__title{font-weight:700;line-height:1.3}.ag__side{font-size:var(--text-xs);color:var(--muted);white-space:nowrap;text-align:right}.ag--deadline{background:color-mix(in srgb, var(--warn) 6%, var(--surface));border-left-style:dashed}.ag--exam{background:color-mix(in srgb, var(--miss) 6%, var(--surface))}.ag--past{opacity:.62}@media (max-width:560px){.ag{grid-template-columns:minmax(0,1fr) auto}.ag__time{grid-column:1/-1}}.cal-week{margin-top:var(--space-5)}.cal-week__h{gap:var(--space-2) var(--space-3);border-bottom:1px solid var(--rule);padding-bottom:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;align-items:baseline;display:flex}.cal-week__h h2{font-size:var(--text-lg);margin:0}.cal-grid{gap:var(--space-2);grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.cal-day{gap:var(--space-2);align-content:start;min-width:0;display:grid}.cal-day__h{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.cal-day__h--today{color:var(--accent);font-weight:500}.cal-ev{border-radius:var(--radius-sm);background:var(--c-soft,var(--surface));border:1px solid color-mix(in srgb, var(--c,var(--rule)) 35%, var(--rule));color:inherit;font-size:var(--text-xs);overflow-wrap:anywhere;padding:6px 8px;line-height:1.35;text-decoration:none;display:block}a.cal-ev:hover{border-color:var(--c)}.cal-ev b{font-size:var(--text-sm);display:block}.cal-ev--deadline{background:var(--surface);border-style:dashed;border-color:var(--warn)}.cal-ev--exam{border-color:var(--miss)}.cal-break{padding:var(--space-3) var(--space-4);border:1px dashed var(--rule);border-radius:var(--radius-sm);color:var(--muted)}@media (max-width:760px){.cal-grid{grid-template-columns:minmax(0,1fr)}.cal-day:empty,.cal-day--empty{display:none}.cal-day__h{padding-top:var(--space-2)}}.timeline{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.tl{gap:var(--space-3);padding:var(--space-3);background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius-sm);color:inherit;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;text-decoration:none;display:grid}a.tl:hover{border-color:var(--c,var(--accent))}.tl--minor{background:0 0}.tl--past{opacity:.7}.tl__body{min-width:0}.tl__meta{font-size:var(--text-xs);color:var(--muted)}.tl__title{font-weight:700;line-height:1.3}.tl__side{text-align:right;font-size:var(--text-xs);color:var(--muted);justify-items:end;gap:4px;min-width:64px;display:grid}.tl__side .bar{width:64px}@media (max-width:560px){.tl{grid-template-columns:auto minmax(0,1fr)}.tl__side{text-align:left;grid-column:2;justify-items:start}}.sess-head{gap:var(--space-4);grid-template-columns:auto minmax(0,1fr);align-items:start;display:grid}.sess-head h1{margin:2px 0 var(--space-2)}.meetings{font-size:var(--text-sm);gap:4px;margin:0;padding:0;list-style:none;display:grid}.meetings b{font-variant-numeric:tabular-nums}.two-col{gap:var(--space-5);grid-template-columns:minmax(0,1fr);display:grid}@media (min-width:960px){.two-col{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}}.box{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:var(--space-4) var(--space-5)}.box h2{font-size:var(--text-lg)}.box--soft{background:0 0;border-style:dashed}.pager{justify-content:space-between;gap:var(--space-3);margin-top:var(--space-6);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.readings{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);margin:0;padding:0;list-style:none}.rd{gap:var(--space-2) var(--space-4);padding:var(--space-4);border-top:1px solid var(--rule);grid-template-columns:minmax(0,1fr) auto;display:grid}.rd:first-child{border-top:0}.rd[data-read=true]{background:color-mix(in srgb, var(--ok) 6%, var(--surface))}.rd__meta{gap:4px var(--space-2);flex-wrap:wrap;align-items:center;margin-bottom:4px;display:flex}.apa{font-size:var(--text-sm);overflow-wrap:anywhere;text-indent:-1.4em;margin:0;padding-left:1.4em;line-height:1.5}.apa em{font-style:italic}.rd__detail{font-size:var(--text-sm);margin:6px 0 0}.rd__detail:before{content:"Read: ";color:var(--muted);font-weight:700}.rd__links{gap:4px var(--space-4);margin-top:var(--space-2);font-size:var(--text-sm);flex-wrap:wrap;align-items:center;display:flex}.rd__links a{font-weight:700;text-decoration:none}.rd__links a:hover{text-decoration:underline}.rd__side{gap:var(--space-2);align-content:start;justify-items:end;display:grid}@media (max-width:560px){.rd{grid-template-columns:minmax(0,1fr)}.rd__side{grid-auto-flow:column;justify-content:start;justify-items:start}}.readbtn{font:inherit;font-size:var(--text-sm);min-height:40px;padding:0 var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--rule);background:var(--surface);color:var(--muted);cursor:pointer;white-space:nowrap;font-weight:700}.readbtn:hover{border-color:var(--ok);color:var(--ink)}.readbtn[aria-pressed=true]{background:var(--ok);border-color:var(--ok);color:var(--surface)}.readbtn:disabled{opacity:.6;cursor:progress}.reading-head{gap:var(--space-2);display:grid}.reading-head h1{font-size:var(--text-xl)}.reading-view{margin-top:var(--space-4)}.tabs{border:1px solid var(--rule);border-radius:var(--radius-sm);width:max-content;max-width:100%;margin-bottom:var(--space-3);gap:0;display:none;overflow:hidden}.tabs button{font:inherit;font-size:var(--text-sm);background:var(--surface);color:var(--muted);cursor:pointer;border:0;padding:8px 16px;font-weight:700}.tabs button[aria-selected=true]{background:var(--ink);color:var(--surface)}.rv-cols{gap:var(--space-5);grid-template-columns:minmax(0,1fr);display:grid}.page--wide{max-width:1480px}@media (min-width:1100px){.rv-cols{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:start}.rv-pdf{top:var(--space-3);position:sticky}}@media (max-width:1099px){.tabs{display:flex}.rv-cols[data-tab=summary] .rv-pdf,.rv-cols[data-tab=pdf] .rv-summary{display:none}}.summary{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:var(--space-5);overflow-wrap:anywhere;line-height:1.65}.summary h2{margin-top:var(--space-6);font-size:var(--text-lg)}.summary h2:first-child{margin-top:0}.summary h3{font-size:var(--text-md);margin-top:var(--space-5)}.summary ul,.summary ol{padding-left:1.3em}.summary li+li{margin-top:4px}.summary table{border-collapse:collapse;width:100%;font-size:var(--text-sm);display:block;overflow-x:auto}.summary th,.summary td{border:1px solid var(--rule);text-align:left;vertical-align:top;padding:6px 8px}.summary blockquote{margin:var(--space-3) 0;padding:var(--space-2) var(--space-4);border-left:3px solid var(--accent);color:var(--muted)}.summary img{border:1px solid var(--rule);border-radius:var(--radius-sm);background:#fff}.pref{font:inherit;font-family:var(--font-mono), ui-monospace, monospace;color:var(--accent);background:var(--accent-soft);cursor:pointer;border:0;border-radius:4px;padding:0 4px;font-size:.85em}.pref:hover{text-decoration:underline}.toc{font-size:var(--text-sm);gap:4px var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.toc a{color:var(--muted)}.pdf{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.pdf__bar{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--rule);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.pdf__bar input{text-align:center;width:4.2em;min-height:34px;padding:4px 6px}.pdf__bar .grow{flex:1}.pdf__pages{background:var(--ground);height:min(82vh,1100px);padding:var(--space-3);gap:var(--space-3);justify-items:center;display:grid;position:relative;overflow:auto}.pdf__page{box-shadow:var(--shadow);border:1px solid var(--rule);background:#fff;max-width:100%;position:relative}.pdf__page canvas{max-width:100%;height:auto;display:block}.pdf__msg{padding:var(--space-5);color:var(--muted);text-align:center}.asg{gap:var(--space-3);background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--c);border-radius:var(--radius);padding:var(--space-4) var(--space-5);scroll-margin-top:var(--space-4);display:grid}.asg__top{gap:var(--space-2) var(--space-4);flex-wrap:wrap;justify-content:space-between;align-items:baseline;display:flex}.asg__top h3{font-size:var(--text-md);margin:0}.asg__due{font-variant-numeric:tabular-nums;font-size:var(--text-sm)}.asg ul{font-size:var(--text-sm);margin:0;padding-left:1.2em}.asg[data-status=done]{opacity:.72}.seg{border:1px solid var(--rule);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.seg button{font:inherit;font-size:var(--text-sm);background:var(--surface);color:var(--muted);border:0;border-left:1px solid var(--rule);cursor:pointer;padding:7px 12px;font-weight:700}.seg button:first-child{border-left:0}.seg button[aria-pressed=true]{background:var(--ink);color:var(--surface)}.asg textarea{resize:vertical;min-height:70px;font-size:var(--text-sm)}.saved{font-size:var(--text-xs);color:var(--muted)}.home-grid{gap:var(--space-5);grid-template-columns:minmax(0,1fr);display:grid}@media (min-width:960px){.home-grid{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}}.next-deadline .countdown{font-size:var(--text-2xl)}.progress-list{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.progress-list li{gap:4px;display:grid}.progress-list .spread{font-size:var(--text-sm)}.searchbar{gap:var(--space-2);display:flex}.searchbar input{flex:1;min-width:0}.hits{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.hit{padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius-sm);color:inherit;text-decoration:none;display:block}.hit:hover{border-color:var(--accent)}.hit p{font-size:var(--text-sm);color:var(--muted);margin:4px 0 0}
