@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap";:root{font-synthesis:none;color:var(--ink);background:var(--canvas);--ink:#0f172a;--muted:#475569;--line:#cbd5e1;--control-line:#64748b;--canvas:#f8fafc;--paper:#fff;--soft:#f1f5f9;--accent:#854d0e;--accent-soft:#fef3c7;--focus:#1d4ed8;--error:#991b1b;font-family:DM Sans,sans-serif;font-size:16px;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select{font:inherit}button,select,summary{cursor:pointer}button,input,select{color:inherit}input,select{min-width:0}a{color:var(--ink);text-underline-offset:4px}button:disabled,select:disabled{cursor:wait;color:var(--muted)}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--focus);outline-offset:3px}[hidden]{display:none!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:10;background:var(--ink);color:#fff;padding:12px;position:absolute;top:-80px;left:16px}.skip-link:focus{top:10px}.site-header{background:var(--paper);border-bottom:1px solid var(--line)}.header-inner,.page-shell{max-width:1408px;margin:auto;padding-left:40px;padding-right:40px}.header-inner{justify-content:space-between;align-items:center;gap:24px;min-height:80px;display:flex}.wordmark{letter-spacing:.5px;white-space:nowrap;align-items:center;gap:12px;font-family:Manrope,sans-serif;font-size:18px;font-weight:800;text-decoration:none;display:flex}.brand-icon{color:var(--ink)}.wordmark-divider{color:var(--muted);padding:0 9px;font-weight:400}.intro{justify-content:space-between;align-items:center;gap:32px;padding:36px 0 24px;display:flex}h1,h2,h3,h4{font-family:Manrope,sans-serif}h1{letter-spacing:-1px;margin:0;font-size:32px;font-weight:800;line-height:1.25}.term-control{flex-shrink:0;width:300px}.term-control>label{margin-bottom:8px;font-size:14px;font-weight:600;display:block}.search-select{min-width:0;position:relative}.select-control{position:relative}.search-select .select-input{border:1px solid var(--control-line);background:var(--paper);width:100%;min-height:48px;color:var(--ink);text-overflow:ellipsis;border-radius:6px;padding:10px 48px 10px 14px;font-size:16px}.select-input::placeholder{color:var(--muted);opacity:1}.select-chevron{width:44px;height:44px;color:var(--muted);background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:2px;right:4px}.select-chevron:hover{background:var(--soft)}.select-menu{z-index:40;background:var(--paper);border:1px solid var(--control-line);border-radius:7px;padding:6px;position:absolute;top:calc(100% + 6px);left:0;right:0;box-shadow:0 10px 28px #0f172a26}.search-select.opens-up .select-menu{top:auto;bottom:calc(100% + 6px)}.select-match-count{color:var(--muted);padding:8px;font-size:14px}.select-options{overscroll-behavior:contain;scrollbar-gutter:stable;max-height:min(280px,42vh);overflow-y:auto}.select-option{cursor:pointer;overflow-wrap:anywhere;border-radius:4px;align-items:flex-start;gap:10px;min-height:44px;padding:10px 8px;font-size:16px;display:flex}.select-option-check{width:18px;min-height:24px;color:var(--ink);flex-shrink:0}.select-option:hover,.select-option.is-active{background:var(--soft);outline:1px solid var(--line);outline-offset:-1px}.select-option[aria-selected=true]{color:var(--ink);font-weight:600}.select-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:4px 8px 0;display:flex}.select-footer .text-button{font-size:14px}.select-footer .text-button:disabled{cursor:default;text-decoration:none}.select-tags{flex-wrap:wrap;gap:6px;display:flex}.select-tags:not(:empty){margin-top:8px}.select-tag{border:1px solid var(--line);background:var(--soft);text-align:left;border-radius:5px;align-items:center;gap:10px;max-width:100%;min-height:44px;padding:8px 10px;font-size:14px;display:flex}.select-tag>span:first-child{overflow-wrap:anywhere}.select-tag-remove{margin-left:auto;font-size:18px}.view-navigation{flex-wrap:wrap;gap:8px;margin:0 0 22px;display:flex}.view-navigation button{border:1px solid var(--control-line);background:var(--paper);border-radius:6px;min-height:44px;padding:9px 18px;font-size:16px;font-weight:500}.view-navigation button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.view-navigation button:hover:not([aria-pressed=true]){background:var(--soft)}.search-bar{border:1px solid var(--control-line);background:var(--paper);border-radius:7px;align-items:center;gap:14px;min-height:60px;padding:4px 18px;display:flex}.search-bar>svg{color:var(--muted);flex-shrink:0}.search-bar input{background:0 0;border:0;outline:none;width:100%;min-height:48px;font-size:16px}.search-bar:focus-within{outline:3px solid var(--focus);outline-offset:3px}.search-bar input:focus-visible{outline:none}.search-bar input::placeholder{color:var(--muted);opacity:1}.search-hint{white-space:nowrap;color:var(--muted);border-left:1px solid var(--line);padding-left:18px;font-size:14px}.data-status{color:var(--muted);justify-content:space-between;align-items:center;gap:16px;min-height:68px;margin-bottom:12px;padding:10px 0;font-size:14px;display:flex}.status-copy{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.status-dot{background:var(--muted);border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block}.source-date{border-left:1px solid var(--line);margin-left:4px;padding-left:12px}.text-button{text-underline-offset:4px;background:0 0;border:0;min-height:44px;padding:8px 0;font-size:14px;font-weight:500;text-decoration:underline}.text-button:hover{color:var(--accent)}.refresh-button{white-space:nowrap}.notice{border:1px solid var(--accent);background:var(--accent-soft);color:#713f12;border-radius:6px;margin:0 0 24px;padding:14px 18px;font-size:14px;line-height:1.6}.notice p{margin:0}.notice p+p{margin-top:8px}.workspace{grid-template-columns:312px minmax(0,1fr);align-items:start;gap:32px;min-height:480px;display:grid}.workspace.favourites-layout{grid-template-columns:minmax(0,1fr)}.filters{border:1px solid var(--line);background:var(--paper);border-radius:7px;padding:20px}.filter-toggle{display:none}.filter-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.filter-heading h2{margin:0;font-size:20px;font-weight:700}.filter-grid{gap:22px;display:grid}.field{flex-direction:column;gap:8px;display:flex}.field>label,fieldset legend{font-size:14px;font-weight:600}.field select,.field input{border:1px solid var(--control-line);background:var(--paper);border-radius:5px;width:100%;min-height:46px;padding:8px 10px;font-size:16px}.two-fields{grid-template-columns:minmax(0,1fr);gap:20px;display:grid}.filter-divider{background:var(--line);height:1px}fieldset{border:0;min-width:0;margin:0;padding:0}fieldset legend{margin-bottom:12px;padding:0}.checkbox-label{cursor:pointer;align-items:flex-start;gap:10px;min-height:44px;font-size:16px;font-weight:500;display:flex}.checkbox-label input{width:20px;height:20px;accent-color:var(--ink);flex-shrink:0;margin:3px 0 0}.day-buttons{flex-wrap:wrap;gap:7px;display:flex}.day-option{cursor:pointer;position:relative}.day-option input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute}.day-option>span{border:1px solid var(--control-line);background:var(--paper);border-radius:4px;justify-content:center;align-items:center;min-width:44px;height:44px;font-size:14px;display:flex}.day-option input:checked+span{background:var(--ink);color:#fff;border-color:var(--ink)}.day-option input:focus-visible+span{outline:3px solid var(--focus);outline-offset:3px}.field-help{color:var(--muted);margin:10px 0 0;font-size:14px;line-height:1.6}.time-field .small-label{font-size:14px;font-weight:500}.time-field input{font-size:16px}.field-error{color:var(--error);margin:10px 0 0;font-size:14px;line-height:1.5}.field input[aria-invalid=true]{border:2px solid var(--error)}.results-toolbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;min-height:72px;padding-bottom:18px;display:flex}.results-toolbar h2{letter-spacing:-.5px;margin:0;font-size:24px;font-weight:700;line-height:1.3}.results-toolbar p{color:var(--muted);margin:8px 0 0;font-size:14px;line-height:1.6}.results-toolbar strong{color:var(--ink);font-weight:600}.sort-label{white-space:nowrap;color:var(--muted);font-size:14px}.sort-label span{margin-left:5px}.active-filters{flex-wrap:wrap;gap:8px;display:flex}.active-filters:not(:empty){padding-top:16px}.filter-chip{overflow-wrap:anywhere;border:1px solid var(--control-line);background:var(--soft);text-align:left;border-radius:5px;max-width:100%;min-height:44px;padding:8px 12px;font-size:14px;line-height:1.5}.filter-chip:hover{background:#e2e8f0}.course-list{gap:14px;padding-top:18px;display:grid}.course-card{background:var(--paper);border:1px solid var(--line);border-radius:7px;min-width:0;transition:border-color .15s;position:relative}.course-card:hover{border-color:var(--control-line)}.course-card:has(.course-disclosure[open]){border-color:var(--control-line)}.course-summary{justify-content:space-between;align-items:center;gap:20px;min-height:140px;padding:22px 78px 22px 22px;list-style:none;display:flex;position:relative}.course-summary::-webkit-details-marker{display:none}.course-summary:focus-visible{outline-offset:-4px;border-radius:7px}.course-info{min-width:0}.course-code-row{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px;display:flex}.course-code{color:var(--accent);background:var(--accent-soft);border-radius:3px;padding:3px 8px;font-size:14px;font-weight:700;display:inline-block}.credit-label,.course-types,.meta-separator{color:var(--muted);font-size:14px}.course-instructors{color:var(--muted);overflow-wrap:anywhere;margin:8px 0 0;font-size:16px;line-height:1.6}.course-info h3{letter-spacing:-.3px;overflow-wrap:anywhere;margin:0;font-size:20px;font-weight:700;line-height:1.4}.course-meta{color:var(--muted);flex-wrap:wrap;gap:8px;margin-top:8px;font-size:14px;line-height:1.6;display:flex}.course-summary-right{flex-shrink:0;align-items:center;gap:16px;display:flex}.section-count{white-space:nowrap;color:var(--muted);font-size:14px}.expand-icon{width:28px;height:28px;color:var(--ink);justify-content:center;align-items:center;font-size:22px;line-height:1;display:flex}.course-disclosure[open]>.course-summary .expand-icon{font-size:0}.course-disclosure[open]>.course-summary .expand-icon:after{content:"−";font-size:22px}.favourite-button{border:1px solid var(--control-line);background:var(--paper);width:44px;height:44px;color:var(--muted);border-radius:5px;font-family:system-ui,sans-serif;font-size:28px;line-height:1;position:absolute;top:50%;right:18px;transform:translateY(-50%)}.favourite-button:hover{background:var(--soft)}.favourite-button[aria-pressed=true]{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}.unavailable-course{padding:22px 78px 22px 22px}.unavailable-course h3{margin-top:10px}.availability-status{color:var(--muted);margin:10px 0 0;font-size:14px}.course-body{border-top:1px solid var(--line);padding:0 22px 22px}.course-description{color:var(--ink);margin:20px 0;font-size:16px;line-height:1.75}.requirements{border-left:3px solid var(--accent);color:var(--muted);margin:20px 0;padding:2px 0 2px 14px;font-size:16px;line-height:1.7}.requirements p{margin:6px 0}.requirements strong{color:var(--ink);font-weight:600}.section-heading{color:var(--ink);margin:24px 0 14px;font-size:16px;font-weight:700}.sections{gap:14px;display:grid}.section-card{border:1px solid var(--line);background:var(--canvas);border-radius:6px;padding:18px}.section-topline{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.section-identity{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.section-identity strong{font-size:16px;font-weight:700}.crn{color:var(--muted);font-family:ui-monospace,monospace;font-size:14px}.section-type{color:var(--muted);font-size:14px}.section-campus{color:var(--muted);margin:8px 0 16px;font-size:14px}.section-title{margin:12px 0 0;font-size:16px}.meeting-row{border-top:1px solid var(--line);overflow-wrap:anywhere;grid-template-columns:minmax(0,.8fr) minmax(0,1fr);gap:24px;padding-top:14px;font-size:16px;line-height:1.6;display:grid}.meeting-time,.meeting-place{flex-direction:column;gap:4px;display:flex}.meeting-days{color:var(--muted);font-size:14px}.meeting-time strong{font-weight:600}.meeting-instructors{color:var(--muted);font-size:16px}.meeting-dates{color:var(--muted);margin:10px 0 6px;font-size:14px}.meeting-missing{color:var(--muted);font-size:16px}.attributes{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.attributes span{color:var(--muted);border:1px solid var(--line);background:var(--paper);border-radius:3px;padding:3px 7px;font-size:14px}.final-info{font-size:14px;line-height:1.6}.restrictions{border-top:1px solid var(--line);color:var(--muted);margin-top:14px;padding-top:10px;font-size:14px;line-height:1.7}.restrictions summary{min-height:44px;color:var(--ink);align-content:center;display:list-item}.restrictions p{overflow-wrap:anywhere;margin:6px 0}.restrictions strong{font-weight:600}.pagination{text-align:center;padding:28px 0 12px}.pagination p{color:var(--muted);margin:0 0 14px;font-size:14px}.secondary-button,.primary-button{border:1px solid var(--control-line);background:var(--paper);border-radius:5px;min-height:44px;padding:10px 18px;font-size:16px}.secondary-button:hover{background:var(--soft)}.secondary-button span{margin-left:12px}.primary-button{color:#fff;background:var(--ink);border-color:var(--ink)}.primary-button:hover{background:#334155}.empty-state{border:1px dashed var(--control-line);text-align:center;background:var(--paper);border-radius:7px;padding:48px 24px}.empty-icon{color:var(--muted);margin-bottom:14px;font-size:32px}.empty-state h3{margin:0;font-size:22px;line-height:1.4}.empty-state p{color:var(--muted);max-width:440px;margin:14px auto 22px;font-size:16px;line-height:1.6}.skeleton-card{border:1px solid var(--line);background:var(--paper);border-radius:7px;gap:14px;height:150px;padding:24px;display:grid;position:relative;overflow:hidden}.skeleton-card:after{content:"";background:linear-gradient(90deg,#0000,#e2e8f080,#0000);animation:1.6s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}.skeleton-code,.skeleton-title,.skeleton-meta{background:#e2e8f0;border-radius:3px;height:14px}.skeleton-code{width:90px}.skeleton-title{width:60%;height:20px}.skeleton-meta{width:35%}.pulsing{animation:1.5s infinite pulse}.site-footer{text-align:right;border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:16px 24px;margin-top:48px;padding:24px 0 30px;font-size:14px;display:flex}.site-footer p{margin:0}.site-footer a{color:var(--ink)}.noscript{text-align:center;padding:30px}@keyframes shimmer{to{transform:translate(100%)}}@keyframes pulse{50%{opacity:.4}}@media (width<=1100px){.header-inner,.page-shell{padding-left:24px;padding-right:24px}.workspace{grid-template-columns:292px minmax(0,1fr);gap:24px}.source-date{border-left:0;flex-basis:100%;margin-left:0;padding-left:15px;display:block}.sort-label{display:none}.course-summary{flex-direction:column;align-items:flex-start;gap:14px}.course-summary-right{justify-content:space-between;width:100%}.meeting-row{grid-template-columns:minmax(0,1fr);gap:12px}}@media (width<=760px){.header-inner,.page-shell{padding-left:20px;padding-right:20px}.header-inner{gap:14px;min-height:72px}.wordmark{gap:9px;font-size:16px}.brand-icon{width:30px;height:30px}.intro{flex-direction:column;align-items:stretch;gap:22px;padding:28px 0 22px}h1{font-size:30px}.term-control{width:100%}.view-navigation button{padding:9px 14px}.search-bar{gap:10px;padding:4px 12px}.search-hint{display:none}.data-status{flex-wrap:wrap;gap:0;margin-bottom:6px;padding:14px 0}.status-copy{flex-basis:100%}.source-date{padding-left:15px}.refresh-button{margin-left:auto}.workspace{grid-template-columns:minmax(0,1fr);gap:24px}.filters{padding:16px;position:static}.filter-toggle{background:0 0;border:0;justify-content:space-between;align-items:center;width:100%;min-height:44px;padding:0;font-size:16px;font-weight:600;display:flex}.filter-toggle span{font-size:22px}.filters:not(.is-expanded) #filter-controls{display:none}.filters.is-expanded .filter-toggle{border-bottom:1px solid var(--line);margin-bottom:18px;padding-bottom:14px}.filter-heading{justify-content:flex-end;margin-bottom:16px}.filter-heading h2{display:none}.filter-grid{grid-template-columns:minmax(0,1fr);gap:20px}.day-buttons{gap:6px}.day-option>span{min-width:44px}.results-toolbar{gap:12px}.results-toolbar h2{font-size:24px}.course-summary{padding:20px 72px 20px 18px}.course-info h3{font-size:20px}.course-code-row{gap:8px}.course-meta{gap:6px}.favourite-button{top:50%;right:14px;transform:translateY(-50%)}.course-body{padding:0 18px 18px}.section-card{padding:14px}.section-topline{flex-direction:column;align-items:flex-start;gap:6px}.unavailable-course{padding:20px 72px 20px 18px}.site-footer{justify-content:flex-end;margin-top:36px}.empty-state{padding:36px 18px}}@media (width<=380px){.header-inner,.page-shell{padding-left:16px;padding-right:16px}.header-inner{flex-wrap:wrap;gap:0 12px;padding-top:8px;padding-bottom:8px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
