:root{color-scheme:light;--page: #f9f9f7;--surface: #fcfcfb;--ink: #0b0b0b;--ink-2: #52514e;--muted: #898781;--grid: #e1e0d9;--baseline: #c3c2b7;--border: rgba(11, 11, 11, .1);--series: #2a78d6;--series-soft: rgba(42, 120, 214, .12);--crimson: #a51c30;--accent: #a51c30;--accent-soft: rgba(165, 28, 48, .08);--shadow: 0 1px 2px rgba(11, 11, 11, .05), 0 4px 16px rgba(11, 11, 11, .04);--shadow-hover: 0 2px 4px rgba(11, 11, 11, .06), 0 8px 24px rgba(11, 11, 11, .07)}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--page: #0d0d0d;--surface: #1a1a19;--ink: #ffffff;--ink-2: #c3c2b7;--muted: #898781;--grid: #2c2c2a;--baseline: #383835;--border: rgba(255, 255, 255, .1);--series: #3987e5;--series-soft: rgba(57, 135, 229, .18);--crimson: #e05a6d;--accent: #e05a6d;--accent-soft: rgba(224, 90, 109, .12);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 16px rgba(0, 0, 0, .3);--shadow-hover: 0 2px 4px rgba(0, 0, 0, .5), 0 8px 24px rgba(0, 0, 0, .4)}}*{box-sizing:border-box}::selection{background:color-mix(in srgb,var(--accent) 22%,transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}body{margin:0;background:var(--page);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.5}.app{max-width:1200px;margin:0 auto;padding:0 24px}.topbar{display:flex;align-items:center;gap:20px;padding:18px 0 16px;position:sticky;top:0;background:var(--page);z-index:10;border-bottom:1px solid var(--grid)}.wordmark{border:none;background:none;font:inherit;color:var(--ink);font-size:20px;font-weight:700;letter-spacing:-.02em;cursor:pointer;white-space:nowrap;padding:0}.wordmark-q{color:#fff;background:var(--crimson);border-radius:7px;padding:2px 8px;margin-right:2px}.search-wrap{flex:1;max-width:640px;position:relative}.count-link{font:inherit;font-size:inherit;font-weight:600;color:var(--accent);background:none;border:none;padding:0;cursor:pointer}.count-link:hover{text-decoration:underline}.search{width:100%;padding:10px 40px 10px 16px;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--border);border-radius:10px;outline:none}.search::-webkit-search-cancel-button{-webkit-appearance:none;display:none}.search-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:30px;height:30px;display:flex;align-items:center;justify-content:center;font:inherit;font-size:14px;line-height:1;color:var(--muted);background:none;border:none;border-radius:8px;cursor:pointer}.search-clear:hover{color:var(--accent);background:var(--accent-soft)}.search:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.layout{display:grid;grid-template-columns:230px 1fr;gap:28px;padding:24px 0;align-items:start}@media(max-width:800px){.layout{grid-template-columns:1fr}}.filters{display:flex;flex-direction:column;gap:16px;position:sticky;top:78px}.filter{display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--ink-2)}.filter>span{font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.filter em{font-style:normal;font-weight:400;color:var(--muted)}.filter select{font:inherit;font-weight:400;color:var(--ink);padding:7px 10px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.filter input[type=range]{accent-color:var(--series)}.nav-link{font:inherit;font-size:14px;font-weight:600;color:var(--ink-2);background:none;border:none;padding:6px 10px;border-radius:8px;cursor:pointer;white-space:nowrap}.nav-link:hover{color:var(--accent)}.nav-link.active{color:var(--accent);background:var(--accent-soft)}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip{font:inherit;font-size:12px;font-weight:500;color:var(--ink-2);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:4px 11px;cursor:pointer}.chip:hover{border-color:var(--accent)}.chip.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.scatter-block{margin-top:0}.scatter-wrap{position:relative}.scatter{width:100%;height:auto;display:block;touch-action:none}.scatter.zoomed{cursor:grab}.scatter.zoomed:active{cursor:grabbing}.scatter-reset{position:absolute;top:6px;right:8px;z-index:2;font:inherit;font-size:12px;font-weight:600;color:var(--accent);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:4px 12px;cursor:pointer;box-shadow:var(--shadow)}.scatter-reset:hover{border-color:var(--accent)}.scatter-grid{stroke:var(--grid);stroke-width:1}.scatter-axis{stroke:var(--baseline);stroke-width:1}.scatter-tick{font-size:10px;fill:var(--muted)}.scatter-label{font-size:11px;fill:var(--ink-2);font-weight:600}.scatter-dot{fill:var(--series);fill-opacity:.55;cursor:pointer;transition:r .1s}.scatter-dot.active{fill-opacity:1}.scatter-tip-bg{fill:var(--surface);stroke:var(--border);filter:drop-shadow(0 2px 6px rgba(0,0,0,.15))}.scatter-tip-code{font-size:10px;font-weight:700;fill:var(--crimson)}.scatter-tip-title{font-size:10px;fill:var(--ink-2)}.board{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;counter-reset:board}.board li{counter-increment:board}.board-row{display:flex;align-items:baseline;gap:8px;width:100%;font:inherit;font-size:13px;text-align:left;color:var(--ink);background:none;border:none;border-top:1px solid var(--grid);padding:7px 2px;cursor:pointer}.board li:first-child .board-row{border-top:none}.board-row:before{content:counter(board);width:16px;flex-shrink:0;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.board-row:hover .board-code{text-decoration:underline}.board-code{font-weight:700;font-size:12px;color:var(--crimson);white-space:nowrap;flex-shrink:0}.board-title{flex:1;color:var(--ink-2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.board-value{font-variant-numeric:tabular-nums;font-weight:600;font-size:12px;white-space:nowrap;flex-shrink:0}.star{font:inherit;font-size:14px;color:var(--muted);background:none;border:none;padding:0 0 0 6px;cursor:pointer;line-height:1}.star:hover,.star.saved{color:var(--crimson)}.star-lg{font-size:22px;vertical-align:2px;padding-left:10px}.compare-wrap{overflow-x:auto}.compare{width:100%;border-collapse:collapse;font-size:13px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow)}.compare th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--grid);white-space:nowrap}.compare td{padding:10px 12px;border-bottom:1px solid var(--grid);font-variant-numeric:tabular-nums;vertical-align:top}.compare tr:last-child td{border-bottom:none}.compare td.best{font-weight:700;color:var(--series)}.compare-course{font:inherit;text-align:left;background:none;border:none;padding:0;cursor:pointer;display:flex;flex-direction:column;gap:1px;color:var(--ink)}.compare-course:hover .board-code{text-decoration:underline}.compare-title{font-weight:600;font-size:13px}.compare-muted{color:var(--ink-2)}.compare-remove{font:inherit;font-size:12px;color:var(--muted);background:none;border:none;cursor:pointer;padding:2px 6px}.compare-remove:hover{color:var(--crimson)}.section-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}.section-label{font-size:12px;font-weight:600;color:var(--ink-2)}.shared-note{font-size:12px;color:var(--muted)}.dept-row{cursor:pointer;border-radius:6px}.dept-row:hover{background:var(--accent-soft)}.dept-row:hover .dept-name{color:var(--accent)}.dept-name{width:220px!important;color:var(--ink-2)}.dept-vals{width:84px!important}.clear-filters{align-self:center;font:inherit;font-size:13px;font-weight:600;color:var(--accent);background:none;border:none;padding:0 4px;cursor:pointer}.clear-filters:hover{text-decoration:underline}.results-count{font-size:13px;color:var(--muted);margin-bottom:12px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.card{text-align:left;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;cursor:pointer;display:flex;flex-direction:column;gap:5px;box-shadow:var(--shadow);transition:border-color .12s,transform .12s,box-shadow .12s}.card:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:var(--shadow-hover)}.card-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.card-code{font-weight:700;font-size:13px;letter-spacing:.02em;color:var(--crimson);white-space:nowrap}.card-term{font-size:12px;color:var(--muted);text-align:right}.card-title{font-weight:600;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-instructor{font-size:13px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.instructor-link{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:2px;transition:text-decoration-color .12s,color .12s}.instructor-link:hover{color:var(--accent);text-decoration-color:var(--accent)}.card-foot{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:auto;padding-top:9px;border-top:1px solid var(--grid)}.card-rating{font-size:21px;font-weight:750;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.card-rating em{font-style:normal;font-size:12px;font-weight:500;color:var(--muted);margin-left:1px}.card-foot-stats{font-size:12px;color:var(--muted)}.card-foot-stats strong{color:var(--ink);font-weight:650;font-size:13px;font-variant-numeric:tabular-nums}.card-foot-stats .dotsep{margin:0 5px}.detail{padding:20px 0 40px}.back{font:inherit;font-size:13px;color:var(--accent);background:none;border:none;padding:0;cursor:pointer;margin-bottom:16px}.detail-code{font-weight:700;font-size:14px;letter-spacing:.03em;color:var(--crimson)}.detail-title{margin:2px 0 4px;font-size:28px;letter-spacing:-.02em;line-height:1.2}.detail-meta{color:var(--ink-2);font-size:14px}.term-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.term-tab{font:inherit;font-size:13px;padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--ink-2);cursor:pointer}.term-tab.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:22px 0}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow)}.stat-label{font-size:12px;font-weight:600;color:var(--ink-2)}.stat-value{font-size:26px;font-weight:700;letter-spacing:-.02em;margin-top:2px}.stat-sub{font-size:12px;color:var(--muted)}.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}.dist-block{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;box-shadow:var(--shadow)}.dist-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}.dist-title{font-size:13px;font-weight:600;color:var(--ink-2)}.dist-mean{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}.dist-rows{display:flex;flex-direction:column;gap:7px}.dist-row{display:flex;align-items:center;gap:10px}.dist-score{width:14px;font-size:12px;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;flex-shrink:0}.dist-score.wide{width:84px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dist-track{flex:1;height:12px;border-left:2px solid var(--baseline)}.dist-bar{height:100%;background:var(--series);border-radius:0 4px 4px 0;min-width:0;transition:width .25s ease}.dist-pct{width:36px;font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums;text-align:right;flex-shrink:0}.trend{width:100%;height:auto;display:block}.trend-baseline{stroke:var(--baseline);stroke-width:1}.trend-line{fill:none;stroke:var(--series);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.trend-pt{cursor:pointer}.trend-hit{fill:transparent}.trend-dot{fill:var(--series);stroke:var(--surface);stroke-width:2}.trend-pt.active .trend-dot{r:5.5}.trend-value{font-size:10px;fill:var(--ink-2);text-anchor:middle;font-variant-numeric:tabular-nums}.trend-pt.active .trend-value{font-weight:700;fill:var(--ink)}.trend-term{font-size:10px;fill:var(--muted);text-anchor:middle}.comments{margin-top:28px;scroll-margin-top:76px}.comments-header{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.comments-header h2{font-size:18px;margin:0}.comments-count{color:var(--muted);font-weight:400;font-size:14px}.comments-search{font:inherit;font-size:13px;padding:7px 12px;color:var(--ink);background:var(--surface);border:1px solid var(--border);border-radius:8px;width:220px;outline:none}.comments-search:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.comment-list{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-direction:column;gap:10px;max-width:860px}.comment{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--grid);border-radius:8px;padding:13px 18px;font-size:14.5px;line-height:1.65;color:var(--ink-2)}.comment mark{background:var(--accent-soft);color:var(--accent);font-weight:600;border-radius:3px;padding:0 2px}.empty{color:var(--muted);padding:24px 0}.show-more{display:block;margin:20px auto 4px;font:inherit;font-size:13px;color:var(--accent);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:8px 20px;cursor:pointer}.show-more:hover{border-color:var(--accent)}.footer{border-top:1px solid var(--grid);color:var(--muted);font-size:12px;padding:16px 0 28px;margin-top:16px}.comment-global-search{width:100%;max-width:560px;margin-top:14px;font-size:15px!important;padding:10px 14px!important}.cg-summary{font-size:13.5px;color:var(--ink-2);padding:12px 0 14px}.cg-summary strong{color:var(--ink);font-weight:650}.cg-group{margin-top:22px}.cg-head{display:flex;align-items:baseline;gap:10px;width:100%;max-width:860px;font:inherit;text-align:left;background:none;border:none;padding:0 0 2px;cursor:pointer;color:var(--ink)}.cg-head:hover .board-code{text-decoration:underline}.cg-title{font-weight:650;font-size:15px}.cg-count{margin-left:auto;font-size:12px;color:var(--accent);font-weight:600;white-space:nowrap}.cg-term{display:inline-block;font-size:11px;font-weight:650;color:var(--muted);margin-right:8px}.cg-more{font:inherit;font-size:12.5px;font-weight:600;color:var(--accent);background:none;border:none;padding:6px 0 0;cursor:pointer}.cg-more:hover{text-decoration:underline}.method-note{margin:0 0 12px;font-size:12.5px}.method-note>summary{cursor:pointer;color:var(--muted);font-weight:600;list-style:none;display:inline-block;padding:2px 0 8px}.method-note>summary::-webkit-details-marker{display:none}.method-note>summary:hover{color:var(--accent)}.method-note[open]>summary{color:var(--accent)}.method-body{max-width:760px;color:var(--ink-2);border-top:1px solid var(--grid);padding:10px 0 12px}.method-body p{margin:0 0 8px;line-height:1.55}.method-body p:last-child{margin-bottom:0}.related{margin-top:32px}.related-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.related-head h2{font-size:18px;margin:0 0 12px}.related-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.related-card{font:inherit;text-align:left;color:var(--ink);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:11px 13px;cursor:pointer;display:flex;flex-direction:column;gap:3px;box-shadow:var(--shadow);transition:border-color .12s,box-shadow .12s}.related-card:hover{border-color:var(--accent);box-shadow:var(--shadow-hover)}.related-title{font-size:13px;font-weight:600;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.related-stats{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.related-stats strong{color:var(--ink);font-weight:650}.shortlist-actions{margin-top:12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.share-url{font:inherit;font-size:12.5px;color:var(--ink-2);background:var(--page);border:1px solid var(--border);border-radius:8px;padding:7px 10px;flex:1;min-width:200px;max-width:520px}.action-btn{font:inherit;font-size:13px;font-weight:600;color:var(--accent);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:7px 16px;cursor:pointer}.action-btn:hover{border-color:var(--accent)}.loading-pulse{animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.9}50%{opacity:.4}}@media(max-width:640px){.wordmark-text{display:none}.topbar{gap:10px}.app{padding:0 14px}.search,.comments-search,.comment-global-search{font-size:16px!important}.detail-title{font-size:23px}.detail-hero .stat-tile+.stat-tile{border-left:none}.detail-hero .stat-row{border-top:none}.detail-hero .stat-tile{border-top:1px solid var(--grid)}.comments-header h2{font-size:16px}.comments-search{width:100%}.dept-name{width:118px!important;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dept-vals{width:auto!important}}.browse{padding:4px 0 24px}.filter-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:14px 0 16px}.filter-spacer{flex:1}.bar-select{font:inherit;font-size:13px;color:var(--ink);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:7px 12px;max-width:190px}.bar-select:hover{border-color:var(--accent)}.count-line{font-size:13px;color:var(--muted);margin-bottom:12px}.hero-strip{padding:26px 0 2px}.hero-title{font-size:22px;font-weight:700;letter-spacing:-.02em;margin:0}.hero-sub{color:var(--ink-2);font-size:14px}.hero-sub strong{color:var(--ink);font-weight:650}.hero-links{display:flex;gap:14px;font-size:13px}.hero-link{font:inherit;font-size:13px;font-weight:600;color:var(--accent);background:none;border:none;padding:0;cursor:pointer}.hero-link:hover{text-decoration:underline}.results-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.results-bar .results-count{margin-bottom:0}.results-controls{display:flex;align-items:center;gap:8px}.sort-select{font:inherit;font-size:13px;color:var(--ink);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 8px}.detail-hero{background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:14px;box-shadow:var(--shadow);padding:22px 24px 8px;margin-bottom:18px}.detail-hero .detail-header{margin-bottom:4px}.detail-hero .stat-row{margin:18px -24px 0;padding:4px 12px 0;border-top:1px solid var(--grid);gap:0}.detail-hero .stat-tile{background:none;border:none;box-shadow:none;border-radius:0;padding:12px}.detail-hero .stat-tile+.stat-tile{border-left:1px solid var(--grid)}
