@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/MySchedule/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/MySchedule/assets/manrope-greek-wght-normal-DL7QRZyv.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/MySchedule/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2)format("woff2-variations");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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/MySchedule/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/MySchedule/assets/manrope-latin-wght-normal-DHIcAJRg.woff2)format("woff2-variations");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-display:swap;font-weight:400;src:url(/MySchedule/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/MySchedule/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");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-display:swap;font-weight:400;src:url(/MySchedule/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/MySchedule/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");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-display:swap;font-weight:400;src:url(/MySchedule/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/MySchedule/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");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-display:swap;font-weight:400;src:url(/MySchedule/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/MySchedule/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/MySchedule/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/MySchedule/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");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}:root{--color-paper:oklch(98.2% .006 255);--color-surface:oklch(99.4% .003 255);--color-surface-raised:oklch(100% .002 255);--color-surface-muted:oklch(95.9% .009 255);--color-rule:oklch(88.2% .012 255);--color-rule-strong:oklch(76% .02 255);--color-ink:oklch(20% .025 258);--color-ink-2:oklch(35% .025 258);--color-muted:oklch(48% .022 258);--color-faint:oklch(47% .022 258);--color-accent:oklch(53% .2 257);--color-accent-hover:oklch(47% .2 257);--color-accent-soft:oklch(94.5% .035 257);--color-focus:oklch(53% .2 257);--color-warning:oklch(50% .14 66);--color-danger:oklch(58% .18 28);--color-success:oklch(54% .13 155);--course-1-bg:oklch(91% .055 255);--course-1-ink:oklch(32% .12 257);--course-2-bg:oklch(92% .06 175);--course-2-ink:oklch(31% .09 175);--course-3-bg:oklch(92% .06 62);--course-3-ink:oklch(34% .1 50);--course-4-bg:oklch(92% .055 315);--course-4-ink:oklch(34% .1 315);--course-5-bg:oklch(91% .06 135);--course-5-ink:oklch(31% .09 145);--course-6-bg:oklch(91% .05 225);--course-6-ink:oklch(31% .1 230);--course-7-bg:oklch(92% .05 22);--course-7-ink:oklch(34% .1 25);--course-8-bg:oklch(90% .04 285);--course-8-ink:oklch(31% .1 285);--font-display:"Manrope Variable", "Avenir Next", ui-sans-serif, sans-serif;--font-body:"Manrope Variable", "Avenir Next", ui-sans-serif, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--space-3xs:.125rem;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--space-3xl:6rem;--text-xs:.75rem;--text-sm:.8rem;--text-base:1rem;--text-md:1.15rem;--text-lg:1.4rem;--text-xl:1.85rem;--text-2xl:clamp(2rem, 3vw, 2.8rem);--radius-xs:.25rem;--radius-sm:.375rem;--radius-md:.625rem;--radius-lg:.875rem;--radius-pill:999px;--rule-thin:1px;--dur-fast:.12s;--dur-base:.18s;--dur-slow:.28s;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--shadow-whisper:0 1px 2px oklch(20% .025 258/.06), 0 10px 30px oklch(20% .025 258/.06);--z-base:1;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-modal:400;--z-tooltip:600}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.static{position:static}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.contents{display:contents}.grid{display:grid}.hidden{display:none}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}*{box-sizing:border-box}html,body,#root{min-height:100%}html,body{overflow-x:clip}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}button,input{font:inherit}button{color:inherit}button,label,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,summary:focus-visible,.fc-event:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}::selection{background:var(--color-accent-soft);color:var(--color-ink)}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.button,.icon-button{border:var(--rule-thin) solid transparent;cursor:pointer;justify-content:center;align-items:center;gap:var(--space-xs);white-space:nowrap;min-height:2.5rem;transition:background-color var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out), transform var(--dur-fast) var(--ease-out);display:inline-flex}.button:active,.icon-button:active{transform:translateY(1px)}.button:disabled{cursor:wait;opacity:.6}.button{border-radius:var(--radius-sm);font-weight:700;font-size:var(--text-sm);padding:.6rem .9rem}.button-primary{background:var(--color-accent);color:var(--color-surface-raised)}.button-primary:hover{background:var(--color-accent-hover)}.button-secondary{background:var(--color-surface);border-color:var(--color-rule)}.button-secondary:hover,.button-quiet:hover,.icon-button:hover{background:var(--color-surface-muted);border-color:var(--color-rule-strong)}.button-quiet{border-color:var(--color-rule);background:0 0}.icon-button{background:var(--color-surface);border-color:var(--color-rule);border-radius:var(--radius-sm);width:2.5rem;padding:0}.compact-button{min-height:2.25rem;padding:.45rem .7rem}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.empty-shell{min-height:100vh;padding:var(--space-lg) clamp(var(--space-md), 4vw, var(--space-2xl));grid-template-rows:auto 1fr auto;display:grid}.empty-wordmark{align-items:center;gap:var(--space-sm);font-family:var(--font-display);letter-spacing:-.03em;font-weight:800;display:flex}.wordmark-dot{background:var(--color-accent);border-radius:var(--radius-xs);width:.7rem;height:.7rem}.empty-state{align-items:center;gap:clamp(var(--space-xl), 7vw, var(--space-3xl));width:min(68rem,100%);padding-block:var(--space-2xl);grid-template-columns:minmax(0,.9fr) minmax(22rem,1fr);margin:auto;display:grid}.empty-copy{max-width:32rem}.empty-icon{background:var(--color-accent-soft);width:3rem;height:3rem;color:var(--color-accent);border-radius:var(--radius-md);margin-bottom:var(--space-xl);place-items:center;display:grid}.empty-copy h1{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.04em;margin:0 0 var(--space-lg);overflow-wrap:anywhere;line-height:1.08}.empty-copy>p{color:var(--color-ink-2);max-width:46ch;margin:0}.local-promise{align-items:center;gap:var(--space-xs);color:var(--color-muted);font-size:var(--text-sm);margin-top:var(--space-lg);display:flex}.drop-zone{background:var(--color-surface);border:var(--rule-thin) dashed var(--color-rule-strong);border-radius:var(--radius-lg);justify-content:center;align-items:center;gap:var(--space-sm);text-align:center;min-height:25rem;color:var(--color-muted);padding:var(--space-xl);transition:border-color var(--dur-base) var(--ease-out), background-color var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);flex-direction:column;display:flex}.drop-zone.is-dragging{border-color:var(--color-accent);background:var(--color-accent-soft);transform:scale(.995)}.drop-zone>svg{color:var(--color-accent);margin-bottom:var(--space-xs)}.drop-zone strong{color:var(--color-ink);font-size:var(--text-md)}.drop-zone>span,.drop-zone small{font-size:var(--text-sm)}.import-error,.inline-error{color:var(--color-danger);font-size:var(--text-sm)}.empty-footer,.app-footer{border-top:var(--rule-thin) solid var(--color-rule);justify-content:space-between;gap:var(--space-md);color:var(--color-muted);font-size:var(--text-sm);padding-top:var(--space-md);display:flex}.review-shell{width:min(72rem,100% - 2rem);padding-block:var(--space-2xl);margin:0 auto}.review-heading{align-items:flex-start;gap:var(--space-lg);max-width:50rem;display:flex}.review-heading h1{font-size:var(--text-2xl);font-family:var(--font-display);letter-spacing:-.04em;margin:0}.review-heading p{color:var(--color-muted);margin:var(--space-xs) 0 0}.success-glyph{width:3.25rem;height:3.25rem;color:var(--color-accent);background:var(--color-accent-soft);border-radius:var(--radius-md);flex:0 0 3.25rem;place-items:center;display:grid;position:relative}.success-glyph svg:last-child{color:var(--color-surface);background:var(--color-success);border-radius:var(--radius-pill);padding:.15rem;position:absolute;bottom:-.15rem;right:-.15rem}.review-summaries{border-block:var(--rule-thin) solid var(--color-rule);margin-block:var(--space-xl);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.term-review-summary{padding-block:var(--space-lg)}.term-review-summary+.term-review-summary{border-left:var(--rule-thin) solid var(--color-rule);padding-left:var(--space-xl)}.term-review-summary h2{font-size:var(--text-md);margin:0 0 var(--space-2xs)}.term-review-summary p{color:var(--color-muted);margin:0}.review-list{border-top:var(--rule-thin) solid var(--color-rule)}.review-row{gap:var(--space-sm);padding-block:var(--space-sm);border-bottom:var(--rule-thin) solid var(--color-rule);grid-template-columns:9rem minmax(15rem,1fr) 7.5rem 7rem;align-items:center;display:grid}.review-row input{border:var(--rule-thin) solid transparent;border-radius:var(--radius-xs);background:0 0;width:100%;min-width:0;padding:.5rem;font-weight:650}.review-row input:hover,.review-row input:focus{background:var(--color-surface);border-color:var(--color-rule)}.review-row label{align-items:center;gap:var(--space-xs);color:var(--color-muted);display:flex}.review-row label input{width:3.5rem}.review-actions{justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-xl);display:flex}.status-badge{border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-pill);width:fit-content;font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;align-items:center;padding:.2rem .55rem;display:inline-flex}.status-enrolled{color:var(--color-success)}.status-waitlisted{color:var(--color-warning);border-style:dashed}.status-dropped{color:var(--color-muted);background:var(--color-surface-muted)}.app-shell{width:min(100%,112rem);min-height:100vh;padding-inline:clamp(var(--space-md), 3vw, var(--space-xl));flex-direction:column;margin:0 auto;display:flex}.app-header{gap:var(--space-lg);min-height:8.75rem;padding-block:var(--space-lg) var(--space-md);border-bottom:var(--rule-thin) solid var(--color-rule);grid-template-columns:1fr auto;grid-template-areas:"brand actions""controls controls";align-items:center;display:grid}.brand-block{align-items:center;gap:var(--space-sm);grid-area:brand;min-width:0;display:flex}.brand-mark{background:var(--color-accent);border-radius:var(--radius-sm);align-items:flex-end;gap:2px;width:1.5rem;height:1.5rem;padding:.2rem;display:flex}.brand-mark span{background:var(--color-surface-raised);border-radius:1px;width:4px;display:block}.brand-mark span:first-child{height:45%}.brand-mark span:nth-child(2){height:72%}.brand-mark span:nth-child(3){height:100%}.brand-block h1{font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.035em;margin:0;line-height:1.1}.brand-block p{color:var(--color-muted);font-size:var(--text-sm);margin:var(--space-2xs) 0 0}.header-actions{justify-content:flex-end;align-items:center;gap:var(--space-xs);grid-area:actions;display:flex;position:relative}.privacy-note{align-items:center;gap:var(--space-xs);color:var(--color-muted);font-size:var(--text-sm);margin-right:var(--space-xs);display:flex}.primary-controls{justify-content:space-between;align-items:flex-end;gap:var(--space-lg);grid-area:controls;display:flex}.segmented{padding:var(--space-2xs);background:var(--color-surface-muted);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-md);align-items:center;display:inline-flex}.segmented button{border-radius:var(--radius-sm);min-height:2.6rem;font-size:var(--text-sm);cursor:pointer;align-items:center;gap:var(--space-xs);white-space:nowrap;transition:color var(--dur-base) var(--ease-out), background-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);background:0 0;border:0;padding:.55rem 1rem;font-weight:700;display:inline-flex}.segmented button:hover{color:var(--color-accent)}.segmented button.is-active{background:var(--color-surface-raised);color:var(--color-ink);box-shadow:0 1px 2px oklch(20% .025 258/.08)}.term-switcher button{justify-content:space-between;min-width:9.5rem}.term-switcher button span{color:var(--color-muted);font-weight:500}.segmented-small button{min-height:2.4rem;padding-inline:.8rem}.schedule-main{padding-block:var(--space-lg) var(--space-2xl);flex:1}.term-summary{margin-bottom:var(--space-sm);color:var(--color-muted);font-size:var(--text-sm);justify-content:space-between;align-items:center;display:flex}.term-summary p{margin:0}.term-summary strong{color:var(--color-ink)}.term-summary>span{font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em}.filter-strip{align-items:center;gap:var(--space-md);min-height:3.4rem;padding:var(--space-xs) var(--space-sm);border:var(--rule-thin) solid var(--color-rule);background:var(--color-surface);border-radius:var(--radius-md) var(--radius-md) 0 0;border-bottom:0;grid-template-columns:auto 1fr auto;display:grid}.filter-heading{align-items:center;gap:var(--space-xs);font-size:var(--text-sm);padding-right:var(--space-md);border-right:var(--rule-thin) solid var(--color-rule);font-weight:700;display:flex}.course-toggles{align-items:center;gap:var(--space-xs);scrollbar-width:none;display:flex;overflow-x:auto}.course-toggles::-webkit-scrollbar{display:none}.course-toggle,.waitlist-toggle{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;min-height:2rem;font-size:var(--text-sm);transition:background-color var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out), opacity var(--dur-base) var(--ease-out);align-items:center;gap:.4rem;padding:.35rem .55rem;font-weight:700;display:inline-flex;position:relative}.course-toggle:hover,.waitlist-toggle:hover{background:var(--color-surface-muted)}.course-toggle input,.waitlist-toggle input{opacity:0;pointer-events:none;position:absolute}:is(.course-toggle:has(input:focus-visible),.waitlist-toggle:has(input:focus-visible)){outline:3px solid var(--color-focus);outline-offset:1px}.course-toggle svg{color:var(--color-faint)}.course-toggle.is-off{color:var(--color-muted);opacity:.65}.course-dot{border-radius:var(--radius-xs);width:.55rem;height:.55rem}.waitlist-toggle{color:var(--color-ink-2);border-left:var(--rule-thin) solid var(--color-rule);padding-left:var(--space-md);border-radius:0}.waitlist-toggle:has(input:checked){color:var(--color-warning)}.calendar-panel{background:var(--color-surface);border:var(--rule-thin) solid var(--color-rule);border-radius:0 0 var(--radius-md) var(--radius-md);overflow:clip}.calendar-toolbar{min-height:4rem;padding:var(--space-sm) var(--space-md);border-bottom:var(--rule-thin) solid var(--color-rule);justify-content:space-between;align-items:center;display:flex}.calendar-range{align-items:center;gap:var(--space-sm);display:flex}.calendar-range svg{color:var(--color-accent)}.calendar-range h2{font-size:var(--text-md);letter-spacing:-.02em;margin:0}.calendar-actions,.nav-buttons{align-items:center;gap:var(--space-xs);display:flex}.calendar-actions .icon-button{width:2.25rem;height:2.25rem;min-height:2.25rem}.calendar-scroll{width:100%;overflow-x:auto}.calendar-scroll>div{min-width:53rem}.fc{--fc-border-color:var(--color-rule);--fc-page-bg-color:var(--color-surface);--fc-neutral-bg-color:var(--color-surface-muted);--fc-list-event-hover-bg-color:var(--color-surface-muted);color:var(--color-ink-2);font-family:var(--font-body)}.fc .fc-scrollgrid{border:0}.fc .fc-timegrid-axis,.fc .fc-timegrid-slot-label{width:4.5rem}.fc .fc-col-header-cell-cushion{color:var(--color-ink);font-size:var(--text-sm);padding:.75rem .4rem;font-weight:750;text-decoration:none}.fc .fc-timegrid-slot{border-bottom:0;height:2.3rem}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-faint)}.fc .fc-timegrid-now-indicator-line{border-color:var(--color-danger);border-width:1px}.fc .fc-timegrid-now-indicator-arrow{border-color:transparent transparent transparent var(--color-danger)}.fc .fc-timegrid-col.fc-day-today{background:var(--color-accent-soft)}@supports (color:color-mix(in lab, red, red)){.fc .fc-timegrid-col.fc-day-today{background:color-mix(in oklab, var(--color-accent-soft) 36%, transparent)}}.fc .fc-event{border-radius:var(--radius-sm);cursor:pointer;transition:filter var(--dur-base) var(--ease-out), transform var(--dur-fast) var(--ease-out);border:0;padding:0;overflow:hidden;box-shadow:inset 3px 0}.fc .fc-event:hover{filter:saturate(1.12)brightness(.985);transform:translateY(-1px)}.fc .fc-event-main{color:inherit;padding:.35rem .42rem}.calendar-event-content{flex-direction:column;gap:1px;min-width:0;line-height:1.15;display:flex}.event-code-row{justify-content:space-between;align-items:center;gap:.25rem;display:flex}.event-code-row strong{font-size:var(--text-sm);letter-spacing:-.01em;font-weight:800}.event-title,.event-meta{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.event-title{font-size:.72rem;font-weight:650}.event-meta{opacity:.8;margin-top:.15rem;font-size:.67rem}.fc .event-waitlisted{box-shadow:none;opacity:.72;border:2px dashed}.fc .event-conflict{outline:2px solid var(--color-warning);outline-offset:-2px}.course-groups{gap:var(--space-xl);max-width:70rem;display:grid}.course-group-heading{align-items:center;gap:var(--space-sm);border-bottom:var(--rule-thin) solid var(--color-rule);padding-bottom:var(--space-sm);display:flex}.course-group-heading h2{font-size:var(--text-lg);letter-spacing:-.03em;margin:0}.course-group-heading span{color:var(--color-muted);font-family:var(--font-mono)}.course-group-list{display:grid}.course-list-row{gap:var(--space-xl);padding:var(--space-lg) 0 var(--space-lg) var(--space-lg);border-bottom:var(--rule-thin) solid var(--color-rule);grid-template-columns:minmax(15rem,.8fr) minmax(20rem,1.4fr);display:grid;position:relative}.course-rail{left:0;top:var(--space-lg);border-radius:var(--radius-xs);width:.45rem;height:2.7rem;position:absolute}.course-list-row header strong{font-family:var(--font-mono);color:var(--color-accent);font-size:var(--text-sm)}.course-list-row header h3{font-size:var(--text-md);letter-spacing:-.02em;margin:.35rem 0 .65rem}.component-list{gap:var(--space-md);display:grid}.component-row{gap:var(--space-md);color:var(--color-ink-2);font-size:var(--text-sm);grid-template-columns:8rem minmax(12rem,1fr) minmax(10rem,.8fr);display:grid}.component-name{flex-direction:column;display:flex}.component-name span{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs)}.component-row p{align-items:center;gap:.35rem;margin:0;display:flex}.component-meetings{gap:.3rem;display:grid}.component-instructor,.time-missing{color:var(--color-muted)}.dropped-group{border-bottom:var(--rule-thin) solid var(--color-rule)}.collapsed-group summary{align-items:center;gap:var(--space-sm);padding-block:var(--space-md);cursor:pointer;list-style:none;display:flex}.collapsed-group summary::-webkit-details-marker{display:none}.collapsed-group summary span{font-size:var(--text-md);font-weight:750}.collapsed-group summary small{color:var(--color-muted)}.collapsed-group summary svg{transition:transform var(--dur-base) var(--ease-out)}.collapsed-group[open] summary svg{transform:rotate(180deg)}.meeting-period{gap:var(--space-3xs);padding-block:var(--space-2xs);display:grid}.meeting-period+.meeting-period{margin-top:var(--space-xs);border-top:var(--rule-thin) solid var(--color-rule);padding-top:var(--space-xs)}.meeting-dates{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);padding-left:1.35rem}.drawer-layer{z-index:var(--z-modal);justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer-scrim{cursor:default;background:oklch(20% .025 258/.22);border:0;width:100%;position:absolute;inset:0}.course-drawer{background:var(--color-surface-raised);width:min(28rem,92vw);min-height:100%;box-shadow:var(--shadow-whisper);padding:var(--space-lg);animation:drawer-in var(--dur-slow) var(--ease-out) both;position:relative}@keyframes drawer-in{0%{opacity:.6;transform:translate(2rem)}to{opacity:1;transform:none}}.drawer-topline{justify-content:space-between;align-items:center;display:flex}.drawer-heading{border-bottom:var(--rule-thin) solid var(--color-rule);padding-block:var(--space-xl)}.drawer-heading>strong{font-family:var(--font-mono);color:var(--color-accent);font-size:var(--text-sm)}.drawer-heading h2{margin:var(--space-xs) 0;font-size:var(--text-xl);letter-spacing:-.035em;line-height:1.18}.drawer-heading p{color:var(--color-muted);margin:0}.detail-list{margin:0;display:grid}.detail-list>div{gap:var(--space-md);padding-block:var(--space-md);border-bottom:var(--rule-thin) solid var(--color-rule);grid-template-columns:8rem 1fr;display:grid}.detail-list dt{align-items:center;gap:var(--space-xs);color:var(--color-muted);font-size:var(--text-sm);display:flex}.detail-list dd{font-weight:650;font-size:var(--text-sm);overflow-wrap:anywhere;margin:0}.section-topic{margin-top:var(--space-lg);padding:var(--space-md);background:var(--color-accent-soft);border-radius:var(--radius-sm);gap:.25rem;display:grid}.section-topic span{color:var(--color-muted);font-size:var(--text-xs);font-family:var(--font-mono);text-transform:uppercase}.app-footer{padding-block:var(--space-md) var(--space-lg)}.course-color-1,.course-color-dot-1,.course-color-fill-1{background:var(--course-1-bg)!important;color:var(--course-1-ink)!important}.course-color-2,.course-color-dot-2,.course-color-fill-2{background:var(--course-2-bg)!important;color:var(--course-2-ink)!important}.course-color-3,.course-color-dot-3,.course-color-fill-3{background:var(--course-3-bg)!important;color:var(--course-3-ink)!important}.course-color-4,.course-color-dot-4,.course-color-fill-4{background:var(--course-4-bg)!important;color:var(--course-4-ink)!important}.course-color-5,.course-color-dot-5,.course-color-fill-5{background:var(--course-5-bg)!important;color:var(--course-5-ink)!important}.course-color-6,.course-color-dot-6,.course-color-fill-6{background:var(--course-6-bg)!important;color:var(--course-6-ink)!important}.course-color-7,.course-color-dot-7,.course-color-fill-7{background:var(--course-7-bg)!important;color:var(--course-7-ink)!important}.course-color-8,.course-color-dot-8,.course-color-fill-8{background:var(--course-8-bg)!important;color:var(--course-8-ink)!important}@media (width<=60rem){.empty-state{grid-template-columns:1fr;max-width:38rem}.empty-copy{max-width:none}.drop-zone{min-height:20rem}.filter-strip{gap:var(--space-xs);grid-template-columns:1fr}.filter-heading{border-right:0;padding-right:0}.waitlist-toggle{border-left:0;padding-left:.55rem}.course-list-row{gap:var(--space-lg);grid-template-columns:1fr}.component-row{grid-template-columns:7rem 1fr}.component-instructor{grid-column:2}}@media (width<=40rem){.empty-shell{padding:var(--space-md)}.empty-state{padding-block:var(--space-xl)}.empty-copy h1{font-size:var(--text-xl)}.drop-zone{min-height:18rem}.empty-footer,.app-footer{flex-direction:column}.review-shell{width:min(100% - 1.5rem,72rem);padding-block:var(--space-xl)}.review-heading{gap:var(--space-md);flex-direction:column}.review-summaries{grid-template-columns:1fr}.term-review-summary+.term-review-summary{border-left:0;border-top:var(--rule-thin) solid var(--color-rule);padding-left:0}.review-row{grid-template-columns:6.8rem minmax(0,1fr)}.review-row label,.review-row>.status-badge{grid-column:auto}.review-actions .button{flex:1}.app-shell{padding-inline:var(--space-sm)}.app-header{gap:var(--space-md);grid-template-columns:1fr auto}.privacy-note,.import-button span{display:none}.import-button{width:2.5rem;padding:0}.header-actions{gap:var(--space-2xs)}.primary-controls{align-items:stretch;gap:var(--space-sm);flex-direction:column}.term-switcher,.segmented-small{grid-template-columns:1fr 1fr;display:grid}.term-switcher button{justify-content:center;min-width:0}.term-switcher button span,.term-summary>span{display:none}.calendar-toolbar{align-items:flex-start;gap:var(--space-sm)}.calendar-range h2{font-size:var(--text-base)}.calendar-actions{flex-wrap:wrap;justify-content:flex-end}.calendar-actions .button-secondary{display:none}.course-list-row{padding-left:var(--space-md)}.component-row{gap:var(--space-xs);grid-template-columns:1fr}.component-instructor{grid-column:1}.detail-list>div{gap:var(--space-xs);grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
