@import"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=Fira+Code:wght@300..700&display=swap";:root{--font-display: "Manrope", system-ui, -apple-system, sans-serif;--font-body: "DM Sans", system-ui, -apple-system, sans-serif;--font-mono: "Fira Code", ui-monospace, monospace;--bg: #e4e9f2;--bg-secondary: #d8dfe9;--surface: rgba(228, 233, 242, .72);--surface-hover: rgba(216, 223, 233, .82);--text: oklch(.12 .04 260);--text-secondary: oklch(.32 .03 260);--text-muted: oklch(.4 .02 260);--primary: oklch(.42 .14 265);--primary-light: oklch(.93 .03 265);--primary-hover: oklch(.36 .14 265);--primary-subtle: oklch(.42 .14 265 / .08);--text-on-primary: #fff;--success: oklch(.58 .14 158);--success-light: oklch(.95 .03 158);--warning: oklch(.72 .14 80);--warning-light: oklch(.96 .03 80);--danger: oklch(.55 .18 25);--danger-light: oklch(.96 .03 25);--success-badge-text: oklch(.33 .12 158);--warning-badge-text: oklch(.38 .12 80);--danger-badge-text: oklch(.35 .15 25);--blue-badge-bg: oklch(.92 .04 250);--blue-badge-text: oklch(.35 .12 250);--border: oklch(.88 .008 260 / .6);--border-hover: oklch(.8 .012 260 / .7);--border-focus: oklch(.42 .14 265 / .4);--shadow-xs: 0 1px 2px oklch(.2 .03 260 / .05);--shadow-sm: 0 2px 4px oklch(.2 .03 260 / .06), 0 1px 2px oklch(.2 .03 260 / .03);--shadow-md: 0 4px 12px oklch(.2 .03 260 / .08), 0 2px 4px oklch(.2 .03 260 / .04);--shadow-lg: 0 12px 28px oklch(.2 .03 260 / .1), 0 4px 8px oklch(.2 .03 260 / .04);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 999px;--ease: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-spring: cubic-bezier(.22, 1.2, .36, 1);--duration: .2s;--duration-slow: .3s;--duration-glass: .4s;--glass-bg: rgba(255, 255, 255, .72);--glass-bg-subtle: rgba(255, 255, 255, .5);--glass-border: rgba(255, 255, 255, .18);--glass-blur: blur(12px);--glass-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 4px 12px rgba(0, 0, 0, .08);--overlay-bg: rgba(0, 0, 0, .4);--overlay-blur: blur(4px);--z-base: 1;--z-content: 5;--z-elevated: 10;--z-dropdown: 100;--z-sticky: 500;--z-navbar: 1000;--z-navbar-dropdown: 1002;--z-tooltip: 1050;--z-overlay: 1100;--z-modal: 1150;--z-toast: 1200;--z-a11y: 2000;--chart-primary: #3b4a8c;--chart-success: #3a9060;--chart-warning: #b89430;--chart-danger: #c04838;--chart-muted: #8890a0;--chart-grid: rgba(20, 20, 60, .06);--chart-text: rgba(20, 20, 60, .5);--chart-font: rgba(20, 20, 60, .6);--chart-first-pass-bg: rgba(58, 144, 96, .07);--chart-second-pass-bg: rgba(184, 148, 48, .07);--chart-instruction-bg: rgba(59, 74, 140, .07);--chart-confidence-band: rgba(59, 74, 140, .1);--chart-tooltip-bg: #ffffff;--chart-tooltip-border: #e0e0e8;--shader-color-1: #7b8da6;--shader-color-2: #9aaabe;--shader-color-3: #b5c2d4;--shader-color-4: #cdd6e4;--shader-color-5: #e4e9f2;--font-size-xs: clamp(.75rem, .73rem + .1vw, .8rem);--font-size-sm: clamp(.8rem, .77rem + .15vw, .875rem);--font-size-base: clamp(.9rem, .86rem + .2vw, 1rem);--font-size-md: clamp(1rem, .95rem + .25vw, 1.125rem);--font-size-lg: clamp(1.1rem, 1.02rem + .35vw, 1.25rem);--font-size-xl: clamp(1.25rem, 1.13rem + .55vw, 1.5rem);--font-size-2xl: clamp(1.5rem, 1.3rem + .9vw, 2rem);--font-size-3xl: clamp(2rem, 1.7rem + 1.3vw, 2.5rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 2.5rem;--space-8: 3rem;--space-9: 4rem;--leading-tight: 1.2;--leading-normal: 1.5;--leading-relaxed: 1.7;--icon-xs: .875rem;--icon-sm: 1rem;--icon-md: 1.25rem;--icon-lg: 1.5rem;--icon-xl: 2rem;--icon-stroke: 2;--icon-stroke-sm: 1.5;--duration-fast: .15s;--duration-normal: .25s}html.dark{--bg: #1B1D1C;--bg-secondary: #242726;--surface: rgba(30, 33, 32, .65);--surface-hover: rgba(40, 43, 42, .75);--text: oklch(.95 .006 260);--text-secondary: oklch(.75 .01 260);--text-muted: oklch(.63 .01 260);--primary: oklch(.65 .13 265);--primary-light: oklch(.22 .04 265);--primary-hover: oklch(.72 .13 265);--primary-subtle: oklch(.65 .13 265 / .12);--text-on-primary: #fff;--success: oklch(.65 .13 158);--success-light: oklch(.2 .03 158);--warning: oklch(.76 .13 80);--warning-light: oklch(.22 .03 80);--danger: oklch(.65 .16 25);--danger-light: oklch(.2 .03 25);--success-badge-text: oklch(.75 .13 158);--warning-badge-text: oklch(.8 .13 80);--danger-badge-text: oklch(.75 .16 25);--blue-badge-bg: oklch(.22 .05 250);--blue-badge-text: oklch(.72 .12 250);--border: oklch(.25 .015 260 / .5);--border-hover: oklch(.33 .018 260 / .6);--border-focus: oklch(.65 .13 265 / .4);--shadow-xs: 0 1px 3px oklch(0 0 0 / .1);--shadow-sm: 0 2px 6px oklch(0 0 0 / .1), 0 1px 3px oklch(0 0 0 / .06);--shadow-md: 0 4px 16px oklch(0 0 0 / .12), 0 2px 6px oklch(0 0 0 / .06);--shadow-lg: 0 12px 36px oklch(0 0 0 / .14), 0 4px 12px oklch(0 0 0 / .06);--glass-bg: rgba(30, 33, 32, .75);--glass-bg-subtle: rgba(30, 33, 32, .5);--glass-border: rgba(255, 255, 255, .08);--glass-blur: blur(12px);--glass-shadow: 0 1px 3px rgba(0, 0, 0, .15), 0 4px 12px rgba(0, 0, 0, .2);--overlay-bg: rgba(0, 0, 0, .5);--overlay-blur: blur(4px);--chart-primary: #8896d8;--chart-success: #6cc890;--chart-warning: #d8b850;--chart-danger: #e08070;--chart-muted: #808090;--chart-grid: rgba(180, 190, 220, .07);--chart-text: rgba(220, 220, 240, .55);--chart-font: rgba(220, 220, 240, .7);--chart-first-pass-bg: rgba(108, 200, 144, .1);--chart-second-pass-bg: rgba(216, 184, 80, .1);--chart-instruction-bg: rgba(136, 150, 216, .1);--chart-confidence-band: rgba(136, 150, 216, .14);--chart-tooltip-bg: #1a1a2e;--chart-tooltip-border: #2a2a44;--shader-color-1: #284579;--shader-color-2: #213b68;--shader-color-3: #1d3358;--shader-color-4: #1a2940;--shader-color-5: #1B1D1C}.tabular-nums{font-variant-numeric:tabular-nums}.empty-state{color:var(--text-secondary);padding:var(--space-5) 0;text-align:center}.flex-shrink-0{flex-shrink:0}.icon-xs{width:var(--icon-xs);height:var(--icon-xs)}.icon-sm{width:var(--icon-sm);height:var(--icon-sm)}.icon-md{width:var(--icon-md);height:var(--icon-md)}.icon-lg{width:var(--icon-lg);height:var(--icon-lg)}.icon-xl{width:var(--icon-xl);height:var(--icon-xl)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}@media(min-width:768px){html{scroll-behavior:smooth}}html,body{overflow-x:clip;max-width:100vw}body{font-family:var(--font-body);font-size:15px;line-height:1.6;color:var(--text);background:var(--bg);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-wrap:pretty}.theme-transitioning,.theme-transitioning *,.theme-transitioning *:before,.theme-transitioning *:after{transition:background-color .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease)!important}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{cursor:pointer;font-family:inherit}h1,h2,h3,h4,h5,h6{text-wrap:balance}#root{display:flex;flex-direction:column;min-height:100vh;overflow-x:clip}.app{display:flex;flex-direction:column;flex:1;min-height:0}.app-main{flex:1;width:100%;overflow-x:clip}.page-transition{animation:pageEnter var(--duration-slow) var(--ease-out) both}.container{max-width:1200px;margin:0 auto;padding:0 var(--space-5)}.liquid-glass{position:relative;border-radius:var(--lg-radius, 999px);overflow:hidden;isolation:isolate;border:1px solid var(--border);background:transparent;box-shadow:var(--shadow-sm)}.lg-frost{position:absolute;inset:0;border-radius:inherit;backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);background:#e4e9f294;z-index:var(--z-base);pointer-events:none}html.dark .lg-frost{background:#1e202d99;backdrop-filter:blur(24px) saturate(170%);-webkit-backdrop-filter:blur(24px) saturate(170%)}.liquid-glass{border:1px solid oklch(.82 .01 260 / .7);box-shadow:var(--shadow-sm),inset 0 1px #ffffff4d}html.dark .liquid-glass{border-color:#2b2e3399;box-shadow:var(--shadow-sm),inset 0 1px #ffffff14}.lg-content{position:relative;z-index:var(--z-content)}.navbar{position:sticky;top:0;z-index:var(--z-navbar);padding:10px var(--space-4) 0;padding-top:calc(10px + env(safe-area-inset-top,0px));display:flex;justify-content:center;pointer-events:none}.navbar-inner{width:100%;max-width:900px;pointer-events:auto;padding:6px var(--space-2) 6px 20px}.liquid-glass.navbar-inner{overflow:visible}.navbar-inner .lg-content{display:flex;align-items:center;width:100%;gap:var(--space-3)}.navbar-brand:hover{opacity:.75}.navbar-search-expand{position:relative;flex:0;min-width:0;max-width:0;opacity:0;overflow:hidden;margin:0;transition:flex .35s var(--ease-spring),max-width .35s var(--ease-spring),opacity var(--duration-normal) var(--ease),margin .35s var(--ease-spring);pointer-events:none}.navbar-search-expand.search-expanded{flex:1;max-width:500px;opacity:1;margin:0 var(--space-2);overflow:visible;pointer-events:auto}.navbar-brand{font-family:var(--font-display);font-size:var(--font-size-xl);font-weight:700;color:var(--primary);text-decoration:none;white-space:nowrap;flex-shrink:0;letter-spacing:-.01em;transition:opacity var(--duration) var(--ease),max-width var(--duration-slow) var(--ease-spring),margin var(--duration-slow) var(--ease-spring);max-width:200px;overflow:hidden}.navbar-brand.brand-hidden{opacity:0;max-width:0;margin:0;pointer-events:none}.navbar-links{display:flex;align-items:center;gap:6px;flex-shrink:0;margin-left:auto}.navbar-links a{color:var(--text-secondary);font-size:var(--font-size-sm);font-weight:500;text-decoration:none;white-space:nowrap;padding:6px 14px;border-radius:var(--radius-md);transition:color var(--duration) var(--ease),background var(--duration) var(--ease),opacity var(--duration) var(--ease),max-width var(--duration-normal) var(--ease),padding var(--duration-normal) var(--ease);max-width:120px;overflow:hidden}.navbar-links a:hover{color:var(--text);background:var(--primary-subtle)}.navbar-links a.nav-link-hidden{opacity:0;max-width:0;padding:0;margin:0;pointer-events:none}.nav-btn-hidden{opacity:0!important;width:0!important;padding:0!important;margin:0!important;overflow:hidden!important;pointer-events:none!important;transition:opacity var(--duration) var(--ease),width var(--duration-normal) var(--ease),padding var(--duration-normal) var(--ease)!important}.nav-search-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;min-width:44px;min-height:44px;border-radius:var(--radius-full);border:none;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease);padding:0;position:relative;flex-shrink:0}.nav-search-btn:hover,.nav-search-btn.active{background:var(--primary-subtle);color:var(--primary)}.nav-search-icon{position:absolute;transition:opacity var(--duration) var(--ease),transform var(--duration) var(--ease)}.nav-search-btn .icon-search{opacity:1;transform:scale(1)}.nav-search-btn .icon-close,.nav-search-btn.active .icon-search{opacity:0;transform:scale(.8)}.nav-search-btn.active .icon-close{opacity:1;transform:scale(1)}.footer-links{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-5);padding-bottom:var(--space-5);margin-bottom:var(--space-5);text-align:left}.footer-col{display:flex;flex-direction:column;gap:var(--space-2)}.footer-col-title{font-family:var(--font-display);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:var(--space-1)}.footer-col a{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--text-muted);text-decoration:none;transition:color var(--duration) var(--ease)}.footer-col a:hover{color:var(--primary)}.footer-bottom{text-align:center;display:flex;flex-direction:column;align-items:center;gap:.25rem}@media(max-width:600px){.footer-links{grid-template-columns:1fr;gap:20px}}.footer{padding:var(--space-8) var(--space-5) 28px;padding-bottom:calc(28px + env(safe-area-inset-bottom,0px));text-align:center;font-size:var(--font-size-sm);color:var(--text-muted);margin-top:auto;position:relative;border-top:1px solid var(--border)}html.dark .footer{border-top-color:var(--border)}.footer-brand{font-family:var(--font-display);font-size:var(--font-size-md);font-weight:700;color:var(--primary);margin-bottom:var(--space-2);letter-spacing:-.01em}.footer-data-note{font-size:var(--font-size-xs);color:var(--text-secondary);margin-bottom:6px}.footer a{color:var(--text-secondary);text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--border);transition:color var(--duration) var(--ease)}.footer a:hover{color:var(--primary);text-decoration-color:var(--primary)}.footer-meta-row{display:flex;align-items:center;justify-content:center;gap:var(--space-3);margin-top:10px}.footer-version-link{display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:var(--text-muted);transition:color var(--duration) var(--ease)}.footer-version-link:hover{color:var(--primary);text-decoration:none}.footer-version-badge{display:inline-flex;align-items:center;padding:2px var(--space-2);font-family:var(--font-mono);font-size:var(--font-size-xs);font-weight:600;color:var(--primary);background:var(--primary-subtle);border:1px solid var(--border);border-radius:var(--radius-full);letter-spacing:.02em;transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease)}.footer-version-link:hover .footer-version-badge{background:var(--primary);color:var(--text-on-primary);border-color:var(--primary)}.footer-version-text{font-size:var(--font-size-xs)}.footer-made-with{margin-top:10px;font-size:var(--font-size-xs);color:var(--text-secondary)}.footer-heart{display:inline-block;color:var(--text-muted);cursor:default;transition:color var(--duration-slow) var(--ease),transform var(--duration-slow) var(--ease)}.footer-made-with:hover .footer-heart{color:var(--primary);animation:heartbeat .8s ease-in-out}.theme-toggle,.settings-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;min-width:44px;min-height:44px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);font-size:var(--font-size-base);flex-shrink:0;transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}.theme-toggle:hover,.settings-btn:hover{background:var(--surface-hover);color:var(--text)}.theme-toggle:active,.settings-btn:active{transform:scale(.97)}.theme-toggle{position:relative}.theme-toggle svg{transition:transform var(--duration-slow) var(--ease)}.theme-toggle:hover svg{transform:rotate(15deg) scale(1.1)}.theme-icon{transition:opacity var(--duration) cubic-bezier(.2,0,0,1),transform var(--duration) cubic-bezier(.2,0,0,1);opacity:1;transform:scale(1)}.theme-icon-hidden{opacity:0;transform:scale(.5);position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.settings-btn.configured{color:var(--primary);border-color:var(--primary)}.search-wrapper{position:relative;width:100%;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-xs);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.search-wrapper:focus-within{border-color:var(--border-focus);box-shadow:var(--shadow-sm)}.search-wrapper:has(.search-dropdown.open){border-color:var(--border-focus);box-shadow:var(--shadow-md);z-index:var(--z-navbar)}.search-input{width:100%;padding:10px var(--space-4);font-size:var(--font-size-base);font-family:var(--font-body);border:none;border-radius:inherit;background:transparent;color:var(--text);outline:none}.search-input::placeholder{color:var(--text-muted)}.navbar-search-expand .search-wrapper{background:var(--bg-secondary);backdrop-filter:none;-webkit-backdrop-filter:none}.navbar-search-expand .search-input{padding:7px var(--space-3);font-size:var(--font-size-sm)}.navbar-search-expand .search-input::placeholder{color:var(--text-muted)}.navbar-search-expand .search-wrapper:focus-within{background:var(--surface);border-color:var(--border-focus);box-shadow:var(--shadow-sm)}.navbar-search-expand .search-dropdown{position:absolute;top:calc(100% + 6px);left:0;right:0;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);box-shadow:var(--shadow-lg);border-top:1px solid var(--border);z-index:var(--z-navbar-dropdown)}.navbar-search-expand .search-dropdown.open{max-height:360px}.search-dropdown{border-top:1px solid color-mix(in oklch,var(--border) 50%,transparent);max-height:0;overflow:hidden;opacity:0;pointer-events:none;transition:opacity .18s var(--ease-out),max-height var(--duration-normal) var(--ease-out)}.search-dropdown.open{opacity:1;max-height:calc(100vh - 80px);max-height:calc(100dvh - 80px);overflow-y:auto;overflow-x:hidden;pointer-events:auto}.search-result{display:flex;align-items:center;padding:10px var(--space-4);cursor:pointer;gap:10px;border-bottom:1px solid var(--border);transition:background-color .12s var(--ease)}.search-result:last-child{border-bottom:none}.search-result:hover,.search-result.active{background:var(--primary-subtle)}.search-result-item{display:flex;align-items:center;gap:.75rem;width:100%}.search-result-info{display:flex;flex-direction:column;flex:1;min-width:0;text-align:left}.search-result-code{font-weight:600;font-size:var(--font-size-base)}.search-result-label{font-size:var(--font-size-xs);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.search-result-score{font-weight:700;font-size:var(--font-size-sm);color:var(--primary);flex-shrink:0}.plan-btn{position:relative;width:28px;height:28px;min-width:44px;min-height:44px;border:none;background:transparent;border-radius:50%;cursor:pointer;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease),transform .18s var(--ease);margin-left:var(--space-1)}.plan-btn:hover{background:color-mix(in oklch,var(--primary) 12%,transparent);color:var(--primary);transform:scale(1.15)}.plan-btn.planned{color:var(--success)}.plan-btn.show-arrow{color:var(--primary)}.plan-icon{position:absolute;transition:opacity var(--duration) var(--ease),transform var(--duration) var(--ease)}.plan-icon-plus{opacity:1;transform:scale(1) rotate(0)}.plan-icon-check{opacity:0;transform:scale(.3) rotate(-45deg)}.plan-icon-arrow{opacity:0;transform:scale(.3) translate(-3px)}.plan-btn.planned .plan-icon-plus{opacity:0;transform:scale(.3) rotate(90deg)}.plan-btn.planned .plan-icon-check{opacity:1;transform:scale(1) rotate(0)}.plan-btn.show-arrow .plan-icon-plus{opacity:0;transform:scale(.3) rotate(90deg)}.plan-btn.show-arrow .plan-icon-check{opacity:0;transform:scale(.3) rotate(45deg)}.plan-btn.show-arrow .plan-icon-arrow{opacity:1;transform:scale(1) translate(0)}.plan-btn.just-added .plan-icon-check{animation:checkPop var(--duration-glass) var(--ease-out)}@keyframes checkPop{0%{transform:scale(0) rotate(-45deg)}60%{transform:scale(1.3) rotate(5deg)}to{transform:scale(1) rotate(0)}}.search-no-results{padding:var(--space-4);text-align:center;color:var(--text-secondary);font-size:var(--font-size-base)}.search-recent-header{padding:var(--space-2) var(--space-4) var(--space-1);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.score-dot{width:10px;height:10px;border-radius:var(--radius-full);flex-shrink:0;display:inline-block}.score-dot.green{background-color:var(--success)}.score-dot.yellow{background-color:var(--warning)}.score-dot.red{background-color:var(--danger)}.score-dot.blue{background-color:#0f74c5}.score-dot-lg{width:12px;height:12px}.hero{text-align:center;padding:var(--space-9) var(--space-5) var(--space-6);position:relative;z-index:var(--z-elevated);animation:fadeIn .6s var(--ease-out) both}.hero:before{display:none}.hero-title{font-family:var(--font-display);font-size:3.5rem;font-weight:800;color:var(--text);margin-bottom:var(--space-3);letter-spacing:-.03em;line-height:1.1;animation:fadeInUp .5s var(--ease-out) .05s both}.hero-title-text{color:var(--text)}.hero-subtitle{font-size:var(--font-size-md);color:var(--text-secondary);margin-bottom:var(--space-4);font-weight:400;animation:fadeIn .5s var(--ease-out) .15s both}.hero-phase-row{display:flex;align-items:center;justify-content:center;gap:var(--space-2);flex-wrap:wrap;margin-bottom:28px;animation:fadeIn var(--duration-glass) var(--ease-out) .2s both}.hero-phase-badge{display:inline-block;padding:5px 14px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;animation:scaleIn .35s var(--ease-out) .25s both}.hero-phase-badge:nth-child(2){background:#e2ebff;background:oklch(.94 .03 265);color:#14295f;border:1px solid oklch(.3 .1 265 / .18);animation-delay:.32s}.phase-badge-first-pass{background:#dcf2e3;color:#00381c;color:oklch(.3 .1 155);border-color:#00381c2e;border-color:oklch(.3 .1 155 / .18)}.phase-badge-second-pass{background:#f6e9d5;color:#3e2a00;color:oklch(.3 .1 80);border-color:#3e2a002e;border-color:oklch(.3 .1 80 / .18)}.phase-badge-pre-enrollment,.phase-badge-instruction{background:#e2ebff;background:oklch(.94 .03 265);color:#14295f;border-color:#14295f2e}.phase-badge-finals{background:#ffe4e1;color:#551112;border-color:#5511122e}.phase-badge-holiday,.phase-badge-winter-break,.phase-badge-spring-break,.phase-badge-summer-break,.phase-badge-summer,.phase-badge-between-quarters{background:#d5f2f3;color:#003639;color:oklch(.3 .1 200);border-color:#0036392e;border-color:oklch(.3 .1 200 / .18)}html.dark .phase-badge-first-pass{background:#012a14;color:#7ad59c;border-color:#7ad59c40}html.dark .phase-badge-second-pass{background:#2e1e00;background:oklch(.25 .06 80);color:#e6b55d;border-color:#e6b55d40}html.dark .phase-badge-pre-enrollment,html.dark .phase-badge-instruction{background:#13203e;color:#9ebdff;color:oklch(.8 .12 265);border-color:#9ebdff40;border-color:oklch(.8 .12 265 / .25)}html.dark .phase-badge-finals{background:#3a1412;color:#ffa098;color:oklch(.8 .12 25);border-color:#ffa09840;border-color:oklch(.8 .12 25 / .25)}html.dark .phase-badge-holiday,html.dark .phase-badge-winter-break,html.dark .phase-badge-spring-break,html.dark .phase-badge-summer-break,html.dark .phase-badge-summer,html.dark .phase-badge-between-quarters{background:#00282a;background:oklch(.25 .06 200);color:#43d5dc;border-color:#43d5dc40}html.dark .hero-phase-badge:nth-child(2){background:#13203e;color:#9ebdff;color:oklch(.8 .12 265);border-color:#9ebdff40;border-color:oklch(.8 .12 265 / .25)}.hero-search{max-width:560px;margin:0 auto;position:relative;z-index:var(--z-dropdown);animation:scaleIn var(--duration-glass) var(--ease-out) .3s both}.hero-search .search-wrapper{border-radius:var(--radius-xl);box-shadow:var(--shadow-sm)}.hero-search .search-wrapper:focus-within{box-shadow:var(--shadow-md)}.hero-search .search-wrapper:has(.search-dropdown.open){box-shadow:var(--shadow-md)}.hero-search .search-input{padding:var(--space-4) var(--space-5);font-size:var(--font-size-md)}.hero-data-note{font-size:var(--font-size-sm);color:var(--text-muted);margin-top:6px;margin-bottom:var(--space-1)}.planner-pill{display:inline-flex;align-items:center;gap:5px;padding:.5rem .9rem;border-radius:var(--radius-full);border:1px solid var(--primary);background:var(--primary-light);color:var(--primary);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;line-height:1.25rem;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease),transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.planner-pill:hover{background:var(--primary);color:var(--text-on-primary);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.planner-pill:hover svg{transform:translate(2px)}.planner-pill svg{flex-shrink:0;transition:transform var(--duration) var(--ease)}.section-title{font-family:var(--font-display);font-size:var(--font-size-lg);font-weight:600;color:var(--text);margin-bottom:var(--space-4);text-align:center;letter-spacing:-.02em;display:flex;align-items:center;justify-content:center;gap:10px}.popular-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3)}.marquee-section{margin-top:var(--space-6);padding:0;padding-bottom:var(--space-5);min-height:40vh;overflow:hidden}.marquee-title{text-align:center;margin-bottom:var(--space-4);padding:0 var(--space-5)}.marquee-container{position:relative;overflow:hidden;mask-image:linear-gradient(to right,transparent 0%,black 10%,black 90%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0%,black 10%,black 90%,transparent 100%)}.marquee-track{display:flex;align-items:stretch;gap:clamp(16px,1.2vw,24px);width:max-content;padding:var(--space-2) 0 var(--space-4);cursor:grab;user-select:none;-webkit-user-select:none}.marquee-track:active{cursor:grabbing}.marquee-dept{font-family:var(--font-display);font-weight:800;font-size:clamp(.85rem,1vw,1.1rem);text-transform:uppercase;letter-spacing:.04em;color:var(--primary);background:var(--primary-light);padding:0 clamp(20px,1.8vw,32px);border-radius:var(--radius-lg);white-space:nowrap;flex-shrink:0;border:1.5px solid var(--border-focus);display:flex;align-items:center;align-self:stretch}.marquee-chip{display:flex;flex-direction:column;gap:clamp(6px,.5vw,10px);padding:clamp(16px,1.4vw,28px) clamp(22px,1.8vw,36px);min-width:clamp(170px,16vw,280px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);text-decoration:none;color:inherit;white-space:nowrap;flex-shrink:0;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease),transform var(--duration) var(--ease);cursor:pointer;box-shadow:var(--shadow-xs)}.marquee-chip:hover{background:var(--surface-hover);border-color:var(--border-hover);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.marquee-chip-top{display:flex;align-items:center;gap:var(--space-2)}.marquee-chip-code{font-weight:700;font-size:clamp(.95rem,1.1vw,1.25rem)}.marquee-chip-rank{font-family:var(--font-display);font-weight:700;font-size:clamp(.75rem,.85vw,.95rem);color:var(--text-muted);margin-left:auto;font-variant-numeric:tabular-nums}.marquee-chip-label{font-size:clamp(.72rem,.8vw,.9rem);color:var(--text-secondary);max-width:clamp(180px,16vw,260px);overflow:hidden;text-overflow:ellipsis;line-height:1.3}.popular-item{display:flex;align-items:center;gap:10px;padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);text-decoration:none;color:inherit;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease);min-height:48px;animation:fadeInUp .35s var(--ease-out) both;animation-delay:calc(var(--stagger, 0) * 35ms)}.popular-item .popular-rank{font-family:var(--font-display);font-size:var(--font-size-xs);font-weight:700;color:var(--primary);opacity:.7;min-width:24px;text-align:right;font-variant-numeric:tabular-nums}.popular-item:hover{background:var(--surface-hover);border-color:var(--border-hover);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.popular-name{font-weight:600;font-size:var(--font-size-base);flex:1;white-space:nowrap}.popular-score{font-weight:600;font-size:var(--font-size-sm);color:var(--text-secondary);font-variant-numeric:tabular-nums}.card{background:var(--surface);backdrop-filter:blur(12px) saturate(1.2);-webkit-backdrop-filter:blur(12px) saturate(1.2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-xs);transition:box-shadow var(--duration) var(--ease),border-color var(--duration) var(--ease),transform var(--duration) var(--ease);position:relative;animation:fadeInUp var(--duration-glass) var(--ease-out) both;animation-delay:calc(var(--stagger, 0) * 50ms)}.card:hover{box-shadow:var(--shadow-sm);border-color:var(--border-hover);transform:translateY(-2px)}.glass,.glass-medium,.glass-subtle{position:relative}.card h3{font-family:var(--font-display);font-size:var(--font-size-md);font-weight:600;margin-bottom:20px;color:var(--text);letter-spacing:-.01em}.card-link{text-decoration:none;color:inherit;display:block}.card-link .card{transition:transform var(--duration-slow) var(--ease),box-shadow var(--duration-slow) var(--ease),border-color var(--duration-slow) var(--ease)}.card-link:hover .card{box-shadow:var(--shadow-sm);border-color:var(--border-hover);transform:translateY(-2px)}.course-card{display:flex;align-items:center;gap:10px;min-height:40px}.course-card-label{display:block;font-size:var(--font-size-xs);color:var(--text-muted);margin-top:6px;font-weight:500;letter-spacing:.01em}.course-card-label.label-hot{color:var(--danger)}.course-card-label.label-cool{color:var(--success)}.course-card-rank-below{display:block;text-align:center;font-family:var(--font-display);font-size:var(--font-size-xs);font-weight:500;color:var(--text-muted);margin-top:var(--space-1);letter-spacing:-.01em;white-space:nowrap}.course-card-code{font-weight:600;font-size:var(--font-size-base);white-space:nowrap}.course-card-score{margin-left:auto;font-weight:600;font-size:var(--font-size-base);color:var(--text-secondary);white-space:nowrap}.badge{display:inline-block;padding:3px 10px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.badge-first{background:var(--danger-light);color:var(--danger)}.badge-second{background:var(--success-light);color:var(--success)}.badge-either{background:var(--primary-light);color:var(--primary)}.calculator-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);margin:var(--space-5) 0}.calculator-section h3{font-family:var(--font-display);margin-bottom:var(--space-4);font-size:var(--font-size-md);font-weight:600;color:var(--text);letter-spacing:-.01em}.form-group{margin-bottom:var(--space-4)}.form-group label{display:block;margin-bottom:6px;font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary)}.form-group input,.form-group select{width:100%;padding:9px var(--space-3);border:1px solid var(--border);border-radius:var(--radius-lg);font-size:var(--font-size-base);color-scheme:light;font-family:var(--font-body);background:var(--surface);color:var(--text);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease),background-color var(--duration) var(--ease)}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}.form-group select option{background:var(--surface);color:var(--text)}html.dark .form-group input,html.dark .form-group select{color-scheme:dark}.form-hint{display:block;font-size:var(--font-size-xs);color:var(--text-muted);font-weight:400;margin-top:2px}.color-picker-row{display:flex;align-items:center;gap:var(--space-2);margin-top:6px}.color-picker-input{width:36px!important;height:36px;min-width:36px;border:2px solid var(--border);border-radius:var(--radius-sm)!important;cursor:pointer;padding:2px!important;background:var(--surface);flex-shrink:0}.color-picker-input::-webkit-color-swatch-wrapper{padding:0}.color-picker-input::-webkit-color-swatch{border:none;border-radius:4px}.color-picker-input::-moz-color-swatch{border:none;border-radius:4px}.color-hex-input{flex:1;font-family:var(--font-mono);font-size:var(--font-size-sm);padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);letter-spacing:.5px}.color-hex-input:focus{border-color:var(--primary);outline:none}.color-hex-input:invalid{border-color:var(--danger)}.color-reset-btn{width:32px;height:32px;min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);flex-shrink:0}.color-reset-btn:hover{color:var(--danger);border-color:var(--danger)}.color-presets{display:flex;gap:6px;margin-top:var(--space-2);flex-wrap:wrap}.color-preset{width:24px;height:24px;border-radius:var(--radius-full);border:2px solid transparent;cursor:pointer;transition:transform var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.color-preset:hover{transform:scale(1.15)}.color-preset.active{border-color:var(--text);box-shadow:0 0 0 2px var(--bg)}.chart-section{margin:var(--space-6) 0}.chart-section h3{margin-bottom:var(--space-4)}.chart-container{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);overflow:hidden}.chart-intro{font-size:var(--font-size-xs);color:var(--text-muted);margin-bottom:var(--space-3);line-height:var(--leading-normal)}.chart-controls{display:flex;align-items:center;gap:var(--space-3);margin-bottom:1rem;flex-wrap:wrap;font-size:var(--font-size-sm);color:var(--text-secondary)}.view-toggle{display:inline-flex;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border)}.toggle-btn{padding:.4rem 1rem;border:none;background:var(--surface);color:var(--text-secondary);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}.toggle-btn.active{background:var(--primary);color:var(--text-on-primary)}.toggle-btn:not(.active):hover{background:var(--surface-hover);color:var(--text)}.data-source-select{padding:.4rem .8rem;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface);color:var(--text);font-family:var(--font-body);font-size:var(--font-size-sm);cursor:pointer;transition:border-color var(--duration) var(--ease)}.data-source-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}.chart-controls label{display:flex;align-items:center;gap:6px;cursor:pointer}.chart-controls input[type=checkbox]{accent-color:var(--primary)}.js-plotly-plot .modebar{right:var(--space-1)!important;top:var(--space-1)!important}.js-plotly-plot .modebar-btn{color:var(--text-muted)!important}.js-plotly-plot .modebar-btn:hover,.js-plotly-plot .modebar-btn.active{color:var(--primary)!important}.history-table-wrapper{overflow:hidden;overflow-x:auto;margin:0;border-radius:var(--radius-lg);border:1px solid var(--border)}.table-scroll{overflow-x:auto}.history-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.history-table th,.history-table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--border)}.history-table tr:last-child td{border-bottom:none}.history-table th{background:var(--bg-secondary);font-weight:600;color:var(--text-secondary);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em;position:sticky;top:0;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color var(--duration) var(--ease)}.history-table th:first-child{border-radius:var(--radius-md) 0 0 0}.history-table th:last-child{border-radius:0 var(--radius-md) 0 0}.history-table tr:last-child td:first-child{border-radius:0 0 0 var(--radius-md)}.history-table tr:last-child td:last-child{border-radius:0 0 var(--radius-md) 0}.history-table th:hover{color:var(--text)}.history-table tbody tr:nth-child(2n) td{background:var(--primary-subtle)}.history-table tbody tr:hover td{background:var(--primary-subtle)}.history-table td{white-space:nowrap}.sort-arrow{display:inline-flex;align-items:center;margin-left:var(--space-1);font-size:var(--font-size-xs)}.term-table-desktop{display:block}.term-cards-mobile{display:none}@media(max-width:768px){.term-table-desktop{display:none}.term-cards-mobile{display:flex;flex-direction:column;gap:10px}}.term-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px var(--space-4);animation:fadeInUp .35s var(--ease-out) both;animation-delay:calc(var(--stagger, 0) * 35ms)}.term-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.term-card-name{display:flex;align-items:center;gap:6px;font-family:var(--font-display);font-weight:700;font-size:var(--font-size-base);color:var(--text)}.term-card-expanded{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--success);background:var(--success-light);padding:3px var(--space-2);border-radius:var(--radius-full)}.term-card-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:2px}.term-card-stat{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-2) var(--space-1);border-radius:var(--radius-sm)}.term-card-stat-value{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-md);color:var(--primary);line-height:1.2}.term-card-stat-label{font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px}.term-card-wl{display:flex;gap:var(--space-4);margin-top:10px;padding-top:10px;border-top:1px solid var(--border);font-size:var(--font-size-sm);color:var(--text-secondary)}.term-card-wl strong{color:var(--text);font-weight:600}.term-table-legend{display:flex;gap:var(--space-4);flex-wrap:wrap;margin:var(--space-2) 0 0;padding:0;font-size:var(--font-size-xs);color:var(--text-muted)}.filter-bar{display:flex;gap:.5rem;align-items:center;justify-content:center;flex-wrap:wrap;margin-bottom:var(--space-8);padding:0 var(--space-5);animation:fadeIn .35s var(--ease-out) .35s both}.filter-bar>*{animation:scaleIn var(--duration-slow) var(--ease-out) both}.filter-bar>:nth-child(1){animation-delay:.1s}.filter-bar>:nth-child(2){animation-delay:.2s}.filter-bar>:nth-child(3){animation-delay:.3s}.filter-bar>:nth-child(4){animation-delay:.4s}.filter-select{appearance:none;-webkit-appearance:none;padding:.5rem 2rem .5rem .9rem;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--surface);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .65rem center;color:var(--text-secondary);font-family:var(--font-body);font-size:var(--font-size-sm);line-height:1.25rem;cursor:pointer;transition:border-color var(--duration) var(--ease)}.filter-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--border-focus)}html.dark .filter-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23aaa' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}.filter-active{background:var(--primary)!important;color:var(--text-on-primary)!important;border-color:var(--primary)!important}.filtered-results{padding:0 var(--space-5) var(--space-8);max-width:1200px;margin:0 auto}.filtered-results h2{text-align:center;font-family:var(--font-display);color:var(--text);margin-bottom:1rem}.results-note{text-align:center;color:var(--text-secondary);font-size:var(--font-size-sm);margin-top:1rem}.pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.5rem;flex-wrap:wrap}.pagination-btn{padding:var(--space-2) 20px;border-radius:999px;border:1px solid var(--border);background:var(--glass-bg);color:var(--text);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.pagination-btn:hover:not(:disabled){background:var(--primary);color:var(--text-on-primary);border-color:var(--primary)}.pagination-btn:disabled{opacity:.5;cursor:default}.pagination-info{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:500;font-variant-numeric:tabular-nums}.ge-disclaimer{font-size:var(--font-size-sm);color:var(--text-muted);text-align:center;margin:.5rem 0 0;font-style:italic;opacity:.8}.filter-btn{display:inline-flex;align-items:center;gap:5px;padding:6px var(--space-4);border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);color:var(--text-secondary);font-size:var(--font-size-sm);font-family:var(--font-body);font-weight:500;transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease);cursor:pointer}.filter-btn:hover{border-color:var(--border-hover);color:var(--text);background:var(--surface-hover)}.filter-btn.active{background:color-mix(in oklch,var(--filter-accent, var(--primary)) 12%,transparent);color:var(--filter-accent, var(--primary));border-color:var(--filter-accent, var(--primary));font-weight:600}.planner-page{max-width:1040px;margin:0 auto}.planner-header{margin-bottom:20px}.planner-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}.planner-title{font-family:var(--font-display);font-size:var(--font-size-2xl);font-weight:800;color:var(--text);margin-bottom:var(--space-1);letter-spacing:-.02em}.planner-subtitle{color:var(--text-muted);font-size:var(--font-size-sm)}.planner-header-actions{display:flex;gap:var(--space-2);flex-shrink:0}.planner-action-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:background-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease);white-space:nowrap}.planner-action-btn:hover{background:var(--surface-hover);border-color:var(--border-hover);color:var(--text)}.planner-action-copied{background:var(--success-light)!important;color:var(--success)!important;border-color:var(--success)!important}.planner-action-danger:hover{background:var(--danger-light);color:var(--danger);border-color:#b338304d}.planner-search-row{max-width:480px}.planner-notice{display:flex;align-items:center;gap:10px;padding:10px var(--space-4);background:var(--primary-light);color:var(--primary);border:1px solid oklch(.38 .12 260 / .15);border-radius:var(--radius-lg);font-size:var(--font-size-sm);margin-bottom:var(--space-4);animation:slideWarning var(--duration-slow) var(--ease-out) both}.planner-notice strong{text-decoration:underline;text-underline-offset:2px}.planner-summary{display:flex;gap:var(--space-4);padding:14px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:var(--space-4)}.summary-segment{flex:1;display:flex;flex-direction:column;gap:3px}.summary-label{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.summary-value{font-size:var(--font-size-sm);font-weight:700;color:var(--text)}.summary-bar{height:4px;background:var(--border);border-radius:var(--radius-full);overflow:hidden;margin-top:2px}.summary-fill{height:100%;border-radius:var(--radius-full);transition:width var(--duration-glass) var(--ease)}.fill-success{background:var(--success)}.fill-warning{background:var(--warning)}.planner-warning{display:flex;align-items:center;gap:10px;padding:10px var(--space-4);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:600;margin-bottom:var(--space-4);animation:slideWarning var(--duration-slow) var(--ease-out) both}@keyframes slideWarning{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.warning-caution{background:var(--warning-light);color:#744c00;color:oklch(.45 .12 75);border:1px solid oklch(.68 .13 75 / .3)}html.dark .warning-caution{color:var(--warning)}.warning-danger{background:var(--danger-light);color:var(--danger);border:1px solid oklch(.52 .16 28 / .3)}.planner-kanban{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:20px}.planner-bucket{background:var(--surface);border:2px dashed var(--border);border-radius:var(--radius-lg);padding:var(--space-4);min-height:200px;transition:border-color var(--duration) var(--ease),background var(--duration) var(--ease)}.planner-bucket.bucket-over{box-shadow:var(--shadow-sm);transform:scale(1.01)}.bucket-success{border-color:#14874e80}.bucket-success.bucket-over{border-color:var(--success);background:var(--success-light);box-shadow:0 0 0 3px #14874e1f}.bucket-warning{border-color:#c78b2880}.bucket-warning.bucket-over{border-color:var(--warning);background:var(--warning-light);box-shadow:0 0 0 3px #c78b281f}.bucket-primary{border-color:#173f8166}.bucket-primary.bucket-over{border-color:var(--primary);background:var(--primary-light);box-shadow:0 0 0 3px #173f811f}.bucket-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);padding-bottom:10px;border-bottom:1px solid oklch(0 0 0 / .06)}html.dark .bucket-header{border-bottom-color:#ffffff0f}.bucket-header-left{display:flex;align-items:center;gap:var(--space-2)}.bucket-icon{width:24px;height:24px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:800;flex-shrink:0}.bucket-icon-success{background:var(--success-light);color:var(--success)}.bucket-icon-warning{background:var(--warning-light);color:#744c00;color:oklch(.45 .12 75)}html.dark .bucket-icon-warning{color:var(--warning)}.bucket-icon-primary{background:var(--primary-light);color:var(--primary)}.bucket-title{font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:700;color:var(--text);white-space:nowrap}.bucket-units{font-size:var(--font-size-xs);font-weight:600;color:var(--text-muted);white-space:nowrap}.bucket-units-over{color:var(--danger)}.bucket-progress{height:3px;background:var(--border);border-radius:var(--radius-full);overflow:hidden;margin-bottom:var(--space-3)}.bucket-progress-fill{height:100%;border-radius:var(--radius-full);transition:width var(--duration-glass) var(--ease)}.bucket-progress-success{background:var(--success)}.bucket-progress-warning{background:var(--warning)}.bucket-overcap{font-size:var(--font-size-xs);font-weight:600;color:var(--danger);margin-bottom:var(--space-2)}.bucket-items{min-height:60px}.bucket-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80px;gap:var(--space-2);color:var(--text-muted);font-size:var(--font-size-sm)}.planner-card{display:flex;align-items:center;gap:var(--space-2);padding:10px var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:6px;font-size:var(--font-size-sm);transition:background var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease),opacity var(--duration-fast) var(--ease);animation:cardEnter var(--duration-normal) var(--ease-out) both}@keyframes cardEnter{0%{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.planner-card:hover{background:var(--surface-hover);box-shadow:var(--shadow-sm)}.planner-card-dragging{opacity:.6!important;outline:2px dashed var(--primary);outline-offset:2px}.planner-card-overlay{box-shadow:var(--shadow-md);transform:scale(1.03);opacity:.97;cursor:grabbing;background:var(--surface)}@media(prefers-reduced-motion:no-preference){@keyframes wiggleSwing{0%{transform:rotate(0)}25%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}75%{transform:rotate(-1deg)}to{transform:rotate(0)}}@keyframes wiggleContinuous{0%,to{transform:rotate(0)}25%{transform:rotate(-.5deg)}75%{transform:rotate(.5deg)}}}@media(prefers-reduced-motion:no-preference){.planner-card-wiggle{animation:wiggleSwing var(--duration-glass) var(--ease) forwards,wiggleContinuous 2s ease-in-out .4s infinite}}.planner-card-drag{cursor:grab;padding:var(--space-1);color:var(--text-muted);flex-shrink:0;display:flex;align-items:center;touch-action:none;transition:color var(--duration-fast) var(--ease)}.planner-card:hover .planner-card-drag{color:var(--text-secondary)}.planner-card-drag:active{cursor:grabbing}.planner-card-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.planner-card-code{font-weight:700;color:var(--text);text-decoration:none;font-size:var(--font-size-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.planner-card-code:hover{color:var(--primary)}.planner-card-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.planner-card-label{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);background:var(--bg-secondary);padding:1px 6px;border-radius:var(--radius-sm)}.planner-card-score{font-size:var(--font-size-xs);color:var(--text-muted)}.planner-prob{display:flex;flex-direction:column;align-items:center;gap:0;padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);flex-shrink:0;min-width:42px}.planner-prob-value{font-size:var(--font-size-sm);font-weight:800;line-height:1.1}.planner-prob-label{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.03em;opacity:.8}.prob-good{background:var(--success-light);color:var(--success)}.prob-ok{background:var(--warning-light);color:#744c00;color:oklch(.45 .12 75)}html.dark .prob-ok{color:var(--warning)}.prob-low{background:var(--danger-light);color:var(--danger)}.planner-move-btns{display:flex;gap:3px;flex-shrink:0;opacity:0;transition:opacity var(--duration-fast) var(--ease)}.planner-card:hover .planner-move-btns{opacity:1}.planner-move-btn{padding:2px 7px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text-muted);font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.02em;cursor:pointer;transition:background-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease);white-space:nowrap;line-height:1.4}.planner-move-btn:hover{border-color:var(--border-hover);color:var(--text);background:var(--surface-hover)}.move-first:hover{background:var(--success-light);color:var(--success);border-color:#14874e4d}.move-second:hover{background:var(--warning-light);color:#744c00;color:oklch(.45 .12 75);border-color:#c78b284d}.planner-move-select{display:none;font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-secondary);cursor:pointer}@media(max-width:768px){.planner-move-select{display:block}.planner-move-btns{display:none}}html.dark .move-second:hover{color:var(--warning)}.move-after:hover{background:var(--primary-light);color:var(--primary);border-color:#173f814d}.planner-card-units{display:flex;align-items:center;gap:1px;flex-shrink:0}.planner-unit-select{appearance:none;-webkit-appearance:none;width:28px;height:24px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:var(--font-size-sm);font-weight:700;text-align:center;text-align-last:center;cursor:pointer;transition:background-color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease);padding:0 2px;line-height:1}.planner-unit-select:hover{background:var(--surface-hover);border-color:var(--border-hover)}.planner-unit-select:focus{outline:2px solid var(--primary);outline-offset:1px}.planner-unit-label{font-weight:600;font-size:var(--font-size-xs);color:var(--text-muted)}.planner-unit-value{font-weight:700;font-size:var(--font-size-sm);min-width:24px;text-align:center;color:var(--text)}.planner-demote-btn{width:24px;height:24px;border-radius:var(--radius-sm);border:1px solid transparent;background:none;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color var(--duration-fast) var(--ease),background-color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),opacity var(--duration-fast) var(--ease);padding:0;flex-shrink:0;opacity:0}.planner-card:hover .planner-demote-btn{opacity:1}.planner-demote-btn:hover{color:var(--warning);background:var(--warning-light);border-color:#c78b2833}.planner-remove-btn{width:24px;height:24px;border-radius:var(--radius-sm);border:1px solid transparent;background:none;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color var(--duration-fast) var(--ease),background-color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),opacity var(--duration-fast) var(--ease);padding:0;flex-shrink:0;opacity:0}.planner-card:hover .planner-remove-btn{opacity:1}.planner-remove-btn:hover{color:var(--danger);background:var(--danger-light);border-color:#b3383033}.planner-undecided{background:var(--surface);border:2px dashed var(--border);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:20px;transition:border-color var(--duration) var(--ease),background var(--duration) var(--ease)}.undecided-empty{min-height:50px;font-size:var(--font-size-sm);color:var(--text-muted);opacity:1}.planner-undecided.bucket-over{border-color:var(--text-secondary);box-shadow:var(--shadow-sm);transform:scale(1.005)}.undecided-title{font-family:var(--font-display);font-size:var(--font-size-base);font-weight:700;color:var(--text-secondary);margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.undecided-items{min-height:40px}.planner-empty{text-align:center;padding:80px var(--space-5);color:var(--text-secondary)}.planner-empty-icon{margin-bottom:20px;color:var(--text-muted);opacity:.5}.planner-empty-title{font-family:var(--font-display);font-size:var(--font-size-lg);font-weight:700;color:var(--text);margin-bottom:var(--space-2)}.planner-empty-hint{font-size:var(--font-size-sm);color:var(--text-muted);max-width:340px;margin:0 auto;line-height:1.5}.planner-empty-cta{display:inline-flex;align-items:center;gap:var(--space-2);margin-top:20px;padding:10px 20px;background:var(--primary);color:var(--text-on-primary);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600;font-family:var(--font-display);transition:background var(--duration) var(--ease)}.planner-empty-cta:hover{background:var(--primary-hover);color:var(--text-on-primary);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.planner-empty-cta:active{transform:scale(.97)}.btn-copied{background:var(--success)!important;border-color:var(--success)!important}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-9) var(--space-5);color:var(--text-secondary);gap:var(--space-4)}.loading-spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-container{text-align:center;padding:var(--space-9) var(--space-5);color:var(--text-secondary)}.error-container h2{color:var(--danger);font-family:var(--font-display);margin-bottom:var(--space-2)}.live-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--radius-full);background:var(--success-light);color:var(--success);font-size:var(--font-size-xs);font-weight:600}.live-badge-dot{width:7px;height:7px;border-radius:50%;background-color:var(--success);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}.page-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px var(--space-5);text-align:center}.page-placeholder h1{font-family:var(--font-display);font-size:var(--font-size-2xl);margin-bottom:var(--space-2);color:var(--primary)}.page-placeholder p{color:var(--text-secondary)}.page-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--space-4);color:var(--text-secondary)}.page-loading .spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}.page-error{text-align:center;padding:80px var(--space-5);color:var(--text-secondary)}.page-error h2{color:var(--danger);font-family:var(--font-display);margin-bottom:var(--space-2)}.page-error a{display:inline-block;margin-top:var(--space-4);color:var(--primary);font-weight:600;text-decoration:none;transition:color var(--duration) var(--ease)}.page-error a:hover{color:var(--primary-hover);text-decoration:underline}.course-detail-page{max-width:900px;margin:0 auto;padding:var(--space-6) var(--space-5);display:flex;flex-direction:column;gap:var(--space-5)}.course-detail-page>h1{font-family:var(--font-display);letter-spacing:-.02em}.compare-similar-link{display:inline-block;font-size:var(--font-size-sm);font-weight:600;color:var(--primary);text-decoration:none;margin-bottom:var(--space-4)}.compare-similar-link:hover{text-decoration:underline}.course-header{padding:var(--space-6) var(--space-5) var(--space-5);border-bottom:1px solid var(--border)}.course-header h1{font-family:var(--font-display);font-size:var(--font-size-2xl);margin-bottom:var(--space-1)}.course-meta{color:var(--text-secondary);font-size:var(--font-size-base)}.course-summary{font-family:var(--font-body);font-size:var(--font-size-base);line-height:1.65;color:var(--text-secondary);margin-bottom:var(--space-5);max-width:720px}@media(max-width:600px){.course-summary{font-size:var(--font-size-base)}}.course-content{max-width:1200px;margin:0 auto;padding:var(--space-5)}.breadcrumb{margin-bottom:var(--space-4)}.breadcrumb-list{display:flex;align-items:center;flex-wrap:wrap;gap:0;list-style:none;padding:0;margin:0}.breadcrumb-item{display:flex;align-items:center;font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--text-muted)}.breadcrumb-sep{margin:0 var(--space-2);color:var(--text-secondary);font-size:var(--font-size-xs)}.breadcrumb-item a{color:var(--text-muted);text-decoration:none;transition:color var(--duration) var(--ease)}.breadcrumb-item a:hover{color:var(--primary)}.breadcrumb-item [aria-current=page]{color:var(--text-secondary);font-weight:500}@media(max-width:600px){.breadcrumb-item{font-size:var(--font-size-xs)}.breadcrumb-sep{margin:0 6px}}.dept-page{animation:pageEnter var(--duration-slow) var(--ease-out) both}.dept-header{margin-bottom:var(--space-5)}.dept-title{font-family:var(--font-display);font-size:var(--font-size-3xl);font-weight:800;letter-spacing:-.02em;color:var(--text);margin:0}.dept-name{color:var(--text-secondary);font-size:var(--font-size-base);margin-top:2px;font-weight:500}.dept-subtitle{color:var(--text-muted);font-size:var(--font-size-sm);margin-top:2px}.dept-division{margin-bottom:var(--space-4)}.dept-division-header{display:flex;align-items:center;gap:10px;padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--duration) var(--ease),box-shadow var(--duration) var(--ease);-webkit-tap-highlight-color:transparent}.dept-division-header:hover{box-shadow:var(--shadow-xs)}.dept-division-label{font-family:var(--font-display);font-weight:700;font-size:var(--font-size-base);color:var(--text);flex:1}.dept-division-range{font-size:var(--font-size-sm);color:var(--text-muted);font-weight:500}.dept-division-summary{font-size:var(--font-size-xs);color:var(--text-muted);font-weight:500;flex:0;white-space:nowrap}.dept-division-count{font-size:var(--font-size-sm);color:var(--text-muted);background:var(--bg);padding:2px 10px;border-radius:var(--radius-full);font-weight:600}.dept-division-chevron{width:18px;height:18px;color:var(--text-muted);transition:transform var(--duration-slow) var(--ease);flex-shrink:0}.dept-division.open .dept-division-chevron{transform:rotate(180deg)}.dept-division-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s var(--ease)}.dept-division.open .dept-division-body{grid-template-rows:1fr}.dept-division-inner{overflow:hidden}.dept-course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3);padding:var(--space-3) 0}.dept-course-card{display:block;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) 20px;text-decoration:none;color:inherit;transition:box-shadow var(--duration) var(--ease),border-color var(--duration) var(--ease),transform var(--duration) var(--ease);animation:fadeInUp .35s var(--ease-out) both;animation-delay:calc(var(--stagger) * 25ms)}.dept-course-card:hover{box-shadow:var(--shadow-sm);border-color:var(--primary);transform:translateY(-2px)}.dept-course-card:active{transform:scale(.97)}.dept-course-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.dept-course-card-code{font-weight:700;font-size:var(--font-size-md);font-family:var(--font-display)}.dept-course-card-detail{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.4}.dept-sort{display:flex;align-items:center;gap:6px;color:var(--text-muted)}.dept-card-stats{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.dept-card-stat{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);font-weight:600;color:var(--text-secondary);white-space:nowrap}.dept-card-stat svg{opacity:.5;flex-shrink:0}.dept-card-stat-muted{color:var(--text-muted)}.dept-course-card-detail+.dept-course-card-detail{margin-top:2px}.dept-quarter-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;font-family:var(--font-body);line-height:1.3;width:fit-content}.dept-quarter-badge.quarter-fall{background:color-mix(in oklch,var(--warning) 12%,transparent);color:var(--warning)}.dept-quarter-badge.quarter-winter{background:color-mix(in oklch,var(--primary) 12%,transparent);color:var(--primary)}.dept-quarter-badge.quarter-spring{background:color-mix(in oklch,var(--success) 12%,transparent);color:var(--success)}.dept-quarter-badge.quarter-summer{background:color-mix(in oklch,var(--warning) 12%,transparent);color:var(--warning)}.dept-empty{text-align:center;color:var(--text-secondary);padding:var(--space-6)}.scroll-top-fab{position:fixed;bottom:var(--space-5);right:var(--space-5);width:44px;height:44px;border-radius:var(--radius-full);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-md);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(16px) scale(.9);pointer-events:none;transition:opacity var(--duration-slow) var(--ease),transform var(--duration-slow) var(--ease),background var(--duration) var(--ease),color var(--duration) var(--ease);z-index:var(--z-sticky)}.scroll-top-fab.visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.scroll-top-fab:hover{background:var(--primary);color:var(--text-on-primary);border-color:var(--primary)}.scroll-top-fab:active{transform:translateY(0) scale(.97)}@media(max-width:600px){.dept-title{font-size:var(--font-size-xl)}.dept-course-grid{grid-template-columns:1fr}.dept-division-header{padding:10px var(--space-3)}}.rec-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-sm);position:relative;z-index:var(--z-elevated)}.score-ring-wrap{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--space-1);flex-shrink:0;cursor:pointer}.rec-score-btn{background:none;border:none;padding:0;cursor:pointer;display:inline-flex;align-items:center;font:inherit;color:inherit;transition:transform var(--duration) var(--ease)}.rec-score-btn:hover{transform:scale(1.05)}.score-ring-label{font-family:var(--font-display);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);white-space:nowrap}.score-ring{width:64px;height:64px}.score-ring-bg,.score-ring-fill{transform:rotate(-90deg);transform-origin:32px 32px}.score-ring-bg{fill:none;stroke:var(--border);stroke-width:5}.score-ring-fill{fill:none;stroke-width:5;stroke-linecap:round;transition:stroke-dashoffset 1s var(--ease);animation:ringFill 1.2s var(--ease-out) .3s both}.score-ring-text{font-family:"Manrope",var(--font-display);font-size:16px;font-weight:800;fill:var(--text)}@keyframes ringFill{0%{stroke-dashoffset:163}}.score-tooltip{position:absolute;top:calc(100% + 12px);right:-8px;width:260px;max-width:min(320px,calc(100vw - 32px));word-wrap:break-word;padding:var(--space-4);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:var(--z-tooltip);animation:tooltipIn var(--duration) var(--ease-out)}.score-tooltip-title{font-family:var(--font-display);font-size:var(--font-size-base);font-weight:600;color:var(--text);margin-bottom:10px}.score-tooltip-scale{margin-bottom:var(--space-3)}.score-tooltip-bar{position:relative;height:8px;border-radius:var(--radius-full);overflow:hidden}.score-tooltip-gradient{width:100%;height:100%;border-radius:var(--radius-full);background:linear-gradient(to right,var(--success),var(--warning),var(--danger));opacity:.7}.score-tooltip-marker{position:absolute;top:-3px;width:14px;height:14px;border-radius:var(--radius-full);background:var(--text);border:2px solid var(--surface);transform:translate(-50%);z-index:var(--z-base);box-shadow:0 1px 3px #0003}.score-tooltip-labels{display:flex;justify-content:space-between;margin-top:var(--space-1);font-size:var(--font-size-xs);color:var(--text-muted);font-weight:500}.score-tooltip-desc{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5;margin:0 0 10px}.score-tooltip-ranges{display:flex;flex-direction:column;gap:var(--space-1)}.score-tooltip-range{font-size:var(--font-size-xs);font-weight:500;padding:3px var(--space-2);border-radius:var(--radius-sm)}.score-tooltip-range.green{background:#00925a1f;background:oklch(.58 .14 158 / .12);color:var(--success)}.score-tooltip-range.yellow{background:#d299221f;color:var(--warning)}.score-tooltip-range.red{background:#c536371f;color:var(--danger)}.rec-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}.rec-course{font-family:var(--font-display);font-size:var(--font-size-3xl);font-weight:800;color:var(--text);margin:0;letter-spacing:-.02em}.rec-badge{display:inline-flex;align-items:center;height:34px;padding:0 var(--space-4);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.rec-header .dept-quarter-badge{height:34px;padding:0 14px;font-size:var(--font-size-sm);font-family:var(--font-display);letter-spacing:.03em}.rec-header .dept-quarter-badge.quarter-fall{background:var(--warning-light);color:#896100;color:oklch(.52 .12 80)}.rec-header .dept-quarter-badge.quarter-winter{background:#d1e7ff;color:#0e5794}.rec-header .dept-quarter-badge.quarter-spring{background:var(--success-light);color:#005d33;color:oklch(.42 .12 155)}.rec-header .dept-quarter-badge.quarter-summer{background:var(--warning-light);color:#896100;color:oklch(.52 .12 80)}html.dark .rec-header .dept-quarter-badge.quarter-fall{background:#2c1f09;color:#e0ae57}html.dark .rec-header .dept-quarter-badge.quarter-winter{background:#061c31;color:#67aaed}html.dark .rec-header .dept-quarter-badge.quarter-spring{background:#092012;color:#60bb83}html.dark .rec-header .dept-quarter-badge.quarter-summer{background:#2c1f09;color:#e0ae57}.badge-green{background:var(--success-light);color:var(--success-badge-text)}.badge-yellow{background:var(--warning-light);color:var(--warning-badge-text)}.badge-red{background:var(--danger-light);color:var(--danger-badge-text)}.badge-blue{background:var(--blue-badge-bg);color:var(--blue-badge-text)}.planner-btn-group{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap}.add-to-planner-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 var(--space-4);border-radius:var(--radius-full);border:1.5px solid var(--primary);background:oklch(from var(--primary) l c h / .08);color:var(--primary);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease),transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease);margin-bottom:var(--space-3);white-space:nowrap}.planner-btn-group .add-to-planner-btn{margin-bottom:0}html.dark .add-to-planner-btn{background:oklch(from var(--primary) l c h / .12);border-color:oklch(from var(--primary) l c h / .4)}.add-to-planner-btn:hover{background:var(--primary-light);color:var(--primary);border-color:var(--primary);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.add-to-planner-btn:active{transform:scale(.97)}.add-to-planner-btn.added{background:var(--success-light);color:var(--success);border-color:var(--success);pointer-events:none}.add-to-planner-btn.in-planner{background:transparent;color:var(--text-secondary);border-color:var(--success)}.add-to-planner-btn.in-planner:hover{background:var(--success-light);color:var(--success);border-color:var(--success)}.add-to-planner-btn.remove-planner{border-color:var(--border);background:var(--surface);color:var(--text-secondary)}html.dark .add-to-planner-btn.remove-planner{border-color:#ffffff1a;background:#ffffff0a}.add-to-planner-btn.remove-planner:hover{border-color:var(--danger);background:var(--danger-light);color:var(--danger)}.rec-confidence{display:inline-block;padding:3px 10px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;background:var(--bg-secondary);color:var(--text-secondary);margin-bottom:var(--space-2)}.rec-exception-notice{display:flex;align-items:flex-start;gap:10px;padding:var(--space-3) var(--space-4);margin-top:var(--space-3);border-radius:var(--radius-md);background:var(--warning-light);border:1px solid color-mix(in oklch,var(--warning) 30%,transparent);color:var(--warning);font-size:var(--font-size-sm);font-weight:600;line-height:1.5;animation:fadeInUp var(--duration-glass) var(--ease-out) both}.rec-exception-notice svg{flex-shrink:0;margin-top:1px;stroke:var(--warning)}html.dark .rec-exception-notice{background:color-mix(in oklch,var(--warning) 10%,transparent);border-color:color-mix(in oklch,var(--warning) 25%,transparent);color:var(--warning)}html.dark .rec-exception-notice svg{stroke:var(--warning)}.rec-season-note{font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--warning-light);border-radius:var(--radius-md)}.rec-header-content{flex:1}.rec-tags-row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-1)}.rec-trend-icon{margin-left:var(--space-1);vertical-align:middle}.rec-reasoning{font-size:var(--font-size-base);color:var(--text);margin-bottom:var(--space-4);line-height:1.6}.rec-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.stat-item{text-align:center;padding:14px var(--space-2);background:var(--bg-secondary);border-radius:var(--radius-lg);transition:background var(--duration) var(--ease)}.stat-item:hover{background:var(--primary-subtle)}.stat-value{display:block;font-size:var(--font-size-lg);font-weight:700;font-family:var(--font-display);color:var(--primary);font-variant-numeric:tabular-nums;margin-bottom:2px}.stat-label{display:block;font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.calc-form{display:flex;align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;margin-bottom:20px}.calc-form .form-group{flex:1;min-width:140px;margin-bottom:0}.calc-divider{display:flex;align-items:center;gap:var(--space-3);width:100%;margin:var(--space-1) 0}.calc-divider:before,.calc-divider:after{content:"";flex:1;height:1px;background:var(--border)}.calc-divider-text{font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);flex-shrink:0}.calc-btn,.calc-form button{padding:9px var(--space-5);background:var(--primary);color:#fff;border:none;border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:600;font-family:var(--font-body);transition:background-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease),transform var(--duration) var(--ease);white-space:nowrap}.calc-btn:hover,.calc-form button:hover{background:var(--primary-hover);box-shadow:var(--shadow-sm)}.calc-btn:active,.calc-form button:active{transform:scale(.97)}.calc-btn:disabled,.calc-form button:disabled{opacity:.5;cursor:not-allowed;transform:none}.calc-helper-text{display:block;font-size:var(--font-size-xs);color:var(--text-muted);margin-top:6px;font-style:italic}.calc-result{padding:var(--space-5);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-xl);margin-top:var(--space-4);animation:fadeInUp var(--duration-glass) var(--ease-out) both;text-align:center}.calc-result p{margin-bottom:var(--space-2);font-size:var(--font-size-base);line-height:1.55}.calc-result p:last-child{margin-bottom:0}.calc-stat{display:flex;flex-direction:column;align-items:center;padding:var(--space-4) 0}.calc-stat+.calc-stat{border-top:1px solid var(--border)}.calc-stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-bottom:var(--space-4)}.calc-stat-row .calc-stat{padding:var(--space-3);border-top:none}.calc-stat-row .calc-stat+.calc-stat{border-top:none;border-left:1px solid var(--border)}.calc-stat-value{font-size:var(--font-size-2xl);font-weight:700;font-family:var(--font-display);color:var(--primary);line-height:1.2}.calc-stat-label{font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:var(--space-1)}.calc-stat-note{font-size:var(--font-size-xs);color:var(--text-muted);font-style:italic;margin-top:var(--space-1);text-transform:none;letter-spacing:0}.calc-note{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.55;margin-top:var(--space-3);text-align:center}.pass-calc-warning{color:var(--warning);font-weight:500}.verdict{font-weight:700;font-size:var(--font-size-base);margin-bottom:var(--space-2);text-align:center}.verdict-first{color:var(--danger)}.verdict-second{color:var(--success)}.calc-confidence{font-size:var(--font-size-sm);color:var(--text-muted);margin-top:var(--space-2);font-style:italic;text-align:center}.pass-calc-confidence{font-size:var(--font-size-xs);color:var(--text-muted);font-style:normal}.risk-low{color:var(--success);font-weight:700}.risk-medium{color:var(--warning);font-weight:700}.risk-high{color:var(--danger);font-weight:700}.info-trigger{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:var(--radius-full);border:1.5px solid var(--text-muted);color:var(--text-muted);font-size:var(--font-size-xs);font-weight:700;font-family:var(--font-body);cursor:pointer;background:transparent;margin-left:6px;vertical-align:middle;transition:border-color var(--duration) var(--ease),color var(--duration) var(--ease),background-color var(--duration) var(--ease);line-height:1;padding:0}.info-trigger:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-subtle)}body.popup-active{overflow:hidden}body.popup-active>#root{transition:transform var(--duration-glass) cubic-bezier(.32,.72,0,1),filter var(--duration-glass) cubic-bezier(.32,.72,0,1);transform:scale(.96);filter:blur(2px);transform-origin:center top}body:not(.popup-active)>#root{transition:transform .35s cubic-bezier(.32,.72,0,1),filter .35s cubic-bezier(.32,.72,0,1)}.info-popup-overlay{position:fixed;inset:0;background:#00000073;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-5)}.info-popup-overlay.popup-entering{animation:popupOverlayIn .28s cubic-bezier(.32,.72,0,1) both}.info-popup-overlay.popup-leaving{animation:popupOverlayOut var(--duration-normal) var(--ease) both}.info-popup{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6);max-width:480px;width:100%;max-height:calc(100vh - 96px);overflow-y:auto;box-shadow:var(--shadow-lg);scrollbar-width:thin;scrollbar-color:transparent transparent}.info-popup:hover{scrollbar-color:oklch(.5 0 0 / .3) transparent}.info-popup::-webkit-scrollbar{width:6px}.info-popup::-webkit-scrollbar-track{background:transparent}.info-popup::-webkit-scrollbar-thumb{background:transparent;border-radius:3px;transition:background var(--duration-slow)}.info-popup:hover::-webkit-scrollbar-thumb{background:#63636340}.info-popup:hover::-webkit-scrollbar-thumb:hover{background:#63636366}html.dark .info-popup{background:var(--bg);border-color:var(--border);box-shadow:var(--shadow-lg)}.info-popup.popup-entering{animation:popupCardIn .32s cubic-bezier(.32,.72,0,1) both}.info-popup.popup-leaving{animation:popupCardOut var(--duration-normal) var(--ease) both}.info-popup h4{font-family:var(--font-display);font-size:var(--font-size-md);font-weight:600;margin-bottom:var(--space-3);color:var(--text)}.info-popup p{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.6;margin-bottom:10px}.info-popup p:last-child{margin-bottom:0}.info-popup code{font-size:var(--font-size-sm);background:var(--bg-secondary);padding:2px 6px;border-radius:var(--radius-sm);color:var(--primary)}.info-popup-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-full);border:none;background:transparent;color:var(--text-secondary);cursor:pointer;float:right;margin:-8px -8px 0 var(--space-2);transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease)}.info-popup-close:hover{background:var(--bg-secondary);color:var(--text)}*{scrollbar-width:thin;scrollbar-color:oklch(.7 0 0 / .18) transparent}html.dark *{scrollbar-color:oklch(.4 0 0 / .3) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#95a0ab33;border-radius:99px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#65738359;border:2px solid transparent;background-clip:content-box}html.dark ::-webkit-scrollbar-thumb{background:#4957664d;border:2px solid transparent;background-clip:content-box}html.dark ::-webkit-scrollbar-thumb:hover{background:#65738373;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-corner{background:transparent}.metric-best{background:#cbefd64d;font-weight:600}.metric-worst{background:#ffdad54d;background:oklch(.92 .05 28 / .3)}html.dark .metric-best{background:#1d442c4d}html.dark .metric-worst{background:#562e294d}.comparison-heading{font-size:var(--font-size-2xl);font-weight:800;margin-bottom:var(--space-2)}.comparison-subheading{color:var(--text-secondary);margin-bottom:var(--space-4)}.comparison-search-wrap{max-width:400px;margin-bottom:var(--space-5)}.comparison-failed{margin-bottom:var(--space-4)}.comparison-table-wrap{overflow-x:auto}.comparison-th-inner{display:flex;align-items:center;gap:var(--space-2)}.comparison-remove-btn{background:none;border:none;color:var(--danger);cursor:pointer;font-size:var(--font-size-base)}.comparison-remove-btn:hover{color:var(--danger-light)}.comparison-section-heading{margin-top:var(--space-5)}.comparison-section-subheading{margin-bottom:var(--space-4)}.comparison-empty{text-align:center;padding:var(--space-8);color:var(--text-secondary)}.comparison-empty-title{font-size:var(--font-size-md);margin-bottom:var(--space-2)}.comparison-error-badge{margin-right:var(--space-2)}.comparison-course-link{color:inherit;text-decoration:underline}.compare-sparklines{margin-top:2rem}.compare-sparklines h3{font-family:var(--font-display);margin-bottom:1rem}.sparkline-grid{display:flex;gap:1rem;flex-wrap:wrap}.sparkline-card{background:var(--surface);border-radius:var(--radius-xl);padding:.75rem;border:1px solid var(--border)}.sparkline-card h4{font-size:var(--font-size-sm);margin-bottom:.25rem}.settings-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:var(--z-overlay);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--duration-normal) var(--ease);overscroll-behavior:none;touch-action:none}.settings-overlay.overlay-open{opacity:1}.settings-overlay.overlay-closed{opacity:0}.settings-panel{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);width:min(440px,calc(100vw - 32px));max-height:calc(100vh - 64px);overflow-y:auto;overscroll-behavior-y:contain;touch-action:pan-y;box-shadow:var(--shadow-lg);transform:scale(.97) translateY(8px);opacity:0;transition:transform .28s var(--ease-spring),opacity .22s var(--ease-out)}html.dark .settings-panel{border-color:var(--border)}.settings-panel.panel-open{transform:scale(1) translateY(0);opacity:1}.settings-panel.panel-closed{transform:scale(.97) translateY(8px);opacity:0}@media(max-width:600px){.settings-overlay{align-items:flex-end;justify-content:center}.settings-panel{width:100%;max-height:85vh;border-radius:20px 20px 0 0;border-left:none;border-right:none;border-bottom:none;transform:translateY(100%);opacity:1;transition:transform .32s var(--ease-spring)}.settings-panel.panel-open{transform:translateY(0);opacity:1}.settings-panel.panel-closed{transform:translateY(100%);opacity:1}.settings-panel{overflow-y:auto}.settings-header{position:sticky;top:0;background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);z-index:var(--z-base)}}.settings-header{display:flex;align-items:center;justify-content:space-between;padding:20px var(--space-5);border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg);z-index:var(--z-base)}.settings-header h2{font-family:var(--font-display);font-size:var(--font-size-lg);margin:0}.settings-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-full);border:none;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease)}.settings-close:hover{background:var(--bg-secondary);color:var(--text)}.settings-phase{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border);background:var(--bg-secondary)}.phase-label{font-size:var(--font-size-sm);color:var(--text-secondary)}.phase-badge{display:inline-block;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.03em}.phase-pre-enrollment{background:#e2ebff;background:oklch(.94 .03 265);color:#274387}.phase-first-pass{background:#dcf2e3;color:#00572f;color:oklch(.4 .12 155)}.phase-second-pass{background:#f6e9d5;color:#5f4200;color:oklch(.4 .12 80)}.phase-instruction{background:#e2ebff;background:oklch(.94 .03 265);color:#274387}.phase-finals{background:#ffe4e1;color:#7c2524}.phase-holiday,.phase-break{background:#d5f2f3;color:#005358;color:oklch(.4 .12 200)}html.dark .phase-pre-enrollment{background:#0f1624;color:#8cadf4}html.dark .phase-first-pass{background:#0a1a10;color:#71c38f}html.dark .phase-second-pass{background:#1d1406;color:#d2a657}html.dark .phase-instruction{background:#0f1624;color:#8cadf4}html.dark .phase-finals{background:#22100f;color:#ec928b}html.dark .phase-holiday,html.dark .phase-break{background:#031a1b;color:#42c3c9}.settings-body{padding:var(--space-5);display:flex;flex-direction:column;gap:20px}.settings-calendar-info{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm)}.settings-calendar-info p{margin:var(--space-1) 0;color:var(--text-secondary)}.settings-calendar-info strong{color:var(--text)}.settings-actions{display:flex;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--border);justify-content:flex-end}.btn-primary{padding:9px var(--space-5);border-radius:var(--radius-lg);border:none;background:var(--primary);color:var(--text-on-primary);font-weight:600;font-size:var(--font-size-sm);font-family:var(--font-body);cursor:pointer;transition:background-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease),transform var(--duration) var(--ease)}.btn-primary:hover{background:var(--primary-hover);box-shadow:var(--shadow-sm)}.btn-primary:active{transform:scale(.97);transition-duration:.06s}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-secondary{padding:9px var(--space-5);border-radius:var(--radius-lg);border:1px solid var(--border);background:transparent;color:var(--text-secondary);font-weight:500;font-size:var(--font-size-sm);font-family:var(--font-body);cursor:pointer;transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease),transform var(--duration) var(--ease)}.btn-secondary:hover{border-color:var(--border-hover);color:var(--text);background:var(--surface-hover)}.btn-secondary:active{transform:scale(.97);transition-duration:.06s}.settings-note{padding:0 var(--space-5) var(--space-4);font-size:var(--font-size-xs);color:var(--text-muted);text-align:center}.personalized-banner{max-width:800px;margin:0 auto var(--space-6);padding:20px 28px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);animation:fadeInUp var(--duration-glass) var(--ease-out) both}.banner-phase-center{display:flex;justify-content:center;margin-bottom:var(--space-2)}.phase-badge-glow{animation:badgePulse 3s ease-in-out infinite}.phase-badge-glow.phase-second-pass{background:var(--danger-light);color:var(--danger)}.phase-badge-glow.phase-pre-enrollment{--glow-sm: oklch(.38 .1 260 / .15);--glow-md: oklch(.38 .1 260 / .3);--glow-lg: oklch(.38 .1 260 / .08);box-shadow:0 0 12px var(--glow-sm)}html.dark .phase-badge-glow.phase-pre-enrollment{--glow-sm: oklch(.55 .1 260 / .2);--glow-md: oklch(.55 .1 260 / .4);--glow-lg: oklch(.55 .1 260 / .1);box-shadow:0 0 16px var(--glow-sm)}.banner-standing-center{text-align:center;font-weight:600;font-size:var(--font-size-sm);color:var(--text);margin-bottom:var(--space-2)}.banner-status{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2)}.banner-standing{font-weight:600;font-size:var(--font-size-sm);color:var(--text)}.banner-tip{margin:0;font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5;text-align:center}.patch-notes-page{max-width:700px;margin:0 auto;padding:var(--space-4) 20px 60px}.patch-notes-header{margin-bottom:var(--space-6)}.patch-notes-back{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-secondary);text-decoration:none;padding:6px var(--space-3);border-radius:var(--radius-full);transition:color var(--duration) var(--ease),background-color var(--duration) var(--ease);margin-bottom:var(--space-4)}.patch-notes-back:hover{color:var(--primary);background:var(--primary-subtle)}.patch-notes-title{font-family:var(--font-display);font-size:var(--font-size-2xl);font-weight:800;color:var(--text);letter-spacing:-.03em;margin-bottom:var(--space-1);line-height:1.15}.patch-notes-subtitle{font-size:var(--font-size-base);color:var(--text-muted)}.patch-notes-releases{display:flex;flex-direction:column;gap:20px}.patch-notes-release{display:flex;gap:20px;position:relative}.release-timeline{display:flex;flex-direction:column;align-items:center;padding-top:28px;flex-shrink:0;width:20px}.release-timeline-dot{width:12px;height:12px;border-radius:50%;background:var(--primary);border:3px solid var(--bg);box-shadow:0 0 0 2px var(--primary);flex-shrink:0;z-index:var(--z-base)}.release-timeline-line{width:2px;flex:1;background:var(--border);margin-top:var(--space-1)}.release-content{display:flex;flex-direction:column;gap:14px;flex:1;min-width:0}.release-version-card{padding:var(--space-5)}.release-version-row{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.release-version-badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-3);font-family:var(--font-mono);font-size:var(--font-size-sm);font-weight:700;color:var(--text-on-primary);background:var(--primary);border-radius:var(--radius-full);letter-spacing:.02em}.release-date{font-size:var(--font-size-sm);color:var(--text-muted);font-weight:500}.release-title{font-family:var(--font-display);font-size:var(--font-size-xl);font-weight:700;color:var(--text);letter-spacing:-.02em;margin-bottom:6px;line-height:1.3}.release-summary{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.55}.release-section-card{padding:20px var(--space-5);transition:transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.release-section-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.release-section-heading{display:flex;align-items:center;gap:var(--space-2);margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--border)}.release-section-heading h3{font-family:var(--font-display);font-size:var(--font-size-base);font-weight:700;color:var(--text);letter-spacing:-.01em;margin:0}.release-section-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);background:var(--primary-subtle);color:var(--primary);flex-shrink:0}.release-items{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.release-item{display:flex;align-items:flex-start;gap:10px;font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.55}.release-item-icon{display:flex;align-items:center;justify-content:center;width:14px;height:14px;flex-shrink:0;margin-top:var(--space-1);opacity:.7}.release-item-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0;opacity:.6}.patch-notes-cta{text-align:center;padding:var(--space-7) 0 20px}.patch-notes-cta-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);font-size:var(--font-size-base);font-weight:700;font-family:var(--font-display);color:var(--text-on-primary);background:var(--primary);border-radius:var(--radius-full);text-decoration:none;transition:transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease),background var(--duration) var(--ease);box-shadow:var(--shadow-sm)}.patch-notes-cta-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);background:var(--primary-hover)}.patch-notes-cta-btn:active{transform:scale(.97)}@media(max-width:1024px){.hero{padding-left:var(--space-4);padding-right:var(--space-4)}}@media(hover:none){.planner-card .planner-demote-btn,.planner-card .planner-remove-btn{opacity:1;pointer-events:auto}}.card-link:active .card,.pagination-btn:active:not(:disabled),.filter-btn:active,.toggle-btn:active{transform:scale(.97)}@media print{.navbar,.footer,.shader-background,.planner-floating-pill,.planner-sidebar,.pwa-install-banner,.a11y-popup,.settings-panel,.settings-overlay{display:none!important}.app-main{padding:0}body{background:#fff!important;color:#000!important}.card,.liquid-glass{background:#fff!important;border:1px solid #ccc!important;box-shadow:none!important}.collapsible-panel{max-height:none!important;overflow:visible!important}}@media(forced-colors:active){.card,.liquid-glass{border:1px solid ButtonText}.btn-primary,.add-to-planner-btn{border:2px solid ButtonText}a{color:LinkText}.score-dot{border:2px solid ButtonText}.hm-cell{border:1px solid ButtonText}}@supports not (backdrop-filter: blur(1px)){.lg-frost{background:var(--bg);opacity:.95}}@media(max-width:768px){.navbar{padding:var(--space-3) var(--space-3) 0}.navbar-inner{padding:var(--space-2) var(--space-2) var(--space-2) 18px;gap:var(--space-2)}.navbar-brand{font-size:var(--font-size-md)}.navbar-search-expand .search-dropdown{left:50%;right:auto;transform:translate(-50%);width:calc(100vw - 32px);max-width:600px}.navbar-links a{display:none}.hero{padding:56px var(--space-4) 28px}.hero-title{font-size:3rem}.hero-subtitle{font-size:var(--font-size-base);margin-bottom:var(--space-3)}.hero-search .search-input{padding:14px 20px;font-size:var(--font-size-base)}.popular-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}.marquee-section{padding:0 0 36px}.planner-kanban{grid-template-columns:1fr}.planner-header-top{flex-direction:column;gap:var(--space-3)}.planner-header-actions{width:100%;overflow-x:auto}.planner-search-row{max-width:none}.planner-summary{flex-direction:column;gap:10px}.planner-remove-btn,.planner-demote-btn,.planner-move-btns{opacity:1}.section-title{font-size:var(--font-size-md)}.container{padding:0 var(--space-4)}.course-detail-page{padding:var(--space-4)}.rec-stats-grid,.stats-grid{grid-template-columns:repeat(2,1fr)}.rec-course{font-size:var(--font-size-2xl)}.calc-form{flex-direction:column;align-items:stretch}.calc-stat-row{grid-template-columns:1fr}.calc-stat-row .calc-stat+.calc-stat{border-left:none;border-top:1px solid var(--border)}.rec-header{flex-direction:row}.score-ring-wrap{width:auto;height:auto}.score-ring{width:52px;height:52px}.score-ring-text{font-size:14px}.score-ring-label{font-size:var(--font-size-xs)}.filter-bar{padding:0 var(--space-4);margin-bottom:var(--space-8)}.filtered-results{padding:0 var(--space-4) var(--space-8)}.personalized-banner{margin-left:var(--space-4);margin-right:var(--space-4)}.info-popup,.class-stats{padding:20px}.footer{padding:44px var(--space-4) var(--space-5)}.patch-notes-page{padding:var(--space-3) var(--space-4) var(--space-8)}.patch-notes-title{font-size:var(--font-size-xl)}.release-timeline{display:none}.patch-notes-release{gap:0}}@media(max-width:600px){.hero{padding:44px var(--space-4) var(--space-5)}.hero-title{font-size:var(--font-size-3xl)}.hero-subtitle{font-size:var(--font-size-sm);margin-bottom:10px}.hero-search .search-input{padding:var(--space-3) var(--space-4);font-size:var(--font-size-base);border-radius:var(--radius-lg)}.popular-grid{grid-template-columns:1fr 1fr;gap:var(--space-2)}.card{padding:14px;border-radius:var(--radius-lg)}.navbar{padding:10px var(--space-2) 0}.navbar-inner{gap:var(--space-1);padding:7px 6px 7px 14px}.navbar-brand{font-size:var(--font-size-md)}.navbar-links a{font-size:var(--font-size-sm);padding:5px 10px}.popular-item{padding:10px var(--space-3);font-size:var(--font-size-sm)}.theme-toggle,.settings-btn{width:32px;height:32px}.stats-grid{grid-template-columns:1fr 1fr;gap:var(--space-2)}.stat-card{padding:var(--space-3) var(--space-2)}.stat-card-value{font-size:var(--font-size-md)}.stat-card-label,.course-card-label{font-size:var(--font-size-xs)}.filter-bar{gap:.4rem;padding:0 var(--space-3);margin-bottom:36px}.filter-select{font-size:var(--font-size-xs);padding:.38rem .75rem}.search-dropdown{max-height:300px}.class-stats{padding:var(--space-4)}.class-stats h3{font-size:var(--font-size-base)}.patch-notes-page{padding:var(--space-2) var(--space-3) var(--space-7)}.patch-notes-title{font-size:var(--font-size-xl)}.release-version-card,.release-section-card{padding:var(--space-4)}.release-title{font-size:var(--font-size-md)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.rec-rank-badge{display:inline-flex;align-items:center;gap:var(--space-1);height:34px;padding:0 14px;background:var(--primary);color:#faf8f5;border-radius:var(--radius-full);font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:700;letter-spacing:-.01em;animation:scaleIn var(--duration-glass) var(--ease-out) .2s both}html.dark .rec-rank-badge{color:#050911}.class-stats{padding:28px}.stats-section{margin-bottom:var(--space-5)}.stats-section:last-child{margin-bottom:0}.stats-section-label{font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:var(--space-2)}.trend-label{font-size:var(--font-size-xs);font-weight:600;padding:2px var(--space-2);border-radius:var(--radius-full);text-transform:none;letter-spacing:0}.trend-expanding{background:var(--success-light);color:var(--success)}.trend-shrinking{background:var(--danger-light);color:var(--danger)}.trend-stable{background:var(--primary-light);color:var(--primary)}.trend-description{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5;padding:var(--space-2) 0}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat-card{text-align:center;padding:var(--space-4) 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);transition:background var(--duration) var(--ease),transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease);position:relative;overflow:hidden;animation:statReveal var(--duration-glass) var(--ease-out) both;animation-delay:calc(var(--stat-i, 0) * 50ms + .1s)}.stat-card:hover{background:var(--primary-subtle);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.stat-card-value{display:block;font-size:var(--font-size-xl);font-weight:700;font-family:var(--font-display);color:var(--primary);margin-bottom:var(--space-1);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.stat-card-label{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;line-height:1.3}.stat-bar{width:100%;height:4px;background:var(--border);border-radius:var(--radius-full);overflow:hidden;margin-top:var(--space-2)}.stat-bar-fill{height:100%;border-radius:var(--radius-full);transition:width .8s var(--ease);background:var(--primary)}.stat-bar-fill.bar-success{background:var(--success)}.stat-bar-fill.bar-warning{background:var(--warning)}.stat-bar-fill.bar-danger{background:var(--danger)}.seasons-row{display:flex;gap:var(--space-2);flex-wrap:wrap;padding:var(--space-1) 0}.season-tag{display:inline-flex;align-items:center;gap:5px;padding:5px var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600;background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border);animation:scaleIn var(--duration-glass) var(--ease-out) both;animation-delay:calc(var(--stat-i, 0) * 80ms + .3s);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.season-tag-count{font-size:var(--font-size-xs);font-weight:700;padding:1px 6px;border-radius:var(--radius-full);background:var(--primary-subtle);color:var(--primary)}@keyframes statReveal{0%{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes pageEnter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.25)}30%{transform:scale(1)}45%{transform:scale(1.15)}60%{transform:scale(1)}}@keyframes tooltipIn{0%{opacity:0;transform:translateY(-5px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes wiggleSwing{0%{transform:scale(1.03) rotate(0)}15%{transform:scale(1.03) rotate(1.2deg)}30%{transform:scale(1.03) rotate(-1deg)}45%{transform:scale(1.03) rotate(.6deg)}60%{transform:scale(1.03) rotate(-.4deg)}75%{transform:scale(1.03) rotate(.2deg)}to{transform:scale(1.03) rotate(0)}}@keyframes wiggleContinuous{0%,to{transform:scale(1.03) rotate(0)}25%{transform:scale(1.03) rotate(.5deg)}75%{transform:scale(1.03) rotate(-.5deg)}}@keyframes badgePulse{0%,to{box-shadow:0 0 6px var(--glow-sm, transparent)}50%{box-shadow:0 0 16px var(--glow-md, transparent),0 0 32px var(--glow-lg, transparent)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}@keyframes popupOverlayIn{0%{opacity:0}to{opacity:1}}@keyframes popupOverlayOut{0%{opacity:1}to{opacity:0}}@keyframes popupCardIn{0%{opacity:0;transform:scale(.92) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes popupCardOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.95) translateY(10px)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}.not-found-page{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 80px);min-height:calc(100dvh - 80px);padding:2rem 1rem}.not-found-container{display:flex;flex-direction:column;align-items:center;gap:0;max-width:520px;width:100%}.not-found-code{display:flex;align-items:center;justify-content:center;gap:.05em;font-family:var(--font-display);font-size:clamp(7rem,18vw,12rem);font-weight:800;line-height:1;letter-spacing:-.04em;-webkit-user-select:none;user-select:none;animation:notFoundFloat 5s ease-in-out infinite;margin-bottom:-.15em;position:relative;z-index:var(--z-base)}.not-found-four{background:linear-gradient(135deg,var(--primary) 0%,oklch(.55 .18 280) 50%,var(--primary) 100%);background-size:200% 200%;animation:notFoundGradient 6s ease infinite;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.not-found-zero{background:linear-gradient(135deg,oklch(.55 .18 280) 0%,var(--primary) 50%,oklch(.55 .18 280) 100%);background-size:200% 200%;animation:notFoundGradient 6s ease infinite reverse;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;opacity:.7}@keyframes notFoundFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes notFoundGradient{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.not-found-glass{display:flex;flex-direction:column;align-items:center;text-align:center;gap:1.25rem;padding:2.5rem 2rem 2rem;border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-md);width:100%}.not-found-heading{font-family:var(--font-display);font-size:var(--font-size-xl);font-weight:700;color:var(--text);letter-spacing:-.02em;line-height:1.3}.not-found-subtext{font-family:var(--font-body);font-size:var(--font-size-base);color:var(--text-secondary);line-height:1.6;max-width:38ch}.not-found-search{width:100%;margin-top:.25rem}.not-found-search .search-wrapper{width:100%}.not-found-home-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.65rem 1.5rem;border-radius:var(--radius-full);background:var(--primary);color:var(--text-on-primary);font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:600;text-decoration:none;transition:background var(--duration) var(--ease),transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease);box-shadow:var(--shadow-sm);margin-top:.25rem}.not-found-home-btn:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.not-found-home-btn:active{transform:scale(.97)}.not-found-home-btn svg{flex-shrink:0}@media(max-width:600px){.not-found-page{padding:1.5rem .75rem;min-height:calc(100vh - 64px);min-height:calc(100dvh - 64px)}.not-found-code{font-size:clamp(5rem,22vw,8rem)}.not-found-glass{padding:2rem 1.25rem 1.75rem}.not-found-heading{font-size:var(--font-size-md)}.not-found-subtext{font-size:var(--font-size-sm)}}.skip-nav-link{position:fixed;top:-100%;left:50%;transform:translate(-50%);z-index:var(--z-a11y);padding:var(--space-3) var(--space-5);background:var(--primary);color:var(--text-on-primary);font-weight:600;font-size:var(--font-size-base);font-family:var(--font-body);border-radius:0 0 var(--radius-lg) var(--radius-lg);text-decoration:none;transition:top var(--duration) var(--ease)}.skip-nav-link:focus{top:0;outline:none}.a11y-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;min-width:44px;min-height:44px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease),transform var(--duration) var(--ease);position:relative}.a11y-btn:hover{background:var(--surface-hover);color:var(--text);border-color:var(--border-hover)}.a11y-btn:active{transform:scale(.97);transition-duration:.06s}.a11y-btn.a11y-active-btn:after{content:"";position:absolute;top:-2px;right:-2px;width:10px;height:10px;background:var(--primary);border-radius:var(--radius-full);border:2px solid var(--bg)}.a11y-overlay{position:fixed;inset:0;background:var(--overlay-bg);backdrop-filter:var(--overlay-blur);-webkit-backdrop-filter:var(--overlay-blur);z-index:var(--z-toast);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--duration-normal) var(--ease);overscroll-behavior:none;touch-action:none}.a11y-overlay.overlay-open{opacity:1}.a11y-overlay.overlay-closed{opacity:0;pointer-events:none}.a11y-popup{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-xl);width:min(480px,calc(100vw - 32px));max-height:calc(100vh - 64px);overflow-y:auto;overscroll-behavior-y:contain;touch-action:pan-y;box-shadow:var(--shadow-lg);z-index:var(--z-modal);transform:scale(.96) translateY(8px);opacity:0;transition:transform var(--duration-slow) var(--ease-spring),opacity var(--duration-normal) var(--ease-out)}.a11y-popup.popup-open{transform:scale(1) translateY(0);opacity:1}.a11y-popup.popup-closed{transform:scale(.96) translateY(8px);opacity:0}.a11y-popup-header{display:flex;align-items:center;justify-content:space-between;padding:20px var(--space-5);border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:var(--z-base)}.a11y-popup-header h2{font-family:var(--font-display);font-size:var(--font-size-lg);margin:0}.a11y-popup-body{padding:var(--space-2) 0;max-height:calc(100vh - 200px);overflow-y:auto;overscroll-behavior-y:contain;touch-action:pan-y}@media(max-width:600px){.a11y-overlay{align-items:flex-end}.a11y-sheet{border-left:none;border-right:none;border-radius:20px 20px 0 0}.a11y-popup{width:100%;max-height:85vh;border-radius:20px 20px 0 0;border-left:none;border-right:none;border-bottom:none;transform:translateY(100%);opacity:1;transition:transform .35s var(--ease-spring)}.a11y-popup.popup-open{transform:translateY(0);opacity:1}.a11y-popup.popup-closed{transform:translateY(100%);opacity:1}.a11y-popup-header{position:sticky;top:0;background:var(--surface);z-index:var(--z-base)}}.a11y-sheet{background:var(--surface);border:1.5px solid var(--border);border-bottom:none;border-radius:24px 24px 0 0;width:100%;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg);transform:translateY(100%);opacity:1;transition:transform .35s var(--ease-spring)}.a11y-sheet.sheet-open{transform:translateY(0)}.a11y-sheet.sheet-closed{transform:translateY(100%)}.sheet-drag-handle{display:flex;justify-content:center;padding:var(--space-3) 0 var(--space-1);flex-shrink:0;touch-action:none}.sheet-drag-pill{width:36px;height:5px;border-radius:var(--radius-full);background:#80808066}.sheet-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-5) var(--space-4);flex-shrink:0;border-bottom:1px solid var(--border);touch-action:none}.sheet-header h2{font-family:var(--font-display);font-size:var(--font-size-lg);margin:0}.sheet-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-width:44px;min-height:44px;border-radius:var(--radius-full);border:none;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease)}.sheet-close:hover{background:var(--bg-secondary);color:var(--text)}.sheet-body{padding:0 0 env(safe-area-inset-bottom,var(--space-5));overflow-y:auto;flex:1;min-height:0;overscroll-behavior-y:contain;touch-action:pan-y}.a11y-section{padding:0 var(--space-5) var(--space-4)}.a11y-section-title{font-family:var(--font-display);font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);padding:var(--space-3) 0 var(--space-2)}.a11y-section-group{background:var(--glass-bg-subtle);border-radius:var(--radius-lg);border:1px solid var(--border);overflow:hidden}.a11y-section-group>*:not(:last-child){border-bottom:1px solid var(--border)}.a11y-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);gap:var(--space-3);transition:background var(--duration) var(--ease)}.a11y-toggle-row:hover{background:var(--surface-hover)}.a11y-toggle-info{flex:1;min-width:0}.a11y-toggle-label{display:block;font-size:var(--font-size-base);font-weight:500;color:var(--text);cursor:pointer}.a11y-toggle-desc{display:block;font-size:var(--font-size-xs);color:var(--text-muted);margin-top:1px}.a11y-toggle{position:relative;width:50px;height:30px;border-radius:var(--radius-full);border:2px solid var(--border);background:var(--bg-secondary);cursor:pointer;transition:background-color var(--duration) var(--ease),border-color var(--duration) var(--ease);flex-shrink:0;padding:0}.a11y-toggle.toggle-on{background:var(--primary);border-color:var(--primary)}.toggle-thumb{position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:var(--radius-full);background:var(--text-on-primary);box-shadow:0 1px 3px #11161f33;transition:transform var(--duration) var(--ease-spring);display:flex;align-items:center;justify-content:center}.a11y-toggle.toggle-on .toggle-thumb{transform:translate(20px)}.toggle-icon{color:var(--primary);transition:color var(--duration) var(--ease)}.a11y-toggle.toggle-off .toggle-icon{color:var(--text-muted)}.a11y-radio-group{padding:var(--space-3) var(--space-4)}.a11y-radio-label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary);margin-bottom:var(--space-2)}.a11y-radio-option{display:flex;align-items:center;gap:10px;padding:var(--space-2) 0;cursor:pointer;font-size:var(--font-size-sm);color:var(--text)}.a11y-radio-option input[type=radio]{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.a11y-radio-custom{width:18px;height:18px;border-radius:var(--radius-full);border:2px solid var(--border);background:var(--surface);transition:border-color var(--duration) var(--ease),background-color var(--duration) var(--ease);flex-shrink:0;position:relative}.a11y-radio-option input:checked+.a11y-radio-custom{border-color:var(--primary);background:var(--primary)}.a11y-radio-option input:checked+.a11y-radio-custom:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:6px;height:6px;border-radius:var(--radius-full);background:var(--text-on-primary)}.a11y-radio-text{flex:1}.a11y-actions{padding:var(--space-3) var(--space-5) var(--space-5);display:flex;justify-content:center}body.a11y-cb-protanopia #root{filter:url(#a11y-filter-protanopia)}body.a11y-cb-deuteranopia #root{filter:url(#a11y-filter-deuteranopia)}body.a11y-cb-tritanopia #root{filter:url(#a11y-filter-tritanopia)}body.a11y-dyslexia{--font-body: "OpenDyslexic", "DM Sans", system-ui, sans-serif;--font-display: "OpenDyslexic", "Manrope", system-ui, sans-serif}body.a11y-dyslexia *{letter-spacing:.02em;word-spacing:.1em}body.a11y-large-text{font-size:18px}body.a11y-high-contrast{--surface: var(--bg);--surface-hover: var(--bg-secondary)}body.a11y-high-contrast .settings-panel,body.a11y-high-contrast .a11y-popup,body.a11y-high-contrast .a11y-sheet,body.a11y-high-contrast .info-popup{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--bg);border:2px solid var(--text-secondary)}body.a11y-high-contrast .a11y-section-group{border:2px solid var(--text-secondary)}body.a11y-high-contrast :focus-visible{outline-width:3px;outline-color:var(--text)}body.a11y-reduced-motion *,body.a11y-reduced-motion *:before,body.a11y-reduced-motion *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}body.a11y-reduced-motion .page-transition{animation:none}body.a11y-sr-tags [aria-label]:after{content:attr(aria-label);position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%);font-family:var(--font-mono);font-size:9px;font-weight:400;color:var(--text-muted);background:var(--glass-bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px 6px;white-space:nowrap;pointer-events:none;z-index:var(--z-navbar);opacity:.7;line-height:1.3}body.a11y-sr-tags [aria-label]{position:relative}body.a11y-sr-tags [aria-hidden=true]:after,body.a11y-sr-tags .sr-only:after,body.a11y-sr-tags .a11y-overlay:after,body.a11y-sr-tags .a11y-overlay [aria-label]:after{display:none}body.a11y-cb-symbols .phase-badge:before{margin-right:var(--space-1)}body.a11y-cb-symbols .phase-first-pass:before{content:"1";font-weight:700}body.a11y-cb-symbols .phase-second-pass:before{content:"2";font-weight:700}body.a11y-cb-symbols .phase-pre-enrollment:before{content:"▶"}body.a11y-cb-symbols .score-dot{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;font-family:var(--font-display);color:var(--text-on-primary);text-shadow:0 .5px 1px rgba(0,0,0,.4)}body.a11y-cb-symbols .score-dot.green:after{content:"1"}body.a11y-cb-symbols .score-dot.yellow:after{content:"2"}body.a11y-cb-symbols .score-dot.red:after{content:"3"}body.a11y-cb-symbols .score-dot.blue:after{content:"!"}body.a11y-cb-symbols .score-dot.yellow{color:#000000d9;text-shadow:none}body.a11y-cb-symbols .score-dot-lg{width:18px;height:18px;font-size:10px}body.a11y-cb-symbols .color-preset:after{content:"";display:block;font-size:8px;text-align:center;color:var(--text-on-primary);text-shadow:0 0 2px rgba(0,0,0,.5)}body.a11y-active :focus-visible{outline-width:3px}.grade-dist .grade-source{font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:var(--space-4)}.grade-dist .grade-source a{color:var(--primary);text-decoration:underline}.grade-stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:var(--space-3)}.grade-stat{display:flex;flex-direction:column;align-items:center;padding:var(--space-3) var(--space-2);border-radius:10px;background:var(--glass-bg)}.grade-stat-value{font-size:var(--font-size-xl);font-weight:700;color:var(--primary)}.grade-stat-label{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);margin-top:var(--space-1);text-align:center}.external-links-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-3)}.external-link-item{display:flex;flex-direction:column;gap:var(--space-1);padding:14px var(--space-4);border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);text-decoration:none;color:var(--text);transition:transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease),border-color var(--duration) var(--ease);position:relative}.external-link-item:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--primary)}.external-link-item:active{transform:scale(.97)}.external-link-label{font-weight:600;font-size:var(--font-size-base);padding-right:22px}.external-link-desc{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.3}.external-link-icon{position:absolute;top:var(--space-3);right:var(--space-3);opacity:.4}.external-link-item:hover .external-link-icon{opacity:.8}.dept-controls{display:flex;flex-direction:column;gap:10px;margin-bottom:var(--space-1)}.dept-controls-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dept-controls .filter-bar{margin-bottom:0}.dept-filter-bar{flex-wrap:wrap}.dept-controls-row-right{display:flex;align-items:center;gap:10px;margin-left:auto}.dept-view-toggle{display:flex;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-full);padding:3px;gap:2px}.dept-view-toggle-btn{display:flex;align-items:center;gap:6px;padding:6px 14px;border-radius:var(--radius-full);border:none;background:transparent;color:var(--text-secondary);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:background-color var(--duration-normal) var(--ease),color var(--duration-normal) var(--ease),box-shadow var(--duration-normal) var(--ease);white-space:nowrap}.dept-view-toggle-btn.active{background:var(--glass-bg);color:var(--text);box-shadow:0 1px 4px #11161f14;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.dept-view-toggle-btn:not(.active):hover{color:var(--text);background:var(--glass-bg-subtle)}.dept-view-enter{animation:fadeInUp var(--duration-slow) var(--ease-out) both}.heatmap-wrap{margin-bottom:var(--space-2)}.heatmap-grid{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-1) 0}.hm-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;min-width:62px;height:54px;border-radius:var(--radius-lg);border:1.5px solid var(--border);background:var(--glass-bg);cursor:pointer;padding:var(--space-1) 10px;font-family:inherit;transition:transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease),border-color var(--duration) var(--ease),background var(--duration) var(--ease);animation:heatmapCellEnter .35s var(--ease-out) both;animation-delay:calc(var(--i, 0) * 12ms)}@keyframes heatmapCellEnter{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.hm-cell:hover,.hm-cell.hm-active{transform:translateY(-3px) scale(1.06);box-shadow:0 6px 20px #11161f1f;z-index:var(--z-base)}.hm-cell:active{transform:translateY(0) scale(.97)}.hm-cell.hm-easy{border-color:var(--success);background:#dbf3dbb3}.hm-cell.hm-mid{border-color:var(--warning);background:#fbe9c6b3}.hm-cell.hm-hard{border-color:var(--danger);background:#ffe2dfb3;background:oklch(.94 .05 25 / .7)}.hm-cell.hm-none{border-color:var(--border);color:var(--text-muted);opacity:1}html.dark .hm-cell.hm-easy{background:#152715b3}html.dark .hm-cell.hm-mid{background:#2d1f01b3}html.dark .hm-cell.hm-hard{background:#361715b3}.hm-num{font-weight:700;font-size:var(--font-size-sm);line-height:1;color:var(--text)}.hm-score{font-size:var(--font-size-xs);font-weight:600;margin-top:2px;opacity:1;color:var(--text-secondary)}.hm-cell.hm-easy .hm-score{color:var(--success);opacity:1}.hm-cell.hm-mid .hm-score{color:var(--warning);opacity:1}.hm-cell.hm-hard .hm-score{color:var(--danger);opacity:1}html.dark .hm-cell .hm-num{color:var(--text)}html.dark .hm-cell.hm-easy .hm-score{color:#6bc670;opacity:1}html.dark .hm-cell.hm-mid .hm-score{color:#e7b643;opacity:1}html.dark .hm-cell.hm-hard .hm-score{color:#ff847d;opacity:1}.hm-tooltip{display:flex;align-items:center;gap:10px;margin-top:var(--space-3);padding:10px var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);font-size:var(--font-size-sm);min-height:42px;opacity:0;transform:translateY(4px);transition:opacity var(--duration) var(--ease),transform var(--duration) var(--ease)}.hm-tooltip.visible{opacity:1;transform:translateY(0)}.hm-tooltip-code{font-weight:700;font-family:var(--font-display)}.hm-tooltip-badge{font-size:var(--font-size-xs);font-weight:600;padding:2px var(--space-2);border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.03em}.hm-tooltip-badge.hm-easy{background:#d5ecd5;color:var(--success)}.hm-tooltip-badge.hm-mid{background:#f7e2b8;color:var(--warning)}.hm-tooltip-badge.hm-hard{background:#ffdad6;background:oklch(.92 .06 25);color:var(--danger)}html.dark .hm-tooltip-badge.hm-easy{background:#152715}html.dark .hm-tooltip-badge.hm-mid{background:#2d1f00;background:oklch(.25 .06 85)}html.dark .hm-tooltip-badge.hm-hard{background:#3a1412}.hm-tooltip-score{color:var(--text-secondary);font-size:var(--font-size-sm)}.hm-legend{display:flex;gap:var(--space-4);margin-bottom:14px;font-size:var(--font-size-sm);color:var(--text-secondary)}.hm-legend-item{display:flex;align-items:center;gap:5px}.hm-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.hm-legend-dot.hm-easy{background:var(--success)}.hm-legend-dot.hm-mid{background:var(--warning)}.hm-legend-dot.hm-hard{background:var(--danger)}body.a11y-colorblind-symbols .hm-cell:after{font-size:var(--font-size-xs);font-weight:600;position:absolute;bottom:2px;left:50%;transform:translate(-50%)}body.a11y-colorblind-symbols .hm-cell.hm-easy:after{content:"L"}body.a11y-colorblind-symbols .hm-cell.hm-mid:after{content:"M"}body.a11y-colorblind-symbols .hm-cell.hm-hard:after{content:"H"}@media(max-width:600px){.hm-cell{min-width:50px;height:46px}.hm-legend{flex-wrap:wrap;gap:8px}.dept-controls{flex-direction:column;align-items:stretch}.dept-view-toggle{align-self:stretch;justify-content:center}}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:50vh;padding:var(--space-5)}.error-boundary-card{text-align:center;max-width:420px}.error-boundary-card h2{font-family:var(--font-display);font-size:var(--font-size-lg);font-weight:700;margin-bottom:var(--space-2)}.error-boundary-card p{color:var(--text-secondary);font-size:var(--font-size-sm);margin-bottom:20px}.error-boundary-actions{display:flex;gap:var(--space-2);justify-content:center}.error-boundary-retry,.error-boundary-reload{padding:var(--space-2) 20px;border-radius:var(--radius-full);font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;border:none;transition:opacity var(--duration) var(--ease)}.error-boundary-retry{background:var(--primary);color:var(--text-on-primary)}.error-boundary-reload{background:transparent;border:1.5px solid var(--border);color:var(--text-secondary)}@media(prefers-reduced-motion:reduce){*:not(.loading-spinner):not(.spinner):not([role=progressbar]):not(.page-loading),*:not(.loading-spinner):not(.spinner):not([role=progressbar]):not(.page-loading):before,*:not(.loading-spinner):not(.spinner):not([role=progressbar]):not(.page-loading):after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important}.heartbeat-icon,.footer-heart,[class*=heartbeat],[class*=badge-pulse],[class*=badgePulse],.phase-badge-glow{animation:none!important}.live-badge-dot,[class*=pulse]:not(.loading-spinner):not(.spinner):not([role=progressbar]){animation:none!important}.not-found-code,.not-found-four,.not-found-zero,[class*=notFound]{animation:none!important}[class*=check-pop],[class*=checkPop],.plan-btn.just-added .plan-icon-check{animation:none!important;transform:scale(1) rotate(0)!important}}.collapsible-section{overflow:hidden;overflow:clip}.collapsible-trigger{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);width:100%;padding:0;background:none;border:none;cursor:pointer;text-align:left;color:inherit;font:inherit}.collapsible-header{flex:1;min-width:0}.collapsible-title{font-family:var(--font-display);font-size:var(--font-size-base);font-weight:700;letter-spacing:-.01em;margin:0}.collapsible-summary{font-family:var(--font-display);font-size:var(--font-size-sm);color:var(--text-secondary);margin:var(--space-1) 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.collapsible-chevron{flex-shrink:0;margin-top:2px;transition:transform var(--duration-slow) var(--ease-out);color:var(--text-muted)}.collapsible-chevron-open{transform:rotate(180deg)}.collapsible-panel{max-height:0;overflow:hidden;transition:max-height var(--duration-slow) var(--ease-out)}.collapsible-content{padding-top:var(--space-4)}.enrollment-dashboard{margin-bottom:var(--space-4)}.enroll-onboard{text-align:center;padding:var(--space-5) 20px}.enroll-onboard p{font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--space-3)}.enroll-onboard select{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);border:1.5px solid var(--border);background:var(--surface);color:var(--text);font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:600;cursor:pointer}.enroll-status-strip{display:flex;gap:var(--space-4);font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--space-3)}.enroll-stat{display:flex;align-items:center;gap:var(--space-1)}.enroll-stat strong{color:var(--text);font-weight:700}.enroll-strategy{font-size:var(--font-size-sm);line-height:1.5;color:var(--text);margin-bottom:var(--space-4);padding:var(--space-3) var(--space-4);background:#eef2f980;border-radius:var(--radius-md)}.dark .enroll-strategy{background:#181b1f80}.enroll-course-row{display:flex;align-items:center;gap:var(--space-2);padding:6px 0;font-size:var(--font-size-sm)}.enroll-course-row a{color:var(--text);text-decoration:none;font-weight:600}.enroll-course-row a:hover{color:var(--primary)}.enroll-score-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.enroll-footer{margin-top:var(--space-3);text-align:right}.enroll-footer a{font-size:var(--font-size-sm);font-weight:600;color:var(--primary);text-decoration:none}.enroll-popular-label{font-size:var(--font-size-sm);color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin:var(--space-3) 0 var(--space-2)}.enroll-popular-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.enroll-popular-chip{font-size:var(--font-size-sm);font-weight:600;color:var(--text);text-decoration:none;padding:6px 10px;border-radius:var(--radius-sm);background:#eef2f966;text-align:center;transition:background var(--duration) var(--ease)}.dark .enroll-popular-chip{background:#181b1f66}.enroll-popular-chip:hover{background:#e0e8f699}.dark .enroll-popular-chip:hover{background:#23293399}.enroll-phase-label{font-family:var(--font-display);font-size:var(--font-size-base);font-weight:700;margin-bottom:var(--space-1)}.enroll-countdown{font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--space-3)}.toast-container{position:fixed;bottom:var(--space-5);right:var(--space-5);z-index:var(--z-a11y);display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}.toast{pointer-events:auto;background:var(--surface);-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3) 20px;font-size:var(--font-size-sm);font-weight:500;color:var(--text);box-shadow:var(--shadow-md);cursor:pointer;animation:toastIn var(--duration-normal) var(--ease-spring) both}@keyframes toastIn{0%{opacity:0;transform:translateY(12px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.toast-exiting{animation:toastOut var(--duration-normal) var(--ease) both}@keyframes toastOut{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(12px) scale(.95)}}@media(max-width:600px){.toast-container{left:var(--space-4);right:var(--space-4);bottom:var(--space-4)}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.pwa-install-banner{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1rem 1.5rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid var(--border);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);z-index:var(--z-toast);font-size:var(--font-size-sm, .875rem)}.pwa-install-banner button{padding:.5rem 1rem;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;font-size:var(--font-size-sm, .875rem);min-height:44px;min-width:44px}.pwa-install-banner button:first-of-type{background:var(--primary);color:var(--text-on-primary);border-color:var(--primary)}.planner-sidebar{position:fixed;top:70px;right:0;width:300px;max-height:calc(100vh - 80px);overflow-y:auto;z-index:var(--z-sticky);padding:var(--space-4);background:var(--surface);-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);border-left:1px solid var(--border);transition:transform var(--duration-slow) var(--ease),width var(--duration-slow) var(--ease)}.planner-sidebar-collapsed{width:48px;padding:var(--space-4) var(--space-2)}.sidebar-toggle{display:flex;align-items:center;gap:var(--space-1);background:none;border:none;cursor:pointer;color:var(--text-secondary);padding:var(--space-1);margin-bottom:var(--space-2)}.sidebar-count{font-size:var(--font-size-xs);font-weight:700;color:var(--text)}.sidebar-title{font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:700;margin-bottom:var(--space-3)}.sidebar-courses{display:flex;flex-direction:column;gap:var(--space-1)}.sidebar-course-row{display:flex;align-items:center;gap:var(--space-2);padding:6px var(--space-1);font-size:var(--font-size-sm);border-radius:var(--radius-sm)}.sidebar-course-row:hover{background:#eef2f966}.dark .sidebar-course-row:hover{background:#181b1f66}.sidebar-course-link{font-weight:600;color:var(--text);text-decoration:none;flex:1}.sidebar-course-link:hover{color:var(--primary)}.sidebar-course-row .rec-badge{font-size:var(--font-size-xs);padding:2px 6px}.sidebar-bucket{margin-bottom:var(--space-2)}.sidebar-bucket-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-1) 0;margin-bottom:var(--space-1)}.sidebar-bucket-label{font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.sidebar-footer{margin-top:var(--space-3);padding-top:var(--space-2);border-top:1px solid var(--border)}.sidebar-footer a{font-size:var(--font-size-sm);font-weight:600;color:var(--primary);text-decoration:none}.has-sidebar .app-main{margin-right:300px;transition:margin-right var(--duration-slow) var(--ease)}.has-sidebar-collapsed .app-main{margin-right:var(--space-8)}@media(max-width:1199px){.planner-sidebar{display:none}.has-sidebar .app-main,.has-sidebar-collapsed .app-main{margin-right:0}}@media(prefers-reduced-motion:reduce){.planner-sidebar,.has-sidebar .app-main,.has-sidebar-collapsed .app-main{transition:none}}.planner-floating-pill{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);background:var(--primary);color:var(--text-on-primary);padding:10px var(--space-5);border-radius:var(--radius-full);font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:600;text-decoration:none;box-shadow:var(--shadow-md);z-index:var(--z-sticky)}@media(min-width:1200px){.planner-floating-pill{display:none}}.planner-strategy{font-size:var(--font-size-sm);line-height:1.5;color:var(--text);padding:var(--space-3) var(--space-4);background:#eef2f980;border-radius:var(--radius-md);margin-bottom:var(--space-4);word-break:break-word;overflow-wrap:anywhere;max-width:100%}.dark .planner-strategy{background:#181b1f80}.unit-cap-warning{display:flex;align-items:center;gap:var(--space-2);padding:10px var(--space-4);background:var(--warning-light);color:var(--warning);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;margin-top:var(--space-2)}.dept-index-page{max-width:1040px;margin:0 auto}.dept-index-heading{font-family:var(--font-display);font-size:var(--font-size-2xl);font-weight:700;color:var(--text);margin:0 0 6px}.dept-index-subtitle{font-family:var(--font-body);font-size:var(--font-size-base);color:var(--text-secondary);margin:0 0 20px}.dept-index-search-wrap{margin-bottom:var(--space-2)}.dept-index-search{width:100%;max-width:400px;padding:9px 14px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--glass-bg);color:var(--text);font-family:var(--font-body);font-size:var(--font-size-base);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.dept-index-search:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px var(--primary-subtle)}.dept-index-search::placeholder{color:var(--text-muted)}.dept-index-results-count{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--text-muted);margin:0 0 var(--space-4);min-height:1.2em}.dept-index-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.dept-index-card{display:block;text-decoration:none;color:inherit;transition:transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.dept-index-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.dept-index-code{font-family:var(--font-display);font-size:var(--font-size-md);font-weight:700;color:var(--text)}.dept-index-name{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--text-secondary);margin-top:2px;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dept-index-count{font-family:var(--font-body);font-size:var(--font-size-xs);color:var(--text-muted);margin-top:6px;margin-bottom:0}.dept-demand-bar{height:4px;border-radius:2px;background:var(--border);margin-top:var(--space-2);overflow:hidden}.dept-demand-fill{height:100%;border-radius:2px}@media(max-width:768px){.dept-index-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.dept-index-grid{grid-template-columns:1fr}.dept-index-heading{font-size:var(--font-size-xl)}}.course-dir-filters{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:20px;align-items:flex-end;padding:var(--space-4)}.course-dir-filters label{display:flex;flex-direction:column;gap:var(--space-1);font-family:var(--font-body);font-size:var(--font-size-xs);color:var(--text-muted)}.course-dir-filters select{font-family:var(--font-body);font-size:var(--font-size-sm);padding:6px var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text)}.course-dir-count-label{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--text-muted);margin-left:auto;align-self:flex-end;padding-bottom:6px}.course-dir-list{display:flex;flex-direction:column;gap:var(--space-1)}.course-dir-item{display:flex;align-items:center;gap:10px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);text-decoration:none;color:inherit;transition:background var(--duration) var(--ease)}.course-dir-item:hover{background:var(--surface-hover)}.course-dir-item .score-dot{flex-shrink:0}.course-dir-code{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-base);color:var(--text);min-width:90px}.course-dir-label{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--text-muted)}.course-dir-score{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-muted);margin-left:auto}.score-dot-green{background:var(--success)}.score-dot-yellow{background:var(--warning)}.score-dot-red{background:var(--danger)}.score-dot-blue{background:var(--primary)}.pagination button{font-family:var(--font-body);font-size:var(--font-size-sm);padding:6px var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);cursor:pointer;transition:background-color var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease)}.pagination button:hover{background:var(--surface-hover);border-color:var(--border-hover)}.pagination button[aria-current=page]{background:var(--primary);color:var(--text-on-primary);border-color:var(--primary)}.pagination button:disabled{opacity:.4;cursor:default}.pagination-ellipsis{font-size:var(--font-size-sm);color:var(--text-muted);padding:6px var(--space-1)}@media(max-width:600px){.course-dir-item{flex-wrap:wrap;padding:10px var(--space-3);border:1px solid var(--border);background:var(--surface);margin-bottom:2px}.course-dir-code{font-size:var(--font-size-base)}.course-dir-score{margin-left:0}.course-dir-label{width:100%;order:3}.course-dir-filters{flex-direction:column;align-items:stretch}.course-dir-count-label{margin-left:0;align-self:flex-start}}.ge-college-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.ge-area-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.ge-area-pill{font-family:var(--font-body);font-size:var(--font-size-xs);padding:var(--space-1) 10px;border-radius:var(--radius-full);background:var(--primary-subtle);color:var(--primary);text-decoration:none;transition:background var(--duration) var(--ease)}.ge-area-pill:hover{background:var(--primary-light)}.ge-course-grid{display:flex;flex-direction:column;gap:var(--space-1)}@media(max-width:768px){.ge-college-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.ge-college-grid{grid-template-columns:1fr}}.curated-list{display:flex;flex-direction:column;gap:6px;list-style:none;padding:0;margin:0}.curated-item{display:flex;align-items:center;gap:var(--space-3);padding:10px var(--space-4);text-decoration:none;color:inherit;transition:background var(--duration) var(--ease);border-radius:var(--radius-sm)}.curated-item:hover{background:var(--surface-hover)}.curated-rank{font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:700;color:var(--text-muted);width:28px;text-align:right;flex-shrink:0}.curated-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.curated-code{font-family:var(--font-display);font-weight:600;font-size:var(--font-size-base);color:var(--text)}.curated-score{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-muted);margin-left:auto}.curated-list-title{font-family:var(--font-display);font-size:var(--font-size-2xl);font-weight:700;margin:0 0 var(--space-2)}.curated-list-subtitle{font-family:var(--font-body);font-size:var(--font-size-base);color:var(--text-secondary);margin:0 0 var(--space-5)}.curated-empty{color:var(--text-secondary);font-style:italic;margin:var(--space-5) 0}.curated-methodology{font-size:var(--font-size-sm);color:var(--text-muted);margin-top:var(--space-5)}.curated-methodology a{color:var(--primary);text-decoration:underline}.guide-layout{display:flex;gap:var(--space-6);align-items:flex-start}.guide-content{flex:1;min-width:0}.guide-content article{font-family:var(--font-body);font-size:var(--font-size-base);line-height:1.7;color:var(--text-secondary)}.guide-content h2{font-family:var(--font-display);font-size:var(--font-size-xl);font-weight:700;color:var(--text);margin:var(--space-6) 0 var(--space-3);letter-spacing:-.01em}.guide-content h2:first-of-type{margin-top:0}.guide-content p{margin-bottom:var(--space-4)}.guide-content a{color:var(--primary);text-decoration:none}.guide-content a:hover{text-decoration:underline}.guide-content ul,.guide-content ol{padding-left:var(--space-5);margin-bottom:var(--space-4)}.guide-content li{margin-bottom:6px}.guide-toc{width:200px;flex-shrink:0;position:sticky;top:80px}.guide-toc-list{list-style:none;padding:0;margin:0}.guide-toc-list a{display:block;padding:var(--space-1) var(--space-3);font-family:var(--font-body);font-size:var(--font-size-xs);color:var(--text-muted);text-decoration:none;border-left:2px solid transparent;transition:color var(--duration) var(--ease),border-left-color var(--duration) var(--ease)}.guide-toc-list a:hover{color:var(--primary);border-left-color:var(--primary)}.guide-meta{font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:var(--space-5)}@media(max-width:768px){.guide-layout{flex-direction:column}.guide-toc{width:100%;position:static;display:none}.guide-mobile-toc-wrapper{display:block!important}}.course-description{margin-bottom:var(--space-4)}.course-description h3{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:var(--font-size-md);font-weight:700;margin-bottom:var(--space-2)}.course-units-badge{display:inline-flex;align-items:center;padding:2px var(--space-2);font-size:var(--font-size-xs);font-weight:600;color:var(--primary);background:var(--primary-subtle);border-radius:var(--radius-sm);white-space:nowrap}.course-desc-text{font-size:var(--font-size-base);line-height:1.6;color:var(--text-secondary)}.course-desc-fallback{margin-top:var(--space-2);font-size:var(--font-size-sm)}.course-desc-fallback a{color:var(--primary);text-decoration:none}.course-desc-fallback a:hover{text-decoration:underline}.prereq-display{margin-bottom:var(--space-4)}.prereq-display h3{font-size:var(--font-size-base);font-weight:700;margin-bottom:var(--space-2)}.prereq-section{margin-bottom:var(--space-4)}.prereq-groups{display:flex;flex-direction:column;gap:var(--space-2)}.prereq-group{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.prereq-or{display:inline-flex;align-items:center;justify-content:center;padding:2px var(--space-2);font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--warning);background:var(--warning-light);border-radius:var(--radius-sm)}.prereq-group-courses{display:flex;align-items:center;gap:var(--space-1);flex-wrap:wrap}.prereq-course{display:inline-flex;align-items:center;gap:var(--space-1)}.prereq-and{color:var(--text-muted);font-size:var(--font-size-sm)}.prereq-link{color:var(--primary);font-weight:600;text-decoration:none;padding:2px 6px;border-radius:var(--radius-sm);background:var(--primary-subtle);transition:background var(--duration-fast)}.prereq-link:hover{background:var(--primary-light);text-decoration:underline}.prereq-grade{font-size:var(--font-size-xs);color:var(--text-muted)}.prereq-concurrent{font-size:var(--font-size-sm);color:var(--primary);cursor:help}.prereq-concurrent-badge{display:inline-flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:600;background:var(--primary-subtle, var(--primary-light));color:var(--primary);border-radius:var(--radius-sm);padding:1px var(--space-1);margin-left:var(--space-1);cursor:help}.required-for-section h3{font-size:var(--font-size-base);font-weight:700;margin-bottom:var(--space-2)}.required-for-list{display:flex;flex-wrap:wrap;gap:6px}.required-for-chip{display:inline-flex;padding:var(--space-1) 10px;font-size:var(--font-size-sm);font-weight:600;color:var(--text);background:var(--surface-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);text-decoration:none;transition:border-color var(--duration-fast),background var(--duration-fast)}.required-for-chip:hover{border-color:var(--primary);background:var(--primary-subtle)}.gpa-bar-container{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.gpa-bar{flex:1;height:10px;background:var(--surface-elevated);border-radius:5px;overflow:hidden;position:relative}.gpa-bar-fill{height:100%;border-radius:5px;transition:width var(--duration-glass) var(--ease)}.gpa-bar-tick{position:absolute;top:0;width:1px;height:100%;background:var(--text-secondary);opacity:.3;pointer-events:none}.gpa-bar-label{font-size:var(--font-size-sm);font-weight:700;color:var(--text);white-space:nowrap}.study-load-card{margin-top:var(--space-4)}.study-load-total{display:flex;align-items:baseline;gap:6px;margin-bottom:var(--space-2)}.study-load-hours{font-size:var(--font-size-2xl);font-weight:800;color:var(--text)}.study-load-card.study-load-heavy .study-load-hours{color:var(--danger)}.study-load-card.study-load-moderate .study-load-hours{color:var(--warning)}.study-load-card.study-load-light .study-load-hours{color:var(--success)}.study-load-unit{font-size:var(--font-size-base);color:var(--text-secondary)}.study-load-warning{font-size:var(--font-size-sm);color:var(--danger);font-weight:600;margin-bottom:6px}.study-load-note{font-size:var(--font-size-sm);color:var(--text-muted)}.prereq-checker{margin-top:var(--space-4)}.prereq-checker h3{font-size:var(--font-size-base);font-weight:700;margin-bottom:var(--space-1)}.prereq-checker-note{font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:var(--space-3)}.prereq-warning{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:var(--space-2) var(--space-3);margin-bottom:6px;background:var(--warning-light);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.prereq-warning-course{font-weight:700}.prereq-warning-text{color:var(--text-secondary)}.prereq-warning-link{color:var(--primary);font-weight:600;text-decoration:none}.prereq-warning-link:hover{text-decoration:underline}.search-result-gpa{display:inline-flex;padding:1px 5px;font-size:var(--font-size-xs);font-weight:600;color:var(--success);background:var(--success-light);border-radius:var(--radius-sm);margin-left:var(--space-1);white-space:nowrap}.dept-course-card-title{font-size:var(--font-size-xs);line-height:1.3;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.dept-course-card-gpa{display:inline-flex;padding:1px 5px;font-size:var(--font-size-xs);font-weight:600;color:var(--success);background:var(--success-light);border-radius:var(--radius-sm)}.curated-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.curated-title{font-size:var(--font-size-sm);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planner-insights{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-top:var(--space-5)}@media(max-width:600px){.planner-insights{grid-template-columns:1fr}}.dept-index-controls{display:flex;gap:var(--space-3);align-items:center;margin-bottom:var(--space-4);flex-wrap:wrap}.dept-index-controls .dept-index-search-wrap{flex:1;min-width:180px}.dept-sort-select{font-family:var(--font-body);font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;transition:border-color var(--duration-fast);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23666' stroke-width='2'%3E%3Cpath d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}html.dark .dept-sort-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23aaa' stroke-width='2'%3E%3Cpath d='M2 4l4 4 4-4'/%3E%3C/svg%3E")}.dept-sort-select:hover{border-color:var(--primary)}.dept-sort-select:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.alphabet-bar{display:flex;flex-wrap:wrap;gap:2px;margin-bottom:var(--space-4);padding:var(--space-2) 0}.alphabet-letter{display:flex;align-items:center;justify-content:center;width:30px;height:30px;font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:600;color:var(--primary);text-decoration:none;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.alphabet-letter:hover{background:var(--primary-subtle)}.alphabet-letter:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.alphabet-letter.disabled{color:var(--border);pointer-events:none}.curated-item-row{display:flex;align-items:center;gap:0}.curated-item-row .curated-item{flex:1;min-width:0}.curated-add-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;margin-left:var(--space-2);flex-shrink:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--primary);font-size:var(--font-size-md);font-weight:700;cursor:pointer;transition:background var(--duration-fast),border-color var(--duration-fast),color var(--duration-fast)}.curated-add-btn:hover:not(:disabled){background:var(--primary-subtle);border-color:var(--primary)}.curated-add-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.curated-add-btn:disabled{color:var(--success);border-color:var(--success);cursor:default;opacity:.7}.chart-empty-message{color:var(--text-secondary);padding:var(--space-7) 0;text-align:center}.chart-empty-icon{opacity:.4;display:block;margin:0 auto var(--space-3)}.chart-empty-title{margin:0;font-weight:500}.chart-empty-subtitle{margin:6px 0 0;font-size:var(--font-size-sm);color:var(--text-muted)}.chart-limited-data{font-size:var(--font-size-sm);color:var(--warning);text-align:center;padding:var(--space-2) var(--space-4);background:var(--warning-light);border-radius:var(--radius-sm);margin-bottom:var(--space-3)}.wl-phase-banner{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:var(--radius-lg);margin-bottom:1rem;font-size:var(--font-size-sm);line-height:1}.wl-phase-banner svg{flex-shrink:0}.wl-banner-info{background:var(--info-bg, rgba(59, 130, 246, .08));border:1px solid var(--info-border, rgba(59, 130, 246, .2));color:var(--text)}.wl-banner-active{background:var(--success-bg, rgba(34, 197, 94, .08));border:1px solid var(--success-border, rgba(34, 197, 94, .2));color:var(--text)}.wl-banner-urgent{background:var(--warning-bg, rgba(251, 191, 36, .08));border:1px solid var(--warning-border, rgba(251, 191, 36, .2));color:var(--text)}.wl-banner-ended{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-secondary)}.wl-phase-status{font-weight:600}.wl-phase-countdown{margin-left:auto;font-size:var(--font-size-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums}.wl-calc{margin-bottom:var(--space-4)}.wl-calc-heading{font-size:var(--font-size-base);font-weight:600;margin:0 0 .15rem}.wl-calc-subtitle{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0 0 .75rem}.wl-calc-row{display:flex;gap:var(--space-2);align-items:stretch}.wl-calc-row input{flex:1;max-width:140px;padding:.5rem .75rem;font-size:1rem;font-family:var(--font-body);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text);transition:border-color var(--duration) var(--ease)}.wl-calc-row input:focus{outline:none;border-color:var(--border-focus)}.wl-calc-row button{padding:.5rem 1.25rem;font-size:var(--font-size-sm);font-weight:600;font-family:var(--font-body);background:var(--text);color:var(--bg);border:none;border-radius:var(--radius-lg);cursor:pointer;white-space:nowrap;transition:opacity var(--duration) var(--ease),transform var(--duration) var(--ease)}.wl-calc-row button:hover{opacity:.85}.wl-calc-row button:active{transform:scale(.97)}.wl-calc-row button:disabled{opacity:.4;cursor:not-allowed;transform:none}.wl-badge-historical{display:inline-block;padding:.15rem .5rem;border-radius:20px;font-size:var(--font-size-xs);font-weight:500;background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border);margin-bottom:.75rem}.wl-result{padding:.875rem 1rem;border-radius:var(--radius-xl);margin-bottom:var(--space-3);animation:fadeInUp var(--duration-glass) var(--ease-out) both}.wl-result[data-confidence=high]{background:var(--success-bg, rgba(34, 197, 94, .08));border:1px solid var(--success-border, rgba(34, 197, 94, .2))}.wl-result[data-confidence=high] .wl-result-primary .wl-result-value{color:var(--success)}.wl-result[data-confidence=medium]{background:var(--warning-bg, rgba(251, 191, 36, .08));border:1px solid var(--warning-border, rgba(251, 191, 36, .2))}.wl-result[data-confidence=medium] .wl-result-primary .wl-result-value{color:var(--warning)}.wl-result[data-confidence=low]{background:var(--danger-bg, rgba(239, 68, 68, .06));border:1px solid var(--danger-border, rgba(239, 68, 68, .15))}.wl-result[data-confidence=low] .wl-result-primary .wl-result-value{color:var(--danger)}.wl-result-stats{display:flex;justify-content:space-between;align-items:flex-start}.wl-result-primary,.wl-result-secondary{display:flex;flex-direction:column}.wl-result-secondary{text-align:right}.wl-result-value{font-size:var(--font-size-2xl);font-weight:700;font-family:var(--font-display);line-height:1}.wl-result-secondary .wl-result-value{font-size:var(--font-size-lg)}.wl-result-label{font-size:var(--font-size-xs);color:var(--text-secondary);margin-top:.2rem}.wl-result-note{font-size:var(--font-size-xs);color:var(--text-muted);font-style:italic;margin-top:.15rem}.wl-result-source{font-size:var(--font-size-xs);color:var(--text-muted);margin-top:.6rem;padding-top:.5rem;border-top:1px solid color-mix(in oklch,var(--border) 50%,transparent)}.wl-result-source+.wl-result-source{border-top:none;margin-top:.2rem;padding-top:0}@media(max-width:600px){.wl-phase-banner{flex-wrap:wrap}.wl-phase-countdown{width:100%;margin-left:1.75rem;margin-top:.15rem}.wl-calc-row input{font-size:16px}}.trend-arrow{display:inline-block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;vertical-align:middle;margin-right:var(--space-1)}.trend-up{border-bottom:6px solid currentColor}.trend-down{border-top:6px solid currentColor}.trend-dash{display:inline-block;width:10px;height:2px;background:currentColor;vertical-align:middle;margin-right:var(--space-1)}.inline-icon{display:inline-block;vertical-align:middle;margin-left:var(--space-1)}.phase-badge-dot{display:inline-block;width:4px;height:4px;border-radius:var(--radius-full);background:currentColor;vertical-align:middle;margin:0 var(--space-2)}@keyframes skeleton-pulse{0%,to{opacity:.15}50%{opacity:.25}}.skeleton{background:var(--text-muted);border-radius:var(--radius-sm);animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-chart{height:clamp(280px,60vh,400px);width:100%}.skeleton-stat{height:80px;width:100%}.skeleton-table-row{height:40px;width:100%;margin-bottom:var(--space-2)}.planner-units-total{font-size:var(--font-size-sm);color:var(--text-secondary);margin-left:var(--space-2)}.planner-units-total.over-cap{color:var(--danger);font-weight:600}.course-header-title{font-size:var(--font-size-md);color:var(--text-secondary);margin-top:var(--space-1);line-height:var(--leading-normal, 1.5);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.course-header-units{font-size:var(--font-size-sm);color:var(--text-muted);display:inline-block;margin-top:var(--space-1)}@media(pointer:coarse){.filter-btn,.season-tag,.toggle-btn,.pagination-btn,.alphabet-letter,.dept-view-toggle-btn{min-height:44px;min-width:44px}}@media(max-width:600px){.pagination{gap:var(--space-4)}}
