:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--paper-0:#fff;--paper-50:#fbf9f5;--paper-100:#f7f4ee;--paper-200:#ede8df;--paper-300:#e7e3da;--paper-400:#cfc9bd;--paper-500:#9a948a;--paper-600:#6e6960;--paper-700:#4a463f;--paper-800:#2a2825;--paper-850:#1c1b18;--paper-900:#151412;--paper-950:#0c0c0b;--pink-50:#fdeef4;--pink-100:#fbdce8;--pink-300:#f5a9c4;--pink-400:#f07aa6;--pink-500:#e25a8f;--pink-600:#c93d74;--pink-700:#a82f60;--pink-900:#3b1220;--ink-50:#edf1f7;--ink-100:#dce5f0;--ink-300:#9db6d6;--ink-400:#7d9cc6;--ink-500:#4a71a3;--ink-600:#36598a;--ink-700:#2a4870;--ink-900:#17263a;--earth-50:#fdefe9;--earth-100:#fbdcd0;--earth-300:#f4b39e;--earth-400:#f0977e;--earth-500:#e67a5e;--earth-600:#c2573f;--earth-700:#a2452f;--earth-900:#3a1a12;--dusk-50:#f6ecf1;--dusk-100:#edd7e2;--dusk-300:#c994ae;--dusk-400:#b26f92;--dusk-500:#935073;--dusk-600:#7c3f60;--dusk-700:#62324d;--dusk-900:#502d55;--peach-50:#fbf3ea;--peach-300:#f6dbc0;--peach-400:#e9c39e;--peach-600:#9c6a3c;--peach-900:#33241a;--sage-50:#e6f4ea;--sage-300:#9ad3ae;--sage-400:#7acc98;--sage-600:#2d8a55;--sage-900:#16291d;--amber-50:#fbf1da;--amber-300:#ebcb7a;--amber-400:#e5b94e;--amber-600:#8a6512;--amber-900:#2a2208;--brick-50:#f8e6e2;--brick-300:#e4a79c;--brick-400:#e08a7a;--brick-600:#b13a2e;--brick-900:#2c1512;--peri-50:#ecf0fe;--peri-300:#aebefc;--peri-400:#8fa6fa;--peri-600:#4a62d6;--peri-900:#1f2542;--lav-50:#f1eef8;--lav-300:#c3b8e2;--lav-400:#a99bd1;--lav-600:#6f5fa3;--lav-900:#262137;--plum-50:#efe9f6;--plum-300:#c4b2e0;--plum-400:#b9a0e0;--plum-600:#6a4c98;--plum-900:#2a2336;--accent-50:var(--dusk-50);--accent-100:var(--dusk-100);--accent-300:var(--dusk-300);--accent-400:var(--dusk-400);--accent-500:var(--dusk-500);--accent-600:var(--dusk-600);--accent-700:var(--dusk-700);--accent-900:var(--dusk-900);--accent-tint-dark:var(--dusk-300);--accent-pressed-dark:var(--dusk-100);--accent-on-tint-dark:var(--dusk-900);--accent-soft-dark:#2e1f2e;--accent-soft-border-dark:#4a3348;--guess-50:var(--peach-50);--guess-300:var(--peach-300);--guess-400:var(--peach-400);--guess-600:var(--peach-600);--guess-900:var(--peach-900);--guess-border-dark:#5c4630;--icon-top:#935073;--icon-bottom:#502d55;--icon-fg:#f8f4e9;--bg:var(--paper-100);--bg-sidebar:var(--paper-200);--surface:var(--paper-0);--surface-raised:var(--paper-0);--surface-sunken:var(--paper-200);--surface-pressed:var(--paper-300);--overlay:#1c1b1866;--material:#f7f4eed9;--text-1:var(--paper-850);--text-2:#5c5750;--text-3:#8a847a;--text-4:#b4aea3;--text-on-tint:#fff;--separator:#e4dfd5;--separator-strong:var(--paper-400);--focus-ring:var(--accent-500);--tint:var(--accent-600);--tint-pressed:var(--accent-700);--tint-soft:var(--accent-50);--tint-soft-border:var(--accent-100);--correct:var(--sage-600);--correct-soft:var(--sage-50);--correct-border:var(--sage-300);--partial:var(--amber-600);--partial-soft:var(--amber-50);--partial-border:var(--amber-300);--wrong:var(--brick-600);--wrong-soft:var(--brick-50);--wrong-border:var(--brick-300);--guess:var(--guess-600);--guess-soft:var(--guess-50);--guess-border:var(--guess-300);--highlight:#fbe9a6;--highlight-text:var(--paper-850);--timer-normal:var(--text-2);--timer-low:var(--wrong);--timer-low-soft:var(--wrong-soft);--progress-track:var(--paper-300);--progress-fill:var(--tint)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}[data-palette=pink]{--accent-50:var(--pink-50);--accent-100:var(--pink-100);--accent-300:var(--pink-300);--accent-400:var(--pink-400);--accent-500:var(--pink-500);--accent-600:var(--pink-600);--accent-700:var(--pink-700);--accent-900:var(--pink-900);--accent-tint-dark:var(--pink-400);--accent-pressed-dark:var(--pink-300);--accent-on-tint-dark:var(--pink-900);--accent-soft-dark:#3a1f2b;--accent-soft-border-dark:#5a2e42;--guess-50:var(--peri-50);--guess-300:var(--peri-300);--guess-400:var(--peri-400);--guess-600:var(--peri-600);--guess-900:var(--peri-900);--guess-border-dark:#34407a;--icon-top:#f58db4;--icon-bottom:#e8608f;--icon-fg:var(--pink-900)}[data-palette=ink]{--accent-50:var(--ink-50);--accent-100:var(--ink-100);--accent-300:var(--ink-300);--accent-400:var(--ink-400);--accent-500:var(--ink-500);--accent-600:var(--ink-600);--accent-700:var(--ink-700);--accent-900:var(--ink-900);--accent-tint-dark:var(--ink-300);--accent-pressed-dark:var(--ink-100);--accent-on-tint-dark:#111820;--accent-soft-dark:#1f2a38;--accent-soft-border-dark:#2e3e54;--guess-50:var(--plum-50);--guess-300:var(--plum-300);--guess-400:var(--plum-400);--guess-600:var(--plum-600);--guess-900:var(--plum-900);--guess-border-dark:#4b3e62;--icon-top:#3d6497;--icon-bottom:#2a4870;--icon-fg:#f7f4ee}[data-palette=earth]{--accent-50:var(--earth-50);--accent-100:var(--earth-100);--accent-300:var(--earth-300);--accent-400:var(--earth-400);--accent-500:var(--earth-500);--accent-600:var(--earth-600);--accent-700:var(--earth-700);--accent-900:var(--earth-900);--accent-tint-dark:var(--earth-400);--accent-pressed-dark:var(--earth-300);--accent-on-tint-dark:var(--earth-900);--accent-soft-dark:#3a2420;--accent-soft-border-dark:#5c3a32;--guess-50:var(--lav-50);--guess-300:var(--lav-300);--guess-400:var(--lav-400);--guess-600:var(--lav-600);--guess-900:var(--lav-900);--guess-border-dark:#4a4070;--icon-top:#f5a98c;--icon-bottom:#e67a5e;--icon-fg:#3a1a12}[data-palette=dusk]{--accent-50:var(--dusk-50);--accent-100:var(--dusk-100);--accent-300:var(--dusk-300);--accent-400:var(--dusk-400);--accent-500:var(--dusk-500);--accent-600:var(--dusk-600);--accent-700:var(--dusk-700);--accent-900:var(--dusk-900);--accent-tint-dark:var(--dusk-300);--accent-pressed-dark:var(--dusk-100);--accent-on-tint-dark:var(--dusk-900);--accent-soft-dark:#2e1f2e;--accent-soft-border-dark:#4a3348;--guess-50:var(--peach-50);--guess-300:var(--peach-300);--guess-400:var(--peach-400);--guess-600:var(--peach-600);--guess-900:var(--peach-900);--guess-border-dark:#5c4630;--icon-top:#935073;--icon-bottom:#502d55;--icon-fg:#f8f4e9}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:var(--paper-100);--bg-sidebar:var(--paper-200);--surface:var(--paper-0);--surface-raised:var(--paper-0);--surface-sunken:var(--paper-200);--surface-pressed:var(--paper-300);--overlay:#1c1b1866;--material:#f7f4eed9;--text-1:var(--paper-850);--text-2:#5c5750;--text-3:#8a847a;--text-4:#b4aea3;--text-on-tint:#fff;--separator:#e4dfd5;--separator-strong:var(--paper-400);--focus-ring:var(--accent-500);--tint:var(--accent-600);--tint-pressed:var(--accent-700);--tint-soft:var(--accent-50);--tint-soft-border:var(--accent-100);--correct:var(--sage-600);--correct-soft:var(--sage-50);--correct-border:var(--sage-300);--partial:var(--amber-600);--partial-soft:var(--amber-50);--partial-border:var(--amber-300);--wrong:var(--brick-600);--wrong-soft:var(--brick-50);--wrong-border:var(--brick-300);--guess:var(--guess-600);--guess-soft:var(--guess-50);--guess-border:var(--guess-300);--highlight:#fbe9a6;--highlight-text:var(--paper-850);--timer-normal:var(--text-2);--timer-low:var(--wrong);--timer-low-soft:var(--wrong-soft);--progress-track:var(--paper-300);--progress-fill:var(--tint)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--paper-950);--bg-sidebar:#121110;--surface:var(--paper-900);--surface-raised:var(--paper-850);--surface-sunken:#232220;--surface-pressed:var(--paper-800);--overlay:#0009;--material:#0c0c0bcc;--text-1:#f3efe8;--text-2:#b8b2a8;--text-3:#8a847a;--text-4:#5c5750;--text-on-tint:var(--accent-on-tint-dark);--separator:var(--paper-800);--separator-strong:#3a3833;--focus-ring:var(--accent-400);--tint:var(--accent-tint-dark);--tint-pressed:var(--accent-pressed-dark);--tint-soft:var(--accent-soft-dark);--tint-soft-border:var(--accent-soft-border-dark);--correct:var(--sage-400);--correct-soft:var(--sage-900);--correct-border:#2f5a40;--partial:var(--amber-400);--partial-soft:var(--amber-900);--partial-border:#6b5320;--wrong:var(--brick-400);--wrong-soft:var(--brick-900);--wrong-border:#6e3028;--guess:var(--guess-400);--guess-soft:var(--guess-900);--guess-border:var(--guess-border-dark);--highlight:#4a3e14;--highlight-text:#f7ebbe;--timer-normal:var(--text-2);--timer-low:var(--wrong);--timer-low-soft:var(--wrong-soft);--progress-track:var(--paper-800);--progress-fill:var(--tint)}@media (prefers-color-scheme:dark){[data-theme=auto]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--paper-950);--bg-sidebar:#121110;--surface:var(--paper-900);--surface-raised:var(--paper-850);--surface-sunken:#232220;--surface-pressed:var(--paper-800);--overlay:#0009;--material:#0c0c0bcc;--text-1:#f3efe8;--text-2:#b8b2a8;--text-3:#8a847a;--text-4:#5c5750;--text-on-tint:var(--accent-on-tint-dark);--separator:var(--paper-800);--separator-strong:#3a3833;--focus-ring:var(--accent-400);--tint:var(--accent-tint-dark);--tint-pressed:var(--accent-pressed-dark);--tint-soft:var(--accent-soft-dark);--tint-soft-border:var(--accent-soft-border-dark);--correct:var(--sage-400);--correct-soft:var(--sage-900);--correct-border:#2f5a40;--partial:var(--amber-400);--partial-soft:var(--amber-900);--partial-border:#6b5320;--wrong:var(--brick-400);--wrong-soft:var(--brick-900);--wrong-border:#6e3028;--guess:var(--guess-400);--guess-soft:var(--guess-900);--guess-border:var(--guess-border-dark);--highlight:#4a3e14;--highlight-text:#f7ebbe;--timer-normal:var(--text-2);--timer-low:var(--wrong);--timer-low-soft:var(--wrong-soft);--progress-track:var(--paper-800);--progress-fill:var(--tint)}}:root{--font-ui:-apple-system, BlinkMacSystemFont, "Inter", system-ui, "Segoe UI", sans-serif;--font-display:-apple-system, BlinkMacSystemFont, "Inter", system-ui, "Segoe UI", sans-serif;--font-reading:-apple-system, BlinkMacSystemFont, "Inter", system-ui, "Segoe UI", sans-serif;--font-mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--size-large-title:34px;--lh-large-title:41px;--size-title-1:28px;--lh-title-1:34px;--size-title-2:22px;--lh-title-2:28px;--size-title-3:20px;--lh-title-3:25px;--size-headline:17px;--lh-headline:22px;--size-body:17px;--lh-body:22px;--size-callout:16px;--lh-callout:21px;--size-subhead:15px;--lh-subhead:20px;--size-footnote:13px;--lh-footnote:18px;--size-caption-1:12px;--lh-caption-1:16px;--size-caption-2:11px;--lh-caption-2:13px;--size-reading:18px;--lh-reading:28px;--size-reading-lg:20px;--lh-reading-lg:31px;--size-reading-sm:16px;--lh-reading-sm:25px;--tracking-tight:-.4px;--tracking-caps:.06em;--text-large-title:var(--weight-bold) var(--size-large-title)/var(--lh-large-title) var(--font-display);--text-title-1:var(--weight-bold) var(--size-title-1)/var(--lh-title-1) var(--font-display);--text-title-2:var(--weight-bold) var(--size-title-2)/var(--lh-title-2) var(--font-display);--text-title-3:var(--weight-semibold) var(--size-title-3)/var(--lh-title-3) var(--font-display);--text-headline:var(--weight-semibold) var(--size-headline)/var(--lh-headline) var(--font-ui);--text-body:var(--weight-regular) var(--size-body)/var(--lh-body) var(--font-ui);--text-callout:var(--weight-regular) var(--size-callout)/var(--lh-callout) var(--font-ui);--text-subhead:var(--weight-regular) var(--size-subhead)/var(--lh-subhead) var(--font-ui);--text-footnote:var(--weight-regular) var(--size-footnote)/var(--lh-footnote) var(--font-mono);--text-caption:var(--weight-regular) var(--size-caption-1)/var(--lh-caption-1) var(--font-mono);--text-caption-2:var(--weight-regular) var(--size-caption-2)/var(--lh-caption-2) var(--font-mono);--text-reading:var(--weight-regular) var(--size-reading)/var(--lh-reading) var(--font-reading);--text-reading-lg:var(--weight-regular) var(--size-reading-lg)/var(--lh-reading-lg) var(--font-reading);--text-reading-sm:var(--weight-regular) var(--size-reading-sm)/var(--lh-reading-sm) var(--font-reading);--text-mono:var(--weight-regular) var(--size-footnote)/var(--lh-footnote) var(--font-mono);--space-0:0px;--space-1:2px;--space-2:4px;--space-3:8px;--space-4:12px;--space-5:16px;--space-6:20px;--space-7:24px;--space-8:32px;--space-9:40px;--space-10:48px;--space-11:64px;--gutter-phone:16px;--gutter-tablet:24px;--gap-stack:12px;--gap-section:32px;--row-min:44px;--row-pad-y:12px;--row-pad-x:16px;--radius-xs:6px;--radius-sm:10px;--radius-md:14px;--radius-lg:20px;--radius-pill:999px;--radius-icon:22.37%;--border-hairline:.5px;--border-1:1px;--border-2:1.5px;--shadow-card:0 .5px 0 #1c1b180a, 0 1px 2px #1c1b180d;--shadow-raised:0 1px 2px #1c1b180f, 0 4px 12px #1c1b180f;--shadow-sheet:0 -1px 0 #1c1b180a, 0 -8px 32px #1c1b181f;--shadow-popover:0 2px 6px #1c1b1814, 0 12px 32px #1c1b1824;--ease-standard:cubic-bezier(.25, .1, .25, 1);--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-sheet:cubic-bezier(.32, .72, 0, 1);--dur-instant:.1s;--dur-quick:.18s;--dur-standard:.26s;--dur-sheet:.42s;--sidebar-width:280px;--content-max:720px;--content-max-wide:1040px;--tabbar-height:49px;--navbar-height:44px;--blur-material:saturate(180%) blur(20px)}[data-theme=light]{--shadow-card:0 .5px 0 #1c1b180a, 0 1px 2px #1c1b180d;--shadow-raised:0 1px 2px #1c1b180f, 0 4px 12px #1c1b180f;--shadow-sheet:0 -1px 0 #1c1b180a, 0 -8px 32px #1c1b181f;--shadow-popover:0 2px 6px #1c1b1814, 0 12px 32px #1c1b1824}[data-theme=dark]{--shadow-card:none;--shadow-raised:0 0 0 .5px #ffffff0f;--shadow-sheet:0 0 0 .5px #ffffff14;--shadow-popover:0 0 0 .5px #ffffff14, 0 12px 32px #00000080}@media (prefers-color-scheme:dark){[data-theme=auto]{--shadow-card:none;--shadow-raised:0 0 0 .5px #ffffff0f;--shadow-sheet:0 0 0 .5px #ffffff14;--shadow-popover:0 0 0 .5px #ffffff14, 0 12px 32px #00000080}}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text-1);font:var(--text-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;margin:0}a{color:var(--tint);text-decoration:none}a:hover{color:var(--tint-pressed);text-underline-offset:2px;text-decoration:underline}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}::selection{background:var(--tint-soft-border)}button{font:inherit;color:inherit}html,body,#root{height:100%}#root{min-height:100dvh}.icon{flex-shrink:0;display:block}.shell{background:var(--bg);min-height:100dvh;color:var(--text-1)}.shell-phone{flex-direction:column;height:100dvh;display:flex;position:relative;overflow:hidden}.shell-wide{height:100dvh;display:flex;overflow:hidden}.shell-main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.shell-phone .shell-main{height:100%}.screen{flex:1;min-height:0;overflow-y:auto}.shell-phone .screen{padding-bottom:calc(var(--tabbar-height) + env(safe-area-inset-bottom))}.screen-body{box-sizing:border-box;width:min(100%, var(--content-max-wide));padding:calc(12px + env(safe-area-inset-top)) var(--gutter-phone) 32px;gap:var(--gap-section);flex-direction:column;margin:0 auto;display:flex}.shell-wide .screen-body{padding:calc(28px + env(safe-area-inset-top)) var(--gutter-tablet) 48px}.screen-body-narrow{width:min(100%, var(--content-max))}.screen-intro{margin-bottom:-12px}.screen-title{font:var(--text-large-title);letter-spacing:var(--tracking-tight);color:var(--text-1);text-wrap:balance;margin:0}.semester{flex-direction:column;gap:10px;display:flex}.semester-label{font:var(--text-title-3);color:var(--text-1);margin:0;padding:0 4px}.course-list{gap:var(--gap-stack);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.course-code{font:var(--text-caption);color:var(--text-3)}.empty-card{border-radius:var(--radius-md);border:1px dashed var(--separator-strong)}.empty{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:20px 16px;display:flex}.empty-icon{background:var(--surface-sunken);width:40px;height:40px;color:var(--text-3);border-radius:50%;justify-content:center;align-items:center;display:flex}.empty-message,.note{font:var(--text-subhead);color:var(--text-2);text-wrap:pretty;margin:0}.empty-message{max-width:280px}.group{flex-direction:column;gap:6px;display:flex}.group-header{font:var(--weight-semibold) var(--size-footnote) / var(--lh-footnote) var(--font-mono);color:var(--text-3);text-transform:uppercase;letter-spacing:var(--tracking-caps);margin:0;padding:0 16px}.group-card{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card), inset 0 0 0 .5px var(--separator);padding:12px}.group-footer{font:var(--text-footnote);color:var(--text-3);text-wrap:pretty;margin:0;padding:0 16px}.segments{background:var(--surface-sunken);box-shadow:inset 0 0 0 .5px var(--separator);border-radius:9px;gap:2px;padding:2px;display:flex}.segment{min-width:0;min-height:44px;color:var(--text-2);cursor:pointer;font:var(--weight-medium) var(--size-subhead) / var(--lh-subhead) var(--font-ui);transition:background var(--dur-quick) var(--ease-standard), color var(--dur-quick) var(--ease-standard);background:0 0;border:none;border-radius:7px;flex:1;padding:0 8px}.segment[aria-selected=true]{background:var(--surface-raised);color:var(--text-1);box-shadow:var(--shadow-raised);font-weight:var(--weight-semibold)}.text-action{min-height:44px;font:var(--text-body);color:var(--tint);align-self:flex-start;align-items:center;text-decoration:none;display:inline-flex}.text-action:hover{color:var(--tint-pressed);text-underline-offset:2px;text-decoration:underline}.tabbar{z-index:20;padding-bottom:env(safe-area-inset-bottom);background:var(--material);-webkit-backdrop-filter:var(--blur-material);border-top:.5px solid var(--separator-strong);display:flex;position:absolute;bottom:0;left:0;right:0}.tab{height:var(--tabbar-height);color:var(--text-3);font:var(--weight-medium) 10px / 12px var(--font-ui);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;text-decoration:none;display:flex}.tab[aria-current=page]{color:var(--tint)}.tab:hover{color:var(--text-3);text-decoration:none}.tab[aria-current=page]:hover{color:var(--tint)}.tab:focus-visible{outline-offset:-2px}.sidebar{width:var(--sidebar-width);box-sizing:border-box;height:100%;padding:calc(16px + env(safe-area-inset-top)) 12px 16px calc(12px + env(safe-area-inset-left));background:var(--bg-sidebar);border-right:.5px solid var(--separator-strong);flex-direction:column;flex-shrink:0;gap:18px;display:flex;overflow-y:auto}.sidebar-title{font:var(--text-title-3);color:var(--text-1);padding:4px 10px 0}.sidebar-nav,.sidebar-semester{flex-direction:column;gap:2px;display:flex}.sidebar-semester-label{font:var(--weight-semibold) var(--size-caption-1) / var(--lh-caption-1) var(--font-mono);color:var(--text-3);text-transform:uppercase;letter-spacing:var(--tracking-caps);padding:0 10px 4px}.sidebar-empty{font:var(--text-footnote);color:var(--text-4);padding:4px 10px}.side-item{box-sizing:border-box;text-align:left;cursor:pointer;width:100%;min-height:44px;color:var(--text-1);background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:6px 10px;text-decoration:none;display:flex}.side-item-course{padding-left:12px}.side-item svg{color:var(--tint)}.side-item[aria-current=page]{background:var(--tint);color:var(--text-on-tint)}.side-item[aria-current=page] svg{color:currentColor}.side-item:hover,.side-item:active{text-decoration:none}.side-item-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--weight-medium) var(--size-subhead) / var(--lh-subhead) var(--font-ui);flex:1;overflow:hidden}.side-course{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.side-course-code{font:var(--weight-semibold) var(--size-caption-2) / var(--lh-caption-2) var(--font-mono);color:var(--text-3);letter-spacing:.02em}.side-item[aria-current=page] .side-course-code{color:currentColor;opacity:.8}.side-badge{font:var(--weight-medium) var(--size-footnote) / 1 var(--font-mono);color:var(--text-3);font-variant-numeric:tabular-nums}.side-item[aria-current=page] .side-badge{color:currentColor}@media (hover:hover) and (pointer:fine){.side-item:hover{background:var(--surface-pressed)}.side-item[aria-current=page]:hover{background:var(--tint);color:var(--text-on-tint)}}@media (prefers-reduced-motion:reduce){.segment{transition:none}}.auth{background:var(--bg);min-height:100dvh;color:var(--text-1);justify-content:center;display:flex}.auth-card{box-sizing:border-box;width:100%;max-width:380px;padding:calc(80px + env(safe-area-inset-top)) 24px calc(40px + env(safe-area-inset-bottom));flex-direction:column;gap:28px;display:flex}.auth-brand{text-align:center;flex-direction:column;align-items:center;gap:14px;display:flex}.auth-mark{border-radius:18px;width:76px;height:76px}.auth-title{font:var(--text-title-1);color:var(--text-1);margin:0}.auth-subtitle,.auth-copy{font:var(--text-subhead);color:var(--text-2);text-wrap:pretty;margin:4px 0 0}.auth-form,.auth-stack{flex-direction:column;gap:14px;display:flex}.auth-status{font:var(--text-subhead);color:var(--text-2);margin:0}.field{flex-direction:column;gap:6px;display:flex}.field-input{box-sizing:border-box;background:var(--surface-raised);width:100%;height:44px;color:var(--text-1);border-radius:var(--radius-sm);border:1px solid var(--separator-strong);font:var(--text-body);transition:border-color var(--dur-quick) var(--ease-standard), box-shadow var(--dur-quick) var(--ease-standard);outline:none;padding:0 14px}.field-input:focus{border-color:var(--tint);box-shadow:0 0 0 3px var(--tint-soft-border)}.field-input-error{border-color:var(--wrong)}.field-hint,.field-error{font:var(--text-footnote)}.field-hint{color:var(--text-3)}.field-error,.form-error{color:var(--wrong)}.form-error,.form-note{font:var(--text-callout);text-wrap:pretty;margin:0}.form-note{color:var(--text-2)}.btn{box-sizing:border-box;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;width:100%;transition:background var(--dur-instant) var(--ease-standard), transform var(--dur-instant) var(--ease-standard);border:none;justify-content:center;align-items:center;gap:8px;display:inline-flex}.btn-lg{height:50px;font:var(--text-headline);padding:0 20px}.btn-md{height:44px;font:var(--weight-semibold) var(--size-callout) / var(--lh-callout) var(--font-ui);padding:0 16px}.btn-primary:active:not(:disabled){background:var(--tint-pressed)}.btn-secondary{background:var(--tint-soft);color:var(--tint)}.btn-secondary:active:not(:disabled){background:var(--tint-soft-border)}.btn-quiet{background:var(--surface-sunken);color:var(--text-1)}.btn-destructive{background:var(--wrong-soft);color:var(--wrong)}.sheet{box-sizing:border-box;width:min(100%,420px);padding:22px 20px calc(20px + env(safe-area-inset-bottom));background:var(--surface);box-shadow:var(--shadow-card);border-radius:16px 16px 12px 12px;flex-direction:column;gap:14px;display:flex}.sheet-copy{font:var(--text-callout);color:var(--text-2);text-wrap:pretty;margin:0}.passkey-row{justify-content:space-between;align-items:center;gap:12px;min-height:44px;display:flex}.passkey-name{font:var(--text-body);color:var(--text-1)}.passkey-remove{width:auto;height:32px;min-height:32px;font:var(--weight-semibold) var(--size-subhead) / var(--lh-subhead) var(--font-ui);padding:0 12px}@media (width>=768px) and (height>=600px){.sheet-backdrop{align-items:center}.sheet{border-radius:16px;padding-bottom:20px}}@media (prefers-reduced-motion:reduce){.btn,.field-input{transition:none}.btn:active:not(:disabled){transform:none}}.stack{flex-direction:column;gap:12px;display:flex}.form-grid{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field-label{font:var(--weight-semibold) var(--size-footnote) / var(--lh-footnote) var(--font-mono);color:var(--text-2)}.field-hint{font:var(--text-caption);color:var(--text-3)}.control{box-sizing:border-box;border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:44px;color:var(--text-1);box-shadow:inset 0 0 0 .5px var(--separator-strong);font:var(--text-body);border:none;padding:10px 12px;font-size:16px}.control-mono{resize:vertical;min-height:160px;font:var(--text-mono);font-size:16px}.btn{box-sizing:border-box;border-radius:var(--radius-sm);cursor:pointer;text-align:center;min-height:44px;font:var(--weight-semibold) var(--size-body) / var(--lh-body) var(--font-ui);border:none;justify-content:center;align-items:center;padding:0 16px;text-decoration:none;display:inline-flex}.btn-full{width:100%}.btn-primary{background:var(--tint);color:var(--text-on-tint)}.btn-primary:hover{background:var(--tint-pressed);color:var(--text-on-tint);text-decoration:none}.btn-secondary{background:var(--surface);color:var(--text-1);box-shadow:inset 0 0 0 .5px var(--separator-strong)}.btn-secondary:hover{background:var(--surface-pressed);color:var(--text-1);text-decoration:none}.btn-plain{color:var(--tint);background:0 0}.btn:disabled{opacity:.4;cursor:default}.btn:active:not(:disabled){transform:scale(.98)}.file-pick{border-radius:var(--radius-sm);border:1px dashed var(--separator-strong);background:var(--surface);min-height:72px;color:var(--tint);cursor:pointer;align-items:center;gap:12px;padding:16px;display:flex;position:relative}.file-pick-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.file-pick-name{font:var(--text-body);color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-input{opacity:0;cursor:pointer;font-size:16px;position:absolute;inset:0}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border-radius:var(--radius-pill);background:var(--surface-raised);box-shadow:inset 0 0 0 .5px var(--separator);font:var(--weight-medium) var(--size-caption-1) / var(--lh-caption-1) var(--font-mono);color:var(--text-2);padding:3px 8px}.chip-button{cursor:pointer;border:none;min-height:32px}.ready{border-radius:var(--radius-md);background:var(--correct-soft);box-shadow:inset 0 0 0 1px var(--correct-border);flex-direction:column;gap:10px;padding:16px;display:flex}.ready-title{font:var(--text-headline);color:var(--correct);align-items:center;gap:8px;display:flex}.issues{border-radius:var(--radius-md);font:var(--text-footnote);flex-direction:column;gap:8px;margin:0;padding:12px 12px 12px 28px;display:flex}.issues ul{margin:0;padding-left:4px}.issues-error{background:var(--wrong-soft);box-shadow:inset 0 0 0 1px var(--wrong-border);color:var(--text-1)}.issues-warning{background:var(--partial-soft);box-shadow:inset 0 0 0 1px var(--partial-border);color:var(--text-1)}.form-error{font:var(--text-subhead);color:var(--wrong);margin:0}.course-card,.terms-tile{border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-card), inset 0 0 0 .5px var(--separator);color:inherit;flex-direction:column;gap:4px;padding:16px;text-decoration:none;display:flex}.course-card:hover,.terms-tile:hover{color:inherit;background:var(--surface-pressed);text-decoration:none}.course-card-title{font:var(--text-headline);color:var(--text-1)}.course-meta,.term-meaning{font:var(--text-subhead);color:var(--text-2);margin:0}.week{flex-direction:column;gap:8px;display:flex}.set-list,.term-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.set-row,.term-row,.course-edit,.week-edit,.set-move{border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-card), inset 0 0 0 .5px var(--separator);flex-direction:column;gap:8px;padding:12px;display:flex}.row-actions{flex-wrap:wrap;gap:8px;display:flex}.done{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:32px 0 8px;display:flex}.done-mark{background:var(--correct-soft);width:64px;height:64px;color:var(--correct);border-radius:50%;justify-content:center;align-items:center;display:flex}.done-title{font:var(--text-title-1);color:var(--text-1);margin:0}.done-copy{max-width:340px;font:var(--text-callout);color:var(--text-2);text-wrap:pretty;margin:0}.sheet-backdrop{z-index:40;background:var(--overlay);justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.sheet{box-sizing:border-box;width:min(100%,480px);max-height:min(90dvh,640px);padding:20px 16px calc(16px + env(safe-area-inset-bottom));border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--surface-raised);box-shadow:var(--shadow-card);overflow-y:auto}.sheet-title{font:var(--text-title-3);color:var(--text-1);text-wrap:balance;margin:0}.sheet-message{font:var(--text-callout);color:var(--text-2);text-wrap:pretty;margin:8px 0 0}.sheet-actions{flex-direction:column;gap:8px;margin-top:16px;display:flex}@media (width>=768px) and (height>=600px){.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.form-grid .field:last-child,.form-grid .chips,.form-grid .ready{grid-column:1/-1}.sheet-backdrop{align-items:center;padding:24px}.sheet{border-radius:var(--radius-lg);padding:24px}}@media (prefers-reduced-motion:reduce){.btn:active:not(:disabled){transform:none}}
