@charset "UTF-8";

/* ===== 안산대 점수산출 — Modern Tailwind 톤 (Slate + Cyan) ===== */
/* 기존 클래스명/구조 그대로 유지, 스타일만 통일 */

:root {
  --slate-50:#f8fafc; --slate-100:#f1f5f9; --slate-200:#e2e8f0; --slate-300:#cbd5e1;
  --slate-400:#94a3b8; --slate-500:#64748b; --slate-600:#475569; --slate-700:#334155;
  --slate-800:#1e293b; --slate-900:#0f172a;
  --cyan-50:#ecfeff; --cyan-100:#cffafe; --cyan-200:#a5f3fc; --cyan-300:#67e8f9;
  --cyan-400:#22d3ee; --cyan-500:#06b6d4; --cyan-600:#0891b2; --cyan-700:#0e7490;
  --cyan-800:#155e75;
}

/* ── 정시 페이지 테마 (수시 cyan / 정시 emerald) — body.is-jungsi 가 cyan 변수를 emerald 값으로 덮어씀 ── */
body.is-jungsi {
  --cyan-50:  #ecfdf5;
  --cyan-100: #d1fae5;
  --cyan-200: #a7f3d0;
  --cyan-300: #6ee7b7;
  --cyan-400: #34d399;
  --cyan-500: #10b981;
  --cyan-600: #059669;
  --cyan-700: #047857;
  --cyan-800: #065f46;
}

html {
  background: #fff !important;
}
body {
  background: #fff !important;
  overflow-x: hidden;
  font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  color: var(--slate-800);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
/* 메인 콘텐츠 영역이 남은 공간을 차지 → 콘텐츠 부족 시 푸터가 viewport 하단에 고정 */
body > .container.py-4 { flex: 1 0 auto; }
body > footer { flex-shrink: 0; margin-top: auto; }

/* ── 네비게이션 (sticky 헤더) ── */
/* 우측 하단 상단이동 버튼 */
.scroll-top-btn {
  position: fixed;
  right: 24px;
  bottom: 24px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: none;
  background: var(--cyan-600);
  color: #fff;
  font-size: 1.2rem;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(15,23,42,.18);
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity .2s, transform .2s, visibility .2s, background .15s;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
}
.scroll-top-btn.show {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.scroll-top-btn:hover { background: var(--cyan-700); }
@media (max-width: 600px) {
  .scroll-top-btn { right: 16px; bottom: 16px; width: 40px; height: 40px; }
}

.au-navbar {
  background: #fafafa;
  padding: 0.85rem 0;
  border-bottom: 1px solid var(--slate-200);
  box-shadow: 0 4px 14px rgba(15,23,42,.08), 0 2px 4px rgba(15,23,42,.04);
  position: sticky;
  top: 0;
  z-index: 100;
}
.au-navbar .navbar-brand { color: var(--slate-900); font-weight: 700; font-size: 1.05rem; letter-spacing: -0.02em; }
.au-navbar .navbar-brand:hover { color: var(--slate-900); }
.au-navbar .navbar-brand small { color: var(--slate-400); font-weight: 400; font-size: 0.78rem; margin-left: 0.5rem; }
.au-navbar .nav-link { color: var(--slate-500); font-weight: 600; font-size: 0.86rem; padding: 0.4rem 0.85rem; border-radius: 0.5rem; transition: .15s; }
.au-navbar .nav-link:hover { color: var(--slate-900); background: var(--slate-100); }
.au-navbar .nav-link.active { color: #fff; background: var(--cyan-600); box-shadow: 0 2px 6px rgba(8,145,178,.28); }
.au-navbar .nav-link.btn-back-input {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 0.32rem 0.85rem;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--slate-900);
  background: var(--cyan-50);
  border: 1px solid var(--cyan-200);
  border-radius: 999px;
  box-shadow: 0 1px 4px rgba(15,23,42,.06);
  transition: all .15s ease;
}
.au-navbar .nav-link.btn-back-input:hover {
  color: var(--slate-900);
  background: var(--cyan-100);
  border-color: var(--cyan-400);
  box-shadow: 0 4px 12px rgba(8,145,178,.22);
  transform: translateY(-1px);
}
.au-navbar .nav-link.btn-back-input i {
  font-size: 0.95rem;
  color: var(--cyan-700);
}
.au-navbar .nav-link.btn-back-input .btn-back-label-short { display: none; }
.au-navbar .navbar-brand .brand-year-short { display: none; }
/* 콘텐츠 영역의 「성적입력으로 돌아가기」 버튼 — 모바일 축약 토글용 기본값 */
.btn-back-content .btn-back-label-short { display: none; }
@media (max-width: 600px) {
  .au-navbar .nav-link.btn-back-input .btn-back-label-full { display: none; }
  .au-navbar .nav-link.btn-back-input .btn-back-label-short { display: inline; }
  /* 학년도 라벨 — 600px 이하에서는 「2027」 단독으로 축약 (헤더 한 줄 유지용) */
  .au-navbar .navbar-brand .brand-year-full { display: none; }
  .au-navbar .navbar-brand .brand-year-short { display: inline; }
  .au-navbar .navbar-brand { font-size: 0.85rem !important; }
  /* 콘텐츠 영역 「성적입력으로 돌아가기」 — 모바일 축약 + 컴팩트 */
  .btn-back-content { padding: 0.28rem 0.65rem !important; font-size: 0.74rem !important; gap: 4px !important; border-radius: 0.4rem !important; }
  .btn-back-content i { font-size: 0.78rem !important; }
  .btn-back-content .btn-back-label-full { display: none; }
  .btn-back-content .btn-back-label-short { display: inline; }
  /* 입학전형 필터 패널 — 모바일에서 그룹 간격·타이틀·버튼을 컴팩트하게 */
  .ansan-side-inner { padding: 0.55rem 0.7rem !important; }
  .ansan-side-group { margin-bottom: 0.5rem !important; }
  .ansan-side-title { margin-bottom: 0.3rem !important; font-size: 0.7rem !important; gap: 4px !important; }
  .ansan-side-title i { font-size: 0.82rem !important; }
  .ansan-mode-tabs { gap: 4px !important; }
  .ansan-mode-tabs a { padding: 0.32rem 0.7rem !important; font-size: 0.76rem !important; }
  .ansan-view-switch { gap: 4px !important; }
  .ansan-view-switch button { padding: 0.32rem 0.65rem !important; font-size: 0.74rem !important; }
  .ansan-view-switch button i { font-size: 0.82rem !important; }
  .ansan-side .group-tab-btn { padding: 0.3rem 0.7rem !important; font-size: 0.74rem !important; }
  .ansan-side .admission-tab-btn { padding: 0.3rem 0.7rem !important; font-size: 0.74rem !important; }
  .ansan-side .type-tab-btn { padding: 0.22rem 0.6rem !important; font-size: 0.7rem !important; }
  /* 학과 카드 — 모바일에서 그림자 진하게 */
  .dept-card { box-shadow: 0 4px 14px rgba(15, 23, 42, 0.20) !important; }
}
@media (min-width: 768px) {
  #auNav { display: flex !important; position: static !important; transform: none !important; width: auto !important; height: auto !important; background: none !important; box-shadow: none !important; padding: 0 !important; }
}
@media (max-width: 767px) {
  #auNav {
    position: fixed !important;
    top: 0; right: 0;
    width: 60%; height: 100vh;
    background: #fff;
    z-index: 9999;
    flex-direction: column;
    padding: 60px 20px 20px;
    box-shadow: -4px 0 20px rgba(0,0,0,0.12);
    transition: transform 0.3s ease;
  }
  #auNav .navbar-nav { flex-direction: column !important; gap: 8px !important; width: 100%; }
  #auNav .nav-link { padding: 12px 16px !important; font-size: 1rem !important; border-radius: 8px; text-align: left; color: var(--slate-700); }
  .au-nav-overlay { position: fixed; top:0; left:0; right:0; bottom:0; background: rgba(15,23,42,0.5); z-index: 9998; }
}

/* ── 성적 요약 바 ── */
.summary-bar {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1rem 1.25rem;
  background: #fff;
  border: 1px solid var(--slate-200);
  border-radius: 1rem;
  flex-wrap: wrap;
  box-shadow: 0 1px 3px rgba(15,23,42,.04);
}
.summary-item { display: flex; align-items: center; gap: 0.5rem; }
.summary-label { font-size: 0.75rem; color: var(--slate-400); letter-spacing: 0.01em; }
.summary-value { font-size: 1rem; font-weight: 700; color: var(--cyan-700); }
.summary-value.sub { font-size: 0.9rem; color: var(--cyan-800); }
.summary-value small { font-size: 0.75rem; font-weight: 400; color: var(--slate-400); }
.summary-link a { font-size: 0.82rem; color: var(--cyan-600); text-decoration: none; font-weight: 600; }
.summary-link a:hover { color: var(--cyan-700); }
.summary-empty { font-size: 0.85rem; color: var(--slate-400); }

/* ── 전형 그룹 탭 (pill 스타일) ── */
.group-tabs {
  display: inline-flex;
  background: #fff;
  border: 1px solid var(--slate-200);
  border-radius: 0.75rem;
  padding: 4px;
  gap: 0;
  box-shadow: 0 1px 2px rgba(15,23,42,.04);
}
.group-tab-btn {
  padding: 0.5rem 1.1rem;
  border: none;
  background: transparent;
  font-size: 0.86rem;
  font-weight: 600;
  color: var(--slate-500);
  cursor: pointer;
  border-radius: 0.5rem;
  transition: .15s;
  font-family: inherit;
}
.group-tab-btn:hover { color: var(--slate-900); background: var(--slate-100); }
.group-tab-btn.active { color: #fff; background: var(--cyan-600); box-shadow: 0 2px 6px rgba(8,145,178,.28); }

/* ── 세부 전형 탭 (세그먼트) ── */
#typeTabs, #jungsiTypeTabs, .type-tabs {
  display: inline-flex !important;
  gap: 4px !important;
  flex-wrap: wrap !important;
  background: var(--slate-100);
  border-radius: 0.75rem;
  padding: 4px;
}
.type-tab-btn {
  padding: 0.35rem 0.85rem;
  border: none;
  background: transparent;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--slate-500);
  cursor: pointer;
  border-radius: 0.5rem;
  transition: .15s;
  font-family: inherit;
}
.type-tab-btn:hover { color: var(--slate-900); background: rgba(255,255,255,.6); }
.type-tab-btn.active { background: #fff; color: var(--slate-900); box-shadow: 0 2px 4px rgba(15,23,42,.08); }

#typeTabs, #jungsiTypeTabs { margin-bottom: 1.25rem !important; padding-bottom: 0 !important; }
#deptCards::before, #jungsiDeptCards::before { display: none; }

/* ── 안내 영역 (테두리 + +/− 토글, 사이드 위쪽 풀폭) ── */
.ansan-info {
  margin-bottom: 1.4rem;
  background: #fff;
  border: 1px solid var(--slate-300);
  border-radius: 0.7rem;
  overflow: hidden;
}
.ansan-info-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 0.85rem 1.1rem;
  background: var(--slate-50);
  border: none;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s;
}
.ansan-info-toggle:hover { background: var(--slate-100); }
.ansan-info.is-open .ansan-info-toggle {
  background: #fff;
  border-bottom: 1px solid var(--slate-200);
}
.ansan-info-toggle-title {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--slate-900);
  letter-spacing: -0.01em;
}
.ansan-info-toggle-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.6rem;
  height: 1.6rem;
  background: #fff;
  border: 1.5px solid #dc2626;
  border-radius: 50%;
  color: #dc2626;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  animation: togglePulse 2s ease-in-out infinite;
}
@keyframes togglePulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(220,38,38,0.4); }
  50% { box-shadow: 0 0 0 6px rgba(220,38,38,0); }
}
.ansan-info-body {
  padding: 1.1rem 1.2rem 1.2rem;
}
.ansan-info-body[hidden] { display: none; }
.ansan-info-block { margin-bottom: 1.4rem; }
.ansan-info-block:last-child { margin-bottom: 0; }
.ansan-info-h {
  position: relative;
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--slate-900);
  letter-spacing: -0.01em;
  margin: 0 0 0.6rem;
  padding-top: 0.35rem;
}
.ansan-info-h::before {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 1.5rem; height: 3px;
  background: var(--cyan-600);
  border-radius: 2px;
}
.ansan-info-table {
  width: 100%;
  border-collapse: collapse;
  border-top: 1.5px solid var(--slate-700);
  border-bottom: 1px solid var(--slate-300);
  background: #fff;
}
.ansan-info-table th,
.ansan-info-table td {
  padding: 0.7rem 1rem;
  font-size: 0.9rem;
  border-bottom: 1px solid var(--slate-200);
  vertical-align: middle;
  line-height: 1.55;
}
.ansan-info-table th {
  width: 18rem;
  background: var(--slate-50);
  color: var(--slate-700);
  font-weight: 700;
  text-align: center;
  border-right: 1px solid var(--slate-200);
}
.ansan-info-table td { color: var(--slate-700); }
.ansan-info-table td b { color: var(--slate-900); font-weight: 700; }
.ansan-info-table tr:last-child th,
.ansan-info-table tr:last-child td { border-bottom: none; }

.ansan-info-notes {
  margin: 0.55rem 0 0;
  padding: 0.85rem 1rem 0.85rem 2.4rem;
  list-style: none;
  background: var(--slate-50);
  border: 1px solid var(--slate-200);
  border-radius: 0.5rem;
  position: relative;
}
.ansan-info-notes::before {
  content: '\f431'; /* bi-info-circle-fill */
  font-family: 'bootstrap-icons';
  position: absolute;
  left: 0.85rem; top: 0.9rem;
  width: 1.1rem; height: 1.1rem;
  background: #dc2626;
  color: #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.7rem;
}
.ansan-info-notes.muted::before { background: var(--slate-400); }
.ansan-info-notes li {
  position: relative;
  font-size: 0.82rem;
  color: var(--slate-700);
  line-height: 1.6;
  padding-left: 0.5rem;
}
.ansan-info-notes li + li { margin-top: 0.2rem; }
.ansan-info-notes li::before {
  content: '·';
  position: absolute;
  left: -0.1rem;
  color: var(--slate-500);
  font-weight: 700;
}

@media (max-width: 720px) {
  .ansan-info-title { font-size: 1.35rem; margin-bottom: 1.2rem; }
  .ansan-info-table th { width: 8.5rem; padding: 0.6rem 0.55rem; font-size: 0.82rem; }
  .ansan-info-table td { padding: 0.6rem 0.7rem; font-size: 0.83rem; }
  .ansan-info-notes { padding: 0.75rem 0.85rem 0.75rem 2.2rem; }
  .ansan-info-notes li { font-size: 0.78rem; }
}

/* ── 사이드 레이아웃 (PC 좌측 사이드 + 결과 그리드) ── */
.ansan-layout {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 1.25rem;
  /* align-items 기본값(stretch) 유지 — 사이드 셀이 main 높이만큼 늘어나야 sticky 가 스크롤 범위 안에서 동작함 */
}
.ansan-side {
  position: relative;
  height: 100%;
}
.ansan-side-inner {
  position: sticky;
  top: 5.5rem;
  padding: 1.1rem 1rem;
  background: #fff;
  border: 1.5px solid var(--slate-400);
  border-radius: 0.85rem;
  box-shadow: 0 12px 28px rgba(15,23,42,.14), 0 4px 10px rgba(15,23,42,.08);
  max-height: calc(100vh - 7rem);
  overflow-y: auto;
}
.ansan-side-inner::-webkit-scrollbar { width: 6px; }
.ansan-side-inner::-webkit-scrollbar-thumb { background: var(--slate-300); border-radius: 3px; }
.ansan-side-inner::-webkit-scrollbar-track { background: transparent; }
.ansan-side-group { margin-bottom: 1.4rem; }
.ansan-side-group:last-child { margin-bottom: 0; }
.ansan-side-title {
  margin: 0 0 0.6rem;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--cyan-700);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  gap: 6px;
}
.ansan-side-title i {
  font-size: 0.95rem;
  color: var(--cyan-600);
}

/* 보기 방식 토글 (카드 ↔ 차트) */
.ansan-view-switch {
  display: flex;
  gap: 4px;
  background: var(--slate-100);
  border-radius: 0.5rem;
  padding: 3px;
  overflow: visible;
}
.ansan-view-switch button {
  flex: 1;
  position: relative;
  padding: 0.45rem 0.6rem;
  font-size: 0.78rem;
  font-weight: 600;
  color: #ea580c;
  background: transparent;
  border: none;
  border-radius: 0.4rem;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.15s;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  overflow: visible;
}
.ansan-view-switch button:hover { color: #c2410c; background: rgba(255,255,255,.6); }
.ansan-view-switch button.active {
  background: var(--cyan-600);
  color: #fff;
  box-shadow: 0 2px 6px rgba(8,145,178,.32);
}
.ansan-view-switch button.active:hover {
  background: var(--cyan-700);
  color: #fff;
}
.ansan-view-switch button.active::after {
  content: '';
  position: absolute;
  left: 50%;
  margin-left: -6px;
  bottom: -6px;
  width: 0;
  height: 0;
  border-top: 6px solid var(--cyan-600);
  border-right: 6px solid transparent;
  border-left: 6px solid transparent;
  z-index: 1;
}

/* ── 차트 뷰 (컴팩트 리스트) ── */
.dchart-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px;
  padding: 9px 14px;
  background: var(--slate-50);
  border: 1px solid var(--slate-200);
  border-radius: 8px;
  margin-bottom: 10px;
  font-size: 0.72rem;
  color: var(--slate-600);
  font-weight: 500;
}
.dchart-legend .lg {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.dchart-legend .lg-line {
  display: inline-block;
  width: 0;
  height: 14px;
  border-left: 2px solid #dc2626;
}
.dchart-legend .lg-line.avg { border-left: 2px solid rgba(15,23,42,.6); }
.dchart-legend .lg-line.mid { border-left: 2.5px dashed #1d4ed8; }
.dchart-legend .lg-line.min { border-left: 2.5px dotted #b45309; }
.dchart-legend strong {
  color: var(--slate-900);
  font-weight: 700;
}
.dchart-scale {
  display: grid;
  grid-template-columns: 14px minmax(0, 1.6fr) minmax(0, 1.4fr) minmax(0, 2.4fr) minmax(0, 0.9fr) minmax(0, 0.9fr);
  gap: 10px;
  align-items: center;
  padding: 0.5rem 0.95rem;
  background: var(--slate-50);
  border-bottom: 1px solid var(--slate-200);
  font-size: 0.65rem;
  color: var(--slate-400);
  font-weight: 500;
}
.dchart-scale-label {
  text-align: right;
  font-size: 0.72rem;
  color: var(--slate-700);
  font-weight: 700;
  padding-right: 4px;
}
.dchart-scale .ticks { position: relative; height: 14px; }
.dchart-scale .scale-nums {
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 100%;
  font-size: 0.6rem;
  color: var(--slate-400);
  font-weight: 600;
}
.dchart-scale .scale-nums span {
  position: absolute;
  top: 0;
  transform: translateX(-50%);
}
.dchart-scale .scale-nums span:first-child { transform: none; }
.dchart-scale .scale-nums span:last-child { transform: translateX(-100%); }
.dept-chart-table {
  background: #fff;
  border: 1px solid var(--slate-300);
  border-radius: 0.75rem;
  overflow: hidden;
  box-shadow: 0 1px 4px rgba(15,23,42,.04);
}
.dchart-head {
  display: grid;
  grid-template-columns: 14px minmax(0, 1.6fr) minmax(0, 1.4fr) minmax(0, 2.4fr) minmax(0, 0.9fr) minmax(0, 0.9fr);
  gap: 10px;
  align-items: center;
  padding: 0.55rem 0.95rem;
  background: var(--slate-50);
  border-bottom: 1px solid var(--slate-200);
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--slate-500);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.dchart-row {
  display: grid;
  grid-template-columns: 14px minmax(0, 1.6fr) minmax(0, 1.4fr) minmax(0, 2.4fr) minmax(0, 0.9fr) minmax(0, 0.9fr);
  gap: 10px;
  align-items: center;
  padding: 0.65rem 0.95rem;
  border-bottom: 1px solid var(--slate-100);
}
.dchart-row:last-child { border-bottom: none; }
.dchart-dot { width: 10px; height: 10px; border-radius: 50%; }
.dchart-dot.safe      { background:#15803d; }
.dchart-dot.possible  { background:#1d4ed8; }
.dchart-dot.challenge { background:#b45309; }
.dchart-dot.danger    { background:#b91c1c; }
.dchart-dot.none,
.dchart-dot.pending-input { background: var(--slate-400); }
.dchart-dot.info-only { background: #6366f1; }
.dchart-dot.input-required { background: #06b6d4; }
.dchart-dept {
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--slate-900);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
  transition: color .15s;
}
.dchart-dept:hover { color: var(--cyan-700); text-decoration: underline; }
.dchart-dept small {
  font-size: 0.72rem;
  color: var(--slate-500);
  font-weight: 500;
  margin-left: 4px;
}
.dchart-type {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--cyan-700);
  background: var(--cyan-50);
  border: 1px solid var(--cyan-100);
  padding: 2px 7px;
  border-radius: 0.35rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.dchart-mini {
  position: relative;
  height: 18px;
  background: var(--slate-100);
  border-radius: 3px;
  background-image: repeating-linear-gradient(
    to right,
    transparent 0,
    transparent calc(12.5% - 1px),
    rgba(148,163,184,0.35) calc(12.5% - 1px),
    rgba(148,163,184,0.35) 12.5%);
}
/* 안정 영역 (진한 색) — 등급은 좌측 1등급~평균, 백분위는 평균~우측 100 */
.dchart-mini .dchart-bar-safe {
  position: absolute;
  top: 3px; bottom: 3px;
  border-radius: 3px;
}
/* 도전 영역 (옅은 색) — 평균과 최저 사이 */
.dchart-mini .dchart-bar-chal {
  position: absolute;
  top: 3px; bottom: 3px;
  border-radius: 3px;
  opacity: 0.45;
}
.dchart-mini .dchart-bar-safe               { background: var(--cyan-500); }
.dchart-mini .dchart-bar-chal.possible      { background: var(--cyan-500); }
.dchart-mini .dchart-bar-chal.challenge     { background: #f97316; }
.dchart-mini .dchart-bar-safe.none,
.dchart-mini .dchart-bar-chal.none,
.dchart-mini .dchart-bar-safe.pending-input,
.dchart-mini .dchart-bar-chal.pending-input { background: var(--slate-400); }
.dchart-mini .dchart-bar-safe.info-only,
.dchart-mini .dchart-bar-chal.info-only { background: #c7d2fe; }
.dchart-mini .dchart-bar-safe.input-required,
.dchart-mini .dchart-bar-chal.input-required { background: #a5f3fc; }

/* 합격선 비교 — 컬러 칩 */
.vc-chips { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
.vc-chip { display:inline-flex; align-items:center; gap:6px; padding:7px 14px; border-radius:8px; font-weight:600; }
.vc-chip-label { font-size:0.82rem; }
.vc-chip-val { font-size:1.25rem; font-weight:800; }
.vc-chip-mine { background:#dc2626; color:#fff; }
.vc-chip-avg  { background:#0891b2; color:#fff; }
.vc-chip-mid  { background:rgba(8,145,178,0.45); color:#0e4f5c; }
.vc-chip-min  { background:rgba(249,115,22,0.6); color:#7c2d12; }

/* 판정기준 안내 — 카드뷰 (추가입력 우측 배치) */
.extra-verdict-row {
  display:flex; gap:14px; align-items:stretch;
  margin-bottom:1.2rem; padding-bottom:1.2rem; border-bottom:1px solid var(--slate-300);
}
.extra-verdict-row .extra-input-panel { flex:1; margin-bottom:0; padding-bottom:14px; border-bottom:none; }
.verdict-guide {
  flex:0 0 auto; min-width:240px; padding:10px 16px;
  background:var(--slate-50); border:1px solid var(--slate-200); border-radius:8px;
  display:flex; flex-direction:column; justify-content:center;
  margin-bottom:1.2rem;
}
.verdict-guide-standalone {
  display:flex; align-items:center; gap:12px; padding:8px 14px;
  background:var(--slate-50); border:1px solid var(--slate-200); border-radius:8px; margin-bottom:10px;
}
.verdict-guide-standalone .verdict-guide-title { margin-bottom:0; white-space:nowrap; }
.verdict-guide-standalone .verdict-guide-items { flex-direction:row; }
.verdict-guide-title { font-size:0.78rem; font-weight:700; color:var(--slate-700); margin-bottom:8px; }
.verdict-guide-items { display:flex; flex-wrap:wrap; gap:4px; }
.vg-item {
  display:inline-flex; align-items:center; gap:5px;
  padding:4px 8px; border-radius:5px; font-size:0.75rem;
  cursor:pointer; transition:all 0.15s; user-select:none;
}
.vg-item:hover { filter:brightness(0.92); }
.vg-dot { width:7px; height:7px; border-radius:50%; flex-shrink:0; }
.vg-label { font-weight:800; min-width:24px; }
.vg-cond { color:var(--slate-500); font-weight:500; }
.vg-item.safe { background:#f0fdf4; border:1px solid #86efac; } .vg-item.safe .vg-label { color:#15803d; } .vg-item.safe .vg-dot { background:#15803d; }
.vg-item.possible { background:#eff6ff; border:1px solid #93c5fd; } .vg-item.possible .vg-label { color:#1d4ed8; } .vg-item.possible .vg-dot { background:#1d4ed8; }
.vg-item.challenge { background:#fffbeb; border:1px solid #fcd34d; } .vg-item.challenge .vg-label { color:#b45309; } .vg-item.challenge .vg-dot { background:#b45309; }
.vg-item.danger { background:#fef2f2; border:1px solid #fca5a5; } .vg-item.danger .vg-label { color:#b91c1c; } .vg-item.danger .vg-dot { background:#b91c1c; }
.vg-item.vg-active { outline:2.5px solid currentColor; outline-offset:-1px; font-weight:900; }
.vg-item.vg-dimmed { opacity:0.55; }
@media (max-width:768px) {
  .extra-verdict-row { flex-direction:column; gap:10px; }
  .verdict-guide { min-width:auto; }
  .verdict-guide-standalone { flex-wrap:wrap; }
}

/* 평균/중간/최저 위치 마커 */
.dchart-mini .dchart-mark-avg {
  position: absolute;
  top: 0; bottom: 0;
  width: 0;
  border-left: 2px solid rgba(15,23,42,.5);
  z-index: 3;
}
.dchart-mini .dchart-mark-mid {
  position: absolute;
  top: 0; bottom: 0;
  width: 0;
  border-left: 2.5px dashed #1d4ed8;
  z-index: 3;
}
.dchart-mini .dchart-mark-min {
  position: absolute;
  top: 0; bottom: 0;
  width: 0;
  border-left: 2.5px dotted #b45309;
  z-index: 3;
}
.dchart-mini .dchart-me {
  position: absolute;
  top: -10px; bottom: -10px;
  width: 0;
  border-left: 2px solid #dc2626;
  z-index: 5;
  pointer-events: none;
  background: none;
  padding: 0;
  border-radius: 0;
}
.dchart-mini .dchart-empty {
  position: absolute;
  left: 0; right: 0; top: 0; bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.7rem;
  color: var(--slate-400);
  font-weight: 600;
}
.dchart-grade {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--slate-900);
  text-align: center;
  line-height: 1.1;
}
.dchart-grade small {
  display: inline;
  font-size: 0.7rem;
  color: var(--slate-400);
  font-weight: 500;
  margin-left: 2px;
}
.dchart-verdict {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.72rem;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 999px;
}
.dchart-verdict.safe      { background:#dcfce7; color:#15803d; }
.dchart-verdict.possible  { background:#dbeafe; color:#1d4ed8; }
.dchart-verdict.challenge { background:#fef3c7; color:#b45309; }
.dchart-verdict.danger    { background:#fee2e2; color:#b91c1c; }
.dchart-verdict.none,
.dchart-verdict.pending-input { background:var(--slate-100); color:var(--slate-600); }
.dchart-verdict.info-only { background:#eef2ff; color:#3730a3; }
.dchart-verdict.input-required { background:#ecfeff; color:#0e7490; }

@media (max-width: 720px) {
  .dchart-head { display: none; }
  .dchart-scale { display: none; }
  .dchart-row {
    grid-template-columns: 14px 1fr auto;
    grid-template-areas:
      'dot name grade'
      'dot type verdict'
      'mini mini mini';
    gap: 4px 8px;
    padding: 0.7rem 0.8rem;
  }
  .dchart-dot { grid-area: dot; align-self: start; margin-top: 4px; }
  .dchart-dept { grid-area: name; }
  .dchart-type { grid-area: type; justify-self: start; max-width: max-content; }
  .dchart-grade { grid-area: grade; text-align: right; }
  .dchart-grade small { display: inline; margin-left: 2px; }
  .dchart-verdict { grid-area: verdict; justify-self: end; }
  .dchart-mini { grid-area: mini; margin-top: 4px; }
}

/* 수시·정시 토글 (사이드 최상단 — 알약 형태 chip 탭) */
.ansan-mode-tabs {
  display: flex;
  gap: 6px;
  padding: 0;
  background: transparent;
  overflow: visible;
}
.ansan-mode-tabs a {
  flex: 1;
  position: relative;
  text-align: center;
  padding: 0.55rem 0.9rem;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--slate-700);
  text-decoration: none;
  background: #fff;
  border: 1px solid var(--slate-300);
  border-radius: 999px;
  transition: all 0.15s ease;
  letter-spacing: -0.01em;
  overflow: visible;
}
.ansan-mode-tabs a:hover {
  background: var(--cyan-50);
  border-color: var(--cyan-600);
  color: var(--cyan-700);
}
.ansan-mode-tabs a.active {
  background: var(--cyan-600);
  border-color: var(--cyan-600);
  color: #fff;
  box-shadow: 0 2px 6px rgba(8,145,178,.3);
}
.ansan-mode-tabs a.active::after {
  content: '';
  position: absolute;
  left: 50%;
  margin-left: -6px;
  bottom: -6px;
  width: 0;
  height: 0;
  border-top: 6px solid var(--cyan-600);
  border-right: 6px solid transparent;
  border-left: 6px solid transparent;
  z-index: 1;
}
.ansan-main { min-width: 0; min-height: calc(100vh - 7rem); }

/* 사이드 안의 그룹 탭 — 세로 리스트 */
.ansan-side .group-tabs {
  display: flex;
  flex-direction: column;
  gap: 4px;
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
  width: 100%;
}
.ansan-side .group-tab-btn {
  width: 100%;
  text-align: left;
  padding: 0.55rem 0.75rem;
  font-size: 0.88rem;
  border-radius: 0.5rem;
  background: var(--slate-50);
  color: var(--slate-700);
  border: 1px solid transparent;
}
.ansan-side .group-tab-btn:hover { background: var(--cyan-50); color: var(--cyan-700); }
.ansan-side .group-tab-btn.active {
  background: var(--cyan-600);
  color: #fff;
  box-shadow: 0 2px 6px rgba(8,145,178,.28);
  filter: brightness(1.10);
}

/* 사이드 안의 세부 전형 탭 — 세로 리스트 */
.ansan-side #typeTabs,
.ansan-side #jungsiTypeTabs,
.ansan-side .type-tabs {
  display: flex !important;
  flex-direction: column;
  gap: 3px !important;
  background: transparent;
  border-radius: 0;
  padding: 0;
  margin-bottom: 0 !important;
}
.ansan-side .type-tab-btn {
  width: 100%;
  text-align: left;
  padding: 0.5rem 0.7rem;
  font-size: 0.82rem;
  background: #fff;
  border: 1px solid var(--slate-200);
  border-radius: 0.45rem;
  color: var(--slate-600);
}
.ansan-side #admissionTabs,
.ansan-side #jungsiAdmissionTabs {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.ansan-side .admission-tab-btn {
  width: 100%;
  text-align: left;
  padding: 0.5rem 0.75rem;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--slate-700);
  background: #fff;
  border: 1px solid var(--slate-300);
  border-radius: 0.45rem;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.15s;
}
.ansan-side .admission-tab-btn:hover { background: var(--cyan-50); color: var(--cyan-700); border-color: var(--cyan-300); }
.ansan-side .admission-tab-btn.active {
  background: var(--cyan-600);
  color: #fff;
  border-color: var(--cyan-600);
  box-shadow: 0 2px 6px rgba(8,145,178,.26);
}
@media (max-width: 1180px) {
  .ansan-side #admissionTabs,
  .ansan-side #jungsiAdmissionTabs {
    flex-direction: row !important;
    flex-wrap: wrap !important;
    gap: 5px !important;
  }
  .ansan-side .admission-tab-btn { width: auto; white-space: nowrap; }
}
.ansan-side .type-tab-btn:hover { background: var(--cyan-50); border-color: var(--cyan-200); color: var(--cyan-600); }
.ansan-side .type-tab-btn.active {
  background: var(--cyan-600);
  color: #fff;
  border-color: var(--cyan-600);
  box-shadow: 0 2px 5px rgba(8,145,178,.22);
  filter: brightness(0.92);
}

/* 사이드 폭이 부담되는 1180px 이하부터 사이드를 위로 풀어 main 영역 확보 */
@media (max-width: 1180px) {
  .ansan-layout { grid-template-columns: 1fr; gap: 0.7rem; }
  .ansan-side { height: auto; }
  .ansan-side-inner {
    position: static;
    max-height: none;
    padding: 0.7rem 0.85rem;
    box-shadow: 0 4px 10px rgba(15,23,42,.06);
  }
  .ansan-side-group { margin-bottom: 0.65rem; }
  .ansan-side-title { margin-bottom: 0.4rem; font-size: 0.72rem; }
  .ansan-mode-tabs a { padding: 0.45rem 0.8rem; font-size: 0.85rem; }

  /* 그룹 탭 / 세부 전형 탭 — 가로로 자연스럽게 wrap */
  .ansan-side .group-tabs,
  .ansan-side #typeTabs,
  .ansan-side #jungsiTypeTabs,
  .ansan-side .type-tabs {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    gap: 5px !important;
  }
  .ansan-side .group-tab-btn,
  .ansan-side .type-tab-btn { width: auto; white-space: nowrap; }
}

/* ── 학과 카드 그리드 (1행 3열) ── */
.dept-card-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.7rem;
}

/* ── 학과 카드 (상단 컬러 밴드 + 본문 패턴) ── */
.dept-card {
  cursor: pointer;
  transition: all 0.18s ease;
  background: #fafafa;
  border: 1.5px solid var(--slate-300);
  border-radius: 0.85rem;
  box-shadow: 0 1px 2px rgba(15,23,42,.04);
  padding: 0;
  overflow: hidden;
}
/* 카드 최상단 컬러 밴드 — 합격판정 + 산출등급 */
.card-band {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.4rem 0.85rem;
  font-size: 0.74rem;
  font-weight: 600;
  letter-spacing: 0.005em;
}
.card-band .band-v { display: inline-flex; align-items: center; gap: 0.3rem; }
.card-band .band-v::before {
  content: '';
  width: 0.4rem; height: 0.4rem;
  border-radius: 50%;
  background: currentColor;
}
.card-band .band-grade { font-size: 0.74rem; font-weight: 700; letter-spacing: -0.005em; }
.card-band.safe      { background:#dcfce7; color:#15803d; }
.card-band.possible  { background:#dbeafe; color:#1d4ed8; }
.card-band.challenge { background:#fef3c7; color:#b45309; }
.card-band.danger    { background:#fee2e2; color:#b91c1c; }
.card-band.none      { background:var(--slate-100); color:var(--slate-500); }
.card-band.pending   { background:#fff7ed; color:#c2410c; }
.card-band.pending-input { background:var(--slate-100); color:var(--slate-900); }
.card-band.pending-input .band-v::before { background:var(--slate-400); }
.card-band.info-only { background:#eef2ff; color:#3730a3; }
.card-band.info-only .band-v::before { background:#6366f1; }
.card-band.input-required { background:#ecfeff; color:#0e7490; }
.card-band.input-required .band-v::before { background:#06b6d4; }
.dept-card .card-body { padding: 0.7rem 0.95rem 0.85rem; }
.dept-card:hover {
  border-color: var(--cyan-600);
  box-shadow: 0 6px 16px rgba(8,145,178,.15);
  transform: translateY(-2px);
}
.dept-card.selected {
  border: 2px solid var(--cyan-600);
  background: #fff;
  box-shadow: 0 0 0 1px rgba(8,145,178,.25), 0 8px 18px rgba(15,23,42,.08);
}

/* 카드 최상단 합격판정 뱃지 (좌측 정렬) */
.card-verdict-top {
  display: flex;
  justify-content: flex-start;
  margin-bottom: 0.4rem;
}

/* 학과명 + 전형 뱃지 한 줄 */
.card-dept-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.35rem;
}
.card-dept {
  flex: 1;
  min-width: 0;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--slate-900);
  letter-spacing: -0.015em;
  line-height: 1.3;
  word-break: keep-all;
}
/* 전형 뱃지 + 메타 한 줄 */
.card-meta-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-bottom: 0.1rem;
}
.card-type {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--cyan-700);
  background: var(--cyan-50);
  padding: 0.18rem 0.55rem;
  border-radius: 0.35rem;
  border: 1px solid var(--cyan-200);
  flex-shrink: 0;
  white-space: nowrap;
}
.card-note { font-size: 0.76rem; color: var(--slate-500); line-height: 1.4; font-weight: 400; flex: 1; min-width: 0; }

/* ── 카드 점수 박스 ── */
.card-score-box {
  margin-top: 0.4rem;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.card-score-box.none, .card-score-box.empty {
  display: flex; align-items: center; justify-content: center; min-height: 2.2rem;
  color: var(--slate-400);
}
.card-none-label { font-size: 0.78rem; color: var(--slate-400); font-weight: 400; }

/* 등급 + 합격판정 한 줄 (메인) */
.card-score-main { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.card-grade-block {
  display: flex;
  align-items: baseline;
  justify-content: flex-end;
  gap: 0.45rem;
  width: 100%;
}
.card-grade-label { font-size: 0.72rem; color: var(--slate-500); font-weight: 500; }
.card-grade-value { font-size: 1.2rem; font-weight: 700; color: var(--slate-900); line-height: 1; letter-spacing: -0.02em; }

/* 환산점수 보조 한 줄 */
.card-score-sub { display: flex; align-items: baseline; justify-content: space-between; gap: 0.25rem; }
.card-score-label { font-size: 0.72rem; color: var(--slate-500); font-weight: 500; }
.card-score-value { font-size: 0.95rem; font-weight: 600; color: var(--cyan-700); letter-spacing: -0.005em; }
.card-score-value small { font-size: 0.72rem; font-weight: 400; color: var(--slate-400); margin-left: 1px; }

/* ── 합격판정 배지 (캡슐형 컴팩트) ── */
.card-verdict {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  white-space: nowrap;
  flex-shrink: 0;
  line-height: 1.4;
}
.card-verdict::before {
  content: '';
  display: inline-block;
  width: 0.36rem;
  height: 0.36rem;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}
.card-verdict.safe      { background:#ecfdf5; color:#15803d; }
.card-verdict.possible  { background:#eff6ff; color:#1d4ed8; }
.card-verdict.challenge { background:#fffbeb; color:#b45309; }
.card-verdict.danger    { background:#fef2f2; color:#b91c1c; }
.card-verdict.unknown,
.card-verdict.none      { background:var(--slate-50); color:var(--slate-500); }
.card-verdict.pending   { background:#fff7ed; color:#c2410c; }

/* ── 입결 미니 라인 (카드 펼침 패널에서 동일 정보 표시되므로 카드 앞면에서는 숨김) ── */
.dept-card .card-cutline { display: none; }
.card-expand-panel .card-cutline { display: block; margin-top: 0.35rem; font-size: 0.78rem; color: var(--slate-500); line-height: 1.45; }
.card-cutline b { color: var(--slate-700); font-weight: 600; }

/* ── 펼침 패널 (단정 화이트 + 선택 카드와 동일 cyan 보더) ── */
.card-expand-panel {
  grid-column: 1 / -1;
  background: #fff;
  border: 1px solid var(--cyan-600);
  border-radius: 1rem;
  padding: 0 0 1rem;
  box-shadow: 0 8px 24px rgba(8,145,178,.12), 0 2px 6px rgba(15,23,42,.04);
  overflow: hidden;
  animation: panelSlideDown 0.3s ease-out;
  margin-top: 0.4rem;
}
@keyframes panelSlideDown {
  from { opacity: 0; max-height: 0; padding-top: 0; padding-bottom: 0; margin-top: 0; }
  to { opacity: 1; max-height: 2000px; }
}
.card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.85rem 1.15rem;
  border-bottom: 1px solid var(--cyan-100);
  background: #fff;
}
.card-header-title { font-size: 1rem; font-weight: 800; color: var(--slate-900); letter-spacing: -0.01em; }
.card-header-title em { font-style: normal; color: var(--cyan-700); margin-left: 6px; font-weight: 700; }
.card-detail { padding: 0.85rem 1.15rem 0; }
.card-close-btn {
  padding: 0.4rem 0.85rem;
  border: 1px solid var(--slate-300);
  background: #fff;
  border-radius: 0.5rem;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--slate-600);
  cursor: pointer;
  font-family: inherit;
  transition: .15s;
}
.card-close-btn:hover { background: var(--slate-50); color: var(--slate-900); border-color: var(--slate-400); }

.card-detail {
  display: flex;
  flex-direction: column;
  margin-top: 0.6rem;
  padding-top: 0;
  cursor: default;
}
/* 산출 결과 섹션을 펼침 패널 최상단으로 시각적 정렬 */
.card-detail > .result-section,
.card-detail > .detail-section.result-section { order: -1; }

/* ── 상세 섹션 (각 섹션을 옅은 slate-50 박스로) ── */
.detail-section {
  background: var(--slate-50);
  border: 1px solid var(--slate-200);
  border-radius: 0.6rem;
  padding: 0.75rem 0.9rem;
  margin-bottom: 0.65rem;
}
.detail-section.result-section {
  background: #fff;
  border: 1px solid var(--slate-200);
  box-shadow: 0 1px 2px rgba(15,23,42,.03);
}
.detail-section-title {
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--slate-700);
  margin-bottom: 0.55rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--slate-200);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.detail-empty { text-align: center; padding: 1.5rem; color: var(--slate-400); font-size: 0.85rem; }
.detail-pending {
  text-align: center;
  padding: 1.1rem;
  background: #fff7ed;
  border: 1px dashed #f59e0b;
  border-radius: 0.6rem;
  color: #92400e;
  font-size: 0.85rem;
  line-height: 1.6;
}

/* 반영방법 */
.ref-info { display: flex; flex-direction: column; gap: 0.3rem; }
.ref-row { display: flex; align-items: baseline; gap: 0.75rem; }
.ref-label { font-size: 0.78rem; font-weight: 600; color: var(--slate-500); min-width: 5rem; }
.ref-value { font-size: 0.85rem; color: var(--slate-700); }

/* 테이블 */
.detail-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: 0.85rem;
  background: #fff;
  border-radius: 0.6rem;
  overflow: hidden;
  border: 1px solid var(--slate-200);
}
.detail-table th {
  background: var(--slate-50);
  padding: 0.5rem 0.45rem;
  font-weight: 700;
  border-bottom: 1px solid var(--slate-200);
  color: var(--slate-600);
  text-align: center;
  white-space: nowrap;
  font-size: 0.78rem;
  letter-spacing: 0.01em;
}
.detail-table td {
  padding: 0.45rem 0.45rem;
  border-bottom: 1px solid var(--slate-100);
  text-align: center;
  vertical-align: middle;
  background: #fff;
  color: var(--slate-700);
}
.detail-table tr:last-child td { border-bottom: none; }
.detail-table .cat-cell { text-align: left; color: var(--slate-700); }
.detail-table .num-cell { font-weight: 700; color: var(--cyan-700); }
.detail-table tr.row-best td { background: var(--cyan-50); }

/* 산출 결과 */
.result-section {
  background: #fff;
  border: 1px solid var(--slate-200);
  padding: 0.95rem 1.1rem;
  border-radius: 0.75rem;
  box-shadow: 0 1px 3px rgba(15,23,42,.04);
}
.result-grid { display: flex; gap: 1.5rem; margin-bottom: 0.75rem; flex-wrap: wrap; }
.result-item { display: flex; flex-direction: column; gap: 0.2rem; }
.result-label { font-size: 0.78rem; color: var(--slate-500); font-weight: 500; }
.result-value { font-size: 1.4rem; font-weight: 800; letter-spacing: -0.02em; line-height: 1; }
.result-value.grade { color: #dc2626; }
.result-item.grade .result-label { color: #dc2626; }
.result-value.score { color: var(--cyan-700); }
.result-value small { font-size: 0.85rem; font-weight: 400; color: var(--slate-400); }

/* 점수 바 — 산출결과 패널 내 환산점수 진행도 (합격선 차트와 톤 통일) */
.score-bar-wrap { margin-top: 1rem; padding-top: 0.85rem; border-top: 1px dashed var(--slate-200); }
.score-bar-title { font-size: 0.78rem; font-weight: 600; color: var(--slate-600); margin-bottom: 6px; letter-spacing: -0.01em; }
.score-bar {
  height: 14px;
  background: var(--slate-100);
  border-radius: 3px;
  overflow: hidden;
  background-image: repeating-linear-gradient(
    to right,
    transparent 0,
    transparent calc(25% - 1px),
    rgba(148,163,184,0.35) calc(25% - 1px),
    rgba(148,163,184,0.35) 25%);
}
.score-bar-fill { height: 100%; background: var(--cyan-500); border-radius: 3px 0 0 3px; transition: width 0.5s; }
.score-bar-labels { display: flex; justify-content: space-between; font-size: 0.72rem; color: var(--slate-500); margin-top: 0.3rem; font-weight: 600; }

/* 합격판정 안내 */
.verdict-panel {
  display: flex; align-items: center; gap: 0.85rem;
  padding: 0.7rem 1rem;
  border-radius: 0.6rem;
  margin-top: 0.6rem;
  border: 1px solid;
}
.verdict-panel.safe      { background:#dcfce7; color:#15803d; border-color:#bbf7d0; }
.verdict-panel.possible  { background:#dbeafe; color:#1d4ed8; border-color:#bfdbfe; }
.verdict-panel.challenge { background:#fef3c7; color:#b45309; border-color:#fde68a; }
.verdict-panel.danger    { background:#fee2e2; color:#b91c1c; border-color:#fecaca; }
.verdict-panel.unknown   { background:var(--slate-100); color:var(--slate-600); border-color:var(--slate-200); }
.verdict-panel-label { font-weight: 800; font-size: 1.05rem; letter-spacing: -0.01em; }
.verdict-panel-msg   { font-size: 0.85rem; }

.extra-input-panel-title { font-size:0.82rem; font-weight:700; color:var(--slate-600); margin-bottom:8px; }
.extra-input-grid { display:flex; flex-direction:column; gap:4px; }
.card-band.computed { background:var(--slate-100); color:var(--slate-700); }
.card-band.computed .band-v::before { background:var(--slate-400); }

/* 추가 입력 */
.extra-input-row {
  display: flex; align-items: center; gap: 0.6rem;
  margin: 0.3rem 0;
  flex-wrap: wrap;
}
.extra-input-row label {
  font-size: 0.82rem; font-weight: 600;
  color: var(--slate-600); min-width: 7rem;
}
.extra-input-row input {
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--slate-300);
  border-radius: 0.4rem;
  font-size: 0.85rem;
  width: 8.5rem;
  background: #fff;
  transition: .15s;
}
.extra-input-row select {
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--slate-300);
  border-radius: 0.4rem;
  font-size: 0.8rem;
  background: #fff;
  transition: .15s;
}
.extra-input-row input:focus,
.extra-input-row select:focus {
  outline: none;
  border-color: var(--cyan-500);
  box-shadow: 0 0 0 3px rgba(6,182,212,.15);
}

/* ── 산출결과 패널 안 — 합격선 비교 sub-block ── */
.verdict-block {
  margin-top: 1rem;
  padding-top: 0.95rem;
  border-top: 1px dashed var(--slate-200);
}
.verdict-block-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--slate-700);
  margin-bottom: 0.6rem;
  letter-spacing: -0.01em;
}
.verdict-block-badge {
  font-size: 0.72rem;
  font-weight: 700;
  padding: 2px 9px;
  border-radius: 999px;
  letter-spacing: 0;
}
.verdict-block-badge.safe      { background:#dcfce7; color:#15803d; }
.verdict-block-badge.possible  { background:#dbeafe; color:#1d4ed8; }
.verdict-block-badge.challenge { background:#fef3c7; color:#b45309; }
.verdict-block-badge.danger    { background:#fee2e2; color:#b91c1c; }
.verdict-block-badge.none      { background:var(--slate-100); color:var(--slate-600); }
.verdict-stats {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  padding: 10px 14px;
  background: var(--slate-50);
  border: 1px solid var(--slate-200);
  border-radius: 0.5rem;
  margin-bottom: 10px;
}
.verdict-stats .vs-item {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.verdict-stats .vs-label {
  font-size: 0.7rem;
  color: var(--slate-500);
  font-weight: 600;
  letter-spacing: -0.01em;
}
.verdict-stats .vs-value {
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--slate-900);
  letter-spacing: -0.02em;
}
.verdict-stats .vs-value.vs-mine { color: #dc2626; }
.verdict-narrative {
  font-size: 0.9rem;
  line-height: 1.65;
  color: var(--slate-700);
  padding: 4px 4px 12px;
}
.verdict-narrative b { color: var(--slate-900); font-weight: 700; }
.verdict-chart-wrap {
  padding: 16px 6px 4px;
}
.verdict-chart-wrap .dchart-mini { height: 20px; }
.verdict-scale {
  margin-top: 8px;
  position: relative;
  height: 14px;
}
.verdict-scale .ticks { position: relative; height: 14px; }
.verdict-scale .scale-nums {
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 100%;
  font-size: 0.7rem;
  color: var(--slate-500);
  font-weight: 600;
}
.verdict-scale .scale-nums span {
  position: absolute;
  top: 0;
  transform: translateX(-50%);
}
.verdict-scale .scale-nums span:first-child { transform: none; }
.verdict-scale .scale-nums span:last-child { transform: translateX(-100%); }
.verdict-legend {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 12px;
  font-size: 0.75rem;
  color: var(--slate-600);
  font-weight: 500;
}
.verdict-legend > span { display: inline-flex; align-items: center; gap: 5px; }
.verdict-legend .vl-line { display: inline-block; width: 0; height: 12px; border-left: 2px solid #dc2626; }
.verdict-legend .vl-line.vl-avg { border-left: 2px solid rgba(15,23,42,.6); }
.verdict-legend .vl-line.vl-mid { border-left: 2.5px dashed #1d4ed8; }
.verdict-legend .vl-line.vl-min { border-left: 2.5px dotted #b45309; }

/* ── 기타 ── */
.no-results { text-align: center; padding: 3rem; color: var(--slate-400); font-size: 0.9rem; }

/* ── 반응형 — 사이드 모드(1181+) 3열 / 사이드 풀림(1180 이하) viewport 기반 ── */
@media (max-width: 1180px) {
  .dept-card-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .dept-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.55rem; }
}
@media (max-width: 600px) {
  .dept-card-grid { grid-template-columns: 1fr; gap: 0.5rem; }
}

@media (max-width: 1024px) {
  .dept-card { padding: 0.55rem 0.65rem; border-radius: 0.6rem; }
  .card-head { padding-bottom: 0.35rem; margin-bottom: 0.4rem; }
  .card-dept { font-size: 0.92rem; }
  .card-type { font-size: 0.68rem; padding: 0.14rem 0.45rem; }
  .card-note { font-size: 0.74rem; }
  .card-score-box { margin-top: 0.4rem; padding-top: 0.4rem; gap: 0.3rem; }
  .card-grade-label { font-size: 0.68rem; }
  .card-grade-value { font-size: 1.25rem; }
  .card-score-label { font-size: 0.68rem; }
  .card-score-value { font-size: 0.88rem; }
  .card-verdict { font-size: 0.7rem; padding: 0.18rem 0.5rem; }
}
@media (max-width: 720px) {
  .dept-card { padding: 0.5rem 0.6rem; }
  .card-dept { font-size: 0.88rem; }
  .card-type { font-size: 0.64rem; padding: 0.12rem 0.4rem; }
  .card-note { font-size: 0.72rem; }
  .card-grade-value { font-size: 1.15rem; }
  .card-score-value { font-size: 0.85rem; }
  .card-verdict { font-size: 0.66rem; padding: 0.15rem 0.45rem; }
}

@media (max-width: 768px) {
  .summary-bar { padding: 0.75rem 0.95rem; gap: 0.5rem; flex-direction: column; align-items: flex-start; }
  .au-navbar { padding: 0.5rem 0; }
  /* 헤더 — 모바일에서 한 줄 유지(2줄로 밀리는 현상 방지) */
  .au-navbar .container { flex-direction: column; align-items: center; gap: 10px !important; }
  .au-navbar .navbar-brand { font-size: 0.95rem !important; white-space: nowrap; }
  .au-navbar .navbar-brand small { display: none; }
  .au-navbar img { height: 26px !important; }
  .au-navbar .nav-link.btn-back-input { padding: 0.32rem 0.75rem; font-size: 0.78rem; gap: 4px; white-space: nowrap; }
  .au-navbar .nav-link.btn-back-input i { font-size: 0.85rem; }
  .container.py-4 { padding-left: 0.65rem; padding-right: 0.65rem; }
  /* 안내 패널 — 모바일 컴팩트 */
  .ansan-info-toggle { padding: 0.6rem 0.85rem; }
  .ansan-info-toggle-title { font-size: 0.85rem; }
  .ansan-info-toggle-icon { width: 1.4rem; height: 1.4rem; font-size: 0.95rem; }
  .ansan-info-body { padding: 0.85rem 0.9rem 0.95rem; }
  .ansan-info-h { font-size: 0.92rem; margin-bottom: 0.45rem; }
  .ansan-info-table th { font-size: 0.78rem; padding: 0.5rem 0.45rem; width: 7rem; }
  .ansan-info-table td { font-size: 0.78rem; padding: 0.5rem 0.55rem; }
  .ansan-info-notes { padding: 0.65rem 0.75rem 0.65rem 1.95rem; }
  .ansan-info-notes li { font-size: 0.74rem; }
  /* 푸터 — 모바일 폰트/패딩 축소 */
  body > footer { padding: 1.3rem 0.85rem !important; font-size: 0.74rem !important; line-height: 1.6 !important; }
  /* 우측 하단 상단이동 버튼 */
  .scroll-top-btn { right: 14px; bottom: 14px; width: 38px; height: 38px; }
  .group-tabs { overflow-x: auto; -webkit-overflow-scrolling: touch; flex-wrap: nowrap; }
  .group-tab-btn { padding: 0.4rem 0.9rem; font-size: 0.8rem; white-space: nowrap; flex-shrink: 0; }
  .type-tabs { display: inline-flex; flex-wrap: wrap; gap: 3px; padding: 3px; }
  .type-tab-btn { padding: 0.25rem 0.65rem; font-size: 0.72rem; }
  .card-expand-panel { padding: 0 0.85rem 0.9rem; }
  .card-header { margin: 0 -0.85rem 0.65rem; padding: 0.55rem 0.75rem; }
  .detail-table { font-size: 0.76rem; width: 100%; table-layout: fixed; }
  .detail-table th, .detail-table td { padding: 0.4rem 0.3rem; word-break: keep-all; }
  .ref-row { flex-direction: column; gap: 0.15rem; }
  .ref-label { min-width: auto; font-size: 0.74rem; }
  .ref-value { font-size: 0.82rem; }
  /* 산출 결과 — 모바일 컴팩트 */
  .result-section { padding: 0.75rem 0.85rem; }
  .result-grid { gap: 0.7rem; }
  .result-label { font-size: 0.74rem; }
  .result-value { font-size: 1.1rem; }
  .result-value small { font-size: 0.78rem; }
  /* 합격판정 패널 — 모바일에서 세로 배치 */
  .verdict-panel { flex-direction: column; align-items: flex-start; gap: 0.2rem; padding: 0.6rem 0.85rem; }
  .verdict-panel-label { font-size: 0.95rem; }
  .verdict-panel-msg { font-size: 0.76rem; line-height: 1.45; }
  /* 추가 입력 — 모바일에서 label/input 세로 풀 너비 */
  .extra-input-row { gap: 0.25rem; }
  .extra-input-row label { min-width: 0; flex: 1 1 100%; font-size: 0.78rem; }
  .extra-input-row input,
  .extra-input-row select { width: 100% !important; flex: 1 1 100%; font-size: 0.82rem; padding: 0.42rem 0.55rem; box-sizing: border-box; }
  /* 점수 바 라벨 폰트 */
  .score-bar-labels { font-size: 0.68rem; }
  /* 차트 뷰 범례 — 작은 화면 컴팩트 */
  .dchart-legend { padding: 7px 10px; gap: 10px; font-size: 0.68rem; }
  .dchart-legend .lg-bar { width: 16px; }
}
@media (max-width: 380px) {
  .au-navbar .navbar-brand { font-size: 0.85rem !important; }
  .au-navbar img { height: 22px !important; }
  .au-navbar .nav-link.btn-back-input { padding: 0.28rem 0.65rem; font-size: 0.72rem; }
  .dept-card { padding: 0.5rem 0.7rem; }
  .card-dept { font-size: 0.92rem; }
  .card-grade-value { font-size: 1.15rem; }
  .card-score-value { font-size: 0.88rem; }
  body > footer { font-size: 0.7rem !important; padding: 1.1rem 0.7rem !important; }
  .ansan-info-toggle-title { font-size: 0.8rem; }
  .ansan-info-h { font-size: 0.88rem; }
  .ansan-info-table th { width: 6rem; font-size: 0.74rem; }
  .ansan-info-table td { font-size: 0.74rem; }
  .ansan-info-notes li { font-size: 0.7rem; }
}

/* ───────── 내 성적 분석 (안산 전용 · 수시 합격판정기준 패널 위 / 도넛+막대 리스트) ───────── */
.asa-wrap {
  border: 1px solid var(--slate-200);
  border-radius: 10px;
  background: linear-gradient(180deg, #f8fafc 0%, #ffffff 60%);
  padding: 14px 16px 16px;
  margin-bottom: 1.2rem;
  box-shadow: 0 2px 6px rgba(15,23,42,0.05);
}
.asa-title {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  font-size: 0.95rem; font-weight: 800; color: var(--slate-800, #1e293b);
  letter-spacing: -0.01em; margin-bottom: 14px;
}
.asa-title i { color: var(--cyan-600); font-size: 1.05rem; }
.asa-sub { font-size: 0.74rem; font-weight: 600; color: var(--slate-500); }

/* 본문 — 좌:도넛 / 우:학기 막대 리스트 */
.asa-v9 { display: grid; grid-template-columns: 170px 1fr; gap: 18px; align-items: center; }
.asa-donut {
  position: relative; width: 150px; height: 150px; border-radius: 50%;
  margin: 0 auto; display: flex; align-items: center; justify-content: center;
}
.asa-donut::before {
  content: ""; position: absolute; width: 108px; height: 108px;
  border-radius: 50%; background: #fff;
}
.asa-donut-in { position: relative; text-align: center; }
.asa-d-t { font-size: 0.68rem; color: var(--slate-500); font-weight: 600; }
.asa-d-big { font-size: 1.9rem; font-weight: 800; color: #065f46; line-height: 1; }
.asa-d-u { font-size: 0.7rem; color: var(--slate-400); }

.asa-side { min-width: 0; }
.asa-legend { font-size: 0.72rem; color: var(--slate-500); font-weight: 500; margin-bottom: 8px; }
.asa-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--cyan-600); vertical-align: middle; margin: 0 2px; }
.asa-list { display: flex; flex-direction: column; gap: 7px; }
.asa-row { display: flex; align-items: center; gap: 10px; }
.asa-l { flex: 0 0 84px; font-size: 0.76rem; font-weight: 700; color: var(--slate-600); }
.asa-row.asa-picked .asa-l::after { content: "●"; color: var(--cyan-600); margin-left: 5px; font-size: 0.6rem; vertical-align: middle; }
.asa-bar { flex: 1; height: 16px; background: var(--slate-100); border-radius: 5px; overflow: hidden; }
.asa-fill { height: 100%; border-radius: 5px; background: var(--cyan-600); }
.asa-row:not(.asa-picked) .asa-fill { background: var(--slate-300); }
.asa-v { flex: 0 0 54px; text-align: right; font-weight: 800; font-size: 0.92rem; color: var(--slate-700); }

/* 검정고시·외국고 안내 박스 */
.asa-note {
  font-size: 0.82rem; color: var(--slate-600); font-weight: 500; line-height: 1.65;
  background: var(--slate-50); border: 1px solid var(--slate-200); border-radius: 8px;
  padding: 12px 14px;
}
.asa-note i { color: var(--cyan-600); margin-right: 3px; }
.asa-note b { color: var(--slate-800); font-weight: 800; }
.asa-note-sub { font-size: 0.74rem; color: var(--slate-500); }

.asa-empty {
  font-size: 0.8rem; color: var(--slate-500); font-weight: 500;
  padding: 14px 4px 4px; line-height: 1.5;
}
.asa-empty i { color: var(--cyan-600); margin-right: 4px; }
.asa-empty b { color: var(--slate-700); }

@media (max-width: 768px) {
  .asa-wrap { padding: 12px 10px 12px; }
  .asa-title { font-size: 0.86rem; }
  .asa-v9 { grid-template-columns: 1fr; gap: 12px; }
  .asa-donut { width: 132px; height: 132px; }
  .asa-donut::before { width: 95px; height: 95px; }
  .asa-d-big { font-size: 1.7rem; }
  .asa-l { flex: 0 0 70px; font-size: 0.72rem; }
}
