*{box-sizing:border-box}:root{--page:#f9fafb;--surface:#fff;--surface-muted:#f3f4f6;--text:#18181b;--text-muted:#52525b;--text-subtle:#71717a;--border:#d4d4d8;--border-soft:#e5e7eb;--accent:#7c3aed;--focus:#2563eb;--link:#1d4ed8;--link-hover:#111827;--success-border:#22c55e;--success-bg:#f0fdf4;--error:#dc2626;--button-hover-border:#0ea5e9;--button-hover-bg:#f0f9ff;--button-hover-text:#0c4a6e;--saved-bg:#fff7ed;--saved-border:#fb923c;--saved-text:#9a3412;--shadow-sm:0 4px 8px #0000001f;--shadow-lg:0 20px 36px #00000024;--shadow-modal:0 24px 48px #00000038;--modal-backdrop:#18181b6b;--landing-tilt:linear-gradient(90deg, #fb7185, #818cf8)}:root[data-theme=dark]{--page:#0d1111;--surface:#151b1b;--surface-muted:#1d2525;--text:#edf7f3;--text-muted:#a9b8b3;--text-subtle:#80918c;--border:#34413f;--border-soft:#263231;--accent:#6ee7b7;--focus:#38bdf8;--link:#7dd3fc;--link-hover:#d9f99d;--success-border:#34d399;--success-bg:#10261f;--error:#f87171;--button-hover-border:#6ee7b7;--button-hover-bg:#123329;--button-hover-text:#d9f99d;--saved-bg:#2a1e12;--saved-border:#fb923c;--saved-text:#fdba74;--shadow-sm:0 4px 12px #00000052;--shadow-lg:0 24px 52px #00000080;--shadow-modal:0 28px 60px #0000008c;--modal-backdrop:#0206069e;--landing-tilt:linear-gradient(90deg, #0f766e, #7c3aed)}body{background:var(--page);color:var(--text);margin:0;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a,button{color:inherit}button,input{font:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.app-shell{max-width:768px;margin:0 auto;padding:32px 16px}.landing-card{position:relative}.brand{margin:0 0 6px;font-size:36px;font-weight:700;line-height:1.1}.brand a{text-decoration:none}.brand-accent{color:var(--accent)}.tagline{color:var(--text-muted);margin:0 0 16px;font-size:16px;font-weight:600;line-height:1.35}.search-help{color:var(--text-muted);gap:8px;margin-bottom:12px;font-size:14px;line-height:1.45;display:grid}.search-help p{margin:0}.query-link,.footer-link,.course-copy-link,.text-button{color:var(--link);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:none}.query-link:hover,.footer-link:hover,.course-copy-link:hover,.text-button:hover{text-decoration:underline}mark{background:color-mix(in srgb, var(--accent) 18%, transparent);color:inherit;border-radius:3px;padding:0 2px}.prompt{margin:0 0 16px;font-size:20px;line-height:1.45}.searchbar-wrapper{position:relative}.search-icon{width:20px;height:20px;color:var(--text-subtle);pointer-events:none;position:absolute;top:0;left:12px}.searchbar{border:0;border-bottom:1px solid var(--text-subtle);background:var(--page);width:100%;color:var(--text);padding:8px 12px 8px 40px}.searchbar:hover{background:var(--surface-muted)}.searchbar:focus{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}.section-kicker{color:var(--text-subtle);letter-spacing:0;text-transform:uppercase;margin:0 0 8px;font-size:12px;font-weight:700}.quick-start,.recent-searches,.refinement-panel,.empty-state,.compare-section{margin:0 0 24px}.recent-list,.suggestion-row,.toggle-row,.active-filter-row{flex-wrap:wrap;align-items:center;gap:8px 14px;display:flex}.recent-list .query-link,.suggestion-row .query-link{border:1px solid var(--border-soft);background:var(--surface);color:var(--text-muted);border-radius:8px;padding:6px 10px;font-size:13px;text-decoration:none;transition:border-color .16s,background .16s,color .16s}.recent-list .query-link:hover,.suggestion-row .query-link:hover{border-color:var(--button-hover-border);background:var(--button-hover-bg);color:var(--button-hover-text)}.quick-start{gap:14px;display:grid}.catalog-stats,.saved-summary{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:10px;display:grid}.catalog-stats div,.saved-summary div{border:1px solid var(--border-soft);background:var(--surface);border-radius:8px;padding:10px 12px}.catalog-stats strong,.saved-summary strong{font-size:18px;line-height:1.2;display:block}.catalog-stats span,.saved-summary span{color:var(--text-muted);font-size:12px;line-height:1.35}.refinement-panel{border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);padding:14px 0}.refinement-grid{gap:12px;margin-bottom:12px;display:grid}.refinement-grid label{color:var(--text-muted);gap:5px;font-size:12px;font-weight:700;display:grid}.refinement-grid select{border:1px solid var(--border);background:var(--surface);width:100%;min-height:38px;color:var(--text);border-radius:8px;padding:7px 10px;font-size:14px}.checkbox-control{color:var(--text-muted);align-items:center;gap:7px;font-size:13px;line-height:1.3;display:inline-flex}.checkbox-control input{width:16px;height:16px;accent-color:var(--accent)}.active-filter-row{margin-top:12px}.filter-chip{border:1px solid var(--accent);background:color-mix(in srgb, var(--accent) 10%, var(--surface));color:var(--text);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:5px 9px;font-size:12px;line-height:1.2;display:inline-flex}.filter-chip span{color:var(--text-subtle);font-weight:700}.site-footer{font-size:16px;line-height:1.45}.site-footer p{margin:0 0 8px}.site-footer p:last-child{margin-bottom:0}.student-disclaimer{color:var(--text-subtle);font-size:13px}.result-count{border:1px solid var(--success-border);background:var(--success-bg);margin:0 0 16px;padding:4px 8px;font-size:14px}.result-time{color:var(--text-subtle)}.copy-status{color:var(--saved-text);margin:-4px 0 16px;font-size:13px;line-height:1.45}.inline-status{color:var(--saved-text);margin:10px 0 0;font-size:13px;line-height:1.45}.error{color:var(--error);margin:0 0 16px}.course-list{gap:16px;display:grid}.course-card{position:relative}.course-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.course-main{min-width:0}.course-actions{flex:none;gap:6px;display:flex}.course-title{margin:0;font-size:14px;font-weight:700;line-height:1.35}.course-subject{color:var(--text-muted);margin:0 0 4px;font-size:14px}.icon-action{border:1px solid var(--border);background:var(--surface);width:34px;height:34px;color:var(--text-subtle);cursor:pointer;border-radius:8px;flex:none;place-items:center;transition:border-color .16s,background .16s,color .16s,transform .16s;display:inline-grid}.icon-action:hover{border-color:var(--saved-border);color:var(--saved-text)}.icon-action:active{transform:scale(1.05)}.icon-action:disabled{cursor:not-allowed;opacity:.45;transform:none}.save-course.saved{border-color:var(--saved-border);background:var(--saved-bg);color:var(--saved-text)}.compare-course.active{border-color:var(--button-hover-border);background:var(--button-hover-bg);color:var(--button-hover-text)}.bookmark-icon,.compare-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:18px;height:18px}.save-course.saved .bookmark-icon{fill:currentColor}.course-meta,.course-description,.course-note{margin:0 0 4px;font-size:12px;line-height:1.45}.course-meta{font-weight:300}.course-note{color:var(--text-muted)}.course-code-chips{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.course-code-chips .query-link{border:1px solid var(--border-soft);background:var(--surface-muted);color:var(--link);border-radius:999px;padding:3px 8px;font-size:12px;line-height:1.2;text-decoration:none}.course-code-chips .query-link:hover{border-color:var(--button-hover-border);background:var(--button-hover-bg);color:var(--button-hover-text)}.ext-links{flex-wrap:wrap;gap:8px;display:flex}.ext-links a,.course-copy-link{color:var(--text-subtle);font-size:14px;text-decoration:underline}.ext-links a:hover,.course-copy-link:hover{color:var(--link-hover)}.empty-state{border:1px solid var(--border-soft);background:var(--surface);border-radius:8px;padding:18px}.empty-state h2{margin:0 0 6px;font-size:18px;line-height:1.25}.empty-state p{color:var(--text-muted);margin:0 0 14px;font-size:14px;line-height:1.45}.saved-section{border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);margin:0 0 28px;padding:16px 0}.saved-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.saved-actions{flex:none;gap:8px;display:flex}.saved-header h2{margin:0 0 2px;font-size:18px;line-height:1.25}.saved-header p,.saved-empty,.saved-status{color:var(--text-muted);margin:0;font-size:13px;line-height:1.45}.saved-status{color:var(--saved-text);margin-bottom:12px}.saved-summary{margin:0 0 16px}.saved-export{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;flex:none;padding:8px 12px;font-size:14px;transition:border-color .16s,background .16s,color .16s,transform .16s}.saved-export:hover{border-color:var(--button-hover-border);background:var(--button-hover-bg);color:var(--button-hover-text)}.saved-export:active{transform:scale(1.05)}.saved-course-list{gap:14px}.compare-section{border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);padding:16px 0}.compare-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px;display:flex}.compare-header h2{margin:0 0 2px;font-size:18px;line-height:1.25}.compare-header p{color:var(--text-muted);margin:0;font-size:13px;line-height:1.45}.compare-table-wrap{border:1px solid var(--border-soft);background:var(--surface);border-radius:8px;overflow-x:auto}.compare-table{border-collapse:collapse;width:100%;min-width:680px;font-size:13px;line-height:1.4}.compare-table th,.compare-table td{border-bottom:1px solid var(--border-soft);text-align:left;vertical-align:top;padding:10px 12px}.compare-table tr:last-child th,.compare-table tr:last-child td{border-bottom:0}.compare-table thead th,.compare-table tbody th{background:var(--surface-muted);font-weight:700}.course-tray{z-index:8;border:1px solid var(--border);background:var(--surface);width:min(460px,100vw - 32px);box-shadow:var(--shadow-modal);border-radius:8px;flex-direction:column;display:flex;position:fixed;top:16px;bottom:74px;right:16px}.course-tray-header{border-bottom:1px solid var(--border-soft);flex:none;justify-content:space-between;align-items:flex-start;gap:16px;padding:14px 16px;display:flex}.course-tray-header h2{margin:0 0 2px;font-size:18px;line-height:1.25}.course-tray-header p{color:var(--text-muted);margin:0;font-size:13px;line-height:1.45}.course-tray-body{padding:0 16px 16px;overflow:auto}.course-tray .saved-section,.course-tray .compare-section{margin:0}.course-tray .saved-section{border-top:0}.course-tray .course-card{border-bottom:1px solid var(--border-soft);padding-bottom:14px}.course-tray .course-card:last-child{border-bottom:0;padding-bottom:0}.course-tray .compare-table{min-width:520px}.utility-aside{align-items:flex-end;gap:8px;padding:12px;display:flex;position:fixed;bottom:0;right:0}.icon-button,.data-button{border:1px solid var(--border);background:var(--surface);min-height:42px;color:var(--text);box-shadow:var(--shadow-sm);cursor:pointer;border-radius:8px;padding:8px 16px;transition:border-color .16s,background .16s,color .16s,box-shadow .16s,transform .16s}.tray-button{align-items:center;gap:10px;padding:0 14px;line-height:1;display:inline-flex}.tray-button>span{align-items:center;display:inline-flex}.tray-count{background:var(--surface-muted);min-width:22px;height:22px;color:var(--text-muted);border-radius:999px;flex:none;place-items:center;padding:0 7px;font-size:12px;font-weight:700;line-height:1;display:inline-grid}.tray-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;flex:none;width:18px;height:18px}.tray-close{width:34px;height:34px;font-size:18px;line-height:1}.icon-button{place-items:center;width:42px;height:42px;padding:0;display:inline-grid}.theme-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:20px;height:20px}.theme-icon circle{fill:currentColor}.theme-icon path{fill:none}.icon-button:hover,.data-button:hover{border-color:var(--button-hover-border);background:var(--button-hover-bg);color:var(--button-hover-text)}.icon-button:active,.data-button:active{box-shadow:var(--shadow-sm);transform:scale(1.05)}.catalog-note{z-index:10;background:var(--modal-backdrop);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;overflow:auto}.modal-body{border:1px solid var(--border);background:var(--surface);max-width:768px;max-height:calc(100vh - 32px);box-shadow:var(--shadow-modal);border-radius:8px;padding:32px;font-size:18px;line-height:1.45;overflow:auto}.modal-body h2{margin:0 0 24px;font-size:24px;font-weight:700}.modal-body p{margin:0 0 24px}.catalog-meta{border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);gap:12px;margin:0 0 24px;padding:16px 0;font-size:14px;display:grid}.catalog-meta div{justify-content:space-between;gap:24px;display:flex}.catalog-meta dt{color:var(--text-muted);font-weight:600}.catalog-meta dd{text-align:right;margin:0}.modal-close{border:1px solid var(--text);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;padding:12px 20px;transition:box-shadow .16s,transform .16s}.modal-close:hover{box-shadow:var(--shadow-sm)}.modal-close:active{transform:scale(1.05)}@media (width>=768px){.landing{flex-direction:column;justify-content:center;max-width:none;min-height:100vh;padding-top:48px;padding-bottom:48px;display:flex}.landing .landing-card{border:1px solid var(--border-soft);background:var(--surface);width:724px;box-shadow:var(--shadow-lg);border-radius:16px;margin:0 auto;padding:24px}.landing .landing-card:before{content:"";z-index:-1;background:var(--landing-tilt);border-radius:16px;position:absolute;inset:0;transform:rotate(-6deg)}.landing .brand{text-align:center;margin-bottom:6px;font-size:60px}.landing .tagline{text-align:center;margin-bottom:32px;font-size:18px}.landing .prompt{text-align:center;margin-bottom:48px;font-size:30px;line-height:1.25}.landing .searchbar{width:10ch;padding:0 4px}.app-shell:not(.landing) .flavor,.app-shell:not(.landing) .site-footer{display:none}.app-shell:not(.landing) .searchbar-wrapper{font-size:16px}.app-shell:not(.landing) .searchbar{width:100%}.refinement-grid{grid-template-columns:minmax(180px,1.4fr) repeat(3,minmax(120px,1fr))}.site-footer{text-align:center;max-width:640px;margin:0 auto}.utility-aside{padding:16px}}
