* { box-sizing:border-box; }
body { margin:0; padding-top:90px; font-family:Montserrat,Arial,sans-serif; background:#f1f1f1; color:#222; }
.shell { max-width:980px; margin:auto; padding:0 24px; }
header .navbar-brand { font-weight:400; }
body > footer { padding:28px 3%; color:#000; }
body > footer ul { padding:0; margin:0; gap:8px; }
body > footer li { list-style:none; font-size:14px; }
body > footer a { color:#000; text-decoration:none; }
body > footer a:hover { color:#337ab7; }
input,select,button { font:inherit; color:inherit; }
input,select { background:#fff; border:1px solid #ccc; border-radius:6px; font-size:14px; padding:10px 12px; min-height:44px; }
input { width:100%; }
select { cursor:pointer; width:175px; }
button { background:#fff; border:1px solid #ccc; border-radius:6px; padding:10px 14px; font-size:13px; min-height:44px; cursor:pointer; }
:focus-visible { outline:2px solid #337ab7; outline-offset:3px; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
[hidden] { display:none !important; }
.browse-tabs { display:flex; gap:24px; border-bottom:1px solid #ddd; }
.browse-tabs a { padding:0 0 10px; color:#555; }
.browse-tabs a[aria-current] { color:#337ab7; border-bottom:2px solid #337ab7; font-weight:600; }
.rank-controls { display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.rank-controls button[type="submit"] { background:#337ab7; border-color:#337ab7; color:#fff; font-weight:600; }
.rank-controls button[type="submit"]:hover { background:#23527c; }
#clear-rank { border-color:transparent; color:#6c757d; }
#rank-status { font-size:12px; color:#6c757d; line-height:1.7; margin:10px 0 0; }
#rank-status:empty { display:none; }
.search { flex:1; min-width:0; }
.filters { display:flex; gap:10px; flex-wrap:wrap; }
.list-info { display:flex; align-items:center; justify-content:space-between; }
.list-info p { margin:0; }
.show-other-programs { display:flex; align-items:center; gap:8px; min-height:44px; cursor:pointer; }
.show-other-programs input { width:18px; min-height:18px; height:18px; accent-color:#337ab7; }
.comparison-favorable { color:#198754; background:#e8f5ee; }
.comparison-mixed { color:#9a6700; background:#fdf3d8; }
.comparison-behind { color:#c0392b; background:#fbeaea; }
.comparison-neutral { color:#555; background:#f1f1f1; }
.comparison-info { border:0; background:transparent; font-weight:700; color:#6c757d; padding:0; border-radius:50%; }
.comparison-info:hover { background:#f1f1f1; }
.comparison-help summary { cursor:pointer; padding:12px 0; }
.comparison-help p { margin:0 0 12px; line-height:1.7; max-width:75ch; }
.campus-label { color:#854d0e; font-weight:600; }
table { border-collapse:collapse; width:100%; font-variant-numeric:tabular-nums; }
th,td { border-bottom:1px solid #eee; text-align:right; }
.pagination { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:6px; margin:24px 0; }
.pagination button { min-width:44px; padding:8px; }
.pagination button[aria-current="page"] { background:#337ab7; color:#fff; }
.pagination button:disabled { opacity:.45; cursor:default; }
#result-count { scroll-margin-top:100px; }
#empty { text-align:center; padding:36px 16px; }
#empty h2 { font-size:16px; font-weight:600; }
#empty p { font-size:14px; color:#6c757d; }
.directory-label { display:block; margin-bottom:10px; font-size:15px; font-weight:500; }
.level-filter { display:flex; align-items:center; gap:12px; }
.score-filters { display:flex; flex-wrap:wrap; gap:8px; border:0; padding:0; margin:0; }
.score-filters label { position:relative; cursor:pointer; }
.score-filters input { position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer; }
.score-filters label > span { display:block; padding:10px 14px; border:1px solid #ccc; border-radius:6px; font-size:14px; }
.score-filters input:checked + span { background:#337ab7; color:#fff; border-color:#337ab7; }
.score-filters input:focus-visible + span { outline:2px solid #337ab7; outline-offset:3px; }
.score-badge { font-size:11px; color:#555; background:#f1f1f1; padding:2px 5px; margin-left:6px; border-radius:4px; }
#departments { list-style:none; padding:0; }
#departments li { content-visibility:auto; contain-intrinsic-size:auto 64px; }
#department-empty,#university-empty,#university-count { font-size:13px; color:#6c757d; margin:16px 0; }
.demo-notice { font-size:13px; color:#6c757d; }
@media(max-width:520px) { .shell { padding-inline:16px; } input,select { font-size:16px; } .list-info { align-items:start; } }
