/* ===========================================================
   Immunology 전용 규칙 — 로드 순서: base.css → spa.css → immunology.css (→ article.css · 섹션 css)
   공통 틀(상단 바·질문 블록·용어 카드·hover 용어)은 spa.css. 옛 SPA 틀 사본은 2026-10-18에 걷어냈다.
   =========================================================== */

/* 옛 색 이름 → base.css 토큰. article.css · 섹션 css(innate.css 등)가 아직 이 이름을 쓴다.
   body에 둔다 — :root에 두면 body[data-domain]의 --theme(blue)이 아니라 사이트 초록으로 굳는다. */
body {
  --ink: var(--text);
  --paper: var(--bg);
  --ink-soft: var(--body);
  --bg-soft: var(--surface-2);
  --green: var(--theme);
  --green-soft: var(--theme-soft);
  --blue: var(--theme);
  --rust: #C2531F;
  --slate: #4F5D75;
  --gold: #936F21;
}

.category-card p.kuby-map { margin: -14px 0 22px; color: var(--theme); font-size: 13px; font-weight: 700; }
.map-link { color: var(--theme); font-size: 14px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.map-label.has-wiki { color: var(--theme); }

.visual-explorer{margin:28px 0 24px}
.visual-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.visual-tabs button{padding:11px 16px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);cursor:pointer}
.visual-tabs button[aria-selected="true"]{background:var(--ink);border-color:var(--ink);color:white}
.visual-tabs button:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.visual-panel{margin:0;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.visual-panel[hidden]{display:none}
.diagram-scroll{overflow-x:auto}
.visual-panel img{display:block;width:100%;height:auto;min-width:760px}
.visual-panel figcaption{padding:16px 20px;font-size:.83rem;color:var(--muted);border-top:1px solid var(--line);line-height:1.7}
.visual-sources{display:block;margin-top:9px}
.visual-sources a,.svg-open{color:var(--blue)}
.svg-open{display:inline-block;margin-top:8px;font-weight:600}
.visual-callout{padding:14px 18px;border-left:4px solid var(--blue);background:var(--theme-soft);font-size:.9rem}
.term-section{margin:26px 0}
.term-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px}
.term-table-wrap table{width:100%;border-collapse:collapse;font-size:.88rem;background:white;min-width:630px}
.term-table-wrap th,.term-table-wrap td{padding:12px 15px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.term-table-wrap thead{background:var(--surface-2)}
.term-table-wrap tbody th{font-weight:600;min-width:160px;color:var(--blue)}
.term-table-wrap tbody tr:last-child>*{border-bottom:0}
.counts-details{margin:20px 0}.counts-details summary{cursor:pointer;color:var(--blue);font-weight:600;margin-bottom:10px}
@media(max-width:700px){.visual-tabs button{font-size:.82rem;padding:9px 11px}.visual-panel img{min-width:760px}}

.lead-map{margin:28px 0 32px}.panel-figure{margin:0}.visual-tabs button{text-align:left;min-width:170px}.visual-tabs strong{display:block}.visual-tabs small{display:block;margin-top:4px;opacity:.75}.axis-related{padding:0 20px}.axis-related button{background:#fff;border:1px solid var(--line);border-radius:7px;padding:10px 14px;color:var(--blue);cursor:pointer}.visual-panel>.term-section{padding:0 20px 20px}.visual-panel>.term-section h2{font-size:1.3rem}

.glossary-term::after{display:none}.glossary-term:hover::after,.glossary-term:focus::after{display:block}@media(max-width:820px){.glossary-term::after{position:fixed;left:14px;right:14px;bottom:16px;top:auto;width:auto;max-width:calc(100vw - 28px);z-index:50}}
