: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% 63%;--accent: 48 100% 50%;--accent-foreground: 234 45% 13%;--destructive: 346 84% 50%;--destructive-foreground: 0 0% 100%;--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 hsl(0 0% 0% / .15);--shadow: 0 4px 6px -1px hsl(0 0% 0% / .2), 0 2px 4px -1px hsl(0 0% 0% / .1);--shadow-md: 0 10px 15px -3px hsl(0 0% 0% / .2), 0 4px 6px -2px hsl(0 0% 0% / .1);--shadow-lg: 0 20px 25px -5px hsl(0 0% 0% / .2), 0 10px 10px -5px hsl(0 0% 0% / .1);--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}body{font-family:JetBrains Mono,Fira Code,SF Mono,monospace;background:var(--bg-primary);color:var(--text-primary);min-height:100vh;padding:20px}.skip-link{position:absolute;top:-40px;left:0;background:var(--yellow-fill);color:var(--bg-primary);padding:8px 16px;z-index:10000;font-weight:700;text-decoration:none;border-radius:0 0 4px}.skip-link:focus{top:0}:focus-visible{outline:none;box-shadow:0 0 0 2px hsl(var(--background)),0 0 0 4px hsl(var(--ring))}.semester-nav{display:flex;justify-content:center;gap:8px;margin:15px 0;flex-wrap:wrap}.semester-nav-link{padding:8px 16px;border:1px solid hsl(var(--border));background:hsl(var(--muted));color:hsl(var(--muted-foreground));border-radius:var(--radius);font-family:inherit;font-size:.85rem;text-decoration:none;transition:all var(--transition-fast);line-height:1.2}.semester-nav-link:hover{background:hsl(var(--card));color:hsl(var(--foreground))}.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{text-align:center;margin-bottom:30px;padding:20px;background:linear-gradient(135deg,hsl(var(--card)),hsl(var(--muted)));border-radius:var(--radius-lg);border:1px solid hsl(var(--border));position:relative}header h1{font-size:clamp(1.25rem,4vw,1.8rem);margin-bottom:8px;background:linear-gradient(90deg,hsl(var(--destructive)),hsl(var(--accent)));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}header p{color:hsl(var(--muted-foreground));font-size:.9rem}.semester-toggle{display:flex;justify-content:center;gap:8px;margin:15px 0}.semester-btn{padding:8px 16px;border:1px solid hsl(var(--border));background:hsl(var(--muted));color:hsl(var(--muted-foreground));border-radius:var(--radius);cursor:pointer;font-family:inherit;font-size:.85rem;transition:all var(--transition-fast)}.semester-btn:hover{background:hsl(var(--card));color:hsl(var(--foreground))}.semester-btn.active{background:linear-gradient(135deg,hsl(var(--accent)),#ff8000);color:hsl(var(--accent-foreground));border-color:hsl(var(--accent));font-weight:700}.stats{display:flex;justify-content:center;gap:30px;margin-top:15px}.stat{text-align:center}.stat-value{font-size:clamp(1rem,3vw,1.4rem);font-weight:700}.stat-label{font-size:.75rem;color:hsl(var(--muted-foreground))}.color-legend{display:flex;justify-content:center;gap:15px;margin-top:12px;font-size:.75rem;color:hsl(var(--muted-foreground))}.legend-full{color:hsl(var(--destructive))}.legend-near{color:hsl(var(--warning))}.legend-open{color:hsl(var(--success))}.search-container{max-width:400px;margin:0 auto 20px;position:relative}.search-input{width:100%;padding:10px 100px 10px 15px;background:hsl(var(--input));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-family:inherit;font-size:.9rem;transition:all var(--transition-fast)}.search-input::-webkit-search-cancel-button{-webkit-appearance:none;display:none}.search-input::placeholder{color:hsl(var(--muted-foreground))}.search-input:focus{outline:none;border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring) / .3)}.search-input:focus~.search-hint,.search-input:not(:placeholder-shown)~.search-hint{opacity:0}.search-hint{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:.7rem;color:hsl(var(--muted-foreground));pointer-events:none;transition:opacity var(--transition-fast)}.search-hint kbd{background:hsl(var(--muted));padding:2px 6px;border-radius:var(--radius-sm);border:1px solid hsl(var(--border));font-family:inherit}.controls-panel{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius-lg);padding:15px;max-width:1400px;margin:0 auto 20px;box-shadow:var(--shadow-sm)}.controls-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px}.controls-panel .search-input{flex:0 1 280px;min-width:150px}.filter-buttons{display:flex;gap:4px;flex-wrap:wrap}.filter-btn{padding:6px 12px;border:1px solid hsl(var(--border));background:hsl(var(--muted));color:hsl(var(--muted-foreground));border-radius:var(--radius);font-family:inherit;font-size:.75rem;cursor:pointer;transition:all var(--transition-fast)}.filter-btn:hover{background:hsl(var(--card));color:hsl(var(--foreground));border-color:hsl(var(--accent) / .5)}.filter-btn.active{background:hsl(var(--accent));color:hsl(var(--accent-foreground));border-color:hsl(var(--accent))}.sort-select{padding:6px 24px 6px 12px;border:1px solid hsl(var(--border));background:hsl(var(--muted));color:hsl(var(--foreground));border-radius:var(--radius);font-family:inherit;font-size:.75rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;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-repeat:no-repeat;background-position:right 8px center}.controls-panel .jump-to-nav{margin-top:10px;padding-top:10px;border-top:1px solid hsl(var(--border));padding-bottom:0;margin-bottom:0;background:none}.controls-panel .jump-to-nav:empty{display:none;margin:0;padding:0;border:none}.bookmark-btn{background:none;border:none;font-size:1.3rem;cursor:pointer;padding:4px 8px;margin-right:8px;border-radius:var(--radius);transition:all var(--transition-fast);color:hsl(var(--muted-foreground))}.bookmark-btn:hover{background:hsl(var(--muted))}.bookmark-btn.starred{color:hsl(var(--accent))}.toast-container{position:fixed;bottom:20px;right:20px;z-index:2000;display:flex;flex-direction:column;gap:10px}.toast{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:12px 16px;box-shadow:var(--shadow-lg);animation:slideInRight .3s ease;font-size:.85rem;max-width:300px}.toast.fade-out{animation:slideOutRight .3s ease forwards}@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}.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;max-width:1400px;margin:0 auto}.jump-to-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;padding:12px 20px;background:hsl(var(--card));border-radius:var(--radius);margin:0 auto 20px;max-width:1400px}.jump-to-nav a{color:hsl(var(--muted-foreground));text-decoration:none;font-size:.75rem;padding:4px 8px;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.jump-to-nav a:hover{background:hsl(var(--muted));color:hsl(var(--foreground))}.dept-header{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:center;font-size:.9rem;font-weight:700;color:hsl(var(--muted-foreground));padding:15px 0 5px;border-bottom:1px solid hsl(var(--border));margin-top:10px}.dept-header .back-to-top{font-size:.7rem;font-weight:400;color:hsl(var(--muted-foreground));text-decoration:none;opacity:.6;transition:opacity var(--transition-fast)}.dept-header .back-to-top:hover{opacity:1;color:hsl(var(--accent))}.course-cell{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:var(--radius);cursor:pointer;transition:all var(--transition-fast);font-size:.8rem;background:hsl(var(--card));border:1px solid hsl(var(--border));content-visibility:auto;contain-intrinsic-size:120px 44px;min-height:44px;max-height:52px;overflow:hidden}.course-cell:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.course-cell.full{background:linear-gradient(135deg,hsl(var(--destructive)),#bc1038);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{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:70%}.course-fill{font-weight:700;font-size:.75rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:hsl(var(--background) / .8);z-index:1000;justify-content:center;align-items:center;padding:20px;display:flex;visibility:hidden;opacity:0;transition:opacity var(--transition-normal),visibility 0s var(--transition-normal)}.modal{background:hsl(var(--card));border-radius:var(--radius-lg);width:100%;max-width:900px;max-height:90vh;overflow:hidden;border:1px solid hsl(var(--border));box-shadow:var(--shadow-lg);display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid hsl(var(--border));position:sticky;top:0;background:hsl(var(--card));z-index:10}.modal-header h2{font-size:1.3rem}.modal-header .close-btn{background:none;border:none;color:hsl(var(--muted-foreground));font-size:1.5rem;cursor:pointer;padding:8px 12px;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:var(--radius);transition:all var(--transition-fast)}.modal-header .close-btn:hover{color:hsl(var(--destructive));background:hsl(var(--destructive) / .1)}.modal-header-left{display:flex;align-items:center;min-width:0;overflow:hidden}.modal-header-left h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-body{padding:20px;overflow-y:auto;overscroll-behavior:contain;flex:1}.section-type-selector{margin-bottom:20px}.section-type-group{margin-bottom:15px;container-type:inline-size}.section-type-label{font-size:.75rem;color:hsl(var(--muted-foreground));margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.section-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-bottom:20px}.section-item{padding:12px;background:hsl(var(--muted));border-radius:var(--radius);cursor:pointer;transition:all var(--transition-fast);border:2px solid transparent}.section-item:hover{background:hsl(var(--card))}.section-item.selected{border-color:hsl(var(--accent))}.section-item.full{border-left:4px solid hsl(var(--destructive))}.section-item.near{border-left:4px solid hsl(var(--warning))}.section-id{font-weight:700;font-size:1rem}.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);padding:20px;margin-top:20px;height:380px;min-height:300px;max-height:400px;touch-action:pan-x pinch-zoom}.chart-placeholder{text-align:center;color:hsl(var(--muted-foreground));padding:60px}#enrollment-chart{max-height:320px;height:280px;touch-action:pan-x pinch-zoom}.chart-hidden{visibility:hidden;position:absolute}.chart-legend{display:none;justify-content:center;gap:20px;margin-top:10px;font-size:.75rem;color:hsl(var(--muted-foreground))}.chart-legend.visible{display:flex}.chart-legend-item{display:flex;align-items:center;gap:5px}.chart-legend-dot{width:10px;height:10px;border-radius:2px;transform:rotate(45deg)}.chart-legend-dot.capacity-changed{background:hsl(var(--ring))}html.modal-open,html.modal-open body{overflow:hidden;touch-action:none}@view-transition{navigation: auto;}::view-transition-old(modal),::view-transition-new(modal){animation-duration:.25s}.modal{view-transition-name:modal}@container (max-width: 400px){.section-list{grid-template-columns:1fr}}@supports (animation-timeline: view()){.chart-container{animation:fadeSlideIn linear;animation-timeline:view();animation-range:entry 0% entry 100%}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}}.modal{background:hsl(var(--card) / .95);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid hsl(var(--border) / .5)}header{background:linear-gradient(135deg,hsl(var(--card)),hsl(var(--muted)),hsl(var(--card)));background-size:200% 200%;animation:gradientShift 8s ease infinite}@keyframes gradientShift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.course-cell{position:relative;overflow:hidden}.course-cell:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,hsl(var(--foreground) / .08),transparent);transform:translate(-100%);transition:transform .5s ease}.course-cell:hover:before{transform:translate(100%)}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.modal-overlay{visibility:hidden;opacity:0;transition:opacity var(--transition-normal),visibility 0s var(--transition-normal)}.modal-overlay.active{visibility:visible;opacity:1;transition:opacity var(--transition-normal),visibility 0s 0s}.modal{transform:scale(.95) translateY(20px);transition:transform var(--transition-normal)}.modal-overlay.active .modal{transform:scale(1) translateY(0)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (max-width: 768px){header{animation:none}.course-cell{animation:none}.course-cell:before{display:none}}@media (width <=768px){body{padding:10px}body.modal-open{overflow:hidden;touch-action:none}header{padding:15px;margin-bottom:15px}header h1{font-size:1.4rem}.semester-nav{margin:8px 0;gap:4px}.semester-nav-link{padding:6px 10px;font-size:.75rem;display:flex;align-items:center;justify-content:center}.semester-toggle{flex-wrap:wrap;margin:8px 0}.semester-btn{padding:6px 12px;font-size:.8rem}.stats{gap:15px}.stat-value{font-size:1.1rem}.course-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:6px}.course-cell{padding:6px 8px;font-size:.7rem;min-height:36px;max-height:42px}.modal-overlay{padding:15px;align-items:center}.modal{max-height:92vh;height:auto;border-radius:12px;width:100%;margin:0;display:flex;flex-direction:column}.modal-body{-webkit-overflow-scrolling:touch;padding:15px;flex:1;overflow-y:auto;display:flex;flex-direction:column}.modal-header{padding:12px 15px;gap:10px}.modal-header h2{font-size:1rem}.modal-header .close-btn{font-size:1.8rem;padding:4px 8px}.section-list{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.section-item{padding:10px;min-height:44px}.chart-container{padding:10px;min-height:200px;flex:1;display:flex;flex-direction:column}#enrollment-chart{flex:1;min-height:180px}.controls-panel{padding:10px}.controls-row{gap:8px}.search-container,.controls-panel .search-input{max-width:none;flex:1 1 100%}.filter-buttons{justify-content:center}.color-legend{gap:10px;font-size:.7rem}}@media (pointer: coarse){.section-item{min-height:44px}.semester-btn,.semester-nav-link{min-height:40px;padding:8px 14px}}
