:root{--background:234 45% 13%;--foreground:0 0% 92%;--card:220 45% 16%;--card-foreground:0 0% 92%;--muted:215 50% 22%;--muted-foreground:0 0% 70%;--accent:48 100% 50%;--accent-foreground:234 45% 13%;--destructive:346 100% 60%;--destructive-foreground:0 0% 100%;--destructive-surface:346 84% 48%;--success:145 63% 49%;--success-foreground:234 45% 13%;--warning:43 96% 56%;--warning-foreground:234 45% 13%;--border:240 4% 37%;--input:215 50% 22%;--ring:171 77% 54%;--bg-primary:hsl(var(--background));--bg-secondary:hsl(var(--card));--bg-tertiary:hsl(var(--muted));--text-primary:hsl(var(--foreground));--text-secondary:hsl(var(--muted-foreground));--red-fill:hsl(var(--destructive));--yellow-fill:hsl(var(--accent));--green-fill:hsl(var(--success));--teal-accent:hsl(var(--ring));--border-color:hsl(var(--border));--hover-bg:hsl(var(--muted));--focus-ring:hsl(var(--ring));--radius:.75rem;--radius-sm:.5rem;--radius-lg:1rem;--shadow-sm:0 1px 2px 0 #00000026;--shadow:0 4px 6px -1px #0003, 0 2px 4px -1px #0000001a;--shadow-md:0 10px 15px -3px #0003, 0 4px 6px -2px #0000001a;--shadow-lg:0 20px 25px -5px #0003, 0 10px 10px -5px #0000001a;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.2s cubic-bezier(.4, 0, .2, 1);--transition-slow:.3s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}.visually-hidden{clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}body{background:var(--bg-primary);color:var(--text-primary);min-height:100vh;padding:16px;font-family:JetBrains Mono,Fira Code,SF Mono,monospace}.skip-link{background:var(--yellow-fill);color:var(--bg-primary);z-index:1001;border-radius:0 0 4px;padding:8px 16px;font-weight:700;text-decoration:none;position:absolute;top:-40px;left:0}.skip-link:focus{top:0}:focus-visible{box-shadow:0 0 0 2px hsl(var(--background)), 0 0 0 4px hsl(var(--ring));outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.semester-links{flex-wrap:wrap;justify-content:flex-end;gap:5px;margin:0;display:flex}.semester-nav-link{border:1px solid hsl(var(--border));background:hsl(var(--muted));color:hsl(var(--muted-foreground));border-radius:var(--radius-sm);transition:transform var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);padding:6px 10px;font-family:inherit;font-size:.85rem;line-height:1.2;text-decoration:none;box-shadow:0 1px #ffffff0d}.semester-nav-link:hover{background:hsl(var(--card));color:hsl(var(--foreground));border-color:hsl(var(--muted-foreground) / .75);transform:translateY(-1px);box-shadow:0 4px 10px #00000029}.semester-nav-link:active{box-shadow:none;transform:translateY(1px)scale(.985)}.semester-nav-link.active{background:linear-gradient(135deg, hsl(var(--accent)), #ff8000);color:hsl(var(--accent-foreground));border-color:hsl(var(--accent));font-weight:700}header{background:hsl(var(--card));border-radius:var(--radius);border:1px solid hsl(var(--border) / .72);max-width:1400px;margin:0 auto 14px;padding:14px 16px;position:relative}.header-topline,.header-summary{justify-content:space-between;align-items:center;gap:16px;display:flex}header h1{color:hsl(var(--accent));letter-spacing:-.02em;flex:none;font-size:1rem;line-height:1.2}header p{color:hsl(var(--muted-foreground));text-align:left;font-size:.72rem}.stats{grid-template-columns:repeat(4,minmax(88px,1fr));align-items:center;gap:4px;margin-top:0;display:grid}.stat{border-radius:var(--radius-sm);background:hsl(var(--background) / .32);text-align:center;grid-template-rows:auto auto;align-content:center;justify-items:center;gap:2px;min-width:0;padding:6px 8px 7px;display:grid}.stat-value{font-variant-numeric:tabular-nums;text-align:center;min-width:0;font-size:.88rem;font-weight:700;line-height:1.15}.stat-label{color:hsl(var(--muted-foreground));text-align:center;font-size:.62rem;line-height:1.15}.header-summary{border-top:1px solid hsl(var(--border) / .38);margin-top:9px;padding-top:9px}.search-field{flex:260px;min-width:190px;max-width:420px;position:relative}.search-input{background:hsl(var(--input));border:1px solid hsl(var(--border));border-radius:var(--radius);width:100%;min-height:44px;color:hsl(var(--foreground));transition:background-color var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);padding:10px 62px 10px 15px;font-family:inherit;font-size:.9rem}.search-input::-webkit-search-cancel-button{-webkit-appearance:none;display:none}.search-input::placeholder{color:hsl(var(--muted-foreground))}.search-input:focus{border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring) / .3);outline:none}.search-input:focus~.search-hint,.search-input:not(:placeholder-shown)~.search-hint{opacity:0}.search-clear{width:44px;height:44px;color:hsl(var(--muted-foreground));cursor:pointer;transition:transform var(--transition-fast), background-color var(--transition-fast), color var(--transition-fast);background:0 0;border:0;border-radius:50%;font:1rem/1 inherit;position:absolute;top:50%;right:2px;transform:translateY(-50%)}.search-clear:before{content:"";transition:background-color var(--transition-fast);background:0 0;border-radius:50%;position:absolute;inset:5px}.search-clear:hover{color:hsl(var(--foreground));background:0 0}.search-clear:hover:before{background:hsl(var(--card))}.search-clear:active{transform:translateY(-50%)scale(.88)}.search-clear:not([hidden])~.search-hint{display:none}.search-hint{color:hsl(var(--muted-foreground));pointer-events:none;transition:opacity var(--transition-fast);font-size:.7rem;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.search-hint kbd{background:hsl(var(--muted));border-radius:var(--radius-sm);border:1px solid hsl(var(--border));padding:2px 6px;font-family:inherit}.controls-panel{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);max-width:1400px;box-shadow:var(--shadow-sm);margin:0 auto 14px;padding:10px}.controls-row{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;display:flex}.elective-disclaimer{color:hsl(var(--muted-foreground));margin:7px 2px 0;font-size:.68rem;line-height:1.35}.filter-buttons{flex-wrap:wrap;gap:4px;display:flex}.filter-btn{border:1px solid hsl(var(--border));background:hsl(var(--muted));color:hsl(var(--muted-foreground));border-radius:var(--radius);cursor:pointer;transition:transform var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);justify-content:center;align-items:center;gap:6px;min-height:44px;padding:8px 12px;font-family:inherit;font-size:.75rem;display:inline-flex;box-shadow:0 1px #ffffff0d}.filter-btn[data-filter=full]:before,.filter-btn[data-filter=near]:before,.filter-btn[data-filter=open]:before{content:"";background:hsl(var(--muted-foreground));border-radius:50%;width:6px;height:6px}.filter-btn[data-filter=full]:before{background:hsl(var(--destructive))}.filter-btn[data-filter=near]:before{background:hsl(var(--warning))}.filter-btn[data-filter=open]:before{background:hsl(var(--success))}.filter-bookmark-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:14px;height:14px}.filter-btn:hover{background:hsl(var(--card));color:hsl(var(--foreground));border-color:hsl(var(--accent) / .5);transform:translateY(-1px);box-shadow:0 4px 10px #00000029}.filter-btn:active{box-shadow:none;transform:translateY(1px)scale(.97)}.filter-btn.active{background:hsl(var(--accent));color:hsl(var(--accent-foreground));border-color:hsl(var(--accent))}.filter-btn.active:before{background:hsl(var(--accent-foreground))!important}.sort-select,.elective-select{border:1px solid hsl(var(--border));background:hsl(var(--muted));color:hsl(var(--foreground));border-radius:var(--radius);cursor:pointer;appearance:none;height:44px;min-height:44px;transition:transform var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);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='%23a0a0a0' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;padding:6px 24px 6px 12px;font-family:inherit;font-size:.75rem;font-weight:600;line-height:1.2;box-shadow:0 1px #ffffff0d}.sort-select:hover,.elective-select:hover{background-color:hsl(var(--card));border-color:hsl(var(--accent) / .5);transform:translateY(-1px);box-shadow:0 4px 10px #00000029}.sort-select:active,.elective-select:active{box-shadow:none;transform:translateY(1px)scale(.985)}.department-toggle{border:1px solid hsl(var(--border) / .7);border-radius:var(--radius-sm);background:hsl(var(--background) / .18);height:44px;min-height:44px;color:hsl(var(--muted-foreground));cursor:pointer;transition:transform var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);align-items:center;gap:6px;padding:6px 10px;font-family:inherit;font-size:.75rem;font-weight:600;line-height:1.2;display:inline-flex;box-shadow:0 1px #ffffff0a}.department-toggle:hover,.department-toggle[aria-expanded=true]{border-color:hsl(var(--border));background:hsl(var(--muted));color:hsl(var(--foreground));transform:translateY(-1px);box-shadow:0 4px 10px #00000024}.department-toggle:active{box-shadow:none;transform:translateY(1px)scale(.985)}#departmentCount{font:inherit;color:inherit}.department-toggle-icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px;transition:transform var(--transition-fast)}.department-toggle[aria-expanded=true] .department-toggle-icon{transform:rotate(180deg)}.department-toggle[hidden],.search-clear[hidden],.milestone-details[hidden]{display:none}.department-panel{border-top:1px solid hsl(var(--border));grid-template-columns:minmax(180px,260px) minmax(0,1fr);align-items:start;gap:8px 12px;margin-top:8px;padding-top:8px;display:grid}.department-panel[hidden]{display:none}.department-search{border:1px solid hsl(var(--border));border-radius:var(--radius-sm);background:hsl(var(--muted));width:100%;height:40px;color:hsl(var(--foreground));font:inherit;padding:7px 10px;font-size:.75rem}.department-search:focus{outline:2px solid hsl(var(--ring));outline-offset:1px}.controls-panel .jump-to-nav{background:0 0;justify-content:flex-start;margin:0;padding:0}.controls-panel .jump-to-nav a[hidden]{display:none}.department-empty{color:hsl(var(--muted-foreground));grid-column:2;margin:8px 0;font-size:.72rem}.modal-icon-btn{border:1px solid hsl(var(--border));border-radius:var(--radius-sm);background:hsl(var(--background) / .35);width:44px;height:44px;color:hsl(var(--muted-foreground));cursor:pointer;transition:color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast);flex:0 0 44px;place-items:center;padding:0;display:grid}.modal-icon-btn:hover{background:hsl(var(--muted));color:hsl(var(--foreground));border-color:hsl(var(--ring));transform:translateY(-1px)}.modal-icon-btn:active{transform:translateY(1px)scale(.92)}.modal-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:20px;height:20px}.bookmark-btn.starred{background:hsl(var(--accent) / .14);border-color:hsl(var(--accent));color:hsl(var(--accent))}.bookmark-btn.starred .modal-icon-bookmark{fill:currentColor}.close-btn:hover{border-color:hsl(var(--destructive));color:hsl(var(--destructive))}.toast-container{z-index:2000;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:var(--shadow-lg);max-width:300px;padding:12px 16px;font-size:.85rem;animation:.3s slideInRight}.toast.fade-out{animation:.3s forwards slideOutRight}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.course-cell.hidden{display:none}.empty-state{text-align:center;color:hsl(var(--muted-foreground));grid-column:1/-1;padding:3rem 1rem;font-size:.9rem}.error-state{text-align:center;color:hsl(var(--destructive));grid-column:1/-1;padding:3rem 1rem;font-size:.9rem}.error-state button{background:hsl(var(--muted));color:hsl(var(--foreground));border:1px solid hsl(var(--border));border-radius:var(--radius);cursor:pointer;transition:transform var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);margin-top:12px;padding:8px 16px;font-family:inherit;font-size:.85rem}.error-state button:hover{background:hsl(var(--card));border-color:hsl(var(--ring));transform:translateY(-1px);box-shadow:0 4px 10px #00000029}.error-state button:active{box-shadow:none;transform:translateY(1px)scale(.97)}.timeout-state{text-align:center;color:hsl(var(--warning));grid-column:1/-1;padding:3rem 1rem;font-size:.9rem}.course-grid{grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:8px;max-width:1400px;margin:0 auto;display:grid}.loading-indicator{color:var(--text-secondary);text-align:center;grid-column:1/-1;padding:3rem}.loading-spinner{border:3px solid hsl(var(--foreground) / .1);border-top-color:hsl(var(--accent));border-radius:50%;width:2.5rem;height:2.5rem;animation:1s ease-in-out infinite spin;display:inline-block}.loading-message{margin-top:1rem}@keyframes spin{to{transform:rotate(360deg)}}.jump-to-nav{background:hsl(var(--card));border-radius:var(--radius);flex-wrap:wrap;justify-content:center;gap:6px;max-width:1400px;margin:0 auto 20px;padding:12px 20px;display:flex}.jump-to-nav a{color:hsl(var(--muted-foreground));border-radius:var(--radius-sm);transition:transform var(--transition-fast), background-color var(--transition-fast), color var(--transition-fast);align-items:center;min-height:32px;padding:4px 8px;font-size:.75rem;text-decoration:none;display:inline-flex}.jump-to-nav a:hover{background:hsl(var(--muted));color:hsl(var(--foreground));transform:translateY(-1px)}.jump-to-nav a:active{transform:translateY(1px)scale(.96)}.dept-header{color:hsl(var(--muted-foreground));border-bottom:1px solid hsl(var(--border));grid-column:1/-1;justify-content:space-between;align-items:center;margin-top:10px;padding:15px 0 5px;font-size:.9rem;font-weight:700;display:flex}.dept-header .back-to-top{color:hsl(var(--muted-foreground));transition:color var(--transition-fast), transform var(--transition-fast);font-size:.7rem;font-weight:400;text-decoration:none}.dept-header .back-to-top:hover{color:hsl(var(--accent));transform:translateY(-1px)}.course-cell{border-radius:var(--radius);cursor:pointer;transition:transform var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);background:hsl(var(--card));border:1px solid hsl(var(--border));color:hsl(var(--foreground));text-align:left;content-visibility:auto;contain-intrinsic-size:120px 44px;justify-content:space-between;align-items:center;gap:10px;min-height:44px;max-height:52px;padding:10px 12px;font-family:inherit;font-size:.8rem;display:flex;overflow:hidden}.course-cell:hover{box-shadow:var(--shadow-md);background:#1c2b4a;transform:translateY(-2px)}.course-cell:active{box-shadow:var(--shadow-sm);transform:translateY(1px)scale(.985)}.course-cell.full{background:linear-gradient(135deg, hsl(var(--destructive-surface)), #b21035);border-color:hsl(var(--destructive));color:hsl(var(--destructive-foreground))}.course-cell.near{background:linear-gradient(135deg, hsl(var(--warning)), #c27e0a);border-color:hsl(var(--warning));color:hsl(var(--warning-foreground))}.course-cell.expanded{outline:2px solid hsl(var(--accent))}.course-code{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-weight:500;overflow:hidden}.course-fill{flex:none;font-size:.75rem;font-weight:700}.modal-overlay{background:hsl(var(--background) / .8);z-index:1000;visibility:hidden;opacity:0;transition:opacity var(--transition-normal), visibility 0s var(--transition-normal);justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-overlay.active{visibility:visible;opacity:1;transition:opacity var(--transition-normal), visibility 0s 0s}.modal{background:hsl(var(--card));border-radius:var(--radius-lg);border:1px solid hsl(var(--border));width:100%;max-width:900px;max-height:90vh;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;overflow:hidden}.modal-header{border-bottom:1px solid hsl(var(--border));background:hsl(var(--card));z-index:10;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.modal-course-heading{flex-direction:column;flex:auto;align-items:flex-start;gap:2px;min-width:0;margin:0;display:flex}.modal-course-code{color:hsl(var(--ring));letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;font-weight:700;line-height:1.1}.modal-course-name{color:hsl(var(--foreground));overflow-wrap:anywhere;font-size:clamp(1.2rem,2.4vw,1.55rem);font-weight:700;line-height:1.2}.modal-header-left{flex:auto;align-items:center;gap:12px;min-width:0;display:flex}.modal-header-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.modal-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;min-height:0;padding:20px;overflow-y:auto}.course-state{border:1px solid var(--border-color);color:var(--text-secondary);background:#ffffff06;align-items:baseline;gap:.65rem;padding:.7rem .85rem;font-size:.82rem;line-height:1.45;display:flex}.course-state[hidden]{display:none}.removed-badge{color:#111827;letter-spacing:.08em;background:#ff5722;padding:.15rem .38rem}.section-type-selector{margin-bottom:16px}.section-type-group{margin-bottom:12px}.section-type-label{color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;font-size:.75rem}.section-list{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;display:grid}.section-item{background:hsl(var(--muted));border-radius:var(--radius);cursor:pointer;width:100%;transition:transform var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);color:hsl(var(--foreground));font:inherit;text-align:left;border:2px solid #0000;padding:12px}.section-item:hover{background:hsl(var(--card));box-shadow:var(--shadow-sm);transform:translateY(-1px)}.section-item:active{box-shadow:none;transform:translateY(1px)scale(.985)}.section-item.selected{border-color:hsl(var(--accent));box-shadow:0 0 0 1px hsl(var(--accent) / .35)}.section-item.full{border-left:4px solid hsl(var(--destructive))}.section-item.near{border-left:4px solid hsl(var(--warning))}.section-id{font-size:1rem;font-weight:700}.section-instructor{color:hsl(var(--muted-foreground));font-size:.75rem}.section-stats{margin-top:8px;font-size:.85rem}.section-fill{font-weight:700}.chart-container{background:hsl(var(--muted));border-radius:var(--radius-lg);-webkit-user-select:none;user-select:none;margin-top:16px;padding:16px}.chart-wrapper{touch-action:pan-y;height:260px;position:relative}.chart-wrapper[data-gesture-mode=pan]{touch-action:none}.chart-readout{border:1px solid hsl(var(--border));border-radius:var(--radius-sm);background:hsl(var(--background) / .94);width:100%;height:54px;box-shadow:0 3px 10px hsl(var(--background) / .24);color:hsl(var(--foreground));pointer-events:none;grid-template-rows:auto auto;align-content:center;row-gap:2px;margin:0 0 8px;padding:7px 12px;font-size:.68rem;line-height:1.25;display:grid}.chart-readout[hidden]{display:block}.chart-readout[hidden]>*{display:none}.chart-readout[hidden]:after{content:"Tap or hover on the graph to inspect";min-height:38px;color:hsl(var(--muted-foreground));justify-content:center;align-items:center;font-size:.68rem;display:flex}.chart-readout-title{color:hsl(var(--accent));font-weight:700}.chart-readout-header{white-space:nowrap;align-items:center;gap:6px;min-width:0;display:flex}.chart-readout-context{min-width:0;color:hsl(var(--muted-foreground));text-overflow:ellipsis;overflow:hidden}.chart-readout-pinned{background:hsl(var(--accent));color:hsl(var(--accent-foreground));text-transform:uppercase;border-radius:999px;flex:none;margin-left:auto;padding:1px 5px;font-size:.58rem;font-weight:700}.chart-readout-values{flex-wrap:wrap;gap:3px 12px;display:flex}.chart-readout-line{gap:5px;min-width:0;display:inline-flex}.chart-readout-label{color:hsl(var(--muted-foreground));white-space:nowrap}.chart-readout-value{color:hsl(var(--foreground));white-space:nowrap;font-weight:600}.chart-readout-line:last-child .chart-readout-value{color:hsl(var(--accent))}.chart-wrapper canvas{position:absolute;inset:0;width:100%!important;height:100%!important}.chart-placeholder{text-align:center;color:hsl(var(--muted-foreground));justify-content:center;align-items:center;height:100%;font-size:.85rem;display:flex}.chart-hidden{visibility:hidden;overflow:hidden;height:0!important}.chart-legend{color:hsl(var(--muted-foreground));flex:none;justify-content:flex-start;align-items:center;gap:14px;margin:0;padding:0;font-size:.7rem;line-height:1.15;display:none}.chart-legend.visible{display:flex}.chart-legend-item{white-space:nowrap;align-items:center;gap:6px;min-height:18px;display:flex}.historical-legend-item[hidden]{display:none}.chart-legend-dot{flex:0 0 18px;justify-content:center;align-items:center;width:18px;height:18px;display:flex}.capacity-legend-line{border-top:4px solid #4ecdc4d6;flex:0 0 22px;width:22px;height:0}.milestone-details{border-top:1px solid hsl(var(--border) / .38);margin-top:9px}.milestone-details summary{min-height:38px;color:hsl(var(--muted-foreground));cursor:pointer;border-radius:var(--radius-sm);transition:transform var(--transition-fast), background-color var(--transition-fast), color var(--transition-fast);grid-template-columns:12px minmax(0,1fr) auto;align-items:center;column-gap:10px;padding:9px 8px 0;font-size:.68rem;list-style:none;display:grid}.milestone-details summary:hover{background:hsl(var(--muted) / .28);color:hsl(var(--foreground))}.milestone-details summary:active{transform:scale(.995)}.milestone-details summary::-webkit-details-marker{display:none}.milestone-details summary:before{content:"›";color:hsl(var(--accent));transition:transform var(--transition-fast)}.milestone-details[open] summary:before{transform:rotate(90deg)}.milestone-details[open] summary{padding-bottom:8px}.milestone-summary-value{color:hsl(var(--foreground));text-align:right;justify-self:end}.milestone-progress{margin:0;padding:20px 30px 22px}.mp-track{background:hsl(var(--muted));border-radius:2px;height:4px;margin:0;position:relative;overflow:visible}.mp-fill{background:hsl(var(--muted-foreground));clip-path:inset(0 100% 0 0);border-radius:2px;width:100%;height:100%;transition:clip-path .5s;position:absolute;top:0;left:0}.mp-dot{background:hsl(var(--muted-foreground));border:2px solid hsl(var(--card));z-index:2;width:8px;height:8px;transition:all var(--transition-fast);border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.mp-dot.passed{box-shadow:0 0 6px}.mp-dot-label{color:hsl(var(--muted-foreground));white-space:nowrap;pointer-events:none;font-size:.625rem;font-weight:600;line-height:1;position:absolute;left:50%;transform:translate(-50%)}.mp-dot:nth-child(odd) .mp-dot-label{bottom:14px}.mp-dot:nth-child(2n) .mp-dot-label{top:14px}.mp-dot.passed .mp-dot-label{color:hsl(var(--foreground))}.mp-dot.priority-start .mp-dot-label{color:hsl(var(--foreground));font-weight:700}.chart-toolbar{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:12px;margin-bottom:10px;display:flex}.chart-mode-toggle{background:hsl(var(--background));border-radius:var(--radius);gap:2px;width:fit-content;padding:2px;display:flex}.chart-mode-btn{color:hsl(var(--muted-foreground));cursor:pointer;border-radius:calc(var(--radius) - 2px);transition:transform var(--transition-fast), background-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);background:0 0;border:none;min-height:44px;padding:5px 14px;font-family:inherit;font-size:.72rem}.chart-mode-btn:hover{color:hsl(var(--foreground));transform:translateY(-1px)}.chart-mode-btn:active{transform:translateY(1px)scale(.96)}.chart-mode-btn:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:1px}.chart-mode-btn.active{background:hsl(var(--accent));color:hsl(var(--accent-foreground));font-weight:600}.chart-action-controls{flex:none;align-items:center;gap:12px;min-width:0;display:flex}.chart-zoom-controls{flex:none;align-items:center;min-width:0;display:flex}.chart-zoom-btn{border:1px solid hsl(var(--border));background:hsl(var(--background));width:auto;height:44px;min-height:44px;color:hsl(var(--foreground));border-radius:calc(var(--radius) - 2px);cursor:pointer;transition:transform var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), opacity var(--transition-fast), box-shadow var(--transition-fast);justify-content:center;align-items:center;padding:6px 14px;font-family:inherit;font-size:.72rem;line-height:1.2;display:flex}.chart-zoom-btn:hover:not(:disabled){border-color:hsl(var(--ring));color:hsl(var(--ring));box-shadow:var(--shadow-sm);transform:translateY(-1px)}.chart-zoom-btn:active:not(:disabled){box-shadow:none;transform:translateY(1px)scale(.97)}.chart-zoom-btn:disabled{cursor:default;opacity:.55}.historical-comparison-controls{flex:none;align-items:center;display:flex}.historical-comparison-controls[hidden]{display:flex}.historical-comparison-toggle{border:1px solid hsl(var(--border));background:hsl(var(--background));width:190px;height:44px;min-height:44px;color:hsl(var(--foreground));border-radius:calc(var(--radius) - 2px);cursor:pointer;text-align:center;white-space:nowrap;transition:transform var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), opacity var(--transition-fast), background-color var(--transition-fast), box-shadow var(--transition-fast);justify-content:center;align-items:center;gap:8px;padding:6px 14px;font-family:inherit;font-size:.75rem;line-height:1.2;display:flex}.historical-comparison-toggle:before{content:"";border-top:2px dashed #f7f9fce6;flex:0 0 18px;width:18px}.historical-comparison-toggle:hover:not(:disabled){border-color:hsl(var(--ring));color:hsl(var(--ring));box-shadow:var(--shadow-sm);transform:translateY(-1px)}.historical-comparison-toggle:active:not(:disabled){box-shadow:none;transform:translateY(1px)scale(.98)}.historical-comparison-toggle:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:1px}.historical-comparison-toggle[aria-pressed=true]{border-color:hsl(var(--ring));background:hsl(var(--ring) / .12);color:hsl(var(--ring))}.historical-comparison-toggle:disabled{cursor:default;opacity:.55}.event-history{border:1px solid hsl(var(--border));border-radius:var(--radius);margin-top:16px;overflow:hidden}.event-history-summary{background:hsl(var(--muted));color:hsl(var(--foreground));cursor:pointer;min-height:44px;transition:transform var(--transition-fast), background-color var(--transition-fast), color var(--transition-fast);align-items:center;gap:8px;padding:10px 14px;font-family:inherit;font-size:.8rem;font-weight:600;list-style:none;display:flex}.event-history-summary:hover{background:hsl(var(--muted) / .8)}.event-history-summary:active{transform:scale(.995)}.event-history-summary:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:-2px}.event-history-summary::-webkit-details-marker{display:none}.event-history-summary:after{content:"▸";transition:transform var(--transition-fast);color:hsl(var(--muted-foreground));margin-left:auto;font-size:.7rem}.event-history[open] .event-history-summary:after{transform:rotate(90deg)}.event-history-icon{font-size:1rem}.event-count{color:hsl(var(--muted-foreground));font-size:.7rem;font-weight:400}.event-history-list{-webkit-overflow-scrolling:touch;max-height:200px;padding:8px 14px;overflow-y:auto}.event-filters{border-bottom:1px solid hsl(var(--border) / .3);padding:6px 14px}.ef-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ef-pill{border:1px solid hsl(var(--border));color:hsl(var(--muted-foreground));cursor:pointer;transition:transform var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);white-space:nowrap;background:0 0;border-radius:12px;min-height:32px;padding:3px 10px;font-family:inherit;font-size:.75rem}.ef-pill:hover{color:hsl(var(--foreground));border-color:hsl(var(--ring));background:hsl(var(--ring) / .08);transform:translateY(-1px)}.ef-pill:active{transform:translateY(1px)scale(.96)}.ef-select{border:1px solid hsl(var(--border));background:hsl(var(--background));color:hsl(var(--foreground));cursor:pointer;min-height:32px;transition:transform var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast);border-radius:6px;padding:2px 6px;font-family:inherit;font-size:.75rem}.ef-select:hover{border-color:hsl(var(--ring));background:hsl(var(--card));transform:translateY(-1px)}.ef-select:active{transform:translateY(1px)scale(.985)}:where(.semester-nav-link,.search-clear,.filter-btn,.sort-select,.department-toggle,.modal-icon-btn,.error-state button,.jump-to-nav a,.course-cell,.section-item,.chart-mode-btn,.chart-zoom-btn,.historical-comparison-toggle,.event-history-summary,.milestone-details summary,.ef-pill,.ef-select){touch-action:manipulation;-webkit-tap-highlight-color:transparent}.ef-select:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:1px}.event-item{border-bottom:1px solid hsl(var(--border) / .3);align-items:center;gap:8px;padding:6px 0;font-size:.75rem;display:flex}.event-item:last-child{border-bottom:none}.event-icon{flex-shrink:0;font-size:.85rem}.event-desc{color:hsl(var(--foreground));flex:1}.event-ts{color:hsl(var(--muted-foreground));white-space:nowrap;font-size:.65rem}html.modal-open,html.modal-open body{overscroll-behavior:contain;touch-action:pan-y pinch-zoom;overflow:hidden}[inert]{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.5;transition:opacity var(--transition-normal)}@supports (animation-timeline:view()){.chart-container{animation:linear fadeSlideIn;animation-timeline:view();animation-range:entry}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}}.modal{transition:transform var(--transition-normal);transform:scale(.95)translateY(20px)}.modal-overlay.active .modal{transform:scale(1)translateY(0)}@media (width<=768px){body{padding:10px}body.modal-open{touch-action:pan-y pinch-zoom;overflow:hidden}header{margin-bottom:10px;padding:12px}header h1{font-size:.92rem}.header-topline,.header-summary{flex-direction:column;align-items:flex-start;gap:8px}.semester-links{justify-content:flex-start;gap:.35rem;display:flex}.semester-nav-link{justify-content:center;align-items:center;padding:6px 10px;font-size:.75rem;display:flex}.stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;width:100%;display:grid}.stat-value{font-size:.82rem}.stat{gap:3px;padding:7px 4px 8px}.stat-value{text-align:center}.course-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px}.course-cell{min-height:44px;max-height:48px;padding:8px 10px;font-size:.75rem}.modal-overlay{align-items:center;padding:12px}.modal{border-radius:var(--radius-lg);width:100%;max-height:90vh}.modal-header{gap:8px;padding:12px 16px}.modal-course-code{font-size:.75rem}.modal-course-name{font-size:1rem;line-height:1.15}.modal-header-left{gap:8px}.modal-header-right{gap:6px}.modal-body{padding:12px}.section-type-selector{margin-bottom:8px}.section-type-group{margin-bottom:6px}.section-list{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:6px}.section-item{min-height:44px;padding:8px 10px}.section-id{font-size:.85rem}.section-stats{margin-top:4px;font-size:.78rem}.chart-container{margin-top:10px;padding:10px}.chart-wrapper{height:220px}.chart-readout{row-gap:6px;height:auto;min-height:92px;padding:10px 12px}.chart-readout[hidden]:after{min-height:70px}.chart-readout-values{grid-template-columns:minmax(0,1fr);row-gap:4px;display:grid}.chart-toolbar{align-items:stretch;gap:6px}.chart-mode-toggle{flex:auto}.chart-mode-btn{flex:1;height:44px;min-height:44px;padding:5px 14px;font-size:.78rem}.chart-action-controls{flex:1 0 100%;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:8px;width:100%;display:grid}.chart-action-controls .chart-zoom-controls,.chart-action-controls .historical-comparison-controls{min-width:0}.chart-zoom-btn,.historical-comparison-toggle{width:100%}.chart-action-controls .chart-legend{display:none}.event-history{margin-top:10px}.event-history-summary{padding:10px 12px;font-size:.75rem}.event-item{gap:6px;font-size:.7rem}.ef-pill,.ef-select{min-height:32px;font-size:.75rem}.controls-panel{padding:8px}.controls-row{gap:8px}.search-field{flex:100%;max-width:none}.filter-buttons{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;width:100%;display:grid}.filter-btn{width:100%;min-height:44px;padding:8px 6px}.filter-btn[data-filter=starred] span{display:none}.sort-select,.elective-select{flex:calc(50% - 4px);min-height:44px}.department-toggle{flex:calc(50% - 4px);justify-content:center}.mp-dot-label{font-size:.625rem}.milestone-progress{margin:0;padding:20px 32px 24px}.mp-track{margin:0}.controls-panel .jump-to-nav{grid-template-columns:repeat(4,minmax(0,1fr));justify-content:flex-start;gap:5px;display:grid;overflow:visible}.controls-panel .jump-to-nav a{text-align:center;justify-content:center;min-width:0;padding-inline:6px}.department-panel{overscroll-behavior:contain;grid-template-columns:1fr;max-height:min(50vh,330px);overflow-y:auto}.department-empty{grid-column:1}.mp-dot:not(.priority-start):not(.deadline) .mp-dot-label{display:none}.mp-dot.priority-start .mp-dot-label,.mp-dot.deadline .mp-dot-label{font-size:0}.mp-dot.priority-start .mp-dot-label:after,.mp-dot.deadline .mp-dot-label:after{content:attr(data-compact-label);font-size:.625rem}}@media (pointer:coarse){.search-input,.department-search,.sort-select,.elective-select,.ef-select{font-size:16px}.search-input,.milestone-details summary,.jump-to-nav a,.dept-header .back-to-top,.ef-pill,.ef-select,.section-item{min-height:44px}.semester-nav-link{min-height:44px;padding:8px 14px}.filter-btn,.sort-select,.elective-select,.chart-mode-btn{min-height:44px}.chart-zoom-btn,.historical-comparison-toggle{height:44px;min-height:44px}.modal-icon-btn{width:44px;height:44px}}
