/* ===================== Design tokens ===================== */
:root{
  --bg:#eff2f8; --bg-soft:#e9edf5; --surface:#ffffff; --surface-2:#f4f7fc;
  --line:#e6eaf3; --line-strong:#d4dae8;
  --text:#141b29; --text-soft:#515c72; --text-mute:#8b95a9;
  --primary:#3a5bd9; --primary-soft:#eaeefb; --primary-ink:#2840a4;
  --good:#0e9b56; --good-soft:#e5f6eb; --bad:#e0364f; --bad-soft:#fdeaed;
  --new:#e07e09; --new-soft:#fdf2e2; --neutral:#76808f; --neutral-soft:#eceff5;
  --warn:#c2891a;
  /* 유불리 카드의 전형 요약줄(전형유형·전형명·모집인원) — 지원 판단의 핵심 정보라
     mute 회색이면 너무 흐리다. 라이트=본문 검정, 다크=노랑으로 또렷하게. */
  --hl-jh:#141b29;
  --shadow-sm:0 1px 2px rgba(20,30,60,.05),0 1px 3px rgba(20,30,60,.04);
  --shadow:0 6px 22px rgba(26,40,80,.08),0 2px 7px rgba(26,40,80,.05);
  --shadow-lg:0 22px 56px rgba(20,32,70,.17),0 6px 16px rgba(20,32,70,.08);
  --radius:16px; --radius-sm:11px; --radius-xs:8px;
  --font:'Pretendard','Pretendard Variable',-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Malgun Gothic','Noto Sans KR',sans-serif;
  --side-w:288px;
}
[data-theme="dark"]{
  --bg:#0c0f17; --bg-soft:#111521; --surface:#171c28; --surface-2:#1e2533;
  --line:#2a3346; --line-strong:#3a455c;
  --text:#f1f4fa; --text-soft:#bcc5d6; --text-mute:#8b96aa;
  --primary:#7c97ff; --primary-soft:#222a47; --primary-ink:#bccaff;
  --good:#45cd86; --good-soft:#13301f; --bad:#ff7090; --bad-soft:#341925;
  --new:#ffb45e; --new-soft:#33260f; --neutral:#97a1b5; --neutral-soft:#212a3a;
  --warn:#e0b04a;
  --hl-jh:#ffd76a;
  --shadow-sm:0 1px 2px rgba(0,0,0,.45); --shadow:0 8px 26px rgba(0,0,0,.5);
  --shadow-lg:0 26px 64px rgba(0,0,0,.65);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--font);background:var(--bg);color:var(--text);
  font-size:15.5px;line-height:1.55;-webkit-font-smoothing:antialiased;letter-spacing:-.01em}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input{font-family:inherit}
::selection{background:var(--primary);color:#fff}
.hidden{display:none!important}
.muted{color:var(--text-mute);font-weight:500;font-size:.78em}

/* ---- keyboard accessibility ---- */
:focus-visible{outline:2.5px solid var(--primary);outline-offset:2px;border-radius:7px}
:focus:not(:focus-visible){outline:none}
.skip-link{position:fixed;left:12px;top:-60px;z-index:200;background:var(--primary);color:#fff;
  padding:10px 16px;border-radius:10px;font-weight:800;font-size:13px;box-shadow:var(--shadow-lg);transition:top .15s}
.skip-link:focus{top:12px}

/* scrollbars */
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:8px;border:2px solid transparent;background-clip:padding-box}
*::-webkit-scrollbar-thumb:hover{background:var(--text-mute)}

#app{display:flex;min-height:100vh}

/* ===================== Sidebar ===================== */
#sidebar{width:var(--side-w);min-width:var(--side-w);background:var(--surface);
  border-right:1px solid var(--line);display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;overflow-y:auto;z-index:40}
.brand{padding:18px 20px 14px}
.brand-logo{width:100%;max-width:226px;height:64px;background:url(logo.png) left center/contain no-repeat}
[data-theme="dark"] .brand-logo{background-image:url(logo-dark.png)}
#themeBtn::after{content:"🌙";font-size:16px}
[data-theme="dark"] #themeBtn::after{content:"☀️"}
.brand-sub{font-size:12px;font-weight:700;color:var(--text-soft);margin-top:11px;line-height:1.45}
.brand-sub span{display:block;font-size:10.5px;font-weight:600;color:var(--text-mute);margin-top:1px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.side-section{padding:6px 14px 10px}
.side-label{font-size:11px;font-weight:700;color:var(--text-mute);text-transform:uppercase;
  letter-spacing:.06em;padding:8px 6px 8px}
.cat-list{display:flex;flex-direction:column;gap:2px}
.cat-item{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:10px;
  font-size:14px;font-weight:600;color:var(--text-soft);transition:.13s;text-align:left;width:100%}
.cat-item:hover{background:var(--surface-2);color:var(--text)}
.cat-item.active{background:var(--primary-soft);color:var(--primary-ink)}
.cat-dot{width:9px;height:9px;border-radius:50%;flex:none}
.cat-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-item .cat-n{flex:none;margin-left:auto;font-size:11.5px;font-weight:700;color:var(--text-mute);
  background:var(--surface-2);padding:2px 8px;border-radius:20px}
.cat-item.has-sub .cat-n{margin-left:auto}
.cat-toggle{flex:none;width:22px;height:22px;display:grid;place-items:center;border-radius:6px;
  border:1px solid var(--line);background:var(--surface-2);font-size:10px;
  color:var(--text-mute);font-size:11px;font-weight:900;margin-left:4px;transition:transform .16s,background .12s,color .12s}
.cat-toggle:hover{background:var(--surface-2);color:var(--text)}
.cat-toggle{transform:rotate(-90deg)}
.cat-toggle.open{transform:rotate(0deg);color:var(--text-soft)}
.cat-toggle:focus-visible{outline:2px solid var(--primary);outline-offset:1px}
.cat-item.active .cat-n{background:var(--surface);color:var(--primary-ink)}
.cat-item.all .cat-dot{background:conic-gradient(from 0deg,#3a5bd9,#0891b2,#16a34a,#d97706,#e11d48,#3a5bd9)}
.cat-item.sub{padding-left:24px;font-size:12.5px;font-weight:600;position:relative}
.cat-item.sub .cat-dot{width:6px;height:6px}
.cat-item.sub::before{content:"";position:absolute;left:13px;top:0;bottom:0;width:1.5px;background:var(--line)}
.cat-item.sub:last-of-type::before{bottom:50%}
.cat-item.sub.active::before{background:var(--primary)}

.filters{display:flex;flex-direction:column;gap:14px;padding:4px 6px}
.f-group .f-title{font-size:11.5px;font-weight:700;color:var(--text-soft);margin-bottom:7px;display:flex;justify-content:space-between}
.chip-row{display:flex;flex-wrap:wrap;gap:6px}
.chip{padding:5px 11px;border-radius:20px;font-size:12px;font-weight:600;
  background:var(--surface-2);color:var(--text-soft);border:1px solid var(--line);transition:.12s}
.chip:hover{border-color:var(--line-strong);color:var(--text)}
.chip.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.chip.on.good{background:var(--good);border-color:var(--good)}
.chip.on.bad{background:var(--bad);border-color:var(--bad)}
.chip.on.new{background:var(--new);border-color:var(--new)}
select.f-select{width:100%;padding:8px 10px;border-radius:9px;border:1px solid var(--line);
  background:var(--surface-2);color:var(--text);font-size:12.5px;font-weight:600}
.range-val{font-weight:700;color:var(--primary-ink)}
input[type=range]{width:100%;accent-color:var(--primary);margin-top:4px}
/* 수능최저 검색 (사이드바) */
.least-filter .lf-hint{font-size:11px;line-height:1.45;margin-bottom:8px}
.lf-radios{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.lf-radio{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:5px 10px;
  border-radius:20px;background:var(--surface-2);color:var(--text-soft);border:1px solid var(--line);cursor:pointer;user-select:none}
.lf-radio input{margin:0;accent-color:var(--primary)}
.lf-radio.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.lf-radio.on input{filter:brightness(1.8)}
.lf-clear{font-size:11px;font-weight:700;color:var(--text-mute);background:none;border:none;padding:5px 4px;text-decoration:underline;cursor:pointer}
.lf-clear.hidden{display:none}
.lf-slider{margin-top:10px}
.lf-slider.is-disabled{opacity:.45;pointer-events:none}
.lf-slider label{font-size:12px;color:var(--text-soft)}
.lf-slider label b{color:var(--primary-ink);font-size:13.5px}
.lf-scale{display:flex;justify-content:space-between;font-size:10px;color:var(--text-mute);margin-top:2px}
.side-foot{margin-top:auto;padding:14px 20px 20px;border-top:1px solid var(--line)}
.reset-btn{width:100%;padding:9px;border-radius:10px;background:var(--surface-2);
  border:1px solid var(--line);font-weight:700;font-size:12.5px;color:var(--text-soft);transition:.12s}
.reset-btn:hover{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}
.source{font-size:10.5px;color:var(--text-mute);margin-top:12px;line-height:1.5}

/* ===================== Main ===================== */
#main{flex:1;min-width:0;display:flex;flex-direction:column}
#topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:14px;
  padding:13px 26px;background:color-mix(in srgb,var(--bg) 82%,transparent);
  backdrop-filter:saturate(1.6) blur(12px);border-bottom:1px solid var(--line)}
.menu-toggle{display:none;font-size:20px;padding:4px 8px;border-radius:8px}
.search-wrap{flex:1;max-width:520px;position:relative;display:flex;align-items:center}
.search-ico{position:absolute;left:14px;font-size:13px;opacity:.6;pointer-events:none}
#search{width:100%;padding:11px 14px 11px 40px;border-radius:12px;border:1px solid var(--line);
  background:var(--surface);font-size:14.5px;font-weight:500;box-shadow:var(--shadow-sm);transition:.15s}
#search:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-soft)}
.top-actions{margin-left:auto;display:flex;gap:8px;align-items:center}
.ghost-btn{padding:9px 14px;border-radius:11px;background:var(--surface);border:1px solid var(--line);
  font-weight:700;font-size:13.5px;box-shadow:var(--shadow-sm);transition:.13s;display:flex;align-items:center;gap:7px;white-space:nowrap}
.ghost-btn:hover{border-color:var(--primary);color:var(--primary-ink)}
.badge{background:var(--primary);color:#fff;border-radius:20px;font-size:11px;font-weight:800;
  min-width:19px;height:19px;display:grid;place-items:center;padding:0 5px}
.icon-btn{width:38px;height:38px;border-radius:11px;background:var(--surface);border:1px solid var(--line);
  font-size:16px;box-shadow:var(--shadow-sm);transition:.13s}
.icon-btn:hover{border-color:var(--primary)}

#content{padding:22px 26px 60px;max-width:1500px;width:100%}

/* category header */
.cat-header{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.cat-header .ch-icon{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;
  color:#fff;font-size:20px;font-weight:800;flex:none;box-shadow:var(--shadow)}
.cat-header h2{font-size:24px;font-weight:800;letter-spacing:-.02em}
.cat-header p{font-size:13.5px;color:var(--text-mute);margin-top:2px}

/* ===================== KPIs ===================== */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:20px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:15px 16px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;transition:.15s}
.kpi:hover{box-shadow:var(--shadow);transform:translateY(-1px)}
.kpi .k-label{font-size:12.5px;font-weight:700;color:var(--text-mute);display:flex;align-items:center;gap:5px}
.kpi .k-val{font-size:29px;font-weight:800;letter-spacing:-.03em;margin-top:7px;line-height:1}
.kpi .k-sub{font-size:12px;font-weight:600;color:var(--text-soft);margin-top:7px}
.kpi .k-bar{position:absolute;left:0;top:0;bottom:0;width:4px}
.kpi.good .k-val{color:var(--good)} .kpi.good .k-bar{background:var(--good)}
.kpi.bad .k-val{color:var(--bad)} .kpi.bad .k-bar{background:var(--bad)}
.kpi.new .k-val{color:var(--new)} .kpi.new .k-bar{background:var(--new)}
.kpi.primary .k-val{color:var(--primary-ink)} .kpi.primary .k-bar{background:var(--primary)}
.kpi .k-bar{background:var(--line-strong)}

/* ===================== Panels ===================== */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:18px 20px 20px;margin-bottom:20px;box-shadow:var(--shadow-sm)}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.panel-head h2{font-size:17.5px;font-weight:800;letter-spacing:-.02em;display:flex;align-items:center;gap:8px}
.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px}
.seg button{padding:6px 12px;border-radius:8px;font-size:12px;font-weight:700;color:var(--text-soft);transition:.12s}
.seg button.on{background:var(--surface);color:var(--primary-ink);box-shadow:var(--shadow-sm)}

/* ===================== Highlights ===================== */
/* 홈 변화 인사이트 배너 */
.insight-banner.hidden{display:none}
.ib-all{padding:7px 13px;font-size:13px}
.ib-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.ib-card{text-align:left;border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;
  background:var(--surface-2);cursor:pointer;transition:.15s;display:flex;flex-direction:column;gap:8px}
.ib-card:hover{border-color:var(--primary);box-shadow:var(--shadow);transform:translateY(-2px)}
.ib-top{display:flex;align-items:center;gap:7px}
.ib-uni{font-weight:800;font-size:15px;letter-spacing:-.02em}
.ib-head{font-size:12.5px;line-height:1.5;color:var(--text-soft);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ib-tags{display:flex;flex-wrap:wrap;gap:5px}
.ib-tags .ins-tag{font-size:10.5px;padding:2px 8px}
.hl-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}
.hl-card{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;background:var(--surface-2);
  transition:.15s;cursor:pointer;position:relative;overflow:hidden}
.hl-card:hover{border-color:var(--primary);box-shadow:var(--shadow);transform:translateY(-2px)}
.hl-card .hl-top{display:flex;align-items:center;gap:7px;margin-bottom:8px;flex-wrap:wrap}
.med-badge{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:800;
  padding:3px 9px;border-radius:7px;background:#e11d48;color:#fff;white-space:nowrap;letter-spacing:-.01em;
  box-shadow:0 2px 6px rgba(225,29,72,.35)}
.semi-badge{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:800;
  padding:3px 9px;border-radius:7px;background:#1d4ed8;color:#fff;white-space:nowrap;letter-spacing:-.01em;
  box-shadow:0 2px 6px rgba(29,78,216,.35)}
.semi-badge.sm{padding:1px 5px;font-size:10px;margin-left:4px;box-shadow:none;vertical-align:middle}
.hl-card.is-medical{border-color:#f4b9c6}
[data-theme="dark"] .hl-card.is-medical{border-color:#5a2330}
.hl-card.is-medical::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#e11d48}
.hl-uni{font-size:12px;font-weight:700;color:var(--text-soft)}
.hl-uni{font-size:13px;font-weight:700;color:var(--text-soft)}
.hl-dept{font-size:15.5px;font-weight:800;letter-spacing:-.02em;margin-bottom:3px;line-height:1.3}
.hl-jh{font-size:12.5px;font-weight:600;color:var(--hl-jh);margin-bottom:10px}
.hl-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.hl-impact{font-size:11.5px;line-height:1.55;color:var(--text-soft);border-top:1px dashed var(--line-strong);padding-top:8px}
.hl-impact .imp-line{display:flex;gap:6px;align-items:flex-start;margin-top:3px}
.tag{font-size:10.5px;font-weight:800;padding:3px 8px;border-radius:7px;white-space:nowrap;letter-spacing:-.01em}
.tag.new{background:var(--new-soft);color:var(--new)}
.tag.up{background:var(--good-soft);color:var(--good)}
.tag.down{background:var(--bad-soft);color:var(--bad)}
.tag.choejeo{background:var(--primary-soft);color:var(--primary-ink)}
.tag.neutral{background:var(--neutral-soft);color:var(--neutral)}
.tag.warn{background:#fbf0d6;color:var(--warn)}
.dot-good{color:var(--good)} .dot-bad{color:var(--bad)} .dot-new{color:var(--new)}

/* ===================== Charts ===================== */
.chart-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:18px}
.chart-box{min-width:0}
.chart-title{font-size:12.5px;font-weight:700;color:var(--text-soft);margin-bottom:10px}
.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:7px;font-size:12px}
.bar-row .bl{width:120px;flex:none;font-weight:700;color:var(--text-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}
.bar-row .bl:hover{color:var(--primary-ink);cursor:pointer}
.bar-track{flex:1;height:22px;background:var(--surface-2);border-radius:7px;position:relative;overflow:hidden;display:flex;align-items:center}
.bar-fill{height:100%;border-radius:7px;display:flex;align-items:center;padding-left:8px;flex:none;
  color:#fff;font-size:11px;font-weight:800;transition:width .5s cubic-bezier(.2,.8,.2,1)}
.bar-val-out{flex:none;margin-left:7px;font-size:11px;font-weight:800;color:var(--text-soft)}
.bar-row .bn{width:54px;flex:none;font-size:11px;font-weight:700;color:var(--text-mute)}
svg .axis{stroke:var(--line);stroke-width:1}
svg text{fill:var(--text-soft);font-family:var(--font)}
.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;font-size:11px;font-weight:600;color:var(--text-soft)}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{width:10px;height:3px;border-radius:2px;display:inline-block}

/* ===================== Table ===================== */
.table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-sm)}
#grid{width:100%;border-collapse:collapse;font-size:13.5px;min-width:920px}
#grid thead th{position:sticky;top:0;background:var(--surface-2);z-index:2;
  text-align:left;padding:12px 13px;font-size:12px;font-weight:800;color:var(--text-soft);
  border-bottom:1px solid var(--line-strong);white-space:nowrap;cursor:pointer;user-select:none}
#grid thead th:hover{color:var(--primary-ink)}
#grid thead th .sort-ar{opacity:.4;font-size:9px;margin-left:3px}
#grid thead th.sorted .sort-ar{opacity:1;color:var(--primary)}
#grid tbody td{padding:11px 13px;border-bottom:1px solid var(--line);vertical-align:middle}
#grid tbody tr{transition:.1s}
#grid tbody tr:hover{background:var(--surface-2)}
#grid tbody tr:last-child td{border-bottom:none}
.td-uni{font-weight:700;color:var(--text-soft);white-space:nowrap}
.td-dept{font-weight:800;letter-spacing:-.01em}
.dept-btn{display:block;text-align:left;font:inherit;font-weight:800;letter-spacing:-.01em;color:inherit;padding:0;cursor:pointer;line-height:1.35}
.dept-btn:hover{color:var(--primary-ink)}
.jh-pill{font-size:10px;font-weight:800;padding:2px 7px;border-radius:6px;background:var(--surface-2);
  border:1px solid var(--line);color:var(--text-soft);white-space:nowrap}
/* 대학별고사 시기 배지 — 수시 납치 판단용.
   '수능 전'은 경고색(회피 불가), '수능 후'는 안전색(불참으로 회피 가능). */
.exam-tag{display:inline-block;font-size:10.5px;font-weight:800;padding:1px 6px;border-radius:6px;
  white-space:nowrap;margin-left:4px}
.exam-tag.pre{background:var(--bad-soft);color:var(--bad)}
.exam-tag.post{background:var(--good-soft);color:var(--good)}
.exam-row{margin-top:8px;padding-top:8px;border-top:1px solid var(--line);flex-wrap:wrap;gap:8px}
.exam-row .cf-title{font-size:12.5px}

/* 권역 구분자 — 같은 대학·학과·전형이 권역별로 쪼개진 경우에만 붙는다(app.js의 r.qual). */
.qual-tag{display:inline-block;font-size:10.5px;font-weight:800;padding:1px 6px;border-radius:6px;
  background:var(--primary-soft);color:var(--primary-ink);white-space:nowrap;margin-top:3px}
.enroll-cell{font-weight:800;white-space:nowrap}
.delta{font-size:10.5px;font-weight:800;padding:1px 6px;border-radius:6px;margin-left:4px}
.delta.up{background:var(--good-soft);color:var(--good)}
.delta.down{background:var(--bad-soft);color:var(--bad)}
.delta.new{background:var(--new-soft);color:var(--new)}
.delta.tighten,.tag.tighten{background:var(--bad-soft);color:var(--bad)}
.delta.ease,.tag.ease{background:rgba(59,130,246,.14);color:#3b82f6}
.delta.neu{background:var(--neutral-soft);color:var(--neutral)}
.grade-val{font-weight:800;font-variant-numeric:tabular-nums}
.spark{display:inline-block;vertical-align:middle}
.impact-chip{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:800;
  padding:3px 8px;border-radius:20px;white-space:nowrap}
.impact-chip.good{background:var(--good-soft);color:var(--good)}
.impact-chip.bad{background:var(--bad-soft);color:var(--bad)}
.impact-chip.neu{background:var(--neutral-soft);color:var(--neutral)}
.impact-chip.new{background:var(--new-soft);color:var(--new)}
.row-add{width:26px;height:26px;border-radius:8px;border:1px solid var(--line);background:var(--surface);
  font-size:14px;font-weight:800;color:var(--text-mute);line-height:1;transition:.12s}
.row-add:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}
.row-add.in{background:var(--primary);color:#fff;border-color:var(--primary)}
.no-data{color:var(--text-mute);font-size:11px}

.pager{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:16px;flex-wrap:wrap}
.pager button{min-width:34px;height:34px;padding:0 9px;border-radius:9px;background:var(--surface);
  border:1px solid var(--line);font-weight:700;font-size:12.5px;transition:.12s}
.pager button:hover:not(:disabled){border-color:var(--primary);color:var(--primary-ink)}
.pager button.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.pager button:disabled{opacity:.4;cursor:default}
.pager .pg-info{margin:0 10px;font-size:12px;color:var(--text-mute);font-weight:600}

.foot-note{font-size:11px;color:var(--text-mute);line-height:1.7;padding:8px 4px;text-align:center}

/* ===================== Modal ===================== */
.modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:24px;
  background:rgba(15,22,45,.5);backdrop-filter:blur(4px);animation:fade .18s}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal-card{background:var(--surface);border-radius:20px;box-shadow:var(--shadow-lg);
  max-width:720px;width:100%;max-height:88vh;overflow-y:auto;animation:pop .2s cubic-bezier(.2,.9,.3,1.2)}
@keyframes pop{from{transform:scale(.96) translateY(8px);opacity:0}to{transform:none;opacity:1}}
.modal-head{padding:22px 24px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface);z-index:2}
.modal-head .mh-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.modal-head h3{font-size:22px;font-weight:800;letter-spacing:-.02em}
.modal-head .mh-uni{font-size:14px;font-weight:700;color:var(--primary-ink);margin-bottom:3px}
.modal-close{font-size:22px;color:var(--text-mute);width:34px;height:34px;border-radius:9px;flex:none}
.modal-close:hover{background:var(--surface-2);color:var(--text)}
.modal-body{padding:18px 24px 26px}
.msec{margin-bottom:18px}
.msec h4{font-size:12px;font-weight:800;color:var(--text-mute);text-transform:uppercase;letter-spacing:.05em;margin-bottom:9px}
.kv{display:grid;grid-template-columns:100px 1fr;gap:7px 12px;font-size:14px}
.kv dt{font-weight:700;color:var(--text-soft)}
.kv dd{font-weight:600}
.trend-table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:4px}
.trend-table th,.trend-table td{padding:8px 10px;text-align:center;border:1px solid var(--line)}
.trend-table th{background:var(--surface-2);font-weight:800;color:var(--text-soft)}
.trend-table td.metric{text-align:left;font-weight:700;color:var(--text-soft);background:var(--surface-2)}
.impact-box{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:14px}
.impact-box .imp-line{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;margin-bottom:7px;line-height:1.5}
.imp-ico{font-size:13px;line-height:1.3;flex:none}
.change-box{background:var(--new-soft);border:1px solid #f0d9b8;border-radius:12px;padding:12px 14px;
  font-size:13px;font-weight:600;white-space:pre-line;color:#7a4d09}
[data-theme=dark] .change-box{color:#f0c27a;border-color:#3a2a12}

/* ===================== Compare drawer ===================== */
.drawer{position:fixed;inset:0;z-index:75;background:rgba(15,22,45,.45);backdrop-filter:blur(3px);
  display:flex;justify-content:flex-end;animation:fade .18s}
.drawer-inner{background:var(--surface);width:min(960px,94vw);height:100%;overflow-y:auto;
  box-shadow:var(--shadow-lg);animation:slide .22s cubic-bezier(.2,.9,.3,1)}
@keyframes slide{from{transform:translateX(40px);opacity:.5}to{transform:none;opacity:1}}
.drawer-head{position:sticky;top:0;background:var(--surface);padding:20px 24px;border-bottom:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;z-index:2}
.drawer-head h3{font-size:18px;font-weight:800}
.cmp-table{width:100%;border-collapse:collapse;font-size:12.5px}
.cmp-table th,.cmp-table td{padding:14px 16px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.cmp-table thead th{position:sticky;top:69px;background:var(--surface-2);font-weight:800;z-index:1}
.cmp-table td.rowlab{font-weight:800;color:var(--text-soft);background:var(--surface-2);white-space:nowrap}
.cmp-rm{font-size:11px;color:var(--bad);font-weight:700;margin-top:4px}
.empty-state{padding:60px 24px;text-align:center;color:var(--text-mute)}
.empty-state .es-ico{font-size:38px;margin-bottom:10px}

/* ===================== 유불리 / YoY ===================== */
.panel.hero{background:linear-gradient(180deg,var(--primary-soft),var(--surface) 60%);border-color:var(--line-strong)}
.hero-desc{font-size:12px;color:var(--text-soft);margin:-8px 0 12px;line-height:1.6}
.hero-desc b{color:var(--primary-ink)}
.verdict-legend{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:16px}
.verdict-legend summary{font-size:13px;font-weight:800;cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;user-select:none}
.verdict-legend summary::-webkit-details-marker{display:none}
.verdict-legend summary::after{content:"▾";margin-left:auto;color:var(--text-mute);font-size:11px;transition:transform .15s}
.verdict-legend:not([open]) summary::after{transform:rotate(-90deg)}
.verdict-legend summary:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:6px}
.vl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px;margin:11px 0 8px}
.vl-item{border:1px solid var(--line);border-left-width:4px;border-radius:9px;padding:9px 11px;font-size:12px;line-height:1.5;background:var(--surface-2)}
.vl-item b{display:block;font-size:12px;font-weight:800;margin-bottom:3px}
.vl-item span{color:var(--text-soft);font-weight:600}
.vl-item.good{border-left-color:var(--good)} .vl-item.good b{color:var(--good)}
.vl-item.bad{border-left-color:var(--bad)} .vl-item.bad b{color:var(--bad)}
.vl-item.warn{border-left-color:var(--new)} .vl-item.warn b{color:var(--new)}
.vl-note{font-size:11px;color:var(--text-mute);line-height:1.6;margin-top:4px}
.vl-note b{color:var(--text-soft)}
.yoy-row{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px}
.yoy-row.big{gap:8px}
.yoy{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:800;padding:3px 8px;border-radius:7px;
  background:var(--neutral-soft);color:var(--neutral)}
.yoy i{font-style:normal;font-weight:700;opacity:.7;margin-right:1px;font-size:10px}
.yoy b{opacity:.55;font-weight:600;margin:0 1px}
.yoy.good{background:var(--good-soft);color:var(--good)}
.yoy.bad{background:var(--bad-soft);color:var(--bad)}
.cell-top{display:flex;align-items:center;gap:5px;margin-bottom:2px}
.ybadge{font-size:10px;font-weight:800;padding:1px 5px;border-radius:6px;white-space:nowrap;cursor:help}
.ybadge.good{background:var(--good-soft);color:var(--good)}
.ybadge.bad{background:var(--bad-soft);color:var(--bad)}
.row-btns{display:flex;gap:5px;align-items:center}
.row-fav{width:26px;height:26px;border-radius:8px;border:1px solid var(--line);background:var(--surface);
  font-size:14px;color:var(--text-mute);line-height:1;transition:.12s}
.row-fav:hover{border-color:var(--new);color:var(--new);background:var(--new-soft)}
.row-fav.in{background:var(--new);color:#fff;border-color:var(--new)}
.row-fav.in.hope{background:var(--primary);border-color:var(--primary)}
.row-fav.in.reach{background:var(--new);border-color:var(--new)}
/* add-time bucket chooser popover */
.fav-menu{position:fixed;z-index:95;background:var(--surface);border:1px solid var(--line-strong);border-radius:12px;
  box-shadow:var(--shadow-lg);padding:6px;min-width:184px;display:flex;flex-direction:column;gap:2px;animation:pop .14s}
.fav-menu .fm-title{font-size:10.5px;font-weight:800;color:var(--text-mute);padding:5px 8px 4px;letter-spacing:.02em}
.fav-menu button{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;
  font-size:13px;font-weight:700;color:var(--text);text-align:left;transition:.1s}
.fav-menu button:hover{background:var(--primary-soft)}
.fav-menu button.reach:hover{background:var(--new-soft)}
.fav-menu button.on{background:var(--primary-soft);color:var(--primary-ink)}
.fav-menu button.on.reach{background:var(--new-soft);color:var(--new)}
.fav-menu .fm-n{font-size:10.5px;font-weight:700;color:var(--text-mute)}
.fav-menu .fm-rm{color:var(--bad);border-top:1px solid var(--line);border-radius:0;margin-top:2px}
.fav-menu .fm-rm:hover{background:var(--bad-soft)}
.fav-pick.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary-ink)}
.fav-pick.reach.on{background:var(--new-soft);border-color:var(--new);color:var(--new)}
.fav-ctrl .fav-sw:hover{border-color:var(--new);color:var(--new);background:var(--new-soft)}
.fav-btn.on,.fav-btn:hover{border-color:var(--new);color:var(--new)}
.fav-max{font-size:11px;color:var(--text-mute);font-weight:700;margin-left:-3px}
/* verdict in modal */
.hero-sec{background:linear-gradient(180deg,var(--primary-soft),transparent);border:1px solid var(--line-strong);border-radius:14px;padding:14px 16px}
.verdict-head{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.verdict-big{font-size:18px;font-weight:900;padding:6px 18px;border-radius:12px;letter-spacing:-.02em}
.verdict-big.good{background:var(--good);color:#fff}
.verdict-big.bad{background:var(--bad);color:#fff}
.verdict-big.new{background:var(--new);color:#fff}
.verdict-big.neu{background:var(--neutral);color:#fff}
.yoy-table td.ycell{font-weight:800}
.yoy-table td.ycell.good{color:var(--good)}
.yoy-table td.ycell.bad{color:var(--bad)}
.yoy-table td.ycell.neu{color:var(--text-mute)}
.modal-actions{display:flex;gap:10px}
.modal-actions .ghost-btn{flex:1;justify-content:center}
.modal-actions .ghost-btn.on{background:var(--new-soft);border-color:var(--new);color:var(--new)}
/* compare ycell */
.ycell{display:inline-block;font-size:10.5px;font-weight:800;padding:1px 6px;border-radius:6px}
.cmp-table .ycell.good{background:var(--good-soft);color:var(--good)}
.cmp-table .ycell.bad{background:var(--bad-soft);color:var(--bad)}

/* ===================== 지원카드 drawer ===================== */
.fav-wrap{padding:16px 20px 40px}
.fav-group-label{font-size:13px;font-weight:800;margin:16px 0 10px;padding-bottom:7px;border-bottom:2px solid var(--line);display:flex;align-items:center;gap:6px}
.fav-group-label.hope{color:var(--primary-ink)}
.fav-group-label.reach{color:var(--new)}
.fav-group-label:first-child{margin-top:0}
.fav-slot{display:flex;align-items:stretch;gap:12px;padding:12px;border:1px solid var(--line);border-radius:12px;margin-bottom:9px;background:var(--surface);transition:.13s}
.fav-slot[data-open]{cursor:pointer}
.fav-slot[data-open]:hover{border-color:var(--primary);box-shadow:var(--shadow)}
.fav-slot.empty{background:var(--surface-2);border-style:dashed;align-items:center;color:var(--text-mute)}
.rank-badge{width:34px;height:34px;flex:none;border-radius:10px;display:grid;place-items:center;font-weight:900;font-size:13px;
  background:var(--neutral-soft);color:var(--text-mute);align-self:center}
.rank-badge.hope{background:var(--primary);color:#fff}
.rank-badge.reach{background:var(--new);color:#fff;font-size:11px}
.fav-empty-t{font-size:12.5px;font-weight:600}
.fav-body{flex:1;min-width:0}
.fav-uni{font-size:11.5px;font-weight:700;color:var(--text-soft)}
.fav-dept{font-size:14.5px;font-weight:800;letter-spacing:-.02em;margin:1px 0 5px}
.fav-meta{font-size:11.5px;color:var(--text-soft);display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.fav-ctrl{display:flex;flex-direction:column;gap:4px;align-self:center}
.fav-ctrl button{width:28px;height:24px;border-radius:7px;border:1px solid var(--line);background:var(--surface-2);font-size:11px;font-weight:800;color:var(--text-soft);transition:.12s}
.fav-ctrl button:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}
.fav-ctrl button:disabled{opacity:.3;cursor:default}
.fav-ctrl .fav-rm:hover{border-color:var(--bad);color:var(--bad);background:var(--bad-soft)}

/* ===================== 변화 인사이트 ===================== */
.insight-btn:hover,.insight-btn.on{border-color:var(--primary);color:var(--primary-ink)}
.insight-view{position:fixed;inset:0;z-index:85;background:rgba(10,15,30,.55);backdrop-filter:blur(5px);
  display:grid;place-items:center;padding:24px;animation:fade .18s}
.insight-shell{display:flex;width:min(1140px,96vw);height:min(88vh,920px);background:var(--surface);
  border-radius:20px;overflow:hidden;box-shadow:var(--shadow-lg);animation:pop .2s cubic-bezier(.2,.9,.3,1.1)}
.insight-rail{width:236px;flex:none;border-right:1px solid var(--line);background:var(--surface-2);overflow-y:auto;padding:8px}
.ins-rail-head{padding:14px 11px 12px}
.ins-rail-head h3{font-size:15.5px;font-weight:800}
.ins-rail-item{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;text-align:left;
  padding:10px 11px;border-radius:10px;font-size:13.5px;font-weight:700;color:var(--text-soft);transition:.12s;margin-bottom:2px}
.ins-rail-item .irl-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ins-rail-item:hover:not([disabled]){background:var(--surface);color:var(--text)}
.ins-rail-item.active{background:var(--primary-soft);color:var(--primary-ink)}
.ins-rail-item.soon{opacity:.55;cursor:default}
.ins-tier{font-size:10px;font-weight:800;padding:1px 7px;border-radius:6px;background:var(--primary);color:#fff;flex:none}
.ins-soon{font-size:10.5px;font-weight:700;color:var(--text-mute);flex:none}
.ins-rail-group{padding:12px 11px 5px;font-size:12px;font-weight:800;color:var(--text);letter-spacing:-.01em}
.ins-rail-group .muted{font-weight:600;font-size:10.5px}
.insight-main{flex:1;min-width:0;display:flex;flex-direction:column}
.ins-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 24px 15px;border-bottom:1px solid var(--line)}
.ins-uni{font-size:13px;font-weight:800;color:var(--primary-ink);margin-bottom:6px;display:flex;align-items:center;gap:7px}
.ins-head h2{font-size:20px;font-weight:800;letter-spacing:-.02em;line-height:1.32}
.ins-scroll{flex:1;overflow-y:auto;padding:18px 24px 30px}
.ins-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.ins-tag{font-size:11.5px;font-weight:800;padding:4px 10px;border-radius:20px;background:var(--surface-2);border:1px solid var(--line);color:var(--text-soft)}
.ins-oneline{background:linear-gradient(180deg,var(--primary-soft),transparent);border:1px solid var(--line-strong);
  border-radius:12px;padding:14px 16px;line-height:1.6;color:var(--text);margin-bottom:20px}
.ins-oneline-head{font-size:15.5px;font-weight:800;letter-spacing:-.01em;color:var(--text)}
.ins-oneline-bullets{margin:10px 0 0;padding-left:22px;list-style:none}
.ins-oneline-bullets li{position:relative;font-size:13.5px;font-weight:500;color:var(--text-soft);margin-bottom:5px;padding-left:2px}
.ins-oneline-bullets li::before{content:"▸";position:absolute;left:-16px;color:var(--primary);font-weight:800}
.ins-vline b{color:var(--text);font-weight:800}
.ins-section{margin-bottom:22px}
.ins-section h4{font-size:15.5px;font-weight:800;margin-bottom:11px;letter-spacing:-.01em}
.ins-tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}
.ins-table{width:100%;border-collapse:collapse;font-size:13px}
.ins-table th{background:var(--surface-2);text-align:left;padding:9px 12px;font-size:11.5px;font-weight:800;color:var(--text-soft);border-bottom:1px solid var(--line)}
.ins-table td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.ins-table tr:last-child td{border-bottom:none}
.ins-table .il{font-weight:700;color:var(--text-soft)}
.ins-table .ifrom{color:var(--text-mute);white-space:nowrap}
.ins-table .ia{text-align:center;font-weight:800;color:var(--text-mute);width:26px}
.ins-table .it b{font-weight:800}
.ins-table .it .inote{display:block;font-size:11px;font-weight:700;margin-top:3px;color:var(--text-mute)}
.ins-table .it.up b,.ins-table .it.good b{color:var(--good)} .ins-table .it.up .inote,.ins-table .it.good .inote{color:var(--good)} .ins-table .ia.up,.ins-table .ia.good{color:var(--good)}
.ins-table .it.down b,.ins-table .it.bad b{color:var(--bad)} .ins-table .it.down .inote,.ins-table .it.bad .inote{color:var(--bad)} .ins-table .ia.down,.ins-table .ia.bad{color:var(--bad)}
.ins-bullets{margin:2px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:9px}
.ins-bullets li{position:relative;padding-left:18px;font-size:13.5px;line-height:1.62;color:var(--text)}
.ins-bullets li::before{content:"▸";position:absolute;left:0;top:0;color:var(--primary);font-weight:800}
.ins-caption{font-size:12px;color:var(--text-mute);margin-top:9px;line-height:1.6}
.ins-verdict{display:flex;flex-direction:column;gap:9px}
.ins-vline{display:flex;gap:9px;align-items:flex-start;font-size:13.5px;line-height:1.55;
  background:var(--surface-2);border:1px solid var(--line);border-radius:11px;padding:12px 14px}
.ins-vline .iv-ico{flex:none}
.ins-foot{font-size:11.5px;color:var(--text-mute);line-height:1.75;border-top:1px solid var(--line);padding-top:14px;margin-top:10px}
.ins-foot a{color:var(--primary-ink);font-weight:700;text-decoration:none}
.ins-foot a:hover{text-decoration:underline}
@media(max-width:740px){
  .insight-shell{flex-direction:column;height:92vh;width:96vw}
  .insight-rail{width:auto;display:flex;gap:6px;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line);padding:8px}
  .ins-rail-head{display:none}
  .ins-rail-item{flex:none;width:auto;margin-bottom:0}
  .ins-rail-item.soon{display:none}
}

/* ===================== Responsive ===================== */
@media(max-width:1080px){.chart-grid{grid-template-columns:1fr}}
@media(max-width:880px){
  #sidebar{position:fixed;left:0;top:0;transform:translateX(-100%);transition:.25s;box-shadow:var(--shadow-lg)}
  #sidebar.open{transform:none}
  .menu-toggle{display:block}
  #content{padding:16px 14px 50px}
  .cat-header h2{font-size:20px}
  /* 터치 타깃: 모바일·태블릿에서 주요 액션 버튼 최소 44px 확보 */
  .menu-toggle,.icon-btn,.ghost-btn{min-width:44px;min-height:44px}
}
@media(max-width:620px){
  .top-actions .btn-label,.fav-max{display:none}
  .ghost-btn{padding:8px 11px;gap:5px}
  #topbar{gap:9px;padding:11px 14px;flex-wrap:wrap}
  /* 44px 버튼과 한 줄에 두면 검색창이 눌리므로(≈56px) 아랫줄 전체 폭으로 내린다 */
  .search-wrap{order:3;flex-basis:100%;max-width:none}
}
.scrim{position:fixed;inset:0;background:rgba(10,15,30,.4);z-index:35;display:none}
.scrim.show{display:block}

/* 입결 컷 등급 필터 */
.cut-filter{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:11px 14px;margin-bottom:16px}
.cf-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:9px}
.cf-title{font-size:13.5px;color:var(--text-soft)}
.cf-title b{color:var(--text);font-weight:800}
.cf-count{margin-left:auto;font-size:12px;font-weight:800;padding:3px 9px;border-radius:20px;background:var(--primary-soft);color:var(--primary-ink)}
.cf-hint{margin-left:auto;font-size:12px}
.cf-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.cf-radios{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cf-radio{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;padding:6px 12px;border-radius:20px;background:var(--surface-2);border:1px solid var(--line);color:var(--text-soft);cursor:pointer;user-select:none}
.cf-radio input{margin:0;accent-color:var(--primary)}
.cf-radio.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.cf-radio.on input{filter:brightness(1.8)}
.cf-clear{font-size:12px;font-weight:700;padding:5px 10px;border-radius:20px;border:1px solid var(--line);background:transparent;color:var(--text-soft);cursor:pointer}
.cf-clear.hidden{display:none}
.cf-slider{display:flex;align-items:center;gap:10px;flex:1;min-width:220px}
.cf-slider label{font-size:13px;color:var(--text-soft);white-space:nowrap}
.cf-slider label b{color:var(--text);font-weight:800}
.cf-slider input[type=range]{flex:1;accent-color:var(--primary)}
.cf-slider.is-disabled{opacity:.5}

/* ============ PDF 저장 (인쇄) ============ */
#printArea{display:none}
@media print{
  @page{size:A4 portrait;margin:12mm}
  /* 화면 UI 전부 숨기고 인쇄 문서만 노출 */
  body.printing #app,body.printing #modal,body.printing #favDrawer,body.printing #compareDrawer,
  body.printing #insightView,body.printing .skip-link{display:none!important}
  body.printing #printArea{display:block!important}
  body.printing{background:#fff!important}
  /* 브라우저 인쇄 설정이 '여백 없음'이어도 문서가 스스로 여백을 갖도록 padding으로 보장.
     @page margin은 사용자의 대화상자 저장값에 밀릴 수 있다(실제 발생). */
  #printArea{color:#111;font-size:12px;line-height:1.5;padding:12mm 12mm 10mm;box-sizing:border-box}
  .pr-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #111;padding-bottom:8px;margin-bottom:14px}
  .pr-title{font-size:20px;font-weight:800}
  .pr-sub{font-size:12px;color:#555;margin-top:2px}
  .pr-brand{text-align:right;font-size:13px;font-weight:800}
  .pr-date{font-size:10px;color:#666;font-weight:500;margin-top:2px}
  .pr-h2{font-size:14px;font-weight:800;margin:16px 0 6px;padding-left:6px;border-left:4px solid #111}
  .pr-mut{color:#666;font-size:10px}
  .pr-table,.pr-cmp{width:100%;border-collapse:collapse;margin-bottom:8px}
  .pr-table th,.pr-table td,.pr-cmp th,.pr-cmp td{border:1px solid #bbb;padding:6px 8px;vertical-align:top;text-align:left}
  .pr-table thead th,.pr-cmp thead th{background:#f0f0f0;font-size:10.5px;font-weight:800;text-align:center}
  .pr-table tr,.pr-cmp tr{break-inside:avoid}
  .pr-c{text-align:center}
  .pr-rank{text-align:center;font-weight:800;width:34px}
  .pr-rowlab{background:#f7f7f7;font-weight:700;width:110px}
  .pr-vd{font-weight:800}
  .pr-vd.good{color:#1a7f37}.pr-vd.bad{color:#c1121f}.pr-vd.neu,.pr-vd.new{color:#555}
  .pr-foot{margin-top:16px;padding-top:8px;border-top:1px solid #ccc;font-size:9px;color:#888;text-align:center}
}

/* 대학 단위 전형별 학과 요약(검색이 한 대학으로 좁혀졌을 때) */
.uni-panel{padding:14px 16px}
.uni-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-top:8px}
.uni-col h3{font-size:13px;margin:0 0 6px;border-bottom:1px solid var(--border);padding-bottom:4px}
.uni-col h3.uni-type{cursor:pointer;border-radius:8px;padding:5px 8px;border:1px solid var(--line)}
.uni-col h3.uni-type:hover{background:var(--surface-2)}
.uni-col h3.uni-type.on{background:var(--primary);color:#fff}
.uni-col h3.uni-type.on .muted{color:rgba(255,255,255,.8)}
.tbl-region{max-width:130px;margin-right:8px}
.uni-jh{margin:4px 0;font-size:12.5px}
.uni-jh summary{cursor:pointer;padding:3px 2px;border-radius:6px}
.uni-jh summary:hover{background:var(--surface-2)}
.uni-jh ul{margin:4px 0 6px 16px;padding:0;list-style:disc;color:var(--text)}
.uni-jh li{margin:2px 0}

/* ---------- 맞춤 추천(BETA) ---------- */
.beta-badge{background:var(--warn,#f59e0b);color:#fff;font-size:9.5px;letter-spacing:.02em}
.adv-body{padding:4px 2px 30px}
.adv-form{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px}
.adv-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0}
.adv-label{font-weight:800;font-size:12.5px;min-width:74px;color:var(--text-soft)}
.adv-input{width:110px;padding:7px 10px;border-radius:8px;border:1px solid var(--border);
  background:var(--surface);color:var(--text);font-size:13px;font-weight:700}
.adv-note{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;
  padding:9px 12px;font-size:12px;color:var(--text-soft);margin-bottom:12px;line-height:1.6}
.adv-band{margin-bottom:16px}
.adv-band h4{display:flex;align-items:center;gap:8px;font-size:13.5px;margin:0 0 8px}
.adv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.adv-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;
  padding:11px 13px;cursor:pointer;transition:border-color .12s,transform .12s}
.adv-card:hover{border-color:var(--primary);transform:translateY(-1px)}
.adv-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12.5px}
.adv-dept{font-weight:800;font-size:13.5px;margin:3px 0 2px}
.adv-grade{margin-top:6px;font-size:12.5px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.adv-std{font-size:10px;font-weight:800;padding:1px 6px;border-radius:6px;
  background:var(--surface-2);color:var(--text-soft)}
.adv-diff{font-size:11px;font-weight:800;padding:1px 7px;border-radius:6px}
.adv-diff.good{background:var(--good-soft);color:var(--good)}
.adv-diff.bad{background:var(--bad-soft);color:var(--bad)}
