:root {
  /* k-arc.org 디자인 토큰과 맞춤 */
  --apple-blue: #0071e3;
  --apple-blue-h: #0077ed;
  --apple-dark: #1d1d1f;
  --apple-gray: #86868b;
  --apple-lightgray: #f5f5f7;
  --apple-border: #d2d2d7;

  --navy-900: #0d1f3c;
  --navy-800: #142a4d;
  --navy-700: var(--apple-blue);
  --blue-500: var(--apple-blue);
  --blue-100: #e8f2fd;
  --bg: #ffffff;
  --card: #ffffff;
  --surface: #ffffff;
  --surface-2: #fafbfe;
  --text: var(--apple-dark);
  --muted: var(--apple-gray);
  --border: var(--apple-border);
  --radius: 16px;
  --shadow: 0 4px 20px rgba(0, 0, 0, 0.06);

  --c-healthy: #0071e3;
  --c-acute: #e2453b;
  --c-chronic: #f0a3a8;
  --c-withdrawal: #f2c11d;
  --c-reinstatement: #8b5cf6;

  --chart-line: #c7cede;
  --chart-muted-fill: #c7cede;
}

/* ============ 다크모드 (헤더/버튼/그라디언트 카드 등 고정 다크 요소는 그대로 두고,
   페이지 배경·패널·본문 텍스트만 반전) ============ */
:root[data-theme="dark"] {
  color-scheme: dark;
  /* 눈의 피로를 줄이는 소프트 다크 팔레트: 순수 검정 대신 차콜/슬레이트 사용 */
  --apple-lightgray: #292f39;
  --apple-border: #424b59;
  --apple-blue: #62aaff;
  --apple-blue-h: #82bcff;
  --apple-gray: #b0b7c3;
  --navy-700: #62aaff;
  --blue-500: #62aaff;
  --blue-100: #203a56;
  --bg: #171a20;
  --card: #242a33;
  --surface: #232932;
  --surface-2: #2d343e;
  --text: #f2f4f7;
  --muted: #b0b7c3;
  --border: #424b59;
  --shadow: 0 4px 20px rgba(0, 0, 0, 0.22);

  --chart-line: #4a5565;
  --chart-muted-fill: #5b6576;
}

:root[data-theme="dark"] .topbar { background: #252b35; }
:root[data-theme="dark"] .state-box,
:root[data-theme="dark"] .brain-viz__info { background: #2c333e; }
:root[data-theme="dark"] .widget-card { background: #343c48; border-color: #4a5565; }
:root[data-theme="dark"] .widget-card__title { color: #e7ebf1; }
:root[data-theme="dark"] .widget-card__close { color: #aeb8c6; }
:root[data-theme="dark"] .score-panel .score-card { background: linear-gradient(135deg, #294365, #2b78c7); }

* { box-sizing: border-box; }

/* 2026-10-07 feedback: readable inputs, explicit intake and result status. */
.home-account-summary a { display: block; color: inherit; text-decoration: none; border-radius: 5px; }
.home-account-summary a:hover { color: var(--apple-blue); text-decoration: underline; }
.home-account-summary a:focus-visible { outline: 2px solid var(--apple-blue); outline-offset: 4px; }
.workflow-resources { max-width: 1300px; margin: 0 auto; padding: 40px 24px 64px; }
.workflow-resources header > p:last-child { color: var(--muted); line-height: 1.7; }
.workflow-resource-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; margin: 28px 0; }
.workflow-resource-grid .panel, .workflow-input-guide, .job-receipt { padding: 28px; line-height: 1.8; }
.workflow-input-guide li { margin: 12px 0; }
.workflow-resources a { color: var(--apple-blue); }
.job-receipt { max-width: 850px; margin: 32px auto; }
.job-receipt[hidden] { display: none; }
.job-receipt a { display: inline-block; padding: 10px 18px; border-radius: 9px; text-decoration: none; background: var(--apple-blue); color: var(--bg); }
.request-list-filters { display: flex; gap: 18px; flex-wrap: wrap; margin: 18px 0; }
.request-list-filters label { display: grid; gap: 8px; flex: 1 1 200px; }
.request-list-filters input, .request-list-filters select { min-height: 42px; border: 1px solid var(--border); border-radius: 9px; padding: 10px 12px; background: var(--surface); color: var(--text); }
.admin-report-upload { display: block; font-size: 12px; margin-top: 10px; color: var(--apple-blue); }
.admin-report-upload input { display: block; max-width: 210px; margin-top: 8px; }
.processed-format { display: flex; flex-wrap: wrap; gap: 16px; padding: 14px 0; }
.processed-format label { display: inline-flex; align-items: center; gap: 8px; }
:root[data-theme="dark"] .global-search input,
:root[data-theme="dark"] .kbds-filter input,
:root[data-theme="dark"] .kbds-filter select,
:root[data-theme="dark"] .search-filters input,
:root[data-theme="dark"] .search-filters select,
:root[data-theme="dark"] #view-kbds input,
:root[data-theme="dark"] #view-kbds select,
:root[data-theme="dark"] dialog input,
:root[data-theme="dark"] dialog select { background: #202b3a; color: #f2f4f7; border-color: #6c8099; }
:root[data-theme="dark"] .global-search { background: #202b3a; border-color: #6c8099; }
:root[data-theme="dark"] input::placeholder { color: #bac8db; opacity: 1; }
:root[data-theme="dark"] .search-results,
:root[data-theme="dark"] .search-result-item,
:root[data-theme="dark"] dialog,
:root[data-theme="dark"] .kbds-record,
:root[data-theme="dark"] .kbds-detail { background: #232d3a; color: #f2f4f7; }
:root[data-theme="dark"] .search-results__footer,
:root[data-theme="dark"] .search-results__notice,
:root[data-theme="dark"] .kbds-detail dl { background: #28374b; color: #cedbea; }
:root[data-theme="dark"] input:focus-visible, :root[data-theme="dark"] select:focus-visible { outline: 2px solid #82bcff; outline-offset: 2px; }
:root[data-theme="dark"] .kbds-record__meta { color: #88d8c4; }
:root[data-theme="dark"] .kbds-record__meta span:last-child { color: #88d8c4; }
:root[data-theme="dark"] .kbds-search-btn,
:root[data-theme="dark"] .kbds-record__use,
:root[data-theme="dark"] .global-search button,
:root[data-theme="dark"] .home-account-card__primary,
:root[data-theme="dark"] #searchBtn,
:root[data-theme="dark"] .my-request-pdf-btn:not(:disabled) { background: #1261a8; color: #fff; }
@media (max-width: 720px) { .workflow-resource-grid { grid-template-columns: 1fr; } .workflow-resources { padding: 24px 16px; } }

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--text);
  font-family: "Pretendard", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }
input, select, textarea, button { color: inherit; font-family: inherit; }
button { font-family: inherit; cursor: pointer; }

/* ============ Header ============ */
.topbar {
  background: var(--apple-dark);
  position: sticky;
  top: 0;
  z-index: 50;
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.topbar__inner {
  max-width: 1560px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  padding: 16px 24px;
}
.brand {
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  cursor: pointer;
}
.brand__mark {
  color: #fff;
  font-size: 17px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.brand__name {
  color: rgba(255,255,255,.45);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: .01em;
}

.topbar__controls { display: flex; align-items: center; gap: 10px; }
.topbar__auth-btn {
  display: inline-flex;
  align-items: center;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 999px;
  padding: 7px 14px;
  background: rgba(255,255,255,.08);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
}
.topbar__auth-btn[hidden], [hidden] { display: none !important; }
.topbar__auth-btn:hover { background: rgba(255,255,255,.14); }
.topbar__user-label { max-width: 160px; overflow: hidden; color: #fff; font-size: 11px; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.topbar__logout-btn { border: 1px solid rgba(255,255,255,.2); border-radius: 999px; padding: 7px 12px; background: transparent; color: rgba(255,255,255,.78); font-size: 11px; font-weight: 700; white-space: nowrap; }
.topbar__logout-btn:hover { background: rgba(255,255,255,.1); color: #fff; }
.topbar__admin-btn {
  border: 1px solid rgba(111, 176, 255, .6);
  border-radius: 999px;
  padding: 7px 12px;
  background: rgba(0, 113, 227, .25);
  color: #dceeff;
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
}
.topbar__admin-btn:hover { background: rgba(0, 113, 227, .5); }
.topbar__kbds-btn {
  border: 1px solid rgba(66, 196, 191, .65);
  border-radius: 999px;
  padding: 7px 12px;
  background: rgba(24, 168, 155, .18);
  color: #d9fffa;
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
}
.topbar__kbds-btn:hover { background: rgba(24, 168, 155, .38); }
.lang-toggle {
  display: inline-flex;
  align-items: center;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 999px;
  padding: 3px;
  gap: 2px;
  cursor: pointer;
  user-select: none;
}
.lang-toggle__opt {
  font-size: 12px;
  font-weight: 700;
  color: rgba(255,255,255,.45);
  padding: 5px 12px;
  border-radius: 999px;
  transition: background .15s, color .15s;
}
.lang-toggle__opt.is-active {
  /* 헤더는 라이트/다크 모드와 무관하게 항상 고정 다크톤이라 칩은 항상 흰 배경 + 고정 다크 텍스트 */
  background: #ffffff;
  color: #1d1d1f;
}
.lang-toggle:hover { background: rgba(255,255,255,.08); }

/* ============ ATLAS 홈 (랜딩) ============ */
#view-home {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background:
    radial-gradient(circle at 8% 4%, rgba(0,113,227,.10), transparent 28%),
    radial-gradient(circle at 92% 18%, rgba(139,92,246,.08), transparent 24%),
    linear-gradient(180deg, var(--bg) 0%, var(--surface-2) 58%, var(--bg) 100%);
}
#view-home::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: .42;
  background-image:
    linear-gradient(rgba(0,113,227,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,113,227,.055) 1px, transparent 1px);
  background-size: 46px 46px;
  mask-image: linear-gradient(to bottom, #000 0%, rgba(0,0,0,.6) 42%, transparent 86%);
}
#view-home::after {
  content: "";
  position: absolute;
  width: 620px;
  height: 620px;
  top: 110px;
  left: 50%;
  z-index: -1;
  pointer-events: none;
  transform: translateX(-50%);
  border: 1px solid rgba(0,113,227,.08);
  border-radius: 50%;
  box-shadow: 0 0 0 42px rgba(0,113,227,.025), 0 0 0 84px rgba(0,113,227,.018);
}
#view-home > * { position: relative; z-index: 1; }
.atlas-hero {
  max-width: 1040px;
  margin: 0 auto;
  padding: 42px 46px 34px;
  text-align: center;
  position: relative;
}
.atlas-hero::before {
  content: "";
  position: absolute;
  inset: 22px 20px 16px;
  z-index: 0;
  pointer-events: none;
  border: 1px solid rgba(0,113,227,.12);
  border-radius: 34px;
  background:
    radial-gradient(circle at 50% 0%, rgba(255,255,255,.75), transparent 50%),
    linear-gradient(135deg, rgba(255,255,255,.65), rgba(232,242,253,.15));
  box-shadow: 0 24px 60px rgba(13,31,60,.06);
}
.atlas-hero > * { position: relative; z-index: 1; }
:root[data-theme="dark"] #view-home::before { opacity: .22; background-image: linear-gradient(rgba(110,170,255,.09) 1px, transparent 1px), linear-gradient(90deg, rgba(110,170,255,.09) 1px, transparent 1px); }
:root[data-theme="dark"] .atlas-hero::before { background: linear-gradient(135deg, rgba(23,25,31,.88), rgba(30,32,39,.52)); border-color: rgba(110,170,255,.18); box-shadow: 0 24px 60px rgba(0,0,0,.32); }
.atlas-hero__logo { display: block; width: 96px !important; height: 82px !important; max-width: 96px !important; object-fit: contain; margin: 0 auto 10px; }
:root[data-theme="dark"] .atlas-hero__logo { content: url("../assets/karc-logo-light.png"); filter: none; opacity: 1; }
.atlas-hero__eyebrow {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  margin: 0 0 20px;
}
.atlas-hero__title {
  margin: 0 0 16px;
  font-size: 46px;
  letter-spacing: -0.01em;
  line-height: 1.1;
}
.atlas-hero__title-thin { font-weight: 300; color: var(--muted); }
.atlas-hero__title-bold { font-weight: 800; color: var(--text); }
.atlas-hero__desc {
  color: var(--muted);
  font-size: 15.5px;
  line-height: 1.65;
  max-width: 640px;
  margin: 0 auto 32px;
  word-break: keep-all;
  overflow-wrap: normal;
  text-wrap: balance;
}

.global-search {
  display: flex;
  max-width: 640px;
  margin: 0 auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
  box-shadow: 0 10px 28px rgba(13,31,60,.12), 0 0 0 5px rgba(0,113,227,.045);
  overflow: hidden;
}
.global-search input {
  flex: 1;
  border: none;
  padding: 15px 24px;
  font-size: 14.5px;
  outline: none;
  background: var(--surface);
  color: var(--text);
}
.global-search input::placeholder { color: var(--muted); }
.global-search button {
  border: none;
  background: var(--apple-blue);
  color: #fff;
  font-weight: 700;
  font-size: 14.5px;
  padding: 0 30px;
}
.global-search button:hover { background: var(--apple-blue-h); }
.global-search__hint { margin: 16px 0 0; font-size: 12.5px; color: var(--muted); }
.hint-link { color: var(--apple-blue); font-weight: 600; }
.hint-link:hover { text-decoration: underline; }

.search-panel { max-width: 640px; margin: 0 auto; }
.search-panel__label {
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin: 0 0 10px;
  text-align: left;
}
.search-results {
  text-align: left;
  margin-top: 12px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: var(--shadow);
  overflow: hidden;
}
.search-results__state { margin: 0; padding: 16px 20px; font-size: 13px; color: var(--muted); }
.search-results__total { margin: 0; padding: 10px 20px; font-size: 11.5px; color: var(--muted); background: var(--surface-2); }
.search-results__footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 8px 12px; border-top: 1px solid var(--border); background: var(--surface-2); }
.search-results__footer .search-results__total { padding: 2px 8px; background: transparent; }
.search-results__more { border: 1px solid var(--apple-blue); border-radius: 8px; padding: 8px 12px; background: var(--surface); color: var(--apple-blue); font-size: 11px; font-weight: 800; cursor: pointer; }
.search-results__more:hover { background: var(--blue-100); }
.search-result-item { padding: 14px 20px; border-bottom: 1px solid var(--border); }
.search-result-item:last-of-type { border-bottom: none; }
.search-result-item__title { margin: 0 0 3px; font-size: 14px; font-weight: 700; color: var(--text); }
.search-result-item__org { margin: 0 0 4px; font-size: 12px; font-weight: 600; color: var(--apple-blue); }
.search-result-item__desc { margin: 0 0 6px; font-size: 12.5px; color: var(--muted); line-height: 1.5; }
.search-result-item__id { margin: 0; font-size: 11px; color: var(--muted); font-weight: 600; }
.search-result-item__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; }
.search-result-item__use, .search-result-item__actions a { border: 1px solid var(--apple-blue); border-radius: 7px; padding: 6px 9px; background: var(--blue-100); color: var(--apple-blue); font-size: 10.5px; font-weight: 800; text-decoration: none; cursor: pointer; }
.search-result-item__use:hover, .search-result-item__actions a:hover { background: var(--apple-blue); color: #fff; }
.search-result-item__badge { display: inline-flex; margin-bottom: 7px; padding: 3px 8px; border-radius: 999px; background: var(--blue-100); color: var(--apple-blue); font-size: 10px; font-weight: 800; }
.search-result-item__metadata { margin-top: 10px; border-top: 1px dashed var(--border); padding-top: 8px; }
.search-result-item__metadata summary { cursor: pointer; color: var(--apple-blue); font-size: 11px; font-weight: 700; }
.search-result-item__metadata dl { display: grid; grid-template-columns: 1fr 1fr; gap: 7px 12px; margin: 9px 0 0; }
.search-result-item__metadata dl div { min-width: 0; }
.search-result-item__metadata dt { margin-bottom: 2px; color: var(--muted); font-size: 9.5px; font-weight: 700; }
.search-result-item__metadata dd { margin: 0; color: var(--text); font-size: 10.5px; line-height: 1.4; word-break: break-word; }

.search-filters {
  margin: 12px auto 0;
  text-align: left;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: color-mix(in srgb, var(--surface) 94%, transparent);
  overflow: hidden;
}
.search-filters summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 14px; cursor: pointer; color: var(--text); font-size: 12px; font-weight: 700; }
.search-filters__summary { max-width: 60%; color: var(--apple-blue); font-size: 11px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.search-filters__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 4px 14px 12px; }
.search-filters__grid label { display: flex; flex-direction: column; gap: 5px; color: var(--muted); font-size: 10.5px; font-weight: 700; }
.search-filters__grid label:first-child { grid-column: 1 / -1; }
.search-filters select { width: 100%; min-width: 0; padding: 9px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text); font-size: 12px; }
.search-filters__period { display: flex; align-items: center; gap: 5px; }
.search-filters__period input { width: 100%; min-width: 0; padding: 8px 7px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text); font-size: 10.5px; }
.search-filters__period-label { min-width: 0; }
.search-filters__footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; border-top: 1px solid var(--border); background: var(--surface-2); }
.search-filters__footer p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.45; }
.search-filters__footer button { flex: none; border: 1px solid var(--border); border-radius: 8px; padding: 7px 10px; background: var(--surface); color: var(--text); font-size: 10.5px; font-weight: 700; }

.hero-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  max-width: 640px;
  margin: 24px auto;
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .05em;
}
.hero-divider::before, .hero-divider::after { content: ""; flex: 1; height: 1px; background: var(--border); }

.analyze-cta { text-align: center; }

.crumb-back {
  display: inline-block;
  color: var(--apple-blue);
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 18px;
}

.tile-section { max-width: 1380px; margin: 0 auto; padding: 10px 24px 40px; }
.tile-section__title {
  font-size: 12.5px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 14px;
}

.tile-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.tile {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
  text-align: left;
  background: var(--surface);
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: 108px;
  transition: transform .15s, box-shadow .15s, border-color .15s;
  position: relative;
  overflow: hidden;
}
.tile:hover { transform: translateY(-3px); box-shadow: var(--shadow); border-color: var(--apple-blue); }
.tile::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; }
.tile--blue::before { background: #0071e3; }
.tile--red::before { background: #e2453b; }
.tile--purple::before { background: #8b5cf6; }
.tile--gray::before { background: #86868b; }
.tile__label {
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .03em;
  color: var(--text);
}
.tile__desc { font-size: 12.5px; color: var(--muted); line-height: 1.5; }

.tile--icon { align-items: center; text-align: center; gap: 10px; justify-content: center; }
.tile--icon .tile__icon svg { width: 32px; height: 32px; fill: var(--apple-blue); }
.tile--icon .tile__icon svg path[fill="none"] { fill: none; stroke: var(--apple-blue); }
.tile--icon .tile__label { font-size: 12px; }

.tool-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; }
.tool-item {
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 18px 10px;
  text-align: center;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--text);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  background: var(--apple-lightgray);
}
.tool-item__icon { font-size: 20px; color: var(--apple-blue); line-height: 1; }

.process-row { display: flex; align-items: stretch; gap: 10px; }
.process-step {
  flex: 1;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 18px 16px;
}
.process-step__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--apple-blue);
  color: #fff;
  font-size: 13px;
  font-weight: 800;
  margin-bottom: 10px;
}
.process-step__title { margin: 0 0 4px; font-size: 13px; font-weight: 700; color: var(--text); }
.process-step__desc { margin: 0; font-size: 11.5px; color: var(--muted); line-height: 1.5; }
.process-arrow { display: flex; align-items: center; color: var(--border); font-size: 18px; flex-shrink: 0; }

.stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.stat-tile {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 20px 16px;
  text-align: center;
}
.stat-tile__value { margin: 0 0 6px; font-size: 28px; font-weight: 800; color: var(--apple-blue); }
.stat-tile__unit { font-size: 15px; font-weight: 700; margin-left: 2px; }
.stat-tile__label { margin: 0; font-size: 11.5px; color: var(--muted); }


.hero__eyebrow {
  color: var(--muted);
  font-size: 13.5px;
  font-weight: 600;
  margin: 0 0 10px;
  text-transform: uppercase;
  letter-spacing: .03em;
}

/* ============ 분석 의뢰 ============ */
.request-page { max-width: 1320px; margin: 0 auto; padding: 44px 24px 56px; }
.request-page__head { margin-bottom: 22px; }
.request-page__eyebrow { margin: 16px 0 6px; color: var(--apple-blue); font-size: 11px; font-weight: 800; letter-spacing: .12em; }
.request-page__head h1 { margin: 0 0 8px; color: var(--text); font-size: 30px; font-weight: 800; line-height: 1.3; }
.request-page__lead { max-width: 780px; margin: 0; color: var(--muted); font-size: 14.5px; line-height: 1.65; word-break: keep-all; }
.request-guidance { margin: -5px 0 22px; padding: 15px 18px; border: 1px solid rgba(8,117,225,.22); border-left: 4px solid var(--apple-blue); border-radius: 12px; background: linear-gradient(115deg, rgba(232,243,255,.82), rgba(246,250,255,.76)); color: var(--text); backdrop-filter: blur(8px); }
.request-guidance strong { display: block; margin-bottom: 8px; color: var(--apple-blue); font-size: 12px; }
.request-guidance ul { display: grid; gap: 5px; margin: 0; padding-left: 18px; color: var(--muted); font-size: 11px; line-height: 1.55; }
.request-steps { display: flex; flex-wrap: wrap; gap: 8px; margin: 18px 0 0; padding: 0; list-style: none; }
.request-steps li { display: flex; align-items: center; gap: 8px; padding: 6px 14px 6px 6px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); cursor: pointer; transition: border-color .15s; }
.request-steps li:hover { border-color: var(--apple-blue); }
.request-steps li span { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--surface-2); color: var(--muted); font-size: 11px; font-weight: 800; }
.request-steps li b { color: var(--text); font-size: 12.5px; }
.request-steps li.is-done { border-color: rgba(25,135,84,.4); }
.request-steps li.is-done span { background: #198754; color: #fff; }

.request-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 24px; align-items: start; }
.request-form { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.request-section { padding: 24px; border: 1px solid var(--border); border-radius: 16px; background: var(--surface); box-shadow: var(--shadow); scroll-margin-top: 96px; }
.request-section__head { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--border); }
.request-section__num { display: grid; flex: none; place-items: center; width: 30px; height: 30px; border-radius: 9px; background: var(--apple-blue); color: #fff; font-size: 14px; font-weight: 800; }
.request-section__head h2 { margin: 3px 0 4px; color: var(--text); font-size: 18px; }
.request-section__head p { margin: 0; color: var(--muted); font-size: 12.5px; line-height: 1.55; word-break: keep-all; }
.request-section > .field:last-child, .request-section .pick-group:last-child { margin-bottom: 0; }
.request-help { margin: 8px 0 0; color: var(--muted); font-size: 11.5px; line-height: 1.5; }
.request-help--source { padding-left: 9px; border-left: 2px solid rgba(8,117,225,.35); }
.request-help.is-warning { color: #9a6700; font-weight: 700; }
#omicsChips { margin-bottom: 0; }
.chip-add:disabled { opacity: .35; cursor: not-allowed; }
.request-mode-intro { margin-bottom: 14px; padding: 12px 14px; border-left: 3px solid var(--apple-blue); border-radius: 0 9px 9px 0; background: var(--blue-100); }
.request-mode-intro strong { color: var(--text); font-size: 13px; }
.request-mode-intro p { margin: 4px 0 0; color: var(--muted); font-size: 11px; line-height: 1.55; }
#excelSheetGuide span { opacity: .45; }
#excelSheetGuide span.is-required { opacity: 1; border-color: var(--apple-blue); background: var(--apple-blue); color: #fff; }

.request-summary { position: sticky; top: 92px; padding: 22px; border: 1px solid rgba(0,113,227,.25); border-radius: 16px; background: var(--surface); box-shadow: var(--shadow); scroll-margin-top: 96px; }
.request-summary__eyebrow { display: flex; align-items: center; gap: 7px; margin: 0 0 6px; }
.request-summary__eyebrow span { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 6px; background: var(--apple-blue); color: #fff; font-size: 10.5px; font-weight: 800; }
.request-summary__eyebrow b { color: var(--apple-blue); font-size: 11.5px; }
.request-summary h2 { margin: 0 0 14px; color: var(--text); font-size: 19px; }
.request-summary__block > span { display: block; margin-bottom: 7px; color: var(--muted); font-size: 10.5px; font-weight: 800; letter-spacing: .03em; }
.request-summary__block { margin-bottom: 18px; }
.request-checklist { display: flex; flex-direction: column; gap: 10px; margin: 0; padding: 0; list-style: none; }
.request-checklist li { display: flex; align-items: flex-start; gap: 9px; }
.request-checklist__mark { position: relative; flex: none; width: 18px; height: 18px; margin-top: 1px; border: 2px solid var(--border); border-radius: 50%; }
.request-checklist li.is-ok .request-checklist__mark { border-color: #198754; background: #198754; }
.request-checklist li.is-ok .request-checklist__mark::after { content: ""; position: absolute; left: 4px; top: 1px; width: 4px; height: 8px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.request-checklist li.is-missing .request-checklist__mark { border-color: #d9332b; }
.request-checklist li.is-optional .request-checklist__mark { border-style: dashed; }
.request-checklist p { min-width: 0; margin: 0; }
.request-checklist b { display: block; color: var(--text); font-size: 12px; }
.request-checklist em { display: block; color: var(--muted); font-size: 11.5px; font-style: normal; overflow-wrap: anywhere; }
.request-checklist li.is-missing em { color: #c0392b; }
.request-checklist small { display: block; margin-top: 3px; color: var(--apple-blue); font-size: 10.5px; font-weight: 700; }
.request-outputs { margin: 0; padding-left: 17px; color: var(--text); font-size: 12px; line-height: 1.8; }
.request-summary__notice { margin: 0 0 14px; padding: 9px 11px; border-radius: 9px; background: var(--surface-2); color: var(--muted); font-size: 10.5px; line-height: 1.5; }
.request-summary .field-error { margin: 0 0 10px; }
.request-summary__submit { width: 100%; margin-top: 0; opacity: .55; }
.request-summary__submit.is-ready { opacity: 1; }

@media (max-width: 1080px) {
  .request-layout { grid-template-columns: 1fr; }
  .request-summary { position: static; }
}
@media (max-width: 640px) {
  .request-page { padding: 28px 16px 40px; }
  .request-page__head h1 { font-size: 23px; }
  .request-page__lead { font-size: 13px; }
  .request-section { padding: 16px; }
  .request-steps li { padding-right: 10px; }
  .request-steps li b { font-size: 11.5px; }
}

.cta-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--apple-blue);
  color: #fff;
  border: none;
  padding: 15px 36px;
  border-radius: 999px;
  font-weight: 700;
  font-size: 15px;
  margin-top: 6px;
}
.cta-btn:hover { background: var(--apple-blue-h); }

.pick-group { margin-bottom: 22px; }
.pick-group__label {
  font-size: 13px;
  font-weight: 700;
  color: var(--navy-700);
  margin: 0 0 10px;
}
.pick-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  max-width: 460px;
}
.pick-grid--wide { max-width: 620px; }

.pick-card {
  background: var(--surface);
  border: 1.5px solid var(--border);
  border-radius: 12px;
  padding: 14px 8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--text);
  transition: border-color .15s, transform .15s, box-shadow .15s;
}
.pick-card:hover { border-color: var(--blue-500); transform: translateY(-2px); box-shadow: var(--shadow); }
.pick-card.is-selected { border-color: var(--blue-500); background: var(--blue-100); color: var(--apple-blue); }
.pick-card--wide { padding: 14px 6px; font-size: 12px; }
.pick-icon svg { width: 30px; height: 30px; fill: var(--blue-500); }
.pick-icon svg path[fill="none"] { fill: none; stroke: var(--blue-500); }

.input-mode { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; width: 100%; margin: 0 0 16px; padding: 4px; border: 1px solid var(--border); border-radius: 11px; background: var(--surface-2); }
.input-mode button { border: 0; border-radius: 8px; padding: 10px 12px; background: transparent; color: var(--muted); font-size: 11.5px; font-weight: 700; }
.input-mode button.is-active { background: var(--surface); color: var(--apple-blue); box-shadow: 0 2px 9px rgba(0,0,0,.08); }
#rawInputPanel[hidden], #excelInputPanel[hidden] { display: none; }
.excel-request { width: 100%; }
.excel-request__intro { margin-bottom: 12px; padding: 12px 14px; border-left: 3px solid var(--apple-blue); border-radius: 0 9px 9px 0; background: var(--blue-100); }
.excel-request__intro strong { font-size: 13px; color: var(--text); }
.excel-request__intro p { margin: 4px 0 0; color: var(--muted); font-size: 11px; line-height: 1.55; }
.excel-request__scope { padding-top: 5px; border-top: 1px dashed rgba(47,111,237,.25); }
.metadata-workflow-guide { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0 0 14px; }
.metadata-workflow-guide > div { padding: 12px 14px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface-2); }
.metadata-workflow-guide span { display: block; margin-bottom: 5px; color: var(--apple-blue); font-size: 9px; font-weight: 850; letter-spacing: .08em; }
.metadata-workflow-guide strong { color: var(--text); font-size: 11px; }
.metadata-workflow-guide p { margin: 5px 0 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.template-download { display: inline-flex; margin-top: 8px; padding: 7px 10px; border: 1px solid var(--apple-blue); border-radius: 7px; color: var(--apple-blue); background: var(--surface); font-size: 10.5px; font-weight: 800; text-decoration: none; }
.template-download:hover { background: var(--apple-blue); color: #fff; }
.excel-request__grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(280px, .65fr); gap: 14px; align-items: start; }
.excel-request__upload, .excel-request__details { min-width: 0; }
.excel-request__details { padding: 14px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface-2); }
.excel-drop { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 132px; padding: 20px; border: 1.5px dashed var(--border); border-radius: 12px; background: var(--surface); text-align: center; transition: border-color .15s, background .15s; }
.excel-drop:hover, .excel-drop.is-dragover { border-color: var(--apple-blue); background: var(--blue-100); }
.excel-drop.has-file { border-style: solid; border-color: var(--apple-blue); }
.excel-drop__icon { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 38px; margin-bottom: 9px; border-radius: 8px; background: #167a51; color: #fff; font-size: 10px; font-weight: 800; letter-spacing: .04em; }
.excel-drop strong { color: var(--text); font-size: 12.5px; word-break: break-all; }
.excel-drop small { margin-top: 4px; color: var(--muted); font-size: 10.5px; }
.excel-file-list { display: flex; flex-direction: column; gap: 7px; margin-top: 9px; }
.excel-file-list[hidden] { display: none; }
.excel-file-item { display: flex; align-items: center; gap: 9px; padding: 9px 10px; border: 1px solid var(--border); border-radius: 9px; background: var(--surface); }
.excel-file-item__icon { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 28px; border-radius: 6px; background: #167a51; color: #fff; font-size: 8.5px; font-weight: 800; }
.excel-file-item p { min-width: 0; flex: 1; margin: 0; }
.excel-file-item b { display: block; overflow: hidden; color: var(--text); font-size: 10.5px; text-overflow: ellipsis; white-space: nowrap; }
.excel-file-item small { display: block; margin-top: 2px; color: var(--muted); font-size: 9.5px; }
.excel-file-item button { flex: none; width: 27px; height: 27px; border: 0; border-radius: 50%; background: var(--surface-2); color: var(--muted); font-size: 17px; line-height: 1; }
.excel-file-item button:hover { background: #feeceb; color: #d9332b; }
.excel-add-btn { display: inline-flex; align-items: center; gap: 5px; margin-top: 9px; padding: 8px 11px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--apple-blue); font-size: 10.5px; font-weight: 800; }
.excel-add-btn:hover { border-color: var(--apple-blue); background: var(--blue-100); }
.excel-add-btn > span:first-child { font-size: 14px; line-height: 1; }
.excel-inspection-message { margin: 9px 0 0; padding: 9px 11px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2); color: var(--muted); font-size: 10.5px; line-height: 1.5; }
.excel-inspection-message.is-success { border-color: #9ccdb2; background: #e9f7ee; color: #175f39; }
.excel-inspection-message.is-error { border-color: #e8aaa5; background: #fff0ee; color: #9a302b; }
.excel-metadata-preview { margin: 0 0 14px; padding: 11px 12px; border: 1px solid var(--border); border-radius: 9px; background: var(--surface); }
.excel-metadata-preview strong { display: block; margin-bottom: 8px; color: var(--text); font-size: 11px; }
.excel-metadata-preview dl { display: grid; gap: 6px; margin: 0; }
.excel-metadata-preview dl div { display: grid; grid-template-columns: 78px minmax(0, 1fr); gap: 8px; font-size: 10px; line-height: 1.4; }
.excel-metadata-preview dt { color: var(--muted); }
.excel-metadata-preview dd { margin: 0; color: var(--text); overflow-wrap: anywhere; }
.excel-validation { margin-top: 10px; border: 1px solid var(--border); border-radius: 11px; overflow: hidden; background: var(--surface); }
.excel-validation__file { display: flex; justify-content: space-between; gap: 10px; padding: 10px 12px; border-bottom: 1px solid var(--border); background: var(--surface-2); font-size: 11px; }
.excel-validation__file b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.excel-validation__file span { flex: none; color: var(--muted); }
.excel-validation ul { margin: 0; padding: 5px 12px; list-style: none; }
.excel-validation li { display: flex; align-items: flex-start; gap: 9px; padding: 8px 0; }
.excel-validation li > span { flex: none; width: 16px; height: 16px; margin-top: 1px; border: 2px solid var(--border); border-radius: 50%; }
.excel-validation li.is-valid > span { border-color: #198754; background: radial-gradient(circle, #198754 0 45%, transparent 48%); }
.excel-validation li.is-invalid > span { border-color: #d9332b; background: radial-gradient(circle, #d9332b 0 45%, transparent 48%); }
.excel-validation li.is-pending > span { border-color: #e0a21a; background: radial-gradient(circle, #e0a21a 0 35%, transparent 39%); }
.excel-validation li p { margin: 0; }
.excel-validation li b { display: block; color: var(--text); font-size: 10.5px; }
.excel-validation li small { display: block; margin-top: 2px; color: var(--muted); font-size: 9.5px; line-height: 1.4; }
.excel-sheet-guide { margin: 0 0 16px; padding: 0 0 14px; border: 0; border-bottom: 1px solid var(--border); border-radius: 0; background: transparent; }
.excel-sheet-guide p { margin: 0 0 8px; color: var(--text); font-size: 11px; font-weight: 700; }
.excel-sheet-guide div { display: flex; flex-wrap: wrap; gap: 6px; }
.excel-sheet-guide div span { padding: 5px 9px; border-radius: 6px; background: var(--surface); border: 1px solid var(--border); color: var(--apple-blue); font-size: 10px; font-weight: 800; }
.excel-sheet-guide small { display: block; margin-top: 8px; color: var(--muted); font-size: 9.5px; }
.field textarea { width: 100%; resize: vertical; padding: 9px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2); color: var(--text); font-size: 12px; }
.id-input-row { display: flex; gap: 7px; align-items: stretch; }
.id-input-row input { min-width: 0; flex: 1; }
.id-lookup-btn { flex: none; border: 1px solid var(--apple-blue); border-radius: 8px; padding: 0 10px; background: var(--blue-100); color: var(--apple-blue); font-size: 10.5px; font-weight: 800; cursor: pointer; }
.id-lookup-btn:hover { background: var(--apple-blue); color: #fff; }
.id-search-btn { flex: none; border: 1px solid #6e56cf; border-radius: 8px; padding: 0 10px; background: #f1edff; color: #5d45b5; font-size: 10.5px; font-weight: 800; cursor: pointer; }
.id-search-btn:hover { background: #6e56cf; color: #fff; }
.kbds-inline-search { margin-top: 9px; padding: 10px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface-2); }
.kbds-inline-search[hidden] { display: none; }
.kbds-inline-search__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px; align-items: stretch; }
.kbds-inline-search__row input,
.kbds-inline-search__row select { min-width: 0; width: 100%; padding: 8px 9px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--text); font-size: 11px; }
.kbds-inline-search__row button { border: 1px solid var(--apple-blue); border-radius: 7px; padding: 0 12px; background: var(--blue-100); color: var(--apple-blue); font-size: 10.5px; font-weight: 800; cursor: pointer; }
.kbds-inline-search__row button:hover { background: var(--apple-blue); color: #fff; }
.kbds-inline-search__filters { margin: 9px 0 0; border-color: var(--border); border-radius: 9px; background: var(--surface); }
.kbds-inline-search__filters summary { padding: 9px 11px; }
.kbds-inline-search__filters .search-filters__grid { gap: 8px; padding: 3px 11px 10px; }
.kbds-inline-search__filters .search-filters__grid select { padding: 8px 9px; font-size: 11px; }
.kbds-inline-search__filters .search-filters__footer { padding: 9px 11px; }
.kbds-inline-search__filters .search-filters__footer p { max-width: 78%; font-size: 9px; }
.kbds-inline-search__filters .search-filters__footer button { padding: 6px 8px; font-size: 9.5px; }
.kbds-inline-search__filters .search-filters__period input { padding: 7px 5px; font-size: 9.5px; }
.kbds-inline-search__hint { margin: 7px 1px 0; color: var(--muted); font-size: 10px; line-height: 1.4; }
.kbds-inline-search__results { margin-top: 8px; max-height: 260px; overflow-y: auto; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); }
.kbds-inline-search__results[hidden] { display: none; }
.kbds-inline-search__state { margin: 0; padding: 12px; color: var(--muted); font-size: 10.5px; line-height: 1.45; }
.kbds-search-dialog { width: min(820px, calc(100vw - 28px)); max-width: none; max-height: min(88dvh, 900px); margin: auto; padding: 0; overflow: auto; border: 0; border-radius: 18px; background: transparent; color: var(--text); box-shadow: 0 24px 80px rgba(7,20,40,.3); }
.kbds-search-dialog::backdrop { background: rgba(11,24,42,.62); backdrop-filter: blur(4px); }
.kbds-search-modal { padding: 22px; border: 1px solid rgba(0,113,227,.24); border-radius: 18px; background: var(--surface); }
.kbds-search-modal__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.kbds-search-modal__head h2 { margin: 5px 0 0; font-size: 22px; letter-spacing: -.04em; }
.kbds-search-modal__close { display: grid; width: 34px; height: 34px; flex: none; place-items: center; border: 0; border-radius: 50%; background: var(--surface-2); color: var(--muted); font-size: 23px; cursor: pointer; }
.kbds-search-modal__intro { margin: 8px 0 18px; color: var(--muted); font-size: 12px; line-height: 1.55; }
.kbds-search-modal__filters { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
.kbds-search-modal__filters label { display: grid; gap: 6px; color: var(--muted); font-size: 10.5px; font-weight: 800; }
.kbds-search-modal__filters select { width: 100%; min-width: 0; min-height: 39px; border: 1px solid var(--border); border-radius: 8px; padding: 0 10px; background: var(--surface); color: var(--text); font-size: 12px; }
.kbds-search-modal__filters select:disabled { opacity: .6; }
.kbds-search-modal__note { margin: 7px 0 0; color: var(--muted); font-size: 10px; }
.kbds-search-modal__note[hidden] { display: none; }
.kbds-search-modal__form { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px; margin-top: 13px; }
.kbds-search-modal__form input { min-width: 0; min-height: 44px; border: 1px solid var(--border); border-radius: 9px; padding: 0 13px; background: var(--surface); color: var(--text); font-size: 13px; }
.kbds-search-modal__form input:focus, .kbds-search-modal__filters select:focus { border-color: var(--apple-blue); outline: 0; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.kbds-search-modal__form button { min-width: 92px; border: 1px solid var(--apple-blue); border-radius: 9px; padding: 0 17px; background: var(--apple-blue); color: #fff; font-size: 12px; font-weight: 800; cursor: pointer; }
.kbds-search-modal__form button:hover { background: var(--apple-blue-h); }
.kbds-search-modal__status { margin: 12px 0 8px; color: var(--muted); font-size: 10.5px; }
.kbds-search-modal__results { display: grid; max-height: min(48dvh, 470px); gap: 9px; overflow: auto; padding: 1px 3px 2px 1px; }
.kbds-search-result { padding: 13px; border: 1px solid var(--border); border-radius: 11px; background: var(--surface-2); }
.kbds-search-result__top { display: flex; justify-content: space-between; gap: 12px; color: var(--apple-blue); font-size: 9px; font-weight: 800; }
.kbds-search-result__top b { color: var(--muted); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-weight: 600; }
.kbds-search-result h3 { margin: 6px 0 0; color: var(--text); font-size: 13px; line-height: 1.45; }
.kbds-search-result__org { margin: 4px 0 0; color: var(--apple-blue); font-size: 10.5px; font-weight: 700; }
.kbds-search-result__desc { margin: 6px 0 0; color: var(--muted); font-size: 10.5px; line-height: 1.5; }
.kbds-search-result__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.kbds-search-result__actions button, .kbds-search-result__actions a { display: inline-flex; min-height: 31px; align-items: center; border: 1px solid var(--apple-blue); border-radius: 7px; padding: 0 10px; background: var(--blue-100); color: var(--apple-blue); font-size: 10px; font-weight: 800; text-decoration: none; cursor: pointer; }
.kbds-search-result__actions button { background: var(--apple-blue); color: #fff; }
.kbds-search-result__actions button:hover { background: var(--apple-blue-h); }
.kbds-search-modal__empty, .kbds-search-modal__partial, .kbds-search-modal__error { margin: 0; padding: 14px; border-radius: 9px; background: var(--surface-2); color: var(--muted); font-size: 11px; line-height: 1.5; }
.kbds-search-modal__error a { display: inline-block; margin-left: 4px; color: var(--apple-blue); font-weight: 800; }
.kbds-inline-result { padding: 10px 11px; border-bottom: 1px solid var(--border); }
.kbds-inline-result:last-child { border-bottom: 0; }
.kbds-inline-result__title { margin: 0; color: var(--text); font-size: 11.5px; font-weight: 800; line-height: 1.4; }
.kbds-inline-result__org { margin: 3px 0 0; color: var(--apple-blue); font-size: 10px; }
.kbds-inline-result__id { margin: 4px 0 0; color: var(--muted); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 9.5px; }
.kbds-inline-result__desc { margin: 5px 0 0; color: var(--muted); font-size: 10px; line-height: 1.4; }
.kbds-inline-result__actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 7px; }
.kbds-inline-result__use { border: 1px solid var(--apple-blue); border-radius: 6px; padding: 5px 8px; background: var(--blue-100); color: var(--apple-blue); font-size: 9.5px; font-weight: 800; cursor: pointer; }
.kbds-inline-result__use:hover { background: var(--apple-blue); color: #fff; }
.kbds-inline-result__link { color: var(--apple-blue); font-size: 9.5px; font-weight: 700; }
.kbds-inline-result__note { color: var(--muted); font-size: 9px; }
.kbds-lookup-status { margin: 6px 0 0; padding: 7px 9px; border-radius: 7px; color: var(--muted); background: var(--surface-2); font-size: 10.5px; line-height: 1.45; }
.kbds-lookup-status[hidden] { display: none; }
.kbds-lookup-status.is-loading { color: var(--muted); }
.kbds-lookup-status.is-ok { color: #157347; background: #e9f7ef; }
.kbds-lookup-status.is-miss { color: #a83a3a; background: #fff0f0; }
.kbds-lookup-status a { color: inherit; font-weight: 800; }
.kbds-inline-connection { border: 1px solid #e8b7b2; border-left: 3px solid #c24136; border-radius: 9px; padding: 12px; background: #fff4f2; color: #67241e; }
.kbds-inline-connection strong { font-size: 11px; }
.kbds-inline-connection p { margin: 5px 0 8px; color: #783a34; font-size: 10px; line-height: 1.5; }
.kbds-inline-connection a { color: #8f2e25; font-size: 10px; font-weight: 800; }
.input-scope-note { margin: 6px 0 0; color: var(--muted); font-size: 10px; line-height: 1.45; }
.excel-request__details .field { margin-bottom: 0; }
.excel-request__details .field textarea { min-height: 116px; background: var(--surface); }


/* ============ 공통 view / panel ============ */
.panel {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 20px;
}

/* ============ 결과 화면 ============ */
.result { max-width: 1640px; margin: 0 auto; padding: 24px 24px 60px; }
.back-btn {
  background: none;
  border: none;
  color: var(--blue-500);
  font-weight: 700;
  font-size: 14px;
  margin-bottom: 16px;
}
.result__grid {
  display: grid;
  grid-template-columns: 280px 1fr 320px;
  gap: 22px;
  align-items: start;
}
.result__grid[hidden] { display: none; }

.side-panel, .score-panel { position: sticky; top: 20px; max-height: calc(100vh - 40px); overflow-y: auto; }
.side-panel h3 { margin-top: 0; font-size: 15px; color: var(--text); }
.field { margin-bottom: 14px; }
.field label { display: block; font-size: 12px; font-weight: 700; color: var(--muted); margin-bottom: 6px; }
.field select, .field input {
  width: 100%;
  padding: 9px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 13.5px;
  background: var(--surface-2);
  color: var(--text);
}
.field select option { background: var(--surface-2); color: var(--text); }
.field input::placeholder { color: var(--muted); }
.comparison-description { margin: 7px 0 0; padding: 8px 10px; border-radius: 7px; background: var(--blue-100); color: var(--muted); font-size: 10.5px; line-height: 1.5; }
.chip-list { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.chip-add {
  border: 1px dashed #b9c6e0;
  background: var(--blue-100);
  color: var(--navy-700);
  font-size: 12px;
  font-weight: 700;
  padding: 7px 10px;
  border-radius: 8px;
}
.chip-add--block { display: block; width: 100%; text-align: center; margin-top: 4px; }
.chip-add--dashed { display: block; width: 100%; text-align: center; margin: 8px 0 16px; background: var(--surface); }
.chip-add.is-active { background: var(--blue-500); color: #fff; border-style: solid; border-color: var(--blue-500); }
.sample-list { display: flex; flex-direction: column; gap: 8px; }
.sample-entry { border: 1px solid var(--border); border-radius: 9px; padding: 9px; background: var(--surface-2); }
.sample-entry__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 7px; font-size: 11px; color: var(--muted); }
.sample-entry__remove { border: 0; background: none; color: var(--muted); font-size: 17px; line-height: 1; cursor: pointer; }
.sample-entry__remove:hover { color: #e2453b; }
.sample-entry input { width: 100%; padding: 7px 8px; margin-top: 5px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--text); font-size: 12px; }
.data-add-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.data-add-actions button { flex: 1 1 210px; padding: 12px; border-style: dashed; }
.sample-entry { padding: 18px; border-radius: 14px; }
.sample-entry__head { margin-bottom: 16px; font-size: 14px; color: var(--text); }
.sample-entry .id-input-row input { margin-top: 0; min-width: 0; }
.sample-entry .field:last-child { margin-bottom: 0; }
.raw-file-list { display: grid; gap: 6px; margin-top: 8px; }
.raw-file-list:empty { display: none; }
.raw-file-list p { min-width: 0; overflow-wrap: anywhere; }
.my-request-workbook-link { overflow-wrap: anywhere; }
.field-error { margin: -4px 0 10px; color: #c62828; font-size: 11.5px; line-height: 1.4; }
.field-error[hidden] { display: none; }

.cond-summary { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.cond-summary__row {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--border);
  font-size: 12.5px;
}
.cond-summary__row:last-child { border-bottom: none; padding-bottom: 0; }
.cond-summary__row span { color: var(--muted); font-weight: 600; }
.cond-summary__row b { color: var(--text); font-size: 13.5px; word-break: break-word; }
.cond-summary__kbds { margin: 4px 0 0; font-size: 11px; font-weight: 600; word-break: break-word; }
.cond-summary__kbds--ok { color: #2fa563; }
.cond-summary__kbds--miss { color: var(--muted); }

.center-panel__top {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}
.center-panel h4 { margin: 0 0 12px; font-size: 14px; color: var(--text); }

.brain-box { display: flex; flex-direction: column; height: 100%; }

.brain-viz {
  flex: 1;
  min-height: 260px;
  border-radius: 10px;
  overflow: hidden;
  display: flex;
  border: 1px solid #0b1730;
}
.brain-viz__scan {
  flex: 1.3;
  position: relative;
  overflow: hidden;
  background:
    repeating-linear-gradient(0deg, rgba(255,255,255,.04) 0 2px, transparent 2px 8px),
    repeating-linear-gradient(90deg, rgba(255,255,255,.04) 0 2px, transparent 2px 8px),
    radial-gradient(circle at 50% 45%, #2c2c30, #0f0f11);
}
.brain-viz__scan.has-photo {
  /* 원본은 Healthy Control | Methamphetamine User 2분할 이미지 — 마커가 찍힌
     오른쪽(Meth User) 절반만 꽉 채워 보여준다 */
  background-image: url("../assets/meth-brain-pet-nida.jpg");
  background-size: 220% 100%;
  background-position: right center;
  background-repeat: no-repeat;
}
.img-credit { margin: 6px 0 0; font-size: 10px; color: var(--muted); text-align: right; }
.brain-viz__scan svg { width: 100%; height: 100%; }

.brain-viz__info {
  flex: 1;
  background: #14171f;
  color: #fff;
  padding: 12px 14px;
  overflow-y: auto;
}
.brain-viz__info-title { margin: 0 0 4px; font-size: 12px; font-weight: 700; }
.brain-viz__info-desc { margin: 0 0 10px; font-size: 10px; color: rgba(255,255,255,.55); line-height: 1.5; }
.brain-viz__info-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.brain-viz__info-list li { font-size: 10.5px; line-height: 1.5; border-top: 1px solid rgba(255,255,255,.1); padding-top: 6px; }
.brain-viz__info-list li:first-child { border-top: none; padding-top: 0; }
.brain-viz__info-list b { color: #6fb3ff; }
.brain-viz__info-list span { display: block; color: rgba(255,255,255,.65); }

.state-box {
  background: #14171f;
  border-radius: 10px;
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.state-box__head h4 { color: #fff !important; margin: 0; }

.widget-card {
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 10px;
  padding: 10px 12px 12px;
}
.widget-card__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.widget-card__title { margin: 0; font-size: 11.5px; color: rgba(255,255,255,.75); font-weight: 700; }
.widget-card__close {
  background: none;
  border: none;
  color: rgba(255,255,255,.35);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
  padding: 0 2px;
}
.widget-card__close:hover { color: rgba(255,255,255,.8); }
.widget-card[hidden] { display: none; }

.widget-card__sub { margin-top: 10px; }
.widget-card__sub:first-of-type { margin-top: 0; }
.widget-sub__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 3px; }
.widget-sub__name { font-size: 10px; color: rgba(255,255,255,.55); font-weight: 700; }
.widget-sub__badge { font-size: 10px; color: #6fcf97; font-weight: 700; background: rgba(111,207,151,.12); padding: 1px 6px; border-radius: 999px; }

.sparkline { width: 100%; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.1); border-radius: 8px; }
.sparkline--lg { height: 92px; }
.sparkline--sm { height: 46px; }

.cluster-box { margin-top: 4px; }
.cluster-plot { width: 100%; height: auto; background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px; }
.cluster-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 10px; font-size: 12px; color: var(--muted); }
.cluster-legend span { display: inline-flex; align-items: center; gap: 6px; }
.cluster-legend i { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }

.hoverable { cursor: pointer; transition: opacity .1s; }
.hoverable:hover { opacity: 0.7; }
circle.hoverable:hover { r: 6; }
.gauge circle.hoverable:hover, .gauge path.hoverable:hover { opacity: 1; filter: brightness(1.15); }

.pet-box { margin-top: 20px; }
.pet-box__grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 18px; }
.pet-chart { width: 100%; height: 260px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px; }

.pet-viewer { display: flex; flex-direction: column; gap: 8px; }
.pet-viewer__screen {
  height: 260px;
  border-radius: 10px;
  background: linear-gradient(160deg, #2c2c30, #0f0f11);
  border: 1px solid #0b1730;
  position: relative;
  overflow: hidden;
}
.pet-viewer__screen svg { width: 100%; height: 100%; display: block; }
.pet-viewer__screen::after {
  content: "PET/CT";
  position: absolute;
  bottom: 6px;
  left: 8px;
  color: rgba(255,255,255,.5);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .06em;
}
.pet-viewer__controls { display: flex; flex-direction: column; gap: 4px; }
.pet-viewer__controls input[type="range"] { width: 100%; }
.pet-viewer__slice { font-size: 10.5px; color: var(--muted); text-align: center; }

.omics-box { margin-top: 20px; }
.omics-compare-chart { width: 100%; height: auto; background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px; }
.omics-compare-legend { display: flex; gap: 16px; margin-top: 8px; font-size: 12px; color: var(--muted); }
.omics-compare-legend span { display: inline-flex; align-items: center; gap: 6px; }
.swatch { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.swatch--control { background: #c7cede; }
.swatch--sample { background: var(--apple-blue); }

.processing {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 90px 24px;
  text-align: center;
}
.processing[hidden] { display: none; }
.processing__spinner {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 3px solid var(--border);
  border-top-color: var(--apple-blue);
  animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
.processing__stage { font-size: 15px; font-weight: 700; color: var(--text); margin: 0; }
.processing__sub { font-size: 12.5px; color: var(--muted); margin: 0; max-width: 420px; }

.score-panel .score-card {
  background: linear-gradient(135deg, var(--navy-900), var(--navy-700));
  color: #fff;
  border-radius: 12px;
  padding: 18px;
  margin-bottom: 12px;
}
.score-card--sub { background: var(--blue-100); color: #0d1f3c; }
.score-card--heatmap { padding-bottom: 12px !important; }
.score-card__label { margin: 0; font-size: 12px; font-weight: 700; opacity: .85; }
.score-card__value { margin: 6px 0 2px; font-size: 34px; font-weight: 800; }
.score-card__value--sm { font-size: 22px; }
.score-card__hint { margin: 0; font-size: 11.5px; opacity: .75; }

.score-card--gauge { text-align: center; }
.gauge { width: 100%; max-width: 200px; height: auto; margin: 4px auto 0; display: block; }
.score-panel .score-card--gauge .gauge text { fill: #ffffff !important; }
.damage-heatmap { display: block; width: 100%; height: auto; margin-top: 8px; background: rgba(255,255,255,.04); border-radius: 7px; }
.heatmap-legend { display: flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 9px; opacity: .72; }
.heatmap-legend i { flex: 1; height: 5px; border-radius: 99px; background: linear-gradient(90deg, #1976d2, #26a69a, #fdd835, #e53935); }

.biomarker-hint { margin: -6px 0 10px; font-size: 11px; color: var(--muted); }
.biomarker-list .spark { display: block; width: 100%; height: 22px; margin-top: 4px; }

.field__or { color: var(--muted) !important; font-weight: 500 !important; font-size: 11px !important; }
.file-drop {
  display: block;
  border: 1.5px dashed var(--border);
  border-radius: 8px;
  padding: 9px 10px;
  font-size: 12px;
  color: var(--muted);
  text-align: center;
  cursor: pointer;
  background: var(--surface-2);
  transition: border-color .15s, color .15s;
}
.file-drop:hover { border-color: var(--apple-blue); color: var(--apple-blue); }
.file-drop.has-file { border-style: solid; border-color: var(--apple-blue); color: var(--apple-blue); font-weight: 700; }

.report-modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.5);
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 30px;
}

/* ============ 관리자 페이지 ============ */
.admin-page { max-width: 1400px; margin: 0 auto; padding: 42px 24px 72px; }
.admin-page__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 26px; }
.admin-page__head h1 { margin: 7px 0 0; font-size: 32px; letter-spacing: -.04em; }
.admin-page__subtitle { margin: 9px 0 0; color: var(--muted); font-size: 13px; }
.admin-refresh-btn { flex: none; border: 1px solid var(--apple-blue); border-radius: 9px; padding: 10px 14px; background: var(--blue-100); color: var(--apple-blue); font-size: 11px; font-weight: 800; }
.admin-refresh-btn:hover { background: var(--apple-blue); color: #fff; }
.admin-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 20px; }
.admin-stat { padding: 18px 20px; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); box-shadow: var(--shadow); }
.admin-stat span { display: block; color: var(--muted); font-size: 11px; font-weight: 700; }
.admin-stat strong { display: block; margin-top: 8px; color: var(--text); font-size: 28px; letter-spacing: -.04em; }
.admin-toolbar { display: flex; align-items: flex-end; justify-content: space-between; gap: 15px; margin-bottom: 10px; }
.admin-toolbar label { display: flex; flex-direction: column; gap: 5px; color: var(--muted); font-size: 11px; font-weight: 700; }
.admin-toolbar select { min-width: 150px; padding: 9px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text); font-size: 12px; }
.admin-load-status { min-height: 18px; margin: 0; color: var(--muted); font-size: 11px; }
.admin-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); box-shadow: var(--shadow); }
.admin-table { width: 100%; min-width: 850px; border-collapse: collapse; font-size: 12px; }
.admin-table th { padding: 12px 14px; border-bottom: 1px solid var(--border); background: var(--surface-2); color: var(--muted); font-size: 10.5px; font-weight: 800; text-align: left; white-space: nowrap; }
.admin-table td { padding: 14px; border-bottom: 1px solid var(--border); color: var(--text); vertical-align: middle; }
.admin-table tr:last-child td { border-bottom: 0; }
.admin-table code { color: var(--apple-blue); font-size: 10px; }
.admin-table__conditions { max-width: 310px; color: var(--muted) !important; line-height: 1.45; }
.admin-table__empty { padding: 40px 16px !important; color: var(--muted) !important; text-align: center; }
.admin-section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 32px 0 10px; }
.admin-section-head h2 { margin: 0; font-size: 19px; letter-spacing: -.03em; }
.admin-section-head p { margin: 0; color: var(--muted); font-size: 11px; }
.admin-status { display: inline-flex; border-radius: 999px; padding: 4px 8px; font-size: 10px; font-weight: 800; white-space: nowrap; }
.admin-status--queued { background: #fff4d6; color: #a66b00; }
.admin-status--running { background: var(--blue-100); color: var(--apple-blue); }
.admin-status--done { background: #e9f7ef; color: #157347; }
.admin-status--failed { background: #fff0f0; color: #a83a3a; }
.admin-status--cancelled { background: var(--surface-2); color: var(--muted); }
.admin-request-status { padding: 6px 7px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--text); font-size: 10px; }
.admin-user-role, .admin-user-active { min-width: 84px; padding: 6px 7px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--text); font-size: 10px; }
.admin-user-save { border: 1px solid var(--apple-blue); border-radius: 7px; padding: 6px 9px; background: var(--blue-100); color: var(--apple-blue); font-size: 10px; font-weight: 800; cursor: pointer; }
.admin-user-save:hover { background: var(--apple-blue); color: #fff; }

/* ============ K-BDS 데이터 카탈로그 ============ */
.kbds-page { max-width: 1480px; margin: 0 auto; padding: 42px 24px 78px; }
.kbds-page__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 24px; }
.kbds-page__head h1 { margin: 7px 0 0; font-size: 34px; letter-spacing: -.05em; }
.kbds-page__subtitle { margin: 9px 0 0; color: var(--muted); font-size: 13px; }
.kbds-page__actions { display: flex; align-items: center; gap: 9px; flex: none; }
.kbds-refresh-btn { border: 1px solid var(--apple-blue); border-radius: 9px; padding: 9px 12px; background: var(--blue-100); color: var(--apple-blue); font-size: 11px; font-weight: 800; }
.kbds-refresh-btn:hover { background: var(--apple-blue); color: #fff; }
.kbds-connection-notice { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin: 0 0 20px; padding: 16px 18px; border: 1px solid #e8b7b2; border-left: 4px solid #c24136; border-radius: 12px; background: #fff4f2; color: #67241e; }
.kbds-connection-notice[hidden] { display: none; }
.kbds-connection-notice__copy strong { display: block; font-size: 13px; }
.kbds-connection-notice__copy p { margin: 4px 0 0; color: #783a34; font-size: 11px; line-height: 1.55; }
.kbds-connection-notice > a { flex: none; border: 1px solid #c24136; border-radius: 8px; padding: 9px 11px; background: #fff; color: #8f2e25; font-size: 10.5px; font-weight: 800; text-decoration: none; }
.kbds-connection-notice > a:hover { background: #c24136; color: #fff; }
.kbds-layout { display: flex; flex-direction: column; gap: 24px; }
.kbds-filter-panel { display: grid; grid-template-columns: minmax(220px, 2fr) repeat(3, minmax(150px, 1fr)); gap: 14px 16px; align-items: end; padding: 20px 22px; border: 1px solid var(--border); border-radius: 16px; background: var(--surface); box-shadow: var(--shadow); }
.kbds-filter-panel__head { display: flex; grid-column: 1 / -1; align-items: flex-start; justify-content: space-between; gap: 10px; margin-bottom: 2px; }
.kbds-filter-panel__head h2 { margin: 4px 0 0; font-size: 18px; letter-spacing: -.04em; }
.kbds-filter-panel__head button { border: 0; background: transparent; color: var(--apple-blue); font-size: 10px; font-weight: 800; }
.kbds-filter-panel__kicker { color: var(--apple-blue); font-size: 9px; font-weight: 900; letter-spacing: .1em; }
.kbds-filter-field { display: flex; min-width: 0; flex-direction: column; gap: 6px; margin-top: 0; color: var(--muted); font-size: 10.5px; font-weight: 800; }
.kbds-filter-field input, .kbds-filter-field select { width: 100%; min-width: 0; padding: 9px 10px; border: 1px solid var(--border); border-radius: 8px; outline: 0; background: var(--surface); color: var(--text); font-size: 12px; }
.kbds-filter-field input:focus, .kbds-filter-field select:focus { border-color: var(--apple-blue); box-shadow: 0 0 0 3px rgba(0,113,227,.11); }
.kbds-filter-divider { display: flex; align-items: center; gap: 8px; margin: 19px 0 2px; color: var(--muted); font-size: 9.5px; font-weight: 800; }
.kbds-filter-divider::before, .kbds-filter-divider::after { content: ""; height: 1px; flex: 1; background: var(--border); }
.kbds-filter-note { margin: 14px 0 0; color: var(--muted); font-size: 10px; line-height: 1.5; }
.kbds-visual-filter-group { grid-column: 1 / -1; margin-top: 0; border: 1px solid var(--border); border-radius: 10px; background: var(--surface-2); }
.kbds-visual-filter-group > summary { padding: 10px 11px; color: var(--text); font-size: 10.5px; font-weight: 800; cursor: pointer; }
.kbds-visual-filter-group__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding: 0 10px 4px; }
.kbds-visual-filter-group__grid label { display: flex; min-width: 0; flex-direction: column; gap: 5px; color: var(--muted); font-size: 9.5px; font-weight: 700; }
.kbds-visual-filter-group__grid select { width: 100%; min-width: 0; padding: 8px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--text); font-size: 10px; }
.kbds-visual-filter-group .kbds-filter-note { margin: 7px 10px 10px; font-size: 9px; }
.kbds-search-btn { grid-column: 1 / -1; justify-self: end; width: min(100%, 190px); margin-top: 0; border: 0; border-radius: 9px; padding: 11px 13px; background: var(--apple-blue); color: #fff; font-size: 12px; font-weight: 800; }
.kbds-search-btn:hover { background: var(--apple-blue-h); }
.kbds-catalog-main { min-width: 0; }
.kbds-catalog-toolbar { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; margin: 2px 0 11px; }
.kbds-catalog-toolbar__eyebrow { margin: 0 0 4px; color: var(--apple-blue); font-size: 9px; font-weight: 900; letter-spacing: .1em; }
.kbds-catalog-toolbar h2 { margin: 0; font-size: 23px; letter-spacing: -.05em; }
.kbds-catalog-count { color: var(--muted); font-size: 11px; font-weight: 800; }
.kbds-language-note { margin: -5px 0 12px; color: var(--muted); font-size: 10px; line-height: 1.5; }
.kbds-catalog-notice { min-height: 0; margin-bottom: 10px; color: var(--muted); font-size: 10.5px; line-height: 1.5; }
.kbds-catalog-notice:not(:empty) { padding: 9px 11px; border-radius: 9px; background: var(--surface-2); }
.kbds-catalog-notice.is-error { color: #a83a3a; background: #fff0f0; }
.kbds-catalog-notice.is-note { color: var(--muted); }
.kbds-catalog-state { padding: 34px 20px; border: 1px dashed var(--border); border-radius: 14px; color: var(--muted); font-size: 12px; text-align: center; }
.kbds-catalog-state[hidden] { display: none; }
.kbds-catalog-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.kbds-record { display: flex; min-width: 0; flex-direction: column; padding: 16px; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); box-shadow: var(--shadow); }
.kbds-record__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 9px; }
.kbds-record__type { display: inline-flex; min-width: 0; border: 1px solid #cbdcf0; border-radius: 7px; padding: 5px 10px; background: #edf4fc; color: #315b8a; font-size: 11px; font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
:root[data-theme="dark"] .kbds-record__type { border-color: #45658e; background: #293f5e; color: #bddbff; }
.kbds-record__id { flex-shrink: 0; color: var(--muted); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; }
.kbds-record h3 { display: -webkit-box; overflow: hidden; margin: 0; color: var(--text); font-size: 14px; line-height: 1.45; letter-spacing: -.02em; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.kbds-record__org { margin: 6px 0 0; color: var(--apple-blue); font-size: 10.5px; font-weight: 700; }
.kbds-record__desc { display: -webkit-box; overflow: hidden; min-height: 32px; margin: 8px 0 0; color: var(--muted); font-size: 10.5px; line-height: 1.5; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.kbds-record__meta { display: flex; flex-wrap: wrap; gap: 7px 12px; margin-top: auto; padding-top: 13px; color: var(--muted); font-size: 9.5px; }
.kbds-record__meta span:last-child { color: #157347; }
.kbds-record__actions { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 13px; }
.kbds-record__detail, .kbds-record__use { border: 1px solid var(--apple-blue); border-radius: 7px; padding: 7px 9px; background: var(--blue-100); color: var(--apple-blue); font-size: 10px; font-weight: 800; }
.kbds-record__use { background: var(--apple-blue); color: #fff; }
.kbds-record__detail:hover { background: var(--apple-blue); color: #fff; }
.kbds-record__use:hover { background: var(--apple-blue-h); }
.kbds-detail-dialog { width: min(760px, calc(100vw - 32px)); max-width: none; max-height: min(86dvh, 820px); margin: auto; padding: 0; overflow: auto; border: 0; border-radius: 18px; background: transparent; color: var(--text); box-shadow: 0 24px 80px rgba(7,20,40,.28); }
.kbds-detail-dialog::backdrop { background: rgba(11,24,42,.58); backdrop-filter: blur(4px); }
.kbds-detail { margin: 0; padding: 24px; border: 1px solid rgba(0,113,227,.26); border-radius: 18px; background: var(--surface); box-shadow: var(--shadow); }
.kbds-detail__head { display: flex; align-items: center; justify-content: space-between; }
.kbds-detail__head button { display: grid; width: 32px; height: 32px; place-items: center; border: 0; border-radius: 50%; background: var(--surface-2); color: var(--muted); font-size: 21px; cursor: pointer; }
.kbds-detail h2 { margin: 12px 0 5px; color: var(--text); font-size: 21px; line-height: 1.4; letter-spacing: -.04em; }
.kbds-detail__id { margin: 0; color: var(--apple-blue); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; font-weight: 800; }
.kbds-detail__meta { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 18px 0 0; }
.kbds-detail__meta div { min-width: 0; padding: 10px; border-radius: 9px; background: var(--surface-2); }
.kbds-detail__meta dt { color: var(--muted); font-size: 9.5px; font-weight: 800; }
.kbds-detail__meta dd { overflow-wrap: anywhere; margin: 5px 0 0; color: var(--text); font-size: 11px; line-height: 1.45; }
.kbds-metadata-card { margin-top: 13px; padding: 12px; border-radius: 10px; background: var(--blue-100); color: var(--apple-blue); }
.kbds-metadata-card strong { font-size: 11px; }
.kbds-metadata-card p { margin: 5px 0 0; color: var(--muted); font-size: 10px; line-height: 1.5; }
.kbds-metadata-card a { display: inline-block; margin-top: 8px; color: var(--apple-blue); font-size: 10px; font-weight: 800; text-decoration: underline; }
.kbds-detail__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.kbds-detail-dialog .kbds-detail__meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.kbds-primary-btn, .kbds-secondary-btn { border: 1px solid var(--apple-blue); border-radius: 8px; padding: 9px 12px; font-size: 10.5px; font-weight: 800; }
.kbds-primary-btn { background: var(--apple-blue); color: #fff; }
.kbds-primary-btn:hover { background: var(--apple-blue-h); }
.kbds-secondary-btn { background: var(--blue-100); color: var(--apple-blue); }
.kbds-secondary-btn:hover { background: var(--apple-blue); color: #fff; }
.report-modal[hidden] { display: none; }
.report-modal__panel {
  background: #fff;
  border-radius: 14px;
  max-width: 980px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,.3);
}
.report-modal__toolbar {
  position: sticky;
  top: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 20px;
  border-bottom: 1px solid #e2e6f0;
  background: #fff;
  font-size: 13px;
  font-weight: 700;
  color: #64708a;
}
.report-modal__toolbar button {
  border: none;
  border-radius: 8px;
  padding: 8px 14px;
  font-size: 12.5px;
  font-weight: 700;
  margin-left: 8px;
}
#reportPrintBtn { background: var(--apple-blue); color: #fff; }
/* 리포트 모달/문서는 인쇄용 문서이므로 사이트 다크모드와 무관하게 항상 흰 배경 고정 */
#reportCloseBtn { background: #f1f4fa; color: #1d1d1f; }
.report-doc {
  --bg: #ffffff;
  --surface: #ffffff;
  --surface-2: #fbfcfe;
  --card: #ffffff;
  --text: #1d1d1f;
  --muted: #64708a;
  --border: #dfe5ef;
  --chart-line: #c7cede;
  --chart-muted-fill: #c7cede;
  color-scheme: light;
  padding: 0 42px 42px;
  font-size: 13px;
  color: #1d1d1f;
  line-height: 1.7;
  background: #fff;
}
.rd-cover { margin: 0 -42px 28px; padding: 34px 42px 30px; color: #fff; background: linear-gradient(125deg, #091a38 0%, #123b72 58%, #1674c7 100%); position: relative; overflow: hidden; }
.rd-cover::after { content: ""; position: absolute; width: 260px; height: 260px; right: -70px; top: -100px; border: 1px solid rgba(255,255,255,.16); border-radius: 50%; box-shadow: 0 0 0 24px rgba(255,255,255,.04), 0 0 0 48px rgba(255,255,255,.03); }
.rd-brand { display: flex; align-items: center; gap: 10px; font-size: 13px; letter-spacing: .08em; margin-bottom: 38px; position: relative; z-index: 1; }
.rd-brand span { opacity: .7; }
.rd-brand b { padding-left: 10px; border-left: 1px solid rgba(255,255,255,.35); font-size: 16px; }
.rd-kicker { margin: 0 0 10px; font-size: 9px; letter-spacing: .16em; opacity: .65; position: relative; z-index: 1; }
.rd-cover h1 { font-size: 28px; line-height: 1.25; margin: 0 0 8px; position: relative; z-index: 1; }
.rd-cover-sub { margin: 0; font-size: 13px; opacity: .82; position: relative; z-index: 1; }
.rd-cover-meta { display: flex; align-items: center; gap: 10px; margin-top: 24px; font-size: 10.5px; opacity: .7; position: relative; z-index: 1; }
.rd-status { border: 1px solid rgba(255,255,255,.4); border-radius: 999px; padding: 3px 9px; letter-spacing: .08em; font-size: 9px; }
.rd-section { margin-top: 28px; page-break-inside: avoid; }
.rd-section-title { display: flex; align-items: center; gap: 9px; margin-bottom: 10px; border-bottom: 1px solid #e8edf5; padding-bottom: 7px; }
.rd-subheading { margin: 17px 0 7px; color: var(--text); font-size: 12px; }
.rd-section-title > span { color: #1674c7; font-size: 10px; font-weight: 800; letter-spacing: .08em; }
.rd-note { margin: -2px 0 8px; padding: 7px 9px; border-radius: 7px; background: #f2f7fd; color: #64708a; font-size: 9.5px; line-height: 1.45; }
.report-doc h2 { font-size: 14px; margin: 0; color: #123b72; letter-spacing: -.01em; }
.report-doc .rd-meta { color: #86868b; font-size: 12px; margin-bottom: 18px; }
.report-doc table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.report-doc td { padding: 7px 9px; border-bottom: 1px solid #edf0f5; vertical-align: middle; }
.rd-condition-table { border: 1px solid #e5eaf2; border-radius: 10px; overflow: hidden; }
.rd-condition-table tr:nth-child(even) { background: #f8fafd; }
.rd-chart-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; align-items: start; }
.rd-chart-grid--small { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rd-chart { margin: 0 0 14px; padding: 13px 14px 14px; border: 1px solid #e5eaf2; border-radius: 11px; background: #fbfcfe; page-break-inside: avoid; break-inside: avoid; }
.rd-chart-grid > .rd-chart:only-child { grid-column: 1 / -1; }
.rd-chart__title { font-size: 11.5px; font-weight: 700; color: #86868b; margin: 0 0 6px; }
.rd-chart svg { width: 100%; max-width: 100%; height: auto !important; display: block; }
.rd-chart .gauge { max-width: 160px; }
.rd-chart .damage-heatmap { max-width: 420px; }
.report-doc .damage-heatmap text { fill: #64708a !important; }
.report-doc .cluster-plot,
.report-doc .omics-compare-chart,
.report-doc .sparkline { background: #fbfcfe; border-color: #dfe5ef; }
.report-doc .pet-chart {
  /* PET/CT 영상 차트는 실제 영상 뷰어와 동일하게 어두운 화면을 유지한다. */
  background: #191a1f;
  border-color: #343944;
}
.report-doc .pet-chart text { fill: #d9e1ee !important; }
.report-doc .pet-chart text[fill="#0071e3"] { fill: #55aaff !important; }
.rd-chart .pet-viewer__screen { height: 220px; }
.rd-chart .pet-viewer__screen svg { width: 100%; height: 100% !important; }
.rd-chart .sparkline { width: 100%; }
.report-doc .spark { width: 160px; height: 24px; display: block; }
.report-doc th { text-align: left; padding: 7px 4px; border-bottom: 1px solid #dfe4ee; color: #64708a; font-size: 11.5px; }
.report-doc .rd-condition-table { margin: 8px 0 18px; }
.report-doc .rd-condition-table td:first-child { width: 34%; color: #64708a; }
.rd-metrics { display: grid; grid-template-columns: 1.1fr 1fr 1.45fr 150px; gap: 10px; align-items: stretch; }
.rd-metric, .rd-metric__gauge { border: 1px solid #e5eaf2; border-radius: 11px; padding: 13px 14px; background: #fbfcfe; min-height: 76px; box-sizing: border-box; }
.rd-metric { display: flex; flex-direction: column; justify-content: center; gap: 2px; }
.rd-metric > span { color: #64708a; font-size: 10.5px; font-weight: 700; }
.rd-metric > strong { color: #123b72; font-size: 24px; line-height: 1.15; }
.rd-metric > strong small { font-size: 13px; }
.rd-metric > small { color: #86868b; font-size: 9.5px; line-height: 1.25; }
.rd-metric--primary { color: #fff; border: 0; background: linear-gradient(135deg, #0b2a55, #1674c7); }
.rd-metric--primary > span, .rd-metric--primary > small { color: rgba(255,255,255,.72); }
.rd-metric--primary > strong { color: #fff; font-size: 29px; }
.rd-metric__text { font-size: 14px !important; line-height: 1.35 !important; }
.rd-metric__gauge { display: flex; align-items: center; justify-content: center; background: #f5f8fc; }
.rd-metric__gauge svg { width: 132px; height: auto; display: block; }
.rd-biomarker-table td:first-child { width: 13%; }
.rd-biomarker-table td:nth-child(2) { width: 11%; }
.rd-biomarker-table td:nth-child(3) { width: 12%; }
.rd-biomarker-table td:nth-child(4) { width: 38%; }
.rd-footer { margin-top: 30px; padding-top: 14px; border-top: 1px solid #e5eaf2; color: #86868b; font-size: 10.5px; line-height: 1.5; }
.rd-legend { display: flex; flex-wrap: wrap; gap: 12px; margin: -10px 0 6px; font-size: 11px; color: #86868b; }
.rd-legend span { display: inline-flex; align-items: center; gap: 5px; }
.rd-legend i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }

@media print {
  @page { size: A4; margin: 14mm; }
  /* body의 다른 형제(topbar/main/footer)는 완전히 display:none 처리해야 함.
     visibility만 숨기면 레이아웃 높이가 그대로 남아 report-modal(position:fixed)이
     남은 페이지 수만큼 반복 인쇄되는 문제가 있었음. */
  body > *:not(.report-modal) { display: none !important; }
  .report-modal {
    position: static !important;
    inset: auto !important;
    background: none !important;
    padding: 0 !important;
    display: block !important;
  }
  .report-modal__panel {
    max-width: 100% !important;
    max-height: none !important;
    overflow: visible !important;
    box-shadow: none !important;
    border-radius: 0 !important;
  }
  .no-print { display: none !important; }
  .rd-cover, .rd-metric--primary { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .rd-section, .rd-chart, .rd-request-summary > div, .rd-request-biomarkers tr { page-break-inside: avoid; break-inside: avoid; }
  .report-doc { padding: 0; font-size: 10pt; }
  .rd-cover { margin: 0 0 18px; padding: 26px 28px 22px; }
  .rd-cover::after { display: none; }
  .rd-brand { margin-bottom: 24px; }
  .rd-section { margin-top: 20px; }
  .rd-metrics { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .rd-metric__gauge { grid-column: 1 / -1; min-height: 95px; }
  .rd-chart-grid, .rd-chart-grid--small { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .rd-chart { padding: 9px; }
  .rd-chart .pet-viewer__screen { height: 160px; }
  .report-doc table { font-size: 9pt; }
  .report-doc td { padding: 5px 6px; }
  .report-doc th { font-size: 8.5pt; }
}

.biomarker-list { list-style: none; margin: 0 0 16px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.biomarker-list li {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 9px 11px;
  font-size: 12.5px;
}
.biomarker-list b { color: var(--text); }
.biomarker-list span { display: block; color: var(--muted); font-size: 11.5px; margin-top: 2px; }
.biomarker-list__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.biomarker-list__head em { flex: none; border-radius: 999px; padding: 3px 7px; background: var(--blue-100); color: var(--apple-blue); font-size: 9.5px; font-style: normal; font-weight: 800; }
.chart-prototype-note { margin: -2px 0 8px; color: var(--muted); font-size: 10.5px; line-height: 1.45; }

.topbar__report-btn {
  background: var(--apple-blue);
  border: none;
  color: #fff;
  padding: 8px 16px;
  border-radius: 980px;
  font-weight: 600;
  font-size: 12.5px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.15s ease, transform 0.1s ease;
}
.topbar__report-btn:hover { background: #0077ed; }
.topbar__report-btn:active { transform: scale(0.97); }
@media (max-width: 640px) {
  .topbar__report-btn { padding: 7px 12px; font-size: 11.5px; }
}

.footer {
  padding: 0 24px 18px;
  border: 0;
  background: #1b1d21;
  color: #aeb7c3;
  text-align: left;
}
.footer__inner, .footer__bottom { width: min(100%, 1260px); margin: 0 auto; }
.footer__inner { display: grid; grid-template-columns: 1.2fr repeat(3,minmax(0,1fr)); gap: clamp(22px,4vw,54px); padding: 47px 0 42px; }
.footer__brand-name { color: #fff; font-size: 20px; font-weight: 850; letter-spacing: -.04em; }
.footer__brand > p { margin: 7px 0 24px; color: rgba(255,255,255,.35); font-size: 12px; }
.footer__brand small { color: rgba(255,255,255,.35); font-size: 10.5px; line-height: 1.7; }
.footer__group { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.footer__group h2 { margin: 0 0 4px; color: rgba(255,255,255,.35); font-size: 10px; font-weight: 850; letter-spacing: .13em; }
.footer__group a { color: rgba(255,255,255,.55); font-size: 12.5px; transition: color .15s; }
.footer__group a:hover, .footer__bottom a:hover { color: #fff; }
.footer__bottom { display: flex; justify-content: space-between; gap: 20px; padding-top: 20px; border-top: 1px solid rgba(255,255,255,.06); color: rgba(255,255,255,.22); font-family: ui-monospace,monospace; font-size: 10px; }
.footer__bottom a { color: inherit; }

.home-network { margin-top: 31px; padding-top: 26px; border-top: 1px solid var(--border); }
.home-network__heading { display: flex; align-items: center; justify-content: space-between; gap: 25px; margin-bottom: 17px; }
.home-network__eyebrow { margin: 0 0 7px; color: var(--apple-blue); font-size: 9px; font-weight: 900; letter-spacing: .14em; }
.home-network__heading h2 { margin: 0; color: var(--text); font-size: 20px; letter-spacing: -.04em; }
.home-network__heading > div:first-child > p:last-child { margin: 7px 0 0; color: var(--muted); font-size: 10px; line-height: 1.5; }
.home-network__grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.home-network__group { min-width: 0; padding: 17px 19px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); }
.home-network__group h3 { margin: 0 0 12px; color: var(--text); font-size: 12px; font-weight: 800; }
.home-network__group ul { display: grid; gap: 8px; margin: 0; padding-left: 16px; color: var(--muted); font-size: 11px; line-height: 1.5; }
.home-network__group li { padding-left: 2px; }
.home-funding-banner { display: flex; align-items: center; justify-content: space-between; gap: 28px; margin-top: 22px; padding: 22px 27px; border: 1px solid var(--border); border-radius: 18px; background: color-mix(in srgb, var(--surface-2) 88%, transparent); }
.home-funding-banner__copy { min-width: 0; }
.home-funding-banner__copy p { margin: 0 0 9px; color: var(--apple-blue); font-size: 9px; font-weight: 850; letter-spacing: .17em; }
.home-funding-banner__copy strong { color: var(--text); font-size: clamp(13px,1.3vw,17px); line-height: 1.6; }
.home-funding-banner__logo { display: grid; width: min(32%, 310px); min-width: 220px; min-height: 74px; flex: 0 0 auto; place-items: center; padding: 10px 14px; border-left: 1px solid var(--border); }
.home-funding-banner__logo img { display: block; width: 100%; height: 68px; border-radius: 12px; padding: 7px 12px; background: #fff; object-fit: contain; }

:root[data-theme="dark"] .home-network__group { border-color: #3a4655; background: #202833; }
:root[data-theme="dark"] .home-account-card { border-color: #3a4655; background: #202833; }
:root[data-theme="dark"] .home-account-card__avatar { background: #2d3b4d; color: #a9c6e8; }
:root[data-theme="dark"] .home-account-card__avatar--member { background: #253f5c; color: #b9d9ff; }
:root[data-theme="dark"] .home-account-summary > div { border-color: #3a4655; }
:root[data-theme="dark"] .home-account-summary dt { color: #e2e9f2; }
:root[data-theme="dark"] .home-account-summary dd, :root[data-theme="dark"] .home-account-card__member-links a { color: #aebbd0; }
:root[data-theme="dark"] .home-funding-banner { border-color: #3a4655; background: #202833; }
:root[data-theme="dark"] .home-funding-banner__logo { border-left-color: #3a4655; }

@media (max-width: 980px) {
  .footer__inner { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .home-network__grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 640px) {
  .footer { padding-right: 18px; padding-left: 18px; }
  .footer__inner { gap: 25px 18px; padding: 35px 0 30px; }
  .footer__brand { grid-column: 1 / -1; }
  .footer__brand > p { margin-bottom: 13px; }
  .footer__group { gap: 10px; }
  .footer__group a { font-size: 11px; }
  .footer__bottom { padding-top: 15px; }
  .home-network__heading { align-items: stretch; flex-direction: column; }
  .home-network__ministry { width: 100%; min-height: 76px; }
  .home-network__ministry img { height: 60px; }
  .home-network__grid { grid-template-columns: 1fr; }
}

@media (max-width: 980px) {
  .result { padding: 18px 16px 48px; }
  .result__grid { grid-template-columns: 1fr; }
  .side-panel, .score-panel { position: static; max-height: none; overflow-y: visible; }
  .center-panel__top { grid-template-columns: 1fr; }
  .pet-box__grid { grid-template-columns: 1fr; }
  .pet-viewer__screen { height: 200px; }
  .tile-grid { grid-template-columns: repeat(2, 1fr); }
  .tool-grid { grid-template-columns: repeat(3, 1fr); }
  .stat-row { grid-template-columns: repeat(2, 1fr); }
  .process-row { flex-wrap: wrap; }
  .process-step { min-width: 200px; }
  .process-arrow { display: none; }
  .atlas-hero__title { font-size: 34px; }
  .atlas-hero { padding: 48px 20px 30px; }
  .tile-section { padding: 10px 16px 32px; }
  .excel-request__grid { grid-template-columns: 1fr; }
  .kbds-filter-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kbds-filter-field--search { grid-column: 1 / -1; }
  .kbds-visual-filter-group__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kbds-catalog-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  .topbar__inner { padding: 12px 16px; gap: 12px; flex-wrap: wrap; row-gap: 8px; }
  .brand__name { display: none; }
  .topbar__controls { gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
  .topbar__admin-btn, .topbar__kbds-btn, .topbar__auth-btn, .topbar__logout-btn { padding: 6px 10px; font-size: 10.5px; }
  .lang-toggle__opt { padding: 5px 9px; font-size: 11px; }
  .topbar__report-btn:not([hidden]) { order: -1; flex: 1 0 100%; text-align: center; }

  .atlas-hero__logo { width: 72px !important; height: 61px !important; max-width: 72px !important; }
  .atlas-hero__title { font-size: 26px; }
  .atlas-hero__eyebrow { font-size: 10.5px; }
  .atlas-hero__desc { font-size: 14px; }
  .global-search { flex-direction: column; border-radius: 18px; }
  .global-search input { padding: 14px 18px; }
  .global-search button { padding: 14px; border-radius: 0 0 18px 18px; }
  .search-filters__grid { grid-template-columns: 1fr; }
  .search-filters__grid label:first-child { grid-column: auto; }
  .search-filters__footer { align-items: flex-start; flex-direction: column; }
  .input-mode { grid-template-columns: 1fr; }
  .search-result-item__metadata dl { grid-template-columns: 1fr; }
  .id-input-row { flex-wrap: wrap; }
  .id-input-row input { flex-basis: 100%; }
  .id-lookup-btn, .id-search-btn { min-height: 36px; }
  .kbds-inline-search__row { grid-template-columns: 1fr 1fr; }
  .kbds-inline-search__row input { grid-column: 1 / -1; }
  .kbds-inline-search__row button { min-height: 34px; }

  .tile-grid, .tile-grid--organ { grid-template-columns: repeat(2, 1fr); }
  .tool-grid { grid-template-columns: repeat(2, 1fr); }
  .stat-row { grid-template-columns: repeat(2, 1fr); }
  .process-row { flex-direction: column; }
  .process-arrow { transform: rotate(90deg); align-self: center; }

  .pick-grid, .pick-grid--wide { grid-template-columns: repeat(2, 1fr); max-width: none; }

  .brain-box { height: auto; }
  .brain-viz { flex: none; flex-direction: column; height: auto; }
  .brain-viz__scan { height: 220px; flex: none; }
  .brain-viz__info { max-height: none; overflow-y: visible; flex: none; }

  .cluster-plot, .omics-compare-chart, .pet-chart { height: auto; }

  .report-modal { padding: 8px; }
  .report-doc { padding: 0 18px 28px; }
  .rd-cover { margin: 0 -18px 22px; padding: 26px 18px 24px; }
  .rd-cover h1 { font-size: 22px; }
  .rd-brand { margin-bottom: 28px; }
  .rd-metrics, .rd-chart-grid, .rd-chart-grid--small { grid-template-columns: 1fr; }
  .rd-request-summary { grid-template-columns: 1fr; }
  .rd-metric__gauge { min-height: 90px; }
  .report-modal__toolbar { flex-direction: column; align-items: stretch; gap: 8px; }
  .report-modal__toolbar > div { display: flex; gap: 8px; }
  .report-modal__toolbar button { margin-left: 0; flex: 1; }
  .admin-page { padding: 28px 16px 52px; }
  .admin-page__head { align-items: flex-start; flex-direction: column; gap: 14px; }
  .admin-page__head h1 { font-size: 25px; }
  .admin-refresh-btn { width: 100%; }
  .admin-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-toolbar { align-items: flex-start; flex-direction: column; }
  .kbds-page { padding: 28px 16px 52px; }
  .kbds-page__head { align-items: flex-start; flex-direction: column; gap: 14px; }
  .kbds-page__head h1 { font-size: 26px; }
  .kbds-page__actions { width: 100%; justify-content: space-between; }
  .kbds-refresh-btn { flex: 1; }
  .kbds-catalog-list { grid-template-columns: 1fr; }
  .kbds-detail__meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kbds-detail-dialog { width: calc(100vw - 20px); max-height: 90dvh; }
  .kbds-search-dialog { width: calc(100vw - 16px); max-height: 92dvh; }
  .kbds-search-modal { padding: 16px; }
  .kbds-search-modal__filters { grid-template-columns: 1fr; gap: 8px; }
  .kbds-search-modal__form { grid-template-columns: 1fr; }
  .kbds-search-modal__form button { min-height: 40px; }
  .kbds-detail { padding: 18px; }
}

/* ============ ATLAS workspace refresh ============ */
#view-home::before, #view-home::after { display: none; }
#view-home > .atlas-hero, #view-home > .tile-section { display: none !important; }

.topbar { background: #142a4d; }
.topbar__inner { max-width: 1440px; min-height: 68px; gap: 24px; padding: 12px 28px; }
.brand__mark { font-size: 19px; font-weight: 800; }
.brand__name { color: rgba(255,255,255,.72); font-size: 18px; font-weight: 600; }
.primary-nav { display: flex; align-items: center; justify-content: center; gap: 6px; margin-right: auto; }
.primary-nav a { display: inline-flex; min-height: 38px; align-items: center; padding: 0 14px; border-radius: 9px; color: rgba(255,255,255,.75); font-size: 12px; font-weight: 700; transition: color .15s, background .15s; }
.primary-nav a:hover, .primary-nav a.is-active { background: rgba(255,255,255,.12); color: #fff; }
.primary-nav a.is-active { box-shadow: inset 0 -2px #53a1ff; border-radius: 9px 9px 6px 6px; }
.topbar__controls { gap: 10px; }
.account-menu { position: relative; }
.account-menu > summary { display: flex; min-height: 38px; align-items: center; gap: 8px; padding: 0 10px; border: 1px solid rgba(255,255,255,.18); border-radius: 999px; color: #fff; cursor: pointer; list-style: none; }
.account-menu > summary::-webkit-details-marker { display: none; }
.account-menu__avatar { display: grid; width: 27px; height: 27px; place-items: center; border-radius: 50%; background: #e6f1ff; color: #1259a8; font-size: 11px; font-weight: 900; }
.account-menu .topbar__user-label { max-width: 128px; font-size: 11px; }
.account-menu__chevron { display: grid; flex: 0 0 12px; width: 12px; height: 12px; place-items: center; color: rgba(255,255,255,.65); transition: transform .15s; }
.account-menu__chevron svg { display: block; }
.account-menu[open] .account-menu__chevron { transform: rotate(180deg); }
@media (prefers-reduced-motion: reduce) {
  .account-menu__chevron { transition: none; }
}
.account-menu__panel { position: absolute; top: calc(100% + 9px); right: 0; z-index: 80; display: flex; width: 205px; flex-direction: column; gap: 3px; padding: 7px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); box-shadow: 0 16px 44px rgba(8,24,48,.2); }
.account-menu__panel a, .account-menu__panel button { display: flex; width: 100%; min-height: 37px; align-items: center; border: 0; border-radius: 8px; padding: 0 10px; background: transparent; color: var(--text); font-size: 11px; font-weight: 700; text-align: left; }
.account-menu__panel a:hover, .account-menu__panel button:hover { background: var(--surface-2); color: var(--apple-blue); }
.account-menu__panel .topbar__admin-btn, .account-menu__panel .topbar__logout-btn { border: 0; color: var(--text); font-size: 11px; }
.account-menu__panel [hidden] { display: none !important; }
.topbar__auth-btn { padding: 8px 14px; background: #0875e1; border: 1px solid #0875e1; }
.topbar__auth-btn:hover { background: #0066cc; }
.topbar__auth-btn[hidden] { display: none !important; }

.home-dashboard { max-width: 1450px; margin: 0 auto; padding: 42px 28px 84px; }
.home-dashboard__top-grid { display: grid; grid-template-columns: minmax(0, 2.1fr) minmax(280px, .9fr); align-items: start; gap: 18px; }
.home-dashboard__intro {
  position: relative;
  box-sizing: border-box;
  isolation: isolate;
  overflow: hidden;
  max-width: none;
  min-width: 0;
  width: 100%;
  height: 400px;
  min-height: 400px;
  margin-bottom: 23px;
  border: 1px solid rgba(147,183,225,.2);
  border-radius: 20px;
  padding: 32px 34px 34px;
  color: #f4f7fb;
  background: linear-gradient(112deg, rgba(13,25,43,.97), rgba(17,43,73,.94) 58%, rgba(17,54,95,.92));
  box-shadow: 0 20px 48px rgba(8,25,47,.2);
  backdrop-filter: blur(10px);
}
.home-dashboard__intro > :not(.home-dashboard__network) { position: relative; z-index: 1; }
.home-dashboard__network { position: absolute; z-index: 0; top: -5%; right: -1%; width: min(47%, 560px); height: 110%; color: #3187e1; opacity: .36; pointer-events: none; }
.home-dashboard__network g:first-child { opacity: .6; }
.home-dashboard__network-nodes { fill: #49a0ff; }
.home-dashboard__network-nodes circle:nth-child(3n) { fill: #b5c3d2; opacity: .7; }
.home-dashboard__intro::after {
  content: "";
  position: absolute;
  z-index: 0;
  top: 2%;
  right: 3%;
  width: clamp(250px, 28%, 330px);
  height: 58%;
  background: url("../assets/karc-logo-blue-transparent.png?v=20260930-4") center / contain no-repeat;
  opacity: 1;
  mix-blend-mode: normal;
  filter: brightness(1.22) saturate(1.12);
  pointer-events: none;
  transform: none;
}
.home-dashboard__eyebrow { max-width: 69%; margin: 1px 0 13px; color: #f8fafc; font-size: clamp(21px, 2.05vw, 28px); font-weight: 850; letter-spacing: -.035em; line-height: 1.15; text-align: left; text-transform: uppercase; }
.home-dashboard__eyebrow span:nth-child(2) { color: #79bdff; }
.home-dashboard__intro h1 { max-width: 69%; margin: 0; color: #f8fafc; font-size: clamp(28px, 3vw, 37px); font-weight: 750; letter-spacing: -.045em; line-height: 1.24; text-align: left; text-wrap: balance; }
.home-dashboard__intro h1 .home-title-primary { color: #f8fafc; font-weight: 750; }
.home-dashboard__intro > p[data-i18n="home.dashboardIntro"] { max-width: 69%; margin: 11px 0 0; color: #ccd6e3; font-size: 13px; line-height: 1.75; text-align: left; word-break: keep-all; }
.home-dashboard__search { margin: 24px 0 0; padding: 0; border: 0; background: transparent; box-shadow: none; }
.home-dashboard__search .search-panel { max-width: none; margin: 0; }
.home-dashboard__search .search-panel__label { margin-bottom: 8px; color: #d0d9e5; font-size: 11px; letter-spacing: .025em; text-align: left; text-transform: none; }
.home-dashboard__search .global-search { max-width: none; min-height: 57px; border: 2px solid rgba(235,244,255,.48); box-shadow: 0 7px 20px rgba(0,0,0,.2), 0 0 0 2px rgba(255,255,255,.055); }
.home-dashboard__search .global-search { background: rgba(255,255,255,.93); backdrop-filter: blur(10px); }
.home-dashboard__search .global-search input { padding: 13px 20px; background: transparent; font-size: 13px; }
.home-dashboard__search .global-search button { display: grid; width: 78px; min-width: 78px; flex: 0 0 78px; place-items: center; padding: 0; }
.home-dashboard__search .global-search button svg { width: 23px; height: 23px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; }
.home-dashboard__advanced-link { display: block; margin: 10px 4px 0 auto; border: 0; padding: 3px 0; background: transparent; color: #a9d1ff; font-size: 11px; font-weight: 700; cursor: pointer; }
.home-dashboard__advanced-link:hover { color: #fff; text-decoration: underline; }
.home-dashboard__results { margin: 0 0 22px; }
.home-workflow-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 17px; }
.home-workflow-card { position: relative; display: flex; min-height: 320px; flex-direction: column; overflow: hidden; padding: 25px 26px 22px; border: 1px solid rgba(124,151,183,.28); border-radius: 17px; background: linear-gradient(145deg, rgba(255,255,255,.91), rgba(242,247,253,.78)); box-shadow: 0 14px 34px rgba(20,44,75,.09); backdrop-filter: blur(14px); transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.home-workflow-card:hover { transform: translateY(-3px); border-color: rgba(68,128,190,.42); box-shadow: 0 20px 42px rgba(20,44,75,.14); }
.home-workflow-card--catalog { border-top: 3px solid #1aa69a; }
.home-workflow-card--analysis { border-top: 3px solid var(--apple-blue); }
.home-workflow-card__top { display: flex; align-items: center; gap: 10px; }
.home-workflow-card__icon { display: grid; width: 33px; height: 33px; place-items: center; border-radius: 10px; background: var(--blue-100); color: var(--apple-blue); font-size: 10px; font-weight: 900; }
.home-workflow-card--catalog .home-workflow-card__icon { background: #e6f6f3; color: #128579; }
.home-workflow-card__eyebrow { color: var(--muted); font-size: 9px; font-weight: 900; letter-spacing: .11em; }
.home-workflow-card h2 { margin: 19px 0 8px; color: var(--text); font-size: 21px; letter-spacing: -.045em; }
.home-workflow-card > p { max-width: 520px; margin: 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.home-workflow-card ul { display: grid; gap: 8px; margin: 16px 0 21px; padding: 0; list-style: none; color: var(--text); font-size: 10.5px; }
.home-workflow-card li::before { content: "✓"; margin-right: 8px; color: var(--apple-blue); font-weight: 900; }
.home-workflow-card--catalog li::before { color: #128579; }
.home-workflow-card__action { display: flex; width: 100%; min-height: 43px; align-items: center; justify-content: space-between; margin-top: auto; border: 0; border-radius: 9px; padding: 0 14px; background: var(--apple-blue); color: #fff; font-size: 11px; font-weight: 800; text-align: left; }
.home-workflow-card--catalog .home-workflow-card__action { background: #117f77; }
.home-workflow-card__action:hover { filter: brightness(.95); }
.home-workflow-card__action span[aria-hidden="true"] { font-size: 17px; }
.home-dashboard__utility { display: flex; justify-content: flex-end; margin-top: 16px; }
.home-dashboard__utility a { color: var(--apple-blue); font-size: 11px; font-weight: 800; }
.home-account-card { box-sizing: border-box; display: flex; width: 100%; height: 400px; min-width: 0; flex-direction: column; justify-content: center; margin-bottom: 23px; padding: clamp(22px, 2.4vw, 34px); border: 1px solid var(--border); border-radius: 20px; background: var(--surface); box-shadow: 0 18px 42px rgba(8,25,47,.11); }
.home-account-card > section { width: 100%; }
.home-account-card__heading { display: flex; align-items: flex-start; gap: 14px; }
.home-account-card__avatar { display: grid; width: 54px; height: 54px; flex: 0 0 54px; place-items: center; border-radius: 16px; background: #eaf2fc; color: #567397; }
.home-account-card__avatar svg { width: 31px; height: 31px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
.home-account-card__avatar--member { border-radius: 50%; background: #e6f1ff; color: #1259a8; font-size: 18px; font-weight: 900; }
.home-account-card__eyebrow { margin: 1px 0 3px; color: var(--apple-blue); font-size: 9px; font-weight: 850; letter-spacing: .11em; }
.home-account-card h2 { margin: 0; color: var(--text); font-size: 21px; letter-spacing: -.04em; }
.home-account-card__heading div > p:last-child { margin: 7px 0 0; color: var(--muted); font-size: 11px; line-height: 1.55; }
.home-account-card__primary { display: flex; min-height: 48px; align-items: center; justify-content: center; margin-top: 26px; border: 1px solid #0875e1; border-radius: 9px; background: #0875e1; color: #fff; font-size: 13px; font-weight: 800; }
.home-account-card__primary:hover { background: #0066cc; }
.home-account-card__links { display: flex; align-items: center; justify-content: center; gap: 9px; margin-top: 17px; color: var(--muted); font-size: 11px; white-space: nowrap; }
.home-account-card__links span { color: var(--border); }
.home-account-card__links a:hover { color: var(--apple-blue); text-decoration: underline; }
.home-account-card__note { margin: 19px 0 0; padding-top: 14px; border-top: 1px solid var(--border); color: var(--muted); font-size: 10px; line-height: 1.5; text-align: center; }
.home-account-card__logout { display: block; width: 100%; min-height: 39px; margin-top: 9px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text); font-size: 11px; font-weight: 750; cursor: pointer; }
.home-account-card__logout:hover { border-color: var(--apple-blue); color: var(--apple-blue); }
.home-account-card__member-links { display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 15px; color: var(--muted); font-size: 11px; }
.home-account-card__member-links a { color: var(--muted); font-weight: 700; text-decoration: none; }
.home-account-card__member-links a:hover { color: var(--apple-blue); text-decoration: underline; }
.home-account-card__member-links a[aria-disabled="true"] { opacity: .55; pointer-events: none; }
.home-account-card #homeMemberName { overflow-wrap: anywhere; font-size: clamp(17px, 1.55vw, 21px); }
.home-account-summary { margin: 20px 0 0; }
.home-account-summary > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 39px; border-bottom: 1px solid var(--border); }
.home-account-summary dt { color: var(--text); font-size: 12px; font-weight: 750; }
.home-account-summary dd { margin: 0; color: var(--muted); font-size: 13px; font-variant-numeric: tabular-nums; }


.result-page-actions { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin: 0 0 18px; }
.result-page-actions > div { display: flex; align-items: center; gap: 9px; }
.result-page-actions__note { color: var(--muted); font-size: 10px; }
.result-run-error { margin: 30px auto; max-width: 720px; padding: 23px; border: 1px solid #efc9c6; border-radius: 14px; background: #fff8f7; color: #63302d; }
.result-run-error strong { font-size: 15px; }
.result-run-error p { color: #83514e; font-size: 12px; line-height: 1.6; }
.result-run-error button { border: 0; border-radius: 8px; padding: 9px 12px; background: var(--apple-blue); color: #fff; font-size: 11px; font-weight: 800; }

.mypage { max-width: 1120px; margin: 0 auto; padding: 42px 24px 76px; }
.mypage__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 21px; }
.mypage__head h1 { margin: 5px 0 0; font-size: 31px; letter-spacing: -.05em; }
.mypage__head p:last-child { margin: 7px 0 0; color: var(--muted); font-size: 12px; }
.mypage__identity { display: flex; align-items: center; gap: 12px; padding: 17px 19px; border: 1px solid var(--border); border-radius: 13px; background: var(--surface); }
.mypage__avatar { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 50%; background: var(--blue-100); color: var(--apple-blue); font-size: 16px; font-weight: 900; }
.mypage__identity > div { display: grid; gap: 4px; flex: 1; }
.mypage__identity strong { color: var(--text); font-size: 13px; }
.mypage__identity > div span { color: var(--muted); font-size: 10px; }
.mypage__role { border-radius: 999px; padding: 6px 9px; background: var(--surface-2); color: var(--muted); font-size: 9px; font-weight: 800; }
.mypage__stats { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; margin: 12px 0 22px; }
.mypage__stats article { padding: 14px 17px; border: 1px solid var(--border); border-radius: 11px; background: var(--surface); }
.mypage__stats span { display: block; color: var(--muted); font-size: 10px; font-weight: 700; }
.mypage__stats strong { display: block; margin-top: 7px; color: var(--text); font-size: 22px; }
.mypage-tabs { display: flex; gap: 19px; border-bottom: 1px solid var(--border); }
.mypage-tabs button { position: relative; border: 0; padding: 12px 2px; background: transparent; color: var(--muted); font-size: 11px; font-weight: 800; }
.mypage-tabs button.is-active { color: var(--apple-blue); }
.mypage-tabs button.is-active::after { position: absolute; right: 0; bottom: -1px; left: 0; height: 2px; background: var(--apple-blue); content: ""; }
.mypage-panel { padding-top: 20px; }
.mypage-panel__head { margin-bottom: 14px; }
.mypage-panel__head h2 { margin: 0; color: var(--text); font-size: 16px; letter-spacing: -.03em; }
.mypage-panel__head p { margin: 5px 0 0; color: var(--muted); font-size: 10px; }
.mypage-state { padding: 25px 15px; border: 1px dashed var(--border); border-radius: 11px; color: var(--muted); font-size: 11px; text-align: center; }
.my-request-list { display: grid; gap: 11px; }
.my-request-card { padding: 16px 18px; border: 1px solid var(--border); border-radius: 13px; background: var(--surface); box-shadow: var(--shadow); }
.my-request-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.my-request-card__id { color: var(--apple-blue); font-family: ui-monospace,monospace; font-size: 9px; font-weight: 800; }
.my-request-card h3 { margin: 5px 0; color: var(--text); font-size: 13px; }
.my-request-card time { color: var(--muted); font-size: 9px; }
.my-request-status { flex: none; border-radius: 999px; padding: 6px 9px; font-size: 9px; font-weight: 800; }
.my-request-status--queued { background: #fff4d6; color: #986400; }
.my-request-status--running { background: var(--blue-100); color: var(--apple-blue); }
.my-request-status--done { background: #e9f7ef; color: #157347; }
.my-request-status--failed { background: #fff0f0; color: #a83a3a; }
.my-request-status--cancelled { background: var(--surface-2); color: var(--muted); }
.my-request-progress { height: 4px; overflow: hidden; margin-top: 13px; border-radius: 99px; background: var(--surface-2); }
.my-request-progress span { display: block; height: 100%; border-radius: inherit; background: var(--apple-blue); transition: width .2s; }
.my-request-card__stage { margin: 6px 0 0; color: var(--apple-blue); font-size: 9px; }
.my-request-card__details { margin-top: 13px; border-top: 1px solid var(--border); padding-top: 10px; }
.my-request-card__details summary { color: var(--apple-blue); cursor: pointer; font-size: 10px; font-weight: 800; }
.my-request-card__details dl { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; margin: 11px 0 0; }
.my-request-card__details dl div { min-width: 0; padding: 9px 10px; border-radius: 8px; background: var(--surface-2); }
.my-request-card__details dt { color: var(--muted); font-size: 9px; font-weight: 700; }
.my-request-card__details dd { overflow-wrap: anywhere; margin: 4px 0 0; color: var(--text); font-size: 10px; line-height: 1.45; }
.my-request-result { display: grid; gap: 5px; margin-top: 10px; padding: 10px; border-radius: 8px; background: #fff8e6; color: #77520b; }
.my-request-result span { font-size: 9px; font-weight: 900; text-transform: uppercase; }
.my-request-result b { font-size: 10px; }
.my-request-result small { color: #856f42; font-size: 9px; }
.my-request-card__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin-top: 12px; }
.my-request-pdf-btn { display: inline-flex; min-height: 34px; align-items: center; justify-content: center; border: 1px solid var(--apple-blue); border-radius: 8px; padding: 0 11px; background: var(--apple-blue); color: #fff; font-size: 10px; font-weight: 800; }
.my-request-pdf-btn:hover { background: var(--apple-blue-h); }
.my-request-pdf-btn:disabled { border-color: var(--border); background: var(--surface-2); color: var(--muted); cursor: not-allowed; }
.my-request-workbook-link { display: inline-flex; min-height: 34px; align-items: center; justify-content: center; border: 1px solid var(--apple-blue); border-radius: 8px; padding: 0 11px; color: var(--apple-blue); background: var(--surface); font-size: 10px; font-weight: 800; text-decoration: none; }
.my-request-workbook-link:hover { background: var(--surface-2); }
.my-request-card__pdf-hint { color: var(--muted); font-size: 9px; }
.rd-request-summary { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin: 16px 0 20px; }
.rd-request-summary > div { min-width: 0; padding: 12px; border: 1px solid #e5eaf2; border-radius: 9px; background: #fbfcfe; }
.rd-request-summary span { display: block; color: #64708a; font-size: 9px; font-weight: 750; }
.rd-request-summary strong { display: block; overflow-wrap: anywhere; margin-top: 5px; color: #123b72; font-size: 12px; }
.rd-request-table { margin: 8px 0 18px; }
.rd-request-biomarkers td, .rd-request-biomarkers th { overflow-wrap: anywhere; }
.report-doc .rd-request-biomarkers td:first-child { width: 20%; }
.report-doc .rd-request-biomarkers td:nth-child(2) { width: 17%; }
.report-doc .rd-request-biomarkers td:nth-child(3) { width: 17%; }
.report-doc .rd-request-biomarkers td:nth-child(4) { width: 46%; }
.rd-request-note { margin-top: 12px; padding: 12px 14px; border: 1px solid #dfe5ef; border-radius: 9px; background: #f8fafd; color: #596575; font-size: 10px; line-height: 1.6; white-space: pre-wrap; }
.mypage-profile-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }
.mypage-form { display: flex; flex-direction: column; gap: 11px; padding: 19px; border: 1px solid var(--border); border-radius: 13px; background: var(--surface); }
.mypage-form label { display: grid; gap: 6px; color: var(--muted); font-size: 10px; font-weight: 800; }
.mypage-form input { width: 100%; min-height: 40px; border: 1px solid var(--border); border-radius: 8px; padding: 9px 11px; outline: 0; background: var(--surface); color: var(--text); font-size: 11px; }
.mypage-form input:focus { border-color: var(--apple-blue); box-shadow: 0 0 0 3px rgba(0,113,227,.1); }
.mypage-form label small { color: var(--muted); font-size: 9px; font-weight: 500; }
.mypage-primary-btn { min-height: 39px; margin-top: auto; border: 0; border-radius: 8px; background: var(--apple-blue); color: #fff; font-size: 10px; font-weight: 800; }
.mypage-primary-btn:disabled { opacity: .6; }
.mypage-form__feedback { margin: 0; border-radius: 8px; padding: 9px 10px; font-size: 10px; line-height: 1.5; }
.mypage-form__feedback.is-success { background: #e9f7ef; color: #157347; }
.mypage-form__feedback.is-error { background: #fff0f0; color: #a83a3a; }
.admin-role-lock { display: inline-flex; border-radius: 999px; padding: 6px 8px; background: #e8f2fd; color: #075cae; font-size: 9px; font-weight: 800; white-space: nowrap; }
.admin-user-save:disabled, .admin-user-active:disabled { cursor: not-allowed; opacity: .55; }
.rd-prototype-warning { margin: 20px 0 27px; border: 1px solid #e5c780; border-left: 4px solid #ca9419; border-radius: 8px; padding: 13px 15px; background: #fff8e6; color: #694c12; }
.rd-prototype-warning strong { font-size: 12px; }
.rd-prototype-warning p { margin: 5px 0 0; color: #755f32; font-size: 10px; line-height: 1.6; }
.rd-method-note ul { margin: 12px 0 0; padding-left: 18px; color: #596575; font-size: 10px; line-height: 1.7; }

/* ============ 문의 게시판 ============ */
.inquiry-page { max-width: 1120px; margin: 0 auto; padding: 46px 24px 78px; }
.inquiry-page__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 23px; }
.inquiry-page__head h1 { margin: 7px 0; font-size: 34px; letter-spacing: -.05em; }
.inquiry-page__head p:not(.hero__eyebrow) { max-width: 650px; margin: 0; color: var(--muted); font-size: 13px; line-height: 1.6; }
.inquiry-primary-btn, .inquiry-secondary-btn { min-height: 39px; border: 1px solid var(--apple-blue); border-radius: 9px; padding: 0 14px; font-size: 11px; font-weight: 800; cursor: pointer; }
.inquiry-primary-btn { background: var(--apple-blue); color: #fff; }
.inquiry-primary-btn:hover { background: var(--apple-blue-h); }
.inquiry-primary-btn:disabled { cursor: wait; opacity: .65; }
.inquiry-secondary-btn { background: var(--surface); color: var(--text); border-color: var(--border); }
.inquiry-feedback { margin: 0 0 16px; border-radius: 9px; padding: 11px 13px; font-size: 11px; }
.inquiry-feedback.is-success { color: #116246; background: #e7f7ef; }
.inquiry-feedback.is-error { color: #8f3029; background: #fff0ee; }
.inquiry-form { margin: 0 0 26px; padding: 20px; border: 1px solid var(--border); border-radius: 15px; background: var(--surface); box-shadow: var(--shadow); }
.inquiry-form[hidden] { display: none; }
.inquiry-form h2 { margin: 0 0 16px; font-size: 18px; }
.inquiry-form__grid { display: grid; grid-template-columns: minmax(180px,.7fr) minmax(0,1.3fr); gap: 14px; }
.inquiry-form__grid label, .inquiry-admin-form label { display: grid; gap: 6px; color: var(--muted); font-size: 10px; font-weight: 800; }
.inquiry-form input, .inquiry-form select, .inquiry-form textarea, .inquiry-admin-form select, .inquiry-admin-form textarea, .inquiry-toolbar select { width: 100%; min-width: 0; border: 1px solid var(--border); border-radius: 8px; padding: 10px 11px; outline: 0; background: var(--surface); color: var(--text); font: inherit; font-size: 12px; }
.inquiry-form textarea, .inquiry-admin-form textarea { resize: vertical; line-height: 1.6; }
.inquiry-form input:focus, .inquiry-form select:focus, .inquiry-form textarea:focus, .inquiry-admin-form select:focus, .inquiry-admin-form textarea:focus { border-color: var(--apple-blue); box-shadow: 0 0 0 3px rgba(0,113,227,.13); }
.inquiry-form__body { grid-column: 1 / -1; }
.inquiry-form__hint { margin: 12px 0; color: var(--muted); font-size: 10px; }
.inquiry-form__actions { display: flex; justify-content: flex-end; gap: 8px; }
.inquiry-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin: 0 0 12px; }
.inquiry-toolbar h2 { margin: 0; font-size: 19px; font-weight: 850; letter-spacing: -.03em; }
.inquiry-status-tabs { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 14px; padding-bottom: 13px; border-bottom: 1px solid var(--border); }
.inquiry-status-tab { display: inline-flex; align-items: center; gap: 8px; min-height: 34px; border: 1px solid var(--border); border-radius: 999px; padding: 0 12px; background: var(--surface); color: var(--muted); font: inherit; font-size: 10px; font-weight: 750; cursor: pointer; transition: border-color .16s ease, color .16s ease, background .16s ease; }
.inquiry-status-tab:hover { border-color: var(--apple-blue); color: var(--apple-blue); }
.inquiry-status-tab.is-active { border-color: var(--apple-blue); background: var(--blue-100); color: var(--apple-blue); }
.inquiry-status-tab b { display: inline-grid; min-width: 19px; height: 19px; place-items: center; border-radius: 999px; padding: 0 5px; background: var(--surface-2); color: inherit; font-size: 9px; }
.inquiry-status-tab.is-active b { background: var(--apple-blue); color: #fff; }
.inquiry-status-tab:focus-visible, .inquiry-primary-btn:focus-visible, .inquiry-secondary-btn:focus-visible { outline: 3px solid rgba(0,113,227,.32); outline-offset: 2px; }
.inquiry-list-state { margin: 0; border: 1px dashed var(--border); border-radius: 12px; padding: 26px 16px; color: var(--muted); text-align: center; font-size: 12px; }
.inquiry-list-state[hidden] { display: none; }
.inquiry-list { display: grid; gap: 12px; }
.inquiry-card { padding: 18px 20px; border: 1px solid var(--border); border-radius: 13px; background: var(--surface); box-shadow: var(--shadow); }
.inquiry-card__top, .inquiry-card__top > div { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.inquiry-card__top { justify-content: space-between; }
.inquiry-card__top time, .inquiry-card__requester { color: var(--muted); font-size: 10px; }
.inquiry-category, .inquiry-status { display: inline-flex; border-radius: 999px; padding: 5px 8px; font-size: 9px; font-weight: 850; }
.inquiry-category { background: var(--blue-100); color: var(--apple-blue); }
.inquiry-status--received { background: #fff4d6; color: #7a5500; }
.inquiry-status--in_progress { background: var(--blue-100); color: var(--apple-blue); }
.inquiry-status--answered { background: #e8f7ef; color: #116246; }
.inquiry-status--closed { background: var(--surface-2); color: var(--muted); }
.inquiry-card h2 { margin: 12px 0 6px; font-size: 15px; }
.inquiry-card__requester { margin: 5px 0 10px; }
.inquiry-card__body, .inquiry-reply p { margin: 0; color: var(--text); font-size: 12px; line-height: 1.7; white-space: pre-wrap; overflow-wrap: anywhere; }
.inquiry-reply { margin-top: 15px; border-left: 3px solid var(--apple-blue); border-radius: 0 8px 8px 0; padding: 11px 13px; background: var(--blue-100); }
.inquiry-reply strong { display: block; margin-bottom: 5px; color: var(--apple-blue); font-size: 10px; }
.inquiry-reply time { display: block; margin-top: 8px; color: var(--muted); font-size: 9px; }
.inquiry-admin-controls { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border); }
.inquiry-admin-actions { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 10px; }
.inquiry-admin-form { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: end; gap: 10px; }
.inquiry-admin-form[hidden] { display: none; }
.inquiry-admin-form__reply { min-width: 0; }
.inquiry-admin-form__reply textarea { min-height: 78px; }
.inquiry-admin-form__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
:root[data-theme="dark"] .inquiry-status-tab { border-color: #3b4654; background: #202832; color: #c0cad6; }
:root[data-theme="dark"] .inquiry-status-tab:hover { border-color: #55a4ff; color: #8fc4ff; }
:root[data-theme="dark"] .inquiry-status-tab.is-active { border-color: #3589ec; background: #203b59; color: #a9d1ff; }
:root[data-theme="dark"] .inquiry-status-tab b { background: #303a47; }
:root[data-theme="dark"] .inquiry-status-tab.is-active b { background: #1677e8; color: #fff; }
:root[data-theme="dark"] .inquiry-reply { background: #20364c; }

:root[data-theme="dark"] .score-card--sub { color: #eaf3ff; }
:root[data-theme="dark"] .excel-request__intro,
:root[data-theme="dark"] .request-mode-intro,
:root[data-theme="dark"] .excel-inspection-message.is-success { border-color: #37674b; background: #203b2d; color: #ade3bb; }
:root[data-theme="dark"] .excel-inspection-message.is-error { border-color: #74443f; background: #432b28; color: #ffb9ae; }
:root[data-theme="dark"] .request-help.is-warning { color: #f4c86a; }
:root[data-theme="dark"] .request-checklist li.is-missing em { color: #ff9b91; }
:root[data-theme="dark"] .request-summary { border-color: #3a516b; }
:root[data-theme="dark"] .request-guidance { border-color: rgba(79,153,232,.35); background: linear-gradient(115deg, rgba(26,49,75,.92), rgba(32,44,60,.86)); color: #e5edf7; }
:root[data-theme="dark"] .request-guidance ul { color: #b9c7d8; }
:root[data-theme="dark"] .home-workflow-card { border-color: rgba(130,154,183,.24); background: linear-gradient(145deg, rgba(35,45,58,.94), rgba(28,39,53,.86)); box-shadow: 0 14px 34px rgba(0,0,0,.18); }
:root[data-theme="dark"] .home-workflow-card:hover { border-color: rgba(95,160,228,.48); box-shadow: 0 20px 42px rgba(0,0,0,.3); }
:root[data-theme="dark"] .kbds-connection-notice { border-color: #71423e; border-left-color: #ff8274; background: #382725; color: #ffe4df; }
:root[data-theme="dark"] .kbds-connection-notice__copy p { color: #e6b9b2; }
:root[data-theme="dark"] .kbds-connection-notice > a { border-color: #c86156; background: #442d2a; color: #ffe4df; }
:root[data-theme="dark"] .kbds-connection-notice > a:hover { background: #bb5147; color: #fff; }
:root[data-theme="dark"] .kbds-lookup-status.is-ok { background: #183b31; color: #a9e8c9; }
:root[data-theme="dark"] .kbds-lookup-status.is-miss { background: #402724; color: #ffcbc4; }
:root[data-theme="dark"] .kbds-inline-connection { border-color: #71423e; border-left-color: #ff8274; background: #382725; color: #ffe4df; }
:root[data-theme="dark"] .kbds-inline-connection p { color: #e6b9b2; }
:root[data-theme="dark"] .kbds-inline-connection a { color: #ffd1cb; }
:root[data-theme="dark"] .inquiry-feedback.is-success { background: #173a31; color: #a9e8c9; }
:root[data-theme="dark"] .inquiry-feedback.is-error { background: #402724; color: #ffcbc4; }
:root[data-theme="dark"] .inquiry-status--received { background: #47391d; color: #f3d483; }
:root[data-theme="dark"] .inquiry-status--answered { background: #183b31; color: #a9e8c9; }
:root[data-theme="dark"] .admin-role-lock { background: #1e3852; color: #a9d1ff; }

:root[data-theme="dark"] .home-dashboard__intro { border-color: rgba(160,190,225,.2); background: linear-gradient(112deg, rgba(10,19,33,.98), rgba(15,37,64,.96) 58%, rgba(14,44,78,.94)); }
:root[data-theme="dark"] .home-dashboard__intro::after { filter: brightness(1.32) saturate(1.12); }
:root[data-theme="dark"] .home-workflow-card--catalog .home-workflow-card__icon { background: #203a3a; color: #7fd4cc; }
:root[data-theme="dark"] .admin-role-lock { background: #1e3852; color: #a9d1ff; }
:root[data-theme="dark"] .result-run-error { border-color: #653b39; background: #332625; color: #f0c3bf; }
:root[data-theme="dark"] .result-run-error p { color: #d6a7a3; }
:root[data-theme="dark"] .my-request-result, :root[data-theme="dark"] .rd-prototype-warning { border-color: #66552d; background: #38311e; color: #f2d993; }
:root[data-theme="dark"] .my-request-result small, :root[data-theme="dark"] .rd-prototype-warning p { color: #d6c38e; }
:root[data-theme="dark"] .rd-method-note ul { color: #abb5c3; }

@media (max-width: 980px) {
  .home-dashboard__top-grid { grid-template-columns: 1fr; gap: 0; }
  .home-dashboard__intro { height: 430px; min-height: 430px; }
  .home-account-card { height: auto; min-height: 340px; margin-bottom: 22px; padding: 22px 25px; }
  .home-account-card__heading { align-items: center; }
  .home-account-card__note { margin-top: 13px; }
  .home-account-summary { margin-top: 15px; }
}

@media (max-width: 700px) {
  .metadata-workflow-guide { grid-template-columns: 1fr; }
}

@media (max-width: 900px) {
  .topbar__inner { flex-wrap: wrap; gap: 8px 18px; }
  .primary-nav { order: 3; width: 100%; margin: 0; }
  .topbar__controls { margin-left: auto; }
}
@media (max-width: 640px) {
  .topbar__inner { padding: 10px 14px; }
  .primary-nav { justify-content: space-between; gap: 2px; }
  .primary-nav a { min-height: 35px; padding: 0 9px; font-size: 10px; }
  .topbar__controls { gap: 7px; }
  .account-menu .topbar__user-label { max-width: 86px; }
  .account-menu__panel { position: fixed; top: 98px; right: 12px; }
  .home-dashboard { padding: 32px 16px 54px; }
  .home-dashboard__intro { height: 430px; min-height: 430px; margin-bottom: 17px; padding: 22px 19px 21px; }
  .home-dashboard__intro::after { top: 2%; right: 2%; width: 29%; height: 30%; min-width: 84px; opacity: .9; transform: none; }
  .home-dashboard__network { right: -13%; width: 72%; height: 100%; opacity: .2; }
  .home-dashboard__eyebrow { max-width: 70%; font-size: clamp(17px, 4.8vw, 22px); letter-spacing: -.025em; }
  .home-dashboard__intro h1 { max-width: 68%; margin: 0; font-size: clamp(23px, 6vw, 30px); text-align: left; }
  .home-dashboard__intro > p[data-i18n="home.dashboardIntro"] { max-width: 100%; margin-left: 0; font-size: 12px; text-align: left; }
  .home-workflow-grid, .mypage-profile-grid { grid-template-columns: 1fr; }
  .home-workflow-card { min-height: auto; padding: 20px; }
  .home-dashboard__search { margin-top: 19px; }
  .request-guidance { padding: 13px 14px; }
  .request-guidance ul { font-size: 10px; }
  .home-dashboard__search .global-search { flex-direction: row; border-radius: 999px; }
  .home-dashboard__search .global-search { border-width: 2px; }
  .home-dashboard__search .global-search input { min-width: 0; padding: 12px 14px; font-size: 11px; }
  .home-dashboard__search .global-search button { width: 66px; min-width: 66px; flex-basis: 66px; padding: 0; border-radius: 0; }
  .home-funding-banner { align-items: stretch; flex-direction: column; gap: 12px; padding: 18px; }
  .home-funding-banner__logo { width: 100%; min-width: 0; min-height: 62px; padding: 12px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .home-funding-banner__logo img { max-width: 320px; height: 48px; }
  .result-page-actions { align-items: flex-start; flex-direction: column; }
  .result-page-actions > div { align-items: flex-start; flex-direction: column; gap: 6px; }
  .result-page-actions .topbar__report-btn { width: 100%; }
  .mypage { padding: 28px 15px 50px; }
  .mypage__head { align-items: flex-start; flex-direction: column; }
  .inquiry-page { padding: 30px 15px 50px; }
  .inquiry-page__head { align-items: flex-start; flex-direction: column; }
  .inquiry-page__head h1 { font-size: 26px; }
  .inquiry-form { padding: 15px; }
  .inquiry-form__grid { grid-template-columns: 1fr; }
  .inquiry-form__body { grid-column: auto; }
  .inquiry-toolbar { align-items: flex-start; flex-direction: column; }
  .inquiry-card { padding: 15px; }
  .inquiry-admin-form { grid-template-columns: 1fr; }
  .inquiry-admin-form__actions { justify-content: stretch; }
  .inquiry-admin-form__actions > button { flex: 1; }
  .kbds-connection-notice { align-items: flex-start; flex-direction: column; }
  .kbds-filter-panel { grid-template-columns: minmax(0, 1fr); padding: 17px; }
  .kbds-visual-filter-group__grid { grid-template-columns: minmax(0, 1fr); }
  .kbds-search-btn { width: 100%; }
  .mypage__head h1 { font-size: 25px; }
  .mypage__stats { gap: 7px; }
  .mypage__stats article { padding: 11px; }
  .mypage__stats strong { font-size: 19px; }
  .my-request-card { padding: 14px; }
  .my-request-card__details dl { grid-template-columns: 1fr; }
}

/* 단계별 등장 효과는 화면 구성만 강조하고 로고 위치는 바꾸지 않습니다. */
@keyframes atlas-section-enter {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes atlas-logo-appear {
  from { opacity: 0; }
  to { opacity: 1; }
}
.home-dashboard__intro { animation: atlas-section-enter .55s ease-out both; }
.home-dashboard__intro::after { animation: atlas-logo-appear .85s .12s ease-out both; }
.home-account-card { animation: atlas-section-enter .55s .08s ease-out both; }
.home-workflow-card { animation: atlas-section-enter .52s ease-out both; }
.home-workflow-card:nth-child(2) { animation-delay: .11s; }
.home-funding-banner { animation: atlas-section-enter .55s .12s ease-out both; }
.kbds-filter-panel { animation: atlas-section-enter .45s ease-out both; }
.kbds-record { transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; animation: atlas-section-enter .42s ease-out both; }
.kbds-record:nth-child(2n) { animation-delay: .06s; }
.kbds-record:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--apple-blue) 38%, var(--border)); box-shadow: 0 14px 28px rgba(20,44,75,.13); }
.home-workflow-card__action span[aria-hidden="true"] { transition: transform .2s ease; }
.home-workflow-card__action:hover span[aria-hidden="true"] { transform: translateX(4px); }
@media (prefers-reduced-motion: reduce) {
  .home-dashboard__intro, .home-dashboard__intro::after, .home-account-card, .home-workflow-card, .home-funding-banner, .kbds-filter-panel, .kbds-record { animation: none; }
  .kbds-record, .home-workflow-card__action span[aria-hidden="true"] { transition: none; }
}
/* Related keyword results are explicitly separate from exact matches. */
.kbds-related-heading {
  grid-column: 1 / -1;
  padding: 18px 20px;
  border: 1px solid var(--border, #d5dce6);
  border-left: 4px solid #1688d4;
  border-radius: 14px;
  background: rgba(22, 136, 212, .08);
}
.kbds-related-heading p { margin: 8px 0; font-size: 13px; line-height: 1.6; }
.kbds-related-heading small { font-size: 12px; overflow-wrap: anywhere; }
/* Registered pipeline resources, not internal development-status cards. */
/* Public intake and password-protected inquiry board. */
#homeNewInquiryRow[hidden], #inquiryNewBtn[hidden], .inquiry-list-view[hidden] { display: none; }
.request-public-guide { margin: 22px 0; padding: 20px 24px; border: 1px solid var(--border); border-radius: 15px; background: var(--surface-2); }
.request-public-guide h2 { font-size: 17px; margin: 0 0 10px; }
.request-public-guide p { margin: 8px 0; font-size: 14px; line-height: 1.8; color: var(--muted); }
.pipeline-dialog.access-dialog { width: min(520px, calc(100vw - 28px)); }
.access-dialog p { line-height: 1.8; font-size: 14px; }
.access-dialog label, .inquiry-unlock label { display: grid; gap: 8px; font-size: 13px; }
.access-dialog input, .inquiry-unlock input { width: 100%; padding: 12px; border: 1px solid var(--border); border-radius: 9px; background: var(--surface); color: var(--text); }
.access-dialog__actions { display: flex; justify-content: flex-end; gap: 12px; margin-top: 24px; align-items: center; }
.access-dialog__actions button { border: 1px solid var(--border); padding: 10px 16px; border-radius: 9px; background: var(--surface); color: var(--text); cursor: pointer; }
.inquiry-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 16px; }
.inquiry-table { width: 100%; border-collapse: collapse; background: var(--surface); }
.inquiry-table th, .inquiry-table td { padding: 18px 16px; border-bottom: 1px solid var(--border); text-align: left; }
.inquiry-table th { background: var(--surface-2); font-size: 13px; color: var(--muted); }
.inquiry-table td { font-size: 13px; }
.inquiry-table tr:last-child td { border-bottom: 0; }
.inquiry-table th:nth-child(2) { width: 60%; }
.inquiry-title-link { font: inherit; font-weight: 700; border: none; background: none; color: var(--text); text-align: left; cursor: pointer; padding: 3px 0; overflow-wrap: anywhere; text-decoration: none; }
.inquiry-title-link:hover { color: var(--apple-blue); }
.inquiry-table small { display: block; color: var(--muted); margin-top: 8px; }
.inquiry-lock { display: inline-block; width: 14px; height: 14px; margin-right: 6px; vertical-align: -2px; color: var(--muted); }
.inquiry-mine { margin-left: 8px; color: var(--apple-blue); font-size: 11px; white-space: nowrap; }
.inquiry-detail-page[hidden], .inquiry-unlock[hidden] { display: none; }
.inquiry-detail-page { scroll-margin-top: 110px; }
.inquiry-detail-back { display: inline-flex; margin-bottom: 18px; color: var(--portal-ink); font-size: 13px; font-weight: 700; text-decoration: none; }
.inquiry-detail-back:hover { color: var(--portal-blue); }
.inquiry-detail-state { padding: 24px 0; color: var(--muted); font-size: 14px; }
.inquiry-unlock { max-width: 480px; margin: 12px auto 36px; padding: 28px; border: 1px solid var(--portal-line); border-radius: 16px; background: var(--portal-card); }
.inquiry-unlock h2 { margin: 0; font-size: 20px; }
.inquiry-unlock > p { margin: 12px 0 24px; color: var(--muted); font-size: 13px; line-height: 1.7; }
.inquiry-unlock form { display: grid; gap: 14px; }
.inquiry-unlock #inquiryUnlockError { margin: 0; color: var(--badge-fail-ink); font-size: 13px; }
#inquiryDetailBody > .inquiry-card { padding: 28px; }
#inquiryDetailBody .inquiry-card h2 { margin: 20px 0; font-size: 23px; line-height: 1.45; overflow-wrap: anywhere; }
#inquiryDetailBody .inquiry-card__top time { font-size: 12px; }
#inquiryDetailBody .inquiry-card__body, #inquiryDetailBody .inquiry-reply p { font-size: 14px; line-height: 1.85; }
@media (max-width: 640px) {
  #inquiryDetailBody > .inquiry-card, .inquiry-unlock { padding: 20px; }
  #inquiryDetailBody .inquiry-card h2 { font-size: 20px; }
}
#inquiryUnlockError { color: #d64a4a; }
.inquiry-table :focus-visible, .access-dialog :focus-visible { outline: 3px solid var(--apple-blue); outline-offset: 3px; }
@media (max-width: 650px) {
  .inquiry-table th:first-child, .inquiry-table td:first-child { display: none; }
  .inquiry-table th, .inquiry-table td { padding: 13px 9px; font-size: 12px; }
  .inquiry-table th:nth-child(2) { width: 55%; }
  .inquiry-table time { font-size: 10px; }
}
.pipeline-toolbar { display: flex; align-items: end; flex-wrap: wrap; gap: 16px; margin: 28px 0 18px; padding: 20px; border: 1px solid var(--border); border-radius: 16px; background: var(--surface); }
.pipeline-toolbar label, .pipeline-editor label { display: grid; gap: 8px; min-width: 0; font-size: 13px; color: var(--text); }
.pipeline-toolbar__query { flex: 1; min-width: 190px !important; }
.pipeline-toolbar input, .pipeline-toolbar select, .pipeline-editor input:not([type=checkbox]), .pipeline-editor select, .pipeline-editor textarea { width: 100%; box-sizing: border-box; padding: 11px 12px; border: 1px solid var(--border); border-radius: 10px; color: var(--text); background: var(--surface); font: inherit; }
.pipeline-toolbar input::placeholder, .pipeline-editor input::placeholder { color: var(--muted); }
.pipeline-toolbar button, .pipeline-card button, .pipeline-admin-section button, .pipeline-editor button { padding: 11px 16px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); color: var(--text); font: inherit; font-weight: 700; cursor: pointer; }
.pipeline-toolbar button[hidden] { display: none; }
.pipeline-card button, #pipelineNew, #adminPipelineNew, #pipelineSave { background: var(--apple-blue); color: white; border-color: var(--apple-blue); }
.pipeline-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px; }
.pipeline-card { display: flex; flex-direction: column; gap: 14px; min-width: 0; padding: 26px; border: 1px solid var(--border); border-radius: 18px; background: var(--surface); box-shadow: var(--shadow); }
.pipeline-card h2 { margin: 0; font-size: 21px; overflow-wrap: anywhere; }
.pipeline-card p { margin: 0; color: var(--muted); line-height: 1.7; white-space: pre-line; overflow-wrap: anywhere; }
.pipeline-card__meta { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: var(--muted); }
.pipeline-card__meta span, .pipeline-card__resources span { font-size: 12px; padding: 5px 9px; border-radius: 7px; background: var(--surface-2); }
.pipeline-card__meta span { color: var(--apple-blue); font-weight: 700; }
.pipeline-card__resources { display: flex; flex-wrap: wrap; gap: 7px; margin-top: auto; }
.pipeline-card button { align-self: start; }
.pipeline-empty { grid-column: 1/-1; padding: 44px 24px; text-align: center; border: 1px dashed var(--border); border-radius: 18px; background: var(--surface); }
.pipeline-empty h2 { font-size: 20px; margin: 0 0 12px; }
.pipeline-empty p, .pipeline-intake-note { color: var(--muted); font-size: 13px; line-height: 1.7; }
.pipeline-request-paths { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px; margin-top: 28px; }
.pipeline-request-paths article { padding: 24px; border-radius: 16px; border: 1px solid var(--border); background: var(--surface-2); }
.pipeline-request-paths article > span { font-size: 12px; font-weight: 800; color: var(--apple-blue); }
.pipeline-request-paths h2 { font-size: 18px; margin: 12px 0; }
.pipeline-request-paths p { line-height: 1.7; color: var(--muted); font-size: 14px; }
.pipeline-request-paths a, .pipeline-detail-actions a { color: var(--apple-blue); font-weight: 700; text-decoration: none; }
.pipeline-dialog { box-sizing: border-box; width: min(850px, calc(100vw - 28px)); max-height: 88dvh; padding: 0 28px 28px; border: 1px solid var(--border); border-radius: 20px; color: var(--text); background: var(--surface); overflow: auto; }
.pipeline-dialog::backdrop { background: rgba(8,21,40,.55); backdrop-filter: blur(4px); }
.pipeline-dialog__head { display: flex; justify-content: space-between; gap: 18px; align-items: start; padding: 24px 0 18px; background: var(--surface); position: sticky; top: 0; z-index: 1; border-bottom: 1px solid var(--border); }
.pipeline-dialog__head h2 { margin: 0; font-size: 22px; overflow-wrap: anywhere; }
.pipeline-dialog__head button { flex: 0 0 32px; border: 0; border-radius: 8px; background: var(--surface-2); color: var(--text); font-size: 25px; cursor: pointer; }
.pipeline-detail-meta { color: var(--muted); font-size: 13px; }
#pipelineDetailBody section { margin: 24px 0; }
.pipeline-guide-text { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 14px; line-height: 1.8; }
.pipeline-resource-link { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin: 10px 0; padding: 14px; border: 1px solid var(--border); border-radius: 10px; color: var(--apple-blue); text-decoration: none; overflow-wrap: anywhere; }
.pipeline-resource-link small { color: var(--muted); }
.pipeline-detail-actions { display: flex; flex-wrap: wrap; gap: 12px; border-top: 1px solid var(--border); padding-top: 22px; }
.pipeline-detail-actions a { border: 1px solid var(--border); padding: 12px 15px; border-radius: 10px; }
.pipeline-editor form { display: grid; gap: 18px; padding-top: 20px; }
.pipeline-editor-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.pipeline-editor textarea { resize: vertical; }
.pipeline-editor fieldset { border: 1px solid var(--border); border-radius: 12px; padding: 15px; min-width: 0; }
.pipeline-editor fieldset p { color: var(--muted); font-size: 12px; line-height: 1.7; }
.pipeline-link-row { display: grid; grid-template-columns: 120px 1fr 1.5fr auto; gap: 8px; margin: 10px 0; }
.pipeline-file-keep { display: flex !important; align-items: center; gap: 10px; margin-bottom: 12px; overflow-wrap: anywhere; }
.pipeline-file-keep small { color: var(--muted); }
.pipeline-editor-actions { display: flex; justify-content: flex-end; gap: 10px; }
.pipeline-admin-section { margin-top: 36px; }
.pipeline-admin-section .admin-section-head { align-items: center; gap: 20px; }
.pipeline-admin-list article { display: flex; flex-wrap: wrap; gap: 18px; align-items: center; padding: 20px; border-bottom: 1px solid var(--border); }
.pipeline-admin-list article > div { flex: 1; min-width: 180px; }
.pipeline-admin-list p { margin: 8px 0 0; color: var(--muted); font-size: 13px; }
.pipeline-visibility { color: var(--muted); font-size: 12px; }
.pipeline-toolbar :focus-visible, .pipeline-dialog :focus-visible, .pipeline-card button:focus-visible, .pipeline-request-paths a:focus-visible { outline: 3px solid var(--apple-blue); outline-offset: 3px; }
@media (max-width: 700px) {
  .pipeline-list, .pipeline-request-paths, .pipeline-editor-grid { grid-template-columns: 1fr; }
  .pipeline-toolbar { align-items: stretch; }
  .pipeline-toolbar label { flex: 1 1 100%; }
  .pipeline-link-row { grid-template-columns: 1fr 1fr; }
  .pipeline-link-url { grid-column: 1/-1; }
  .pipeline-dialog { padding: 0 18px 18px; }
  .pipeline-admin-section .admin-section-head { align-items: start; flex-direction: column; }
}

/* ============ 분석 도구: 데이터 시각화 (ATLAS Explorer) ============ */
.explorer { max-width: 1320px; margin: 0 auto; padding: 44px 24px 12px; }
.explorer__head h1 { margin: 0 0 8px; color: var(--text); font-size: 30px; font-weight: 800; }
.explorer__head p:last-child { max-width: 760px; margin: 0; color: var(--muted); font-size: 14px; line-height: 1.65; word-break: keep-all; }
.explorer-overview { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(300px, 1fr); gap: 18px; margin-top: 22px; align-items: stretch; }
.explorer-matrix-card, .explorer-source, .explorer-panel, .explorer-main { border: 1px solid var(--border); border-radius: 16px; background: var(--surface); box-shadow: var(--shadow); }
.explorer-matrix-card { padding: 20px 22px; min-width: 0; }
.explorer-matrix-card__head h2 { margin: 0 0 4px; color: var(--text); font-size: 16px; }
.explorer-matrix-card__head p { margin: 0 0 12px; color: var(--muted); font-size: 12px; }
.explorer-matrix-scroll { overflow-x: auto; }
.explorer-matrix { width: 100%; border-collapse: collapse; font-size: 12px; }
.explorer-matrix th { padding: 9px 8px; color: var(--muted); font-weight: 700; text-align: center; white-space: nowrap; }
.explorer-matrix tbody th { color: var(--text); text-align: left; }
.explorer-matrix td { padding: 6px 8px; text-align: center; border-top: 1px solid var(--border); }
.cap { display: inline-grid; place-items: center; width: 26px; height: 26px; padding: 0; border: 0; border-radius: 8px; background: transparent; vertical-align: middle; }
button.cap { cursor: pointer; transition: background .15s, transform .15s; }
button.cap:hover { background: var(--blue-100); transform: scale(1.08); }
button.cap.is-current { background: var(--apple-blue); }
.cap::before { content: ""; display: block; }
.cap--f::before { width: 12px; height: 12px; border-radius: 50%; background: var(--apple-blue); }
.cap--m::before { width: 10px; height: 10px; border-radius: 50%; border: 2.5px solid #8b5cf6; }
.cap--s::before { width: 10px; height: 10px; border-radius: 50%; border: 2px dashed var(--muted); }
.cap--na::before { width: 10px; height: 2px; border-radius: 2px; background: var(--border); }
button.cap.is-current::before { background: #fff; border-color: #fff; }
.explorer-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 12px 0 0; padding: 0; list-style: none; color: var(--muted); font-size: 11.5px; }
.explorer-legend li { display: flex; align-items: center; gap: 4px; }
.explorer-legend .cap { width: 18px; height: 18px; }
.explorer-sources { display: grid; gap: 12px; }
.explorer-source { display: grid; grid-template-columns: 44px 1fr; align-items: center; gap: 2px 12px; padding: 14px 16px; color: var(--text); text-align: left; cursor: pointer; transition: border-color .15s, transform .15s; }
.explorer-source:hover { border-color: var(--apple-blue); transform: translateY(-1px); }
.explorer-source__icon { grid-row: span 2; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; background: var(--blue-100); color: var(--apple-blue); font-size: 11px; font-weight: 800; }
.explorer-source--demo .explorer-source__icon { background: var(--apple-blue); color: #fff; font-size: 20px; }
.explorer-source strong { font-size: 14px; }
.explorer-source small { color: var(--muted); font-size: 11.5px; }
.explorer-source[hidden] { display: none; }
.explorer-source--matrix { cursor: default; grid-template-columns: 44px 1fr; }
.explorer-source--matrix:hover { transform: none; }
.explorer-file, .explorer-source__row { grid-column: 2; }
.explorer-file { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 6px; padding: 7px 10px; border: 1px dashed var(--border); border-radius: 9px; cursor: pointer; }
.explorer-file:hover { border-color: var(--apple-blue); }
.explorer-file small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.explorer-file [data-file-name] { flex: none; max-width: 45%; overflow: hidden; color: var(--apple-blue); font-size: 11.5px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.explorer-source__row { display: flex; gap: 8px; margin-top: 8px; }
.explorer-source__row select { flex: 1; min-width: 0; padding: 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2); color: var(--text); font-size: 12px; }
.explorer-source__row button { flex: none; padding: 8px 12px; border: 0; border-radius: 8px; background: var(--apple-blue); color: #fff; font-size: 12px; font-weight: 700; }
.explorer-value-scale { grid-column: 2; display: grid; gap: 4px; margin-top: 8px; color: var(--muted); font-size: 11.5px; }
.explorer-value-scale select { width: 100%; min-width: 0; padding: 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2); color: var(--text); font-size: 12px; }
.explorer-error { margin: 14px 0 0; padding: 10px 14px; border-radius: 10px; background: var(--surface-2); color: var(--text); font-size: 12.5px; }
.explorer-workspace { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 18px; margin-top: 18px; align-items: start; scroll-margin-top: 90px; }
.explorer-panel { position: sticky; top: 90px; display: grid; gap: 12px; padding: 18px; }
.explorer-panel label { display: grid; gap: 5px; }
.explorer-panel label > span { color: var(--muted); font-size: 11.5px; font-weight: 700; }
.explorer-panel select, .explorer-panel input { width: 100%; min-width: 0; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2); color: var(--text); font-size: 12.5px; }
.explorer-panel__pair { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.explorer-dataset { display: grid; gap: 4px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.explorer-dataset strong { color: var(--text); font-size: 13.5px; line-height: 1.4; word-break: break-all; }
.explorer-dataset small { color: var(--muted); font-size: 11.5px; }
.explorer-badge { justify-self: start; padding: 3px 8px; border-radius: 999px; background: #e9f7ef; color: #157347; font-size: 10.5px; font-weight: 800; }
.explorer-badge.is-demo { background: #fff4e0; color: #9a6700; }
.explorer-badge.is-partner { background: #e8f0fe; color: #1a4fb8; }
.explorer-source--partner .explorer-source__icon { background: #12306b; color: #fff; font-size: 11px; font-weight: 900; }
.explorer-main { min-width: 0; padding: 16px 18px 18px; }
.explorer-tabs { display: flex; flex-wrap: wrap; gap: 6px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.explorer-tabs button { padding: 8px 14px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); color: var(--text); font-size: 12.5px; font-weight: 700; }
.explorer-tabs button:hover:not(:disabled) { border-color: var(--apple-blue); color: var(--apple-blue); }
.explorer-tabs button.is-active { border-color: var(--apple-blue); background: var(--apple-blue); color: #fff; }
.explorer-tabs button:disabled { opacity: .35; cursor: not-allowed; }
.explorer-note { margin: 12px 0 0; padding: 9px 12px; border-radius: 9px; background: var(--surface-2); color: var(--muted); font-size: 12px; line-height: 1.5; }
.explorer-chart { min-height: 440px; margin-top: 8px; }
.explorer-table-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 6px; }
.explorer-table-head small { color: var(--muted); font-size: 11px; }
.explorer-table-head button { flex: none; padding: 7px 12px; border: 1px solid var(--apple-blue); border-radius: 8px; background: var(--surface); color: var(--apple-blue); font-size: 12px; font-weight: 700; }
.explorer-table-wrap { max-height: 360px; margin-top: 10px; overflow: auto; border: 1px solid var(--border); border-radius: 10px; }
.explorer-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.explorer-table th { position: sticky; top: 0; padding: 8px 10px; background: var(--surface-2); color: var(--muted); font-weight: 700; text-align: left; white-space: nowrap; }
.explorer-table td { padding: 7px 10px; border-top: 1px solid var(--border); color: var(--text); white-space: nowrap; }
#view-tools .workflow-resources { padding-top: 28px; }
:root[data-theme="dark"] .explorer-badge { background: #1f3b2c; color: #8fe0b0; }
:root[data-theme="dark"] .explorer-badge.is-demo { background: #3d3220; color: #f4c86a; }
:root[data-theme="dark"] .explorer-badge.is-partner { background: #1e2f4d; color: #b6d2ff; }
:root[data-theme="dark"] .explorer-source__icon, :root[data-theme="dark"] button.cap:hover { background: #263240; }
@media (max-width: 1080px) {
  .explorer-overview, .explorer-workspace { grid-template-columns: minmax(0, 1fr); }
  .explorer-panel { position: static; }
}
@media (max-width: 640px) {
  .explorer { padding: 28px 16px 8px; }
  .explorer__head h1 { font-size: 23px; }
  .explorer-panel__pair { grid-template-columns: 1fr; }
  .explorer-chart { min-height: 360px; }
}

/* ============ 포털 리디자인 (K-BDS·K-CORE 스타일): 헤더 · 홈 · 서브 밴드 ============ */
:root {
  --portal-blue: #1f63e0;
  --portal-blue-2: #3b8cff;
  --portal-teal: #5aa2ff;
  --portal-navy: #0e2a63;
  --portal-ink: #1b2433;
  --portal-line: #e4e9f1;
  --portal-soft: #f4f7fb;
  --portal-card: #ffffff;
  --portal-head: #ffffff;
  --portal-head-text: #1b2433;
  --portal-head-muted: #7a8596;
}
:root[data-theme="dark"] {
  --portal-blue: #5b9dff;
  --portal-blue-2: #82b6ff;
  --portal-teal: #8ab8ff;
  --portal-ink: #eef2f8;
  --portal-line: #364152;
  --portal-soft: #1d232c;
  --portal-card: #232a34;
  --portal-head: #1b2129;
  --portal-head-text: #eef2f8;
  --portal-head-muted: #9aa6b7;
}

/* ---------- 헤더 ---------- */
.topbar, :root[data-theme="dark"] .topbar { background: var(--portal-head); border-bottom: 1px solid var(--portal-line); box-shadow: 0 6px 24px rgba(16,38,82,.05); }
.topbar__util { border-bottom: 1px solid var(--portal-line); }
.topbar__util-inner { display: flex; max-width: 1320px; min-height: 40px; align-items: center; justify-content: space-between; gap: 16px; margin: 0 auto; padding: 0 24px; }
.topbar__tagline { display: flex; gap: 8px; margin: 0; color: var(--portal-head-muted); font-size: 11px; font-weight: 600; letter-spacing: .02em; }
.topbar__inner { max-width: 1320px; padding: 12px 24px; gap: 40px; }
.topbar__controls { gap: 8px; }
.brand { gap: 10px; }
.brand__logo { width: 40px; height: auto; display: block; }
:root[data-theme="dark"] .brand__logo { content: url("../assets/karc-logo-light.png"); }
.brand__mark { color: var(--portal-blue); font-size: 22px; font-weight: 850; letter-spacing: -.03em; }
.brand__name { color: var(--portal-head-text); font-size: 22px; font-weight: 300; letter-spacing: -.01em; }
.primary-nav { gap: 4px; margin: 0 0 0 auto; }
.primary-nav a { position: relative; min-height: 46px; padding: 0 20px; border-radius: 0; color: var(--portal-head-text); font-size: 15px; font-weight: 700; }
.primary-nav a:hover, .primary-nav a.is-active { background: transparent; color: var(--portal-blue); }
.primary-nav a.is-active { box-shadow: none; border-radius: 0; }
.primary-nav a::after { position: absolute; right: 20px; bottom: -13px; left: 20px; height: 3px; border-radius: 3px 3px 0 0; background: linear-gradient(90deg, var(--portal-blue), var(--portal-teal)); content: ""; transform: scaleX(0); transition: transform .2s; }
.primary-nav a:hover::after, .primary-nav a.is-active::after { transform: scaleX(1); }
.topbar__auth-btn { border: 0; padding: 6px 4px; background: transparent; color: var(--portal-head-muted); font-size: 11px; font-weight: 700; }
.topbar__auth-btn:hover { background: transparent; color: var(--portal-blue); }
.lang-toggle { border-color: var(--portal-line); background: var(--surface-2); padding: 2px; }
.lang-toggle:hover { background: var(--surface-2); }
.lang-toggle__opt { padding: 3px 10px; color: var(--portal-head-muted); font-size: 11px; }
.lang-toggle__opt.is-active { background: #183b68; color: #fff; }
.account-menu > summary { min-height: 30px; border-color: var(--portal-line); color: var(--portal-head-text); }
.account-menu .topbar__user-label { color: var(--portal-head-text); }
.account-menu__chevron { color: var(--portal-head-muted); }

/* ---------- 홈 바탕 ---------- */
#view-home { background: var(--bg); overflow: visible; }
#view-home::before, #view-home::after { display: none; }
.portal-anchor { position: absolute; top: 0; }
.portal-home { max-width: 1320px; margin: 0 auto; padding: 28px 24px 0; }

/* ---------- 히어로: 좌측 문구·검색 / 우측 K-ARC 엠블럼 ---------- */
.portal-hero { position: relative; }
.portal-hero__main { position: relative; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); align-items: center; gap: 24px; min-height: 520px; overflow: hidden; isolation: isolate; padding: 60px clamp(26px, 4.5vw, 64px) 116px; border-radius: 28px; background: radial-gradient(120% 140% at 85% 20%, #2a7bf0 0%, rgba(42,123,240,0) 55%), linear-gradient(125deg, #081a45 0%, #0f3394 45%, #1659d1 75%, #2b7fe6 100%); color: #fff; box-shadow: 0 30px 70px rgba(12,48,130,.28); }
.portal-hero__main::before { position: absolute; inset: 0; z-index: -1; background-image: radial-gradient(rgba(255,255,255,.14) 1px, transparent 1.2px); background-size: 24px 24px; mask-image: linear-gradient(100deg, rgba(0,0,0,.65), transparent 60%); content: ""; }
.portal-hero__main::after { position: absolute; right: -10%; bottom: -55%; z-index: -1; width: 70%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(90,162,255,.35), transparent 65%); content: ""; }
.portal-hero__art { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; pointer-events: none; opacity: .75; }
.portal-hero__copy { position: relative; min-width: 0; }
.portal-hero__main h1 { margin: 0; color: #fff; font-size: clamp(32px, 3.7vw, 50px); font-weight: 850; line-height: 1.16; letter-spacing: -.05em; text-wrap: balance; word-break: keep-all; }
.portal-hero__main h1 .home-title-primary { color: #fff; }
.portal-hero__lead { max-width: 560px; margin: 16px 0 0; color: rgba(225,238,255,.84); font-size: 15px; line-height: 1.7; word-break: keep-all; }
.portal-search { max-width: 620px; margin: 30px 0 0; }
.portal-search .global-search { max-width: none; height: 62px; align-items: center; margin: 0; padding: 0 7px 0 10px; border: 1px solid rgba(255,255,255,.5); border-radius: 999px; background: #fff; box-shadow: 0 18px 40px rgba(4,22,70,.32); overflow: visible; }
.portal-search .global-search input { min-width: 0; padding: 0 16px; background: transparent; color: #1b2433; font-size: 15px; }
.portal-search .global-search input::placeholder { color: #8a95a6; }
.portal-search .global-search button { display: grid; width: 48px; height: 48px; flex: 0 0 48px; place-items: center; padding: 0; border-radius: 50%; background: linear-gradient(135deg, #2f7cf6, #1957d2); box-shadow: 0 8px 18px rgba(31,99,224,.4); }
.portal-search .global-search button:hover { background: linear-gradient(135deg, #3d88ff, #1d61e0); }
.portal-search .global-search button svg { width: 21px; height: 21px; fill: none; stroke: #fff; stroke-width: 2.4; stroke-linecap: round; }
:root[data-theme="dark"] .portal-search .global-search { border-color: rgba(255,255,255,.2); background: #f4f7fc; }
:root[data-theme="dark"] .portal-search .global-search input { background: transparent; color: #1b2433; }
.portal-search__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 14px; font-size: 12px; }
.portal-search__label { margin-right: 2px; color: #ffd65c; font-weight: 800; }
.portal-chip { padding: 4px 11px; border: 1px solid rgba(255,255,255,.18); border-radius: 999px; background: rgba(255,255,255,.08); color: rgba(255,255,255,.92); font-size: 12px; font-weight: 600; transition: background .15s; }
.portal-chip:hover { background: rgba(255,255,255,.2); }
.portal-search__advanced { padding: 4px 12px; border: 1px solid rgba(255,214,92,.55); border-radius: 999px; background: transparent; color: #ffe08a; font-size: 12px; font-weight: 750; }
.portal-search__advanced:hover { background: rgba(255,214,92,.14); }
.portal-hero__stats { display: flex; flex-wrap: wrap; gap: 0; margin: 34px 0 0; padding: 0; list-style: none; }
.portal-hero__stats li { display: flex; flex-direction: column; gap: 3px; padding: 0 26px; border-left: 1px solid rgba(255,255,255,.18); }
.portal-hero__stats li:first-child { padding-left: 0; border-left: 0; }
.portal-hero__stats b { color: #fff; font-size: 30px; font-weight: 850; line-height: 1; letter-spacing: -.03em; }
.portal-hero__stats span { color: rgba(214,232,255,.72); font-size: 11.5px; font-weight: 600; }

/* 엠블럼 */
.portal-emblem { position: relative; width: min(100%, 420px); aspect-ratio: 1; justify-self: center; }
.portal-emblem__ring { position: absolute; inset: 0; border: 1px solid rgba(255,255,255,.2); border-radius: 50%; }
.portal-emblem__ring--2 { inset: 12%; border-color: rgba(127,240,216,.35); }
.portal-emblem__ring--3 { inset: 24%; border: 1px solid rgba(255,255,255,.3); background: radial-gradient(circle, rgba(255,255,255,.12), rgba(255,255,255,0) 70%); }
.portal-emblem__glow { position: absolute; inset: 26%; border-radius: 50%; background: radial-gradient(circle, rgba(120,200,255,.55), transparent 70%); filter: blur(18px); animation: portal-breathe 4s ease-in-out infinite; }
@keyframes portal-breathe { 50% { transform: scale(1.12); opacity: .75; } }
.portal-emblem__disc { position: absolute; inset: 29%; display: grid; place-items: center; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #ffffff, #eaf3ff 70%, #d6e7ff); box-shadow: 0 20px 50px rgba(3,20,70,.45), inset 0 -8px 20px rgba(31,99,224,.12); }
.portal-emblem__disc img { width: 74%; height: auto; }
.portal-emblem__chip { position: absolute; display: inline-flex; align-items: center; gap: 7px; padding: 7px 13px; border: 1px solid rgba(255,255,255,.28); border-radius: 999px; background: rgba(10,30,80,.42); color: #fff; font-size: 12px; font-weight: 700; white-space: nowrap; backdrop-filter: blur(10px); box-shadow: 0 10px 24px rgba(3,15,50,.25); animation: portal-float 6s ease-in-out infinite; }
.portal-emblem__chip i { width: 8px; height: 8px; border-radius: 50%; }
.portal-emblem__chip--1 { top: 6%; left: 2%; }
.portal-emblem__chip--1 i { background: #6fb2ff; }
.portal-emblem__chip--2 { top: 20%; right: -4%; animation-delay: -1.5s; }
.portal-emblem__chip--2 i { background: #9db8ff; }
.portal-emblem__chip--3 { bottom: 16%; left: -6%; animation-delay: -3s; }
.portal-emblem__chip--3 i { background: #b7a6ff; }
.portal-emblem__chip--4 { right: 4%; bottom: 4%; animation-delay: -4.5s; }
.portal-emblem__chip--4 i { background: #ffd27a; }
@keyframes portal-float { 50% { transform: translateY(-8px); } }

/* 히어로 아래로 걸치는 바로가기 + 계정 카드 */
.portal-quick { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(280px, 1.15fr); gap: 18px; margin: -72px clamp(14px, 2.5vw, 34px) 0; }
.portal-quick__card { position: relative; display: flex; flex-direction: column; overflow: hidden; padding: 24px 22px 22px; border: 1px solid var(--portal-line); border-radius: 20px; background: var(--portal-card); box-shadow: 0 18px 44px rgba(16,38,82,.12); transition: transform .25s, box-shadow .25s; }
.portal-quick__card::after { position: absolute; top: 0; right: 0; left: 0; height: 4px; background: linear-gradient(90deg, var(--q1, #1f63e0), var(--q2, #3b8cff)); content: ""; }
.portal-quick__card:hover { transform: translateY(-6px); box-shadow: 0 26px 54px rgba(16,38,82,.18); }
.portal-quick__icon { display: grid; width: 46px; height: 46px; place-items: center; margin-bottom: 14px; border-radius: 14px; background: linear-gradient(135deg, var(--q1, #1f63e0), var(--q2, #3b8cff)); box-shadow: 0 10px 20px rgba(31,99,224,.22); }
.portal-quick__icon svg { width: 24px; height: 24px; fill: none; stroke: #fff; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.portal-quick__card h2 { margin: 0; color: var(--portal-ink); font-size: 18px; font-weight: 800; letter-spacing: -.035em; }
.portal-quick__card p { flex: 1; margin: 7px 0 18px; color: var(--muted); font-size: 12.5px; line-height: 1.6; word-break: keep-all; }
.portal-quick__card > button, .portal-quick__card > a { display: inline-flex; align-self: flex-start; align-items: center; gap: 8px; padding: 0; border: 0; background: none; color: var(--q1, #1f63e0); font-size: 13px; font-weight: 800; transition: gap .2s; }
.portal-quick__card > button:hover, .portal-quick__card > a:hover { gap: 13px; }
:root[data-theme="dark"] .portal-quick__card > button, :root[data-theme="dark"] .portal-quick__card > a { color: var(--q2, #6aa8ff); }
.portal-quick .home-account-card { height: auto; min-height: 0; margin: 0; padding: 22px 22px 18px; border: 1px solid var(--portal-line); border-radius: 20px; background: var(--portal-card); box-shadow: 0 18px 44px rgba(16,38,82,.12); animation: none; justify-content: flex-start; }
.portal-quick .home-account-card__avatar { width: 46px; height: 46px; flex-basis: 46px; border-radius: 14px; }
.portal-quick .home-account-card h2 { font-size: 18px; }
.portal-quick .home-account-card__primary { min-height: 44px; margin-top: 18px; border: 0; border-radius: 12px; background: linear-gradient(90deg, #1f63e0, #5aa2ff); box-shadow: 0 10px 22px rgba(31,99,224,.25); }
.portal-quick .home-account-card__primary:hover { filter: brightness(1.06); }
.portal-quick .home-account-card__links { margin-top: 14px; }
.portal-quick .home-account-summary { margin-top: 12px; }
.portal-quick .home-account-summary > div { min-height: 34px; }
.portal-home .home-dashboard__results { margin-top: 22px; }

/* 새 소식 타임라인 */

/* ---------- 섹션 도트 ---------- */
.portal-dots { position: fixed; top: 50%; right: 18px; z-index: 40; display: flex; flex-direction: column; gap: 14px; transform: translateY(-50%); }
.portal-dots a { position: relative; display: block; width: 10px; height: 10px; border: 2px solid #b8c3d4; border-radius: 50%; background: var(--bg); transition: all .2s; }
.portal-dots a span { position: absolute; top: 50%; right: 20px; padding: 3px 9px; border-radius: 999px; background: var(--portal-ink); color: var(--bg); font-size: 10px; font-weight: 700; white-space: nowrap; opacity: 0; transform: translate(6px, -50%); transition: all .2s; pointer-events: none; }
.portal-dots a:hover span, .portal-dots a:focus-visible span { opacity: 1; transform: translate(0, -50%); }
.portal-dots a.is-active { height: 26px; border-color: var(--portal-blue); border-radius: 6px; background: var(--portal-blue); }

/* ---------- 공통 섹션 ---------- */
.portal-section { margin-top: 72px; scroll-margin-top: 130px; }
.portal-section--tint { padding: 52px clamp(18px, 3vw, 44px) 56px; border-radius: 24px; background: var(--portal-soft); }
.portal-section__head { margin-bottom: 26px; text-align: center; }
.portal-section__head p { margin: 0 0 4px; background: linear-gradient(90deg, var(--portal-blue), var(--portal-teal)); -webkit-background-clip: text; background-clip: text; color: transparent; font-size: 12px; font-weight: 850; letter-spacing: .22em; }
.portal-section__head h2 { margin: 0; color: var(--portal-ink); font-size: clamp(24px, 2.4vw, 32px); font-weight: 850; letter-spacing: -.045em; }
.portal-section__head small { display: block; margin-top: 8px; color: var(--muted); font-size: 13px; }
.portal-reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s ease, transform .7s ease; }
.portal-reveal.is-in { opacity: 1; transform: none; }

/* 탭 (K-CORE 사각 탭) */
.portal-tabs { display: flex; margin-bottom: 0; border-bottom: 2px solid var(--portal-ink); }
.portal-tabs button { flex: 1; min-height: 54px; border: 1px solid var(--portal-line); border-bottom: 0; margin-right: -1px; background: var(--portal-soft); color: var(--muted); font-size: 14px; font-weight: 750; transition: background .15s, color .15s; }
.portal-tabs button:hover { color: var(--portal-ink); }
.portal-tabs button.is-active { border-color: var(--portal-ink); background: var(--portal-ink); color: var(--bg); }
.portal-panel { display: none; padding: 32px 0 0; }
.portal-panel.is-active { display: block; animation: atlas-fade-in .35s ease both; }
@keyframes atlas-fade-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* 사이트 소개 */
.portal-intro { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 40px; align-items: center; }
.portal-intro__visual { position: relative; margin: 0; overflow: hidden; border-radius: 18px; background: #0b1730; box-shadow: 0 20px 44px rgba(10,30,70,.18); }
.portal-intro__visual img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: contain; }
.portal-intro__visual figcaption { position: absolute; right: 12px; bottom: 10px; color: rgba(255,255,255,.7); font-size: 9px; }
.portal-intro__logo { width: 64px; height: auto; margin-bottom: 14px; }
:root[data-theme="dark"] .portal-intro__logo { content: url("../assets/karc-logo-light.png"); }
.portal-intro__statement { margin: 0; color: var(--portal-ink); font-size: clamp(17px, 1.6vw, 21px); font-weight: 750; line-height: 1.6; letter-spacing: -.03em; }
.portal-intro__points { display: grid; gap: 10px; margin: 22px 0 0; padding: 0; list-style: none; }
.portal-intro__points li { display: flex; align-items: center; gap: 10px; color: var(--muted); font-size: 13px; }
.portal-intro__points li::before { display: grid; width: 20px; height: 20px; flex: 0 0 20px; place-items: center; border-radius: 50%; background: linear-gradient(135deg, var(--portal-blue), var(--portal-teal)); color: #fff; content: "✓"; font-size: 11px; font-weight: 900; }
.portal-panel .home-network__grid { gap: 16px; }
.portal-panel .home-network__group { padding: 22px; border-color: var(--portal-line); border-radius: 16px; background: var(--portal-card); }
.portal-panel .home-network__group h3 { font-size: 14px; }
.portal-panel .home-network__group ul { font-size: 12px; }
.portal-note { margin: 14px 0 0; color: var(--muted); font-size: 11px; text-align: right; }
.portal-links { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.portal-links a { display: flex; flex-direction: column; gap: 6px; padding: 22px; border: 1px solid var(--portal-line); border-radius: 16px; background: var(--portal-card); transition: border-color .2s, transform .2s; }
.portal-links a:hover { border-color: var(--portal-blue); transform: translateY(-3px); }
.portal-links strong { color: var(--portal-ink); font-size: 17px; }
.portal-links span { color: var(--muted); font-size: 12px; }
.portal-links em { margin-top: 8px; color: var(--portal-blue); font-size: 12px; font-style: normal; font-weight: 700; }

/* 연구 데이터 pill (K-BDS DATABASES) */
.portal-data { display: grid; gap: 16px; }
.portal-data__row { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; }
.portal-pill { display: grid; width: 252px; min-height: 70px; grid-template-columns: 50px 1fr; grid-template-rows: auto auto; align-content: center; column-gap: 12px; padding: 10px 18px 10px 10px; border: 1px solid var(--portal-line); border-radius: 999px; background: var(--portal-card); color: var(--portal-ink); text-align: left; box-shadow: 0 4px 14px rgba(16,38,82,.04); transition: transform .2s, box-shadow .2s, border-color .2s; }
.portal-pill:hover { border-color: transparent; transform: translateY(-3px); box-shadow: 0 14px 30px rgba(16,38,82,.13); }
.portal-pill strong { display: block; font-size: 14px; font-weight: 800; }
.portal-pill small { display: block; margin-top: 2px; color: var(--muted); font-size: 11px; }
.portal-pill > strong, .portal-pill > small { grid-column: 2; }
.portal-pill__icon { display: grid; width: 50px; height: 50px; grid-row: 1 / span 2; place-items: center; border-radius: 50%; color: #fff; font-size: 15px; font-weight: 850; box-shadow: inset 0 -6px 12px rgba(0,0,0,.12); }
.portal-pill__icon--a { background: linear-gradient(135deg, #2f6fe0, #1747a8); }
.portal-pill__icon--b { background: linear-gradient(135deg, #f15c6d, #c42a4a); }
.portal-pill__icon--c { background: linear-gradient(135deg, #9a6cf2, #6338c7); }
.portal-pill__icon--d { background: linear-gradient(135deg, #ff9c4a, #e8651a); }
.portal-pill__icon--e { background: linear-gradient(135deg, #b9784a, #8a4b25); }
.portal-pill__icon--f { background: linear-gradient(135deg, #ff6a8b, #d6335c); }
.portal-pill__icon--g { background: linear-gradient(135deg, #f8c63c, #e09b0b); }
.portal-pill__icon--h { background: linear-gradient(135deg, #2bc4d9, #0d8fb3); }
.portal-pill__icon--i { background: linear-gradient(135deg, #43c78b, #17945c); }
.portal-pill__icon--j { background: linear-gradient(135deg, #7a8cf5, #4153d1); }
.portal-pill__icon--k { background: linear-gradient(135deg, #a3adbd, #707c8f); }
.portal-pill.is-soon { opacity: .6; cursor: default; }
.portal-pill.is-soon:hover { transform: none; box-shadow: none; border-color: var(--portal-line); }

/* 분석 가이드 */
.portal-btn { display: inline-flex; min-height: 38px; align-items: center; justify-content: center; padding: 0 18px; border: 1px solid var(--portal-blue); border-radius: 8px; background: var(--portal-blue); color: #fff; font-size: 12px; font-weight: 800; transition: filter .15s; }
.portal-btn:hover { filter: brightness(1.08); }
.portal-btn--ghost { background: transparent; color: var(--portal-blue); }

/* 서비스 바로가기 */

/* 고객지원 */
.portal-faq { display: grid; gap: 10px; }
.portal-faq details { border: 1px solid var(--portal-line); border-radius: 12px; background: var(--portal-card); }
.portal-faq summary { display: flex; align-items: center; gap: 12px; padding: 17px 20px; color: var(--portal-ink); font-size: 14px; font-weight: 750; cursor: pointer; list-style: none; }
.portal-faq summary::-webkit-details-marker { display: none; }
.portal-faq summary::before { display: grid; width: 26px; height: 26px; flex: 0 0 26px; place-items: center; border-radius: 50%; background: var(--portal-blue); color: #fff; content: "Q"; font-size: 12px; font-weight: 850; }
.portal-faq summary::after { margin-left: auto; color: var(--muted); content: "+"; font-size: 20px; font-weight: 400; transition: transform .2s; }
.portal-faq details[open] summary::after { transform: rotate(45deg); }
.portal-faq details p { margin: 0; padding: 0 20px 18px 58px; color: var(--muted); font-size: 13px; line-height: 1.7; }

/* 지원 기관 */
.portal-partners { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px 28px; margin-top: 72px; padding: 26px 0 56px; border-top: 1px solid var(--portal-line); }
.portal-partner { display: grid; min-width: 118px; height: 50px; place-items: center; padding: 0 16px; border: 1px solid var(--portal-line); border-radius: 10px; background: var(--portal-card); color: var(--portal-ink); font-size: 13px; font-weight: 800; }
.portal-partner--img img { width: auto; height: 26px; }
:root[data-theme="dark"] .portal-partner--img { background: #f4f6fa; }

/* ---------- 서브페이지 밴드 (각 화면 제목·버튼을 흡수) ---------- */
.sub-visual { position: relative; overflow: hidden; isolation: isolate; background: radial-gradient(90% 160% at 88% 0%, rgba(42,123,240,.75), rgba(42,123,240,0) 60%), linear-gradient(120deg, #081a45, #0f3394 50%, #1f68d6 82%, #2b7fe6); color: #fff; }
.sub-visual::before { position: absolute; inset: 0; z-index: -1; background-image: radial-gradient(rgba(255,255,255,.16) 1px, transparent 1.2px); background-size: 22px 22px; mask-image: linear-gradient(90deg, transparent 10%, #000 70%); content: ""; }
.sub-visual::after { position: absolute; top: 50%; right: max(4%, calc(50% - 620px)); z-index: -1; width: 230px; height: 230px; border-radius: 50%; background: url("../assets/karc-logo-blue-transparent.png") center / 62% no-repeat, radial-gradient(circle, rgba(255,255,255,.95) 0 54%, rgba(255,255,255,.18) 55% 56%, transparent 57%); box-shadow: 0 0 0 26px rgba(255,255,255,.05), 0 0 0 54px rgba(255,255,255,.035); opacity: .95; content: ""; transform: translateY(-50%); }
.sub-visual__inner { position: relative; display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; max-width: 1320px; min-height: 196px; margin: 0 auto; padding: 30px 300px 34px 24px; box-sizing: border-box; }
.sub-visual__copy { min-width: 0; }
.sub-visual__crumb { display: flex; align-items: center; gap: 8px; margin-bottom: 18px; color: rgba(225,238,255,.7); font-size: 12px; }
.sub-visual__crumb a::before { display: inline-block; width: 13px; height: 13px; margin-right: 6px; vertical-align: -2px; background: currentColor; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 11 12 3l9 8v10h-6v-6H9v6H3z'/%3E%3C/svg%3E") center / contain no-repeat; content: ""; }
.sub-visual__crumb a:hover { color: #fff; }
.sub-visual__current { color: #fff; font-weight: 750; }
.sub-visual__title { margin: 8px 0 0; color: #fff; font-size: clamp(26px, 2.6vw, 36px); font-weight: 850; letter-spacing: -.045em; }
.sub-visual__desc { max-width: 720px; margin: 8px 0 0; color: rgba(225,238,255,.82); font-size: 14px; line-height: 1.6; word-break: keep-all; }
.sub-visual__actions { display: flex; flex-shrink: 0; flex-wrap: wrap; align-items: center; gap: 8px; }
.sub-visual__actions:empty { display: none; }
.sub-visual__actions .kbds-page__actions { display: flex; gap: 8px; }
.sub-visual__actions button { display: inline-flex; min-height: 42px; align-items: center; gap: 6px; padding: 0 18px; border: 1px solid rgba(255,255,255,.35); border-radius: 12px; background: rgba(255,255,255,.12); color: #fff; font-size: 13px; font-weight: 750; backdrop-filter: blur(8px); transition: background .15s, transform .15s; }
.sub-visual__actions button:hover { background: rgba(255,255,255,.22); transform: translateY(-1px); }
.sub-visual__actions .inquiry-primary-btn { border-color: #fff; background: #fff; color: #133c8f; }
.sub-visual__actions .inquiry-primary-btn:hover { background: #eef5ff; }
.sub-visual:not([hidden]) ~ .view :is(.kbds-page__head, .explorer__head, .mypage__head, .admin-page__head, .inquiry-page__head) { display: none; }
.sub-visual:not([hidden]) ~ .view .request-page__head > :is(.request-page__eyebrow, h1, .request-page__lead) { display: none; }
.sub-visual:not([hidden]) ~ .view .request-page__head { margin-bottom: 18px; }
.sub-visual:not([hidden]) ~ .view .crumb-back { display: none; }

/* ---------- 서브페이지 공통 스킨 ---------- */
:root { --portal-page: #f3f6fb; --portal-input: #f8fafd; --portal-input-line: #dbe2ec; --portal-shadow: 0 12px 32px rgba(16,38,82,.07); }
body:not(.is-portal-home) #app { background: var(--portal-page); }
:is(.kbds-page, .request-page, .explorer, .workflow-resources, .mypage, .admin-page, .inquiry-page, .result) { padding-top: 36px; }
.kbds-page, .admin-page, .mypage, .inquiry-page { max-width: 1320px; }
.view:not(#view-home) .pipeline-admin-section .admin-section-head { margin-top: 0; align-items: center; }
.view:not(#view-home) .pipeline-admin-section { margin-top: 34px; padding: 26px 28px; border: 1px solid var(--portal-line); border-radius: 20px; background: var(--portal-card); box-shadow: var(--portal-shadow); }
.view:not(#view-home) .pipeline-admin-section .admin-section-head > button { min-height: 44px; padding: 0 20px; border: 0; border-radius: 12px; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; font-size: 13px; font-weight: 800; box-shadow: 0 10px 22px rgba(31,99,224,.26); }
.view:not(#view-home) .request-steps { position: relative; display: flex; gap: 10px; margin: 18px 0 0; padding: 0; }
.view:not(#view-home) .request-steps li { min-height: 44px; padding: 6px 18px 6px 6px; font-size: 13px; }
.view:not(#view-home) .request-steps li span:first-child { display: grid; width: 30px; height: 30px; place-items: center; border-radius: 50%; background: var(--portal-soft); color: var(--muted); font-weight: 850; }
.request-summary { top: 132px; }
.explorer-panel { top: 132px; }

/* 카드·패널 */
.view:not(#view-home) :is(.request-section, .request-summary, .request-public-guide, .kbds-filter-panel, .kbds-record, .admin-stat, .admin-table-wrap, .mypage__identity, .mypage__stats article, .my-request-card, .mypage-form, .inquiry-form, .inquiry-card, .inquiry-table-wrap, .pipeline-toolbar, .pipeline-card, .explorer-matrix-card, .explorer-source, .explorer-panel, .explorer-main, .pipeline-request-paths article, .excel-request__details) { border: 1px solid var(--portal-line); border-radius: 20px; background: var(--portal-card); box-shadow: var(--portal-shadow); }
.view:not(#view-home) :is(.kbds-record, .my-request-card, .pipeline-card, .pipeline-request-paths article, .explorer-source) { transition: transform .2s, box-shadow .2s, border-color .2s; }
.view:not(#view-home) :is(.kbds-record, .my-request-card, .pipeline-card, .pipeline-request-paths article, .explorer-source):hover { border-color: rgba(31,99,224,.35); box-shadow: 0 18px 40px rgba(16,38,82,.11); transform: translateY(-2px); }
.view:not(#view-home) .request-summary { border-color: rgba(31,99,224,.28); box-shadow: 0 18px 44px rgba(31,99,224,.12); }
.view:not(#view-home) .request-summary::before { display: block; height: 4px; margin: -22px -22px 18px; border-radius: 20px 20px 0 0; background: linear-gradient(90deg, #1f63e0, #5aa2ff); content: ""; }
.view:not(#view-home) .request-public-guide { border-left: 4px solid var(--portal-blue); background: linear-gradient(100deg, rgba(31,99,224,.06), var(--portal-card) 45%); }

/* 섹션 제목 */
.view:not(#view-home) :is(.request-section__head h2, .kbds-filter-panel__head h2, .kbds-catalog-toolbar h2, .admin-section-head h2, .mypage-panel__head h2, .workflow-resources > header h1, .explorer-matrix-card__head h2) { color: var(--portal-ink); letter-spacing: -.04em; }
.view:not(#view-home) :is(.kbds-filter-panel__kicker, .kbds-catalog-toolbar__eyebrow, .workflow-resources > header .hero__eyebrow, .request-summary__eyebrow) { background: linear-gradient(90deg, var(--portal-blue), var(--portal-teal)); -webkit-background-clip: text; background-clip: text; color: transparent; letter-spacing: .2em; }
.view:not(#view-home) .request-section__num { background: linear-gradient(135deg, #1f63e0, #5aa2ff); box-shadow: 0 6px 14px rgba(31,99,224,.28); }
.workflow-resources > header { position: relative; margin-bottom: 22px; padding-top: 30px; border-top: 1px solid var(--portal-line); }
.workflow-resources > header h1 { font-size: clamp(24px, 2.2vw, 30px); }

/* 통계 카드 */
.view:not(#view-home) :is(.admin-stat, .mypage__stats article) { position: relative; overflow: hidden; }
.view:not(#view-home) :is(.admin-stat, .mypage__stats article)::before { position: absolute; top: 0; right: 0; left: 0; height: 4px; background: linear-gradient(90deg, var(--s1, #1f63e0), var(--s2, #3b8cff)); content: ""; }
.view:not(#view-home) :is(.admin-stat, .mypage__stats article) strong { background: linear-gradient(135deg, var(--s1, #1f63e0), var(--s2, #3b8cff)); -webkit-background-clip: text; background-clip: text; color: transparent; font-size: 34px; font-weight: 850; letter-spacing: -.03em; }
.view:not(#view-home) .mypage__identity { background: linear-gradient(110deg, rgba(31,99,224,.07), var(--portal-card) 50%); }
.view:not(#view-home) .mypage__avatar { background: linear-gradient(135deg, #1f63e0, #5aa2ff); color: #fff; box-shadow: 0 8px 18px rgba(31,99,224,.28); }

/* 입력 */
.view:not(#view-home) :is(input[type="text"], input[type="search"], input[type="email"], input[type="password"], input[type="number"], input:not([type]), select, textarea):not(.portal-search input) { min-height: 44px; border: 1px solid var(--portal-input-line); border-radius: 12px; background-color: var(--portal-input); color: var(--text); font-size: 13px; transition: border-color .15s, box-shadow .15s, background-color .15s; }
.view:not(#view-home) textarea { min-height: 110px; padding: 12px 14px; }
.view:not(#view-home) :is(input, select, textarea):not([type="radio"]):not([type="checkbox"]):not([type="file"]):focus { border-color: var(--portal-blue); background-color: var(--portal-card); outline: 0; box-shadow: 0 0 0 4px rgba(31,99,224,.14); }
.view:not(#view-home) :is(.kbds-filter-field, .field, .request-list-filters, .pipeline-toolbar, .admin-toolbar) > label > span, .view:not(#view-home) :is(.kbds-filter-field, .field) > span, .view:not(#view-home) .request-list-filters label { color: var(--muted); font-size: 12px; font-weight: 750; }

/* 버튼 */
.view:not(#view-home) :is(.kbds-search-btn, #searchBtn, .mypage-primary-btn, .inquiry-primary-btn, .explorer-source button.explorer-primary, #explorerMatrixBtn, .pipeline-admin-section > .pipeline-new, .cta-btn) { border: 0; border-radius: 12px; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; font-weight: 800; box-shadow: 0 10px 22px rgba(31,99,224,.26); transition: transform .15s, box-shadow .15s, filter .15s; }
.view:not(#view-home) :is(.kbds-search-btn, #searchBtn, .mypage-primary-btn, .inquiry-primary-btn, #explorerMatrixBtn, .cta-btn):hover:not(:disabled) { filter: brightness(1.07); transform: translateY(-1px); box-shadow: 0 14px 28px rgba(31,99,224,.32); }
.view:not(#view-home) #searchBtn:disabled { background: linear-gradient(135deg, #9dbcf0, #86a8e6); box-shadow: none; }
.view:not(#view-home) :is(.kbds-refresh-btn, .admin-refresh-btn, .inquiry-secondary-btn, .excel-add-btn, .template-download, .pipeline-toolbar button, .explorer-csv, #explorerCsvBtn) { border: 1px solid var(--portal-input-line); border-radius: 12px; background: var(--portal-card); color: var(--portal-ink); font-weight: 750; transition: border-color .15s, color .15s; }
.view:not(#view-home) :is(.kbds-refresh-btn, .admin-refresh-btn, .inquiry-secondary-btn, .excel-add-btn, .template-download, .pipeline-toolbar button, #explorerCsvBtn):hover { border-color: var(--portal-blue); color: var(--portal-blue); }
.inquiry-primary-btn, .inquiry-secondary-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; line-height: 1; text-decoration: none; }

/* 탭·세그먼트 */
.view:not(#view-home) :is(.input-mode, .mypage-tabs) { display: inline-flex; width: auto; gap: 4px; padding: 5px; border: 1px solid var(--portal-line); border-radius: 14px; background: var(--portal-soft); }
.view:not(#view-home) .input-mode { display: grid; width: 100%; }
.view:not(#view-home) :is(.input-mode button, .mypage-tabs button) { min-height: 40px; padding: 0 18px; border: 0; border-radius: 10px; background: transparent; color: var(--muted); font-size: 13px; font-weight: 750; }
.view:not(#view-home) :is(.input-mode button.is-active, .mypage-tabs button.is-active) { background: var(--portal-card); color: var(--portal-blue); box-shadow: 0 4px 14px rgba(16,38,82,.1); }
.view:not(#view-home) .mypage-tabs button.is-active::after { display: none; }
.view:not(#view-home) :is(.inquiry-status-tab, .explorer-tabs button, .request-steps li) { border-color: var(--portal-line); background: var(--portal-card); transition: all .15s; }
.view:not(#view-home) :is(.inquiry-status-tab.is-active, .explorer-tabs button.is-active, .request-steps li.is-active) { border-color: transparent; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; box-shadow: 0 8px 18px rgba(31,99,224,.25); }
.view:not(#view-home) .request-steps li.is-active span:first-child { background: #fff; color: #1957d2; }

/* 선택 카드 */
.view:not(#view-home) .pick-card { border-color: var(--portal-line); border-radius: 16px; background: var(--portal-card); transition: transform .15s, border-color .15s, box-shadow .15s; }
.view:not(#view-home) .pick-card:hover { transform: translateY(-2px); border-color: rgba(31,99,224,.4); box-shadow: 0 10px 22px rgba(16,38,82,.08); }
.view:not(#view-home) .pick-card.is-selected { border-color: var(--portal-blue); background: linear-gradient(160deg, rgba(31,99,224,.1), var(--portal-card) 70%); box-shadow: 0 0 0 3px rgba(31,99,224,.14), 0 10px 22px rgba(31,99,224,.12); }

/* 표 */
.view:not(#view-home) :is(.admin-table-wrap, .inquiry-table-wrap, .explorer-table-wrap) { overflow: auto; border-radius: 18px; }
.view:not(#view-home) :is(.admin-table, .inquiry-table, .explorer-table) th { background: var(--portal-soft); color: var(--muted); font-size: 11.5px; font-weight: 800; letter-spacing: .02em; }
.view:not(#view-home) :is(.admin-table, .inquiry-table, .explorer-table) td { border-color: var(--portal-line); }
.view:not(#view-home) :is(.admin-table, .inquiry-table, .explorer-table) tbody tr { transition: background .12s; }
.view:not(#view-home) :is(.admin-table, .inquiry-table, .explorer-table) tbody tr:hover { background: rgba(31,99,224,.045); }

/* 빈 상태 */
.view:not(#view-home) :is(.kbds-catalog-state, .mypage-state, .inquiry-list-state, .pipeline-empty, .admin-table__empty) { position: relative; padding: 70px 20px 36px; border: 1px dashed #c9d5e6; border-radius: 20px; background: var(--portal-card); color: var(--muted); font-size: 13px; text-align: center; }
.view:not(#view-home) :is(.kbds-catalog-state, .mypage-state, .inquiry-list-state, .pipeline-empty)::before { position: absolute; top: 22px; left: 50%; width: 38px; height: 38px; border-radius: 12px; background: linear-gradient(135deg, rgba(31,99,224,.16), rgba(90,162,255,.16)); transform: translateX(-50%); content: ""; }
.view:not(#view-home) :is(.kbds-catalog-state, .mypage-state, .inquiry-list-state, .pipeline-empty)::after { position: absolute; top: 31px; left: 50%; width: 20px; height: 20px; background: var(--portal-blue); mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7h18M3 12h18M3 17h12'/%3E%3C/svg%3E") center / contain no-repeat; transform: translateX(-50%); content: ""; }
.view:not(#view-home) .pipeline-empty { padding-top: 80px; }

/* 대화상자 */
dialog.pipeline-dialog, dialog.kbds-detail-dialog, dialog.kbds-search-dialog { border: 1px solid var(--portal-line); border-radius: 22px; background: var(--portal-card); color: var(--text); box-shadow: 0 30px 80px rgba(8,20,50,.3); }
dialog::backdrop { background: rgba(8,18,40,.45); backdrop-filter: blur(6px); }
.access-dialog__actions button, .access-dialog__actions a { min-height: 42px; padding: 0 20px; border-radius: 12px; font-size: 13px; }
.access-dialog__actions .inquiry-primary-btn { border: 0; background: linear-gradient(135deg, #2f7cf6, #1957d2); box-shadow: 0 10px 22px rgba(31,99,224,.26); }

/* 푸터 */
.footer { background: #1d1d1f; }

/* ---------- 다크 모드: 네이비 차콜 팔레트 ---------- */
:root[data-theme="dark"] {
  --bg: #0d131c;
  --card: #141c27;
  --surface: #141c27;
  --surface-2: #19222f;
  --text: #e7edf6;
  --muted: #95a3b7;
  --border: #253141;
  --apple-lightgray: #19222f;
  --apple-border: #253141;
  --apple-gray: #95a3b7;
  --apple-blue: #5b9dff;
  --apple-blue-h: #7cb1ff;
  --blue-100: #16294a;
  --shadow: 0 10px 30px rgba(0,0,0,.35);
  --portal-ink: #e9eef7;
  --portal-line: #233042;
  --portal-soft: #111925;
  --portal-card: #151e2a;
  --portal-head: rgba(13,19,28,.92);
  --portal-head-text: #e9eef7;
  --portal-head-muted: #8f9db1;
  --portal-page: #0b1119;
  --portal-input: #0f1722;
  --portal-input-line: #2a384b;
  --portal-shadow: 0 14px 34px rgba(0,0,0,.35);
  --chart-line: #2e3b4e;
}
:root[data-theme="dark"] body { background: var(--bg); }
:root[data-theme="dark"] .topbar { backdrop-filter: blur(14px); box-shadow: 0 6px 24px rgba(0,0,0,.3); }
:root[data-theme="dark"] .brand__logo { content: url("../assets/karc-logo-blue-transparent.png"); width: 42px; padding: 4px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #ffffff, #dce9ff); box-sizing: border-box; box-shadow: 0 0 0 3px rgba(91,157,255,.18); }
:root[data-theme="dark"] .portal-hero__main { background: radial-gradient(120% 140% at 85% 15%, rgba(56,120,230,.55) 0%, rgba(56,120,230,0) 55%), linear-gradient(125deg, #070f22 0%, #0b1d4d 45%, #10357f 75%, #163f86 100%); box-shadow: 0 30px 70px rgba(0,0,0,.45), inset 0 0 0 1px rgba(120,170,255,.12); }
:root[data-theme="dark"] .portal-emblem__disc { background: radial-gradient(circle at 35% 30%, #f3f8ff, #d9e8ff 70%, #bcd6ff); }
:root[data-theme="dark"] .portal-quick__card, :root[data-theme="dark"] .portal-quick .home-account-card { border-color: var(--portal-line); background: var(--portal-card); box-shadow: 0 20px 44px rgba(0,0,0,.45); }
:root[data-theme="dark"] .sub-visual { background: radial-gradient(90% 160% at 88% 0%, rgba(56,120,230,.5), rgba(56,120,230,0) 60%), linear-gradient(120deg, #070f22, #0b1d4d 55%, #173f86); }
:root[data-theme="dark"] .sub-visual::after { background: url("../assets/karc-logo-blue-transparent.png") center / 62% no-repeat, radial-gradient(circle, rgba(225,236,255,.92) 0 54%, rgba(255,255,255,.12) 55% 56%, transparent 57%); }
:root[data-theme="dark"] .portal-tabs { border-bottom-color: var(--portal-blue); }
:root[data-theme="dark"] .portal-tabs button.is-active { border-color: transparent; background: linear-gradient(135deg, #2f6fe0, #1f4fb8); color: #fff; }
:root[data-theme="dark"] .portal-dots a { border-color: #3a4a60; }
:root[data-theme="dark"] .portal-dots a span { background: #e9eef7; color: #0d131c; }
:root[data-theme="dark"] .portal-partner--img { background: #e9eef6; }
:root[data-theme="dark"] .lang-toggle__opt.is-active { background: #365b83; }
:root[data-theme="dark"] .view:not(#view-home) :is(.kbds-catalog-state, .mypage-state, .inquiry-list-state, .pipeline-empty, .admin-table__empty) { border-color: #2c3a4f; }
:root[data-theme="dark"] .view:not(#view-home) :is(input, select, textarea):not([type="radio"]):not([type="checkbox"]):not([type="file"]) { background-color: var(--portal-input); border-color: var(--portal-input-line); color: var(--text); }
:root[data-theme="dark"] .view:not(#view-home) .pick-card.is-selected { background: linear-gradient(160deg, rgba(91,157,255,.18), var(--portal-card) 70%); }
:root[data-theme="dark"] .view:not(#view-home) :is(.kbds-search-btn, #searchBtn, .mypage-primary-btn, .inquiry-primary-btn, #explorerMatrixBtn) { background: linear-gradient(135deg, #3b82f6, #1f56c9); color: #fff; }
:root[data-theme="dark"] :is(.search-results, .search-result-item, .kbds-detail, dialog) { background: var(--portal-card); color: var(--text); }
:root[data-theme="dark"] :is(.search-results__footer, .search-results__notice, .kbds-detail dl) { background: var(--portal-soft); color: #c4d0e0; }
:root[data-theme="dark"] .request-public-guide, :root[data-theme="dark"] .request-guidance { color: var(--text); }
:root[data-theme="dark"] .footer { background: #161618; }

/* ---------- 반응형 ---------- */
@media (max-width: 1420px) { .portal-dots { display: none; } }
@media (max-width: 1180px) {
  .portal-hero__main { grid-template-columns: minmax(0, 1fr) 300px; }
  .portal-quick { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .portal-quick .home-account-card { grid-column: 1 / -1; }
  .sub-visual__inner { padding-right: 24px; }
  .sub-visual::after { width: 170px; height: 170px; opacity: .35; }
}
@media (max-width: 900px) {
  .topbar__tagline { display: none; }
  .topbar__util-inner { justify-content: flex-end; }
  .topbar__inner { min-height: 0; flex-wrap: wrap; row-gap: 2px; padding: 10px 16px 0; }
  .primary-nav { order: 3; width: 100%; margin: 0; overflow-x: auto; justify-content: flex-start; }
  .primary-nav a { min-height: 42px; padding: 0 12px; font-size: 13px; white-space: nowrap; }
  .primary-nav a::after { right: 12px; bottom: 0; left: 12px; }
  .portal-hero__main { grid-template-columns: 1fr; padding-bottom: 96px; }
  .portal-emblem { display: none; }
  .portal-quick { grid-template-columns: 1fr; margin: -64px 12px 0; }
  .portal-intro { grid-template-columns: 1fr; }
  .sub-visual__inner { flex-direction: column; align-items: flex-start; min-height: 0; }
}
@media (max-width: 640px) {
  .topbar__util-inner { padding: 0 14px; }
  .brand__mark, .brand__name { display: inline; font-size: 18px; }
  .brand__logo { width: 32px; }
  .primary-nav a { padding: 0 10px; font-size: 12.5px; }
  .primary-nav a::after { right: 10px; left: 10px; }
  .portal-home { padding: 16px 16px 0; }
  .portal-hero__main { min-height: 0; padding: 34px 20px 92px; border-radius: 22px; }
  .portal-hero__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 0; }
  .portal-hero__stats li { padding: 0 0 0 14px; }
  .portal-hero__stats li:nth-child(odd) { padding-left: 0; border-left: 0; }
  .portal-hero__stats b { font-size: 24px; }
  .portal-quick__card { display: grid; grid-template-columns: 46px 1fr; column-gap: 14px; padding: 18px; }
  .portal-quick__icon { grid-row: 1 / span 3; margin: 0; }
  .portal-quick__card p { margin: 4px 0 10px; }
  .portal-search .global-search { height: 54px; flex-direction: row; padding-left: 6px; border-radius: 999px; }
  .portal-search .global-search input { padding: 0 10px; font-size: 13px; }
  .portal-search .global-search button { width: 42px; height: 42px; flex-basis: 42px; }
  .portal-tabs { overflow-x: auto; }
  .portal-tabs button { flex: 0 0 auto; min-height: 46px; padding: 0 16px; font-size: 12px; }
  .portal-section { margin-top: 52px; }
  .portal-section--tint { padding: 36px 14px; border-radius: 18px; }
  .portal-pill { width: 100%; }
  .portal-panel .home-network__grid { grid-template-columns: 1fr; }
  .portal-partner { min-width: 0; flex: 1 1 40%; }
  .sub-visual__inner { padding: 22px 16px 24px; }
  .sub-visual::after { display: none; }
  .sub-visual__crumb { margin-bottom: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .portal-emblem__ring, .portal-emblem__glow, .portal-emblem__chip { animation: none; }
  .portal-panel.is-active { animation: none; }
}

/* ---------- 3차: K-ARC 로고를 원판 없이 투명하게 (원래 파란 선 로고 + 뒤쪽 어두운 후광으로 대비 확보) ---------- */
.portal-emblem__ring--3 { background: none; border-color: rgba(255,255,255,.14); }
.portal-emblem__glow { inset: 6%; background: radial-gradient(circle, rgba(255,255,255,.92) 0%, rgba(235,244,255,.78) 32%, rgba(200,225,255,.35) 55%, rgba(255,255,255,0) 72%); filter: blur(10px); animation: portal-breathe 5s ease-in-out infinite; }
.portal-emblem__disc, :root[data-theme="dark"] .portal-emblem__disc { inset: 14%; background: none; box-shadow: none; }
.portal-emblem__disc img { width: 100%; filter: saturate(1.1) contrast(1.05); }
:root[data-theme="dark"] .portal-emblem__glow { background: radial-gradient(circle, rgba(236,244,255,.88) 0%, rgba(214,230,255,.7) 32%, rgba(170,205,255,.28) 55%, rgba(255,255,255,0) 72%); }
:root[data-theme="dark"] .portal-emblem__disc img { filter: saturate(1.1) contrast(1.05); }
.sub-visual::after, :root[data-theme="dark"] .sub-visual::after { width: 250px; height: 210px; border-radius: 0; background: url("../assets/karc-logo-blue-transparent.png") center / contain no-repeat; box-shadow: none; opacity: 1; filter: saturate(1.1) contrast(1.05); }
:root[data-theme="dark"] .brand__logo { padding: 0; border-radius: 0; background: none; box-shadow: none; filter: brightness(1.7) saturate(1.2); }
.sub-visual { background: radial-gradient(190px 165px at calc(100% - max(4%, calc(50% - 620px)) - 125px) 50%, rgba(255,255,255,.9), rgba(232,242,255,.6) 45%, rgba(255,255,255,0)), radial-gradient(90% 160% at 88% 0%, rgba(42,123,240,.75), rgba(42,123,240,0) 60%), linear-gradient(120deg, #081a45, #0f3394 50%, #1f68d6 82%, #2b7fe6); }
:root[data-theme="dark"] .sub-visual { background: radial-gradient(190px 165px at calc(100% - max(4%, calc(50% - 620px)) - 125px) 50%, rgba(236,244,255,.85), rgba(210,228,255,.5) 45%, rgba(255,255,255,0)), radial-gradient(90% 160% at 88% 0%, rgba(56,120,230,.5), rgba(56,120,230,0) 60%), linear-gradient(120deg, #070f22, #0b1d4d 55%, #173f86); }
@media (max-width: 1180px) {
  .sub-visual { background: radial-gradient(90% 160% at 88% 0%, rgba(42,123,240,.75), rgba(42,123,240,0) 60%), linear-gradient(120deg, #081a45, #0f3394 50%, #1f68d6 82%, #2b7fe6); }
  :root[data-theme="dark"] .sub-visual { background: radial-gradient(90% 160% at 88% 0%, rgba(56,120,230,.5), rgba(56,120,230,0) 60%), linear-gradient(120deg, #070f22, #0b1d4d 55%, #173f86); }
}

/* ---------- 4차: 로고 흰 선 단색 ---------- */
.portal-emblem__glow, :root[data-theme="dark"] .portal-emblem__glow { display: none; }
.portal-emblem__disc img, :root[data-theme="dark"] .portal-emblem__disc img { filter: brightness(0) invert(1) drop-shadow(0 0 12px rgba(150,200,255,.35)); opacity: .95; }
.sub-visual::after, :root[data-theme="dark"] .sub-visual::after { filter: brightness(0) invert(1) drop-shadow(0 0 10px rgba(150,200,255,.3)); opacity: .9; }
.sub-visual, :root[data-theme="dark"] .sub-visual { background-image: radial-gradient(90% 160% at 88% 0%, rgba(42,123,240,.75), rgba(42,123,240,0) 60%), linear-gradient(120deg, #081a45, #0f3394 50%, #1f68d6 82%, #2b7fe6); }
:root[data-theme="dark"] .sub-visual { background-image: radial-gradient(90% 160% at 88% 0%, rgba(56,120,230,.5), rgba(56,120,230,0) 60%), linear-gradient(120deg, #070f22, #0b1d4d 55%, #173f86); }
:root[data-theme="dark"] .brand__logo { filter: brightness(0) invert(1); opacity: .92; }

/* ---------- 홈: 간소화된 고객지원 ---------- */

/* ---------- 화면별 탭 ---------- */
.page-tabs-wrap { max-width: 1320px; margin: 0 auto; padding: 32px 24px 0; }
.page-tabs { position: relative; display: flex; align-items: stretch; gap: 6px; margin: 0 0 26px; padding: 6px; border: 1px solid var(--portal-line); border-radius: 18px; background: var(--portal-card); box-shadow: var(--portal-shadow); }
.page-tabs-wrap .page-tabs { margin-bottom: 0; }
.page-tabs button { display: inline-flex; min-height: 50px; flex: 0 1 auto; align-items: center; gap: 10px; padding: 0 22px; border: 0; border-radius: 13px; background: transparent; color: var(--muted); font-size: 14px; font-weight: 800; transition: background .15s, color .15s, box-shadow .15s; }
.page-tabs button:hover { background: var(--portal-soft); color: var(--portal-ink); }
.page-tabs button.is-active { background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; box-shadow: 0 10px 22px rgba(31,99,224,.25); }
.page-tabs__num { font-size: 11px; font-weight: 850; letter-spacing: .06em; opacity: .55; }
.page-tabs button.is-active .page-tabs__num { opacity: .8; }
.page-tabs__link { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; padding: 0 16px; color: var(--muted); font-size: 13px; font-weight: 750; }
.page-tabs__link:hover { color: var(--portal-blue); }
.page-tab-panel[hidden] { display: none !important; }
#view-tools .explorer { padding-top: 26px; }
#view-tools .workflow-resources { padding-top: 26px; }
#view-tools .workflow-resources > header { padding-top: 0; border-top: 0; }
.view:not(#view-home) .admin-page .page-tabs { margin-top: 26px; }
.page-tab-panel[data-page-panel="admin:members"] .admin-section-head { margin-top: 0; }
.page-tab-panel[data-page-panel="admin:pipelines"] .pipeline-admin-section { margin-top: 0; }
.page-tab-panel[data-page-panel="support:faq"] .portal-faq { max-width: none; }

/* ---------- 분석 의뢰: 시작 배너·단계 이동 ---------- */
.request-start-banner { display: flex; align-items: center; gap: 14px; margin: 0 0 18px; padding: 14px 16px 14px 18px; border: 1px solid rgba(31,99,224,.22); border-radius: 16px; background: linear-gradient(100deg, rgba(31,99,224,.08), var(--portal-card) 60%); }
.request-start-banner__icon { display: grid; width: 36px; height: 36px; flex: 0 0 36px; place-items: center; border-radius: 11px; background: linear-gradient(135deg, #2f7cf6, #1957d2); }
.request-start-banner__icon svg { width: 20px; height: 20px; fill: none; stroke: #fff; stroke-width: 2; stroke-linecap: round; }
.request-start-banner p { flex: 1; margin: 0; color: var(--muted); font-size: 13px; line-height: 1.55; }
.request-start-banner strong { color: var(--portal-ink); }
.request-start-banner button { display: inline-flex; flex-shrink: 0; align-items: center; gap: 6px; min-height: 40px; padding: 0 16px; border: 1px solid var(--portal-blue); border-radius: 11px; background: var(--portal-card); color: var(--portal-blue); font-size: 13px; font-weight: 800; }
.request-start-banner button:hover { background: var(--portal-blue); color: #fff; }
.view:not(#view-home) .request-steps { margin: 0 0 18px; }
.view:not(#view-home) .request-steps li.is-active { border-color: transparent; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; box-shadow: 0 8px 18px rgba(31,99,224,.25); }
.view:not(#view-home) .request-steps li.is-active span:first-child { background: #fff; color: #1957d2; }
.view:not(#view-home) .request-steps li.is-done:not(.is-active) span:first-child { background: rgba(31,99,224,.14); color: var(--portal-blue); }
.request-step-nav { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 26px; padding-top: 20px; border-top: 1px solid var(--portal-line); }
.request-step-nav button { display: inline-flex; min-height: 46px; align-items: center; gap: 8px; padding: 0 22px; border-radius: 12px; font-size: 14px; font-weight: 800; }
.request-step-nav__prev { border: 1px solid var(--portal-input-line); background: var(--portal-card); color: var(--portal-ink); }
.request-step-nav__prev:hover { border-color: var(--portal-blue); color: var(--portal-blue); }
.request-step-nav__next { margin-left: auto; border: 0; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; box-shadow: 0 10px 22px rgba(31,99,224,.25); }
.request-step-nav__next:hover { filter: brightness(1.07); }
.request-summary.is-highlight { animation: rq-highlight 1.4s ease; }
@keyframes rq-highlight { 0%, 100% { box-shadow: 0 18px 44px rgba(31,99,224,.12); } 30% { box-shadow: 0 0 0 4px rgba(31,99,224,.35), 0 18px 44px rgba(31,99,224,.2); } }

/* ---------- 분석 의뢰 가이드 ---------- */
.request-guide { display: grid; grid-template-columns: minmax(0, 1fr); gap: 22px; }
.request-guide > * { min-width: 0; }
.request-guide h2 { margin: 0 0 16px; color: var(--portal-ink); font-size: 19px; font-weight: 850; letter-spacing: -.035em; text-wrap: balance; }
.request-guide h3 { margin: 0; color: var(--portal-ink); font-size: 16px; font-weight: 800; }
.request-guide code { padding: 1px 6px; border-radius: 6px; background: rgba(31,99,224,.08); color: #1a4fb8; font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }
:root[data-theme="dark"] .request-guide code { background: rgba(91,157,255,.14); color: #b6d2ff; }
.request-guide svg { width: 16px; height: 16px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.rg-intro, .rg-block { padding: 28px 30px; border: 1px solid var(--portal-line); border-radius: 20px; background: var(--portal-card); box-shadow: var(--portal-shadow); }
.rg-lead { max-width: 68ch; margin: -8px 0 20px; color: var(--muted); font-size: 14px; line-height: 1.7; word-break: keep-all; }

/* 소개: 목적 + 받게 되는 결과 */
.rg-intro { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 36px; }
.rg-intro h2 { margin-bottom: 12px; font-size: 22px; }
.rg-intro__text > p { max-width: 62ch; margin: 0; color: var(--portal-ink); font-size: 15px; line-height: 1.75; word-break: keep-all; }
.rg-intro .rg-notice { margin-top: 16px; padding: 12px 14px; border-radius: 12px; background: var(--portal-soft); color: var(--muted); font-size: 13px; line-height: 1.65; }
.rg-outputs h3 { margin-bottom: 4px; color: var(--muted); font-size: 13px; font-weight: 800; }
.rg-outputs ul { margin: 0 0 14px; padding: 0; list-style: none; }
.rg-outputs li { display: grid; gap: 2px; padding: 12px 0; border-bottom: 1px solid var(--portal-line); }
.rg-outputs strong { color: var(--portal-ink); font-size: 14.5px; }
.rg-outputs span { color: var(--muted); font-size: 13px; line-height: 1.55; word-break: keep-all; }
.rg-inline-link { display: inline-flex; align-items: center; gap: 6px; color: var(--portal-blue); font-size: 13.5px; font-weight: 800; text-decoration: none; }
.rg-inline-link:hover { text-decoration: underline; text-underline-offset: 3px; }

/* 데이터 상태 고르기 */
.rg-choices { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.rg-choice { position: relative; display: flex; flex-direction: column; gap: 8px; padding: 18px 18px 18px; border: 1px solid var(--portal-line); border-radius: 14px; background: var(--portal-card); cursor: pointer; transition: border-color .15s, background-color .15s, box-shadow .15s; }
.rg-choice input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.rg-choice:hover { border-color: var(--portal-input-line, #c8dcf2); background: var(--portal-soft); }
.rg-choice::after { position: absolute; top: 18px; right: 16px; width: 18px; height: 18px; box-sizing: border-box; border: 1.5px solid var(--portal-input-line, #c8dcf2); border-radius: 50%; background: var(--portal-card); content: ""; }
.rg-choice:has(input:checked) { border-color: var(--portal-blue); background: var(--accent-tint, rgba(0,113,227,.09)); box-shadow: inset 0 0 0 1px var(--portal-blue); }
.rg-choice:has(input:checked)::after { border: 5px solid var(--portal-blue); background: #fff; }
.rg-choice:has(input:focus-visible) { outline: 3px solid rgba(0,113,227,.35); outline-offset: 2px; }
.rg-choice__top { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding-right: 26px; }
.rg-choice strong { color: var(--portal-ink); font-size: 15px; font-weight: 800; letter-spacing: -.02em; word-break: keep-all; }
.rg-choice em { padding: 2px 8px; border-radius: 99px; background: var(--accent-tint-strong, rgba(0,113,227,.14)); color: var(--portal-blue); font-size: 11.5px; font-style: normal; font-weight: 800; }
.rg-choice__desc { color: var(--muted); font-size: 13px; line-height: 1.6; word-break: keep-all; }

/* 고른 경로의 준비물 */
.rg-path { scroll-margin-top: 90px; }
.rg-path.is-empty { padding: 22px 28px; border-style: dashed; background: var(--portal-soft); box-shadow: none; }
.rg-path__hint { margin: 0; color: var(--muted); font-size: 14px; text-align: center; }
.rg-path__head h2 { margin-bottom: 8px; font-size: 22px; }
.rg-path__head p { max-width: 68ch; margin: 0; color: var(--muted); font-size: 14.5px; line-height: 1.7; word-break: keep-all; }
.rg-path__part { margin-top: 30px; }
.rg-path__part > h3 { margin-bottom: 12px; font-size: 15px; }
.rg-path__note { max-width: 72ch; margin: 10px 0 0; color: var(--muted); font-size: 13px; line-height: 1.7; word-break: keep-all; }
.rg-sample { max-width: 640px; overflow-x: auto; border: 1px solid var(--portal-line); border-radius: 12px; }
.rg-sample table { width: 100%; border-collapse: collapse; font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.rg-sample th, .rg-sample td { padding: 8px 14px; border-bottom: 1px solid var(--portal-line); color: var(--portal-ink); text-align: left; white-space: nowrap; }
.rg-sample th { background: var(--portal-soft); color: var(--muted); font-weight: 700; }
.rg-sample tr:last-child td { border-bottom: 0; }
.rg-link { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; max-width: 820px; }
.rg-link__file { display: grid; gap: 6px; height: 100%; box-sizing: border-box; padding: 16px 18px; border: 1px solid var(--portal-line); border-radius: 14px; background: var(--portal-soft); }
.rg-link__file strong { color: var(--portal-ink); font-size: 14.5px; }
.rg-link__file code { justify-self: start; }
.rg-link__file span { color: var(--muted); font-size: 13px; line-height: 1.55; word-break: keep-all; }
.rg-link__key { display: flex; align-items: center; }
.rg-link__key i { width: 22px; height: 2px; background: var(--portal-blue); opacity: .45; }
.request-guide .rg-link__key code { padding: 5px 10px; border: 1.5px solid var(--portal-blue); border-radius: 99px; background: var(--portal-card); color: var(--portal-blue); font-weight: 700; }
.rg-path .sf-num { display: none; }
.rg-path .sf-note { margin-top: 10px; }
.rg-ways { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--portal-line); }
.rg-ways li { display: grid; grid-template-columns: 170px minmax(0, 1fr) auto; align-items: baseline; gap: 6px 20px; padding: 14px 0; border-bottom: 1px solid var(--portal-line); }
.rg-ways strong { color: var(--portal-ink); font-size: 14px; }
.rg-ways span { max-width: 68ch; color: var(--muted); font-size: 13.5px; line-height: 1.65; word-break: keep-all; }
.rg-ways a { display: inline-flex; align-items: center; gap: 4px; color: var(--portal-blue); font-size: 13.5px; font-weight: 800; text-decoration: none; white-space: nowrap; }
.rg-ways a:hover { text-decoration: underline; text-underline-offset: 3px; }
.rg-list { display: grid; gap: 6px; max-width: 72ch; margin: 0; padding-left: 20px; color: var(--portal-ink); font-size: 14px; line-height: 1.65; word-break: keep-all; }
.rg-list li::marker { color: var(--portal-blue); }
.rg-path__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; padding-top: 22px; border-top: 1px solid var(--portal-line); }
.rg-action { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 18px; border: 1px solid var(--portal-line); border-radius: 12px; background: var(--portal-card); color: var(--portal-ink); font-size: 14px; font-weight: 750; text-decoration: none; transition: background-color .15s, border-color .15s; }
.rg-action:hover { border-color: var(--portal-blue); color: var(--portal-blue); }
.rg-action--primary { border-color: transparent; background: var(--accent-btn, #0071e3); color: #fff; }
.rg-action--primary:hover { border-color: transparent; background: var(--accent-btn-h, #0077ed); color: #fff; }

/* 제출 후·주의 */
.rg-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px; }
.rg-status { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.rg-status li { display: flex; align-items: baseline; gap: 12px; padding: 12px 14px; border-radius: 12px; background: var(--portal-soft); }
.rg-status strong { min-width: 74px; color: var(--portal-blue); font-size: 13px; }
.rg-status .rg-status--3 strong { color: var(--muted); }
.rg-status span { color: var(--muted); font-size: 13px; }
.rg-cautions { display: grid; gap: 6px; margin: 0; padding-left: 18px; color: var(--muted); font-size: 13.5px; line-height: 1.65; }

/* 용어 풀이 */
.rg-glossary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; margin: 0; }
.rg-glossary div { padding: 13px 0; border-top: 1px solid var(--portal-line); }
.rg-glossary dt { color: var(--portal-ink); font-size: 14px; font-weight: 800; }
.rg-glossary dd { margin: 4px 0 0; color: var(--muted); font-size: 13.5px; line-height: 1.6; word-break: keep-all; }

/* 제출 양식 전체 */
.rg-all { padding: 0; }
.rg-all > summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; padding: 22px 56px 22px 30px; position: relative; list-style: none; cursor: pointer; }
.rg-all > summary::-webkit-details-marker { display: none; }
.rg-all > summary::after { position: absolute; top: 50%; right: 28px; width: 9px; height: 9px; border-right: 2px solid var(--portal-blue); border-bottom: 2px solid var(--portal-blue); content: ""; transform: translateY(-70%) rotate(45deg); transition: transform .2s; }
.rg-all[open] > summary::after { transform: translateY(-30%) rotate(-135deg); }
.rg-all > summary span { color: var(--portal-ink); font-size: 17px; font-weight: 850; letter-spacing: -.03em; }
.rg-all > summary small { color: var(--muted); font-size: 13px; }
.rg-all > summary:focus-visible { outline: 3px solid rgba(0,113,227,.35); outline-offset: -3px; border-radius: 20px; }
.rg-all > .sf { padding: 4px 30px 28px; border-top: 1px solid var(--portal-line); }
.rg-all > .sf > .sf-head { margin-top: 22px; }

@media (max-width: 1100px) {
  .rg-choices { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .rg-intro, .rg-split { grid-template-columns: 1fr; gap: 24px; }
  .rg-link { grid-template-columns: minmax(0, 1fr); justify-items: stretch; }
  .rg-link__key { flex-direction: column; justify-self: center; }
  .rg-link__key i { width: 2px; height: 12px; }
  .rg-ways li { grid-template-columns: minmax(0, 1fr); }
  .rg-glossary { grid-template-columns: 1fr; }
  .page-tabs { overflow-x: auto; }
  .page-tabs button { flex: 0 0 auto; padding: 0 16px; font-size: 13px; }
  .request-start-banner { flex-wrap: wrap; }
}
@media (max-width: 640px) {
  .rg-intro, .rg-block { padding: 22px 16px; }
  .rg-all { padding: 0; }
  .rg-all > summary { padding: 18px 48px 18px 16px; }
  .rg-all > summary::after { right: 20px; }
  .rg-all > .sf { padding: 4px 16px 20px; }
  .rg-choices { grid-template-columns: 1fr; }
  .rg-sample th, .rg-sample td { padding: 7px 10px; }
  .rg-intro h2, .rg-path__head h2 { font-size: 20px; }
  .rg-path__actions .rg-action { flex: 1 1 100%; justify-content: center; }
  .page-tabs-wrap { padding: 20px 16px 0; }
  .page-tabs__link { display: none; }
}

/* 연구 데이터 아이콘: 블루 계열로 통일 (약물·시료·오믹스 행마다 톤만 다르게) */
.portal-data__row:nth-child(1) .portal-pill__icon { background: linear-gradient(135deg, #1747a8, #2f6fe0); }
.portal-data__row:nth-child(2) .portal-pill__icon { background: linear-gradient(135deg, #2563d6, #4f8dfd); }
.portal-data__row:nth-child(3) .portal-pill__icon { background: linear-gradient(135deg, #3b82f6, #7ab0ff); }
.portal-data__row .portal-pill.is-soon .portal-pill__icon { background: linear-gradient(135deg, #a3adbd, #8792a4); }

/* ---------- 5차: 오믹스 선택 버튼을 장기·약물 카드와 같은 형태로 ---------- */
.view:not(#view-home) #omicsChips { display: flex; flex-wrap: wrap; gap: 10px; }
.view:not(#view-home) #omicsChips .chip-add { display: inline-flex; min-width: 140px; min-height: 44px; align-items: center; justify-content: center; gap: 7px; padding: 0 18px; border: 1.5px solid var(--portal-line); border-radius: 16px; background: var(--portal-card); color: var(--portal-ink); font-size: 13px; font-weight: 800; transition: transform .15s, border-color .15s, box-shadow .15s, background .15s; }
.view:not(#view-home) #omicsChips .chip-add::before { color: var(--muted); content: "+"; font-size: 15px; font-weight: 700; }
.view:not(#view-home) #omicsChips .chip-add:hover:not(:disabled) { transform: translateY(-2px); border-color: rgba(31,99,224,.4); box-shadow: 0 10px 22px rgba(16,38,82,.08); }
.view:not(#view-home) #omicsChips .chip-add.is-active { border-color: var(--portal-blue); background: linear-gradient(160deg, rgba(31,99,224,.1), var(--portal-card) 70%); color: var(--portal-blue); box-shadow: 0 0 0 3px rgba(31,99,224,.14), 0 10px 22px rgba(31,99,224,.12); }
.view:not(#view-home) #omicsChips .chip-add.is-active::before { color: var(--portal-blue); content: "✓"; font-size: 13px; }

/* 선택된 단계 표시: 파란 배경 위 글자는 흰색 */
.view:not(#view-home) .request-steps li.is-active, .view:not(#view-home) .request-steps li.is-active b { color: #fff; }

/* ---------- 문의 게시판: 요약 + 검색 ---------- */
.inquiry-list-heading { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; min-width: 0; }
.inquiry-summary { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin: 0; color: var(--muted); font-size: 12px; font-weight: 600; }
.inquiry-summary__filter { display: inline-flex; align-items: center; gap: 8px; padding: 4px 6px 4px 12px; border-radius: 999px; background: rgba(31,99,224,.08); color: var(--portal-blue); font-size: 12px; }
.inquiry-summary__filter button { padding: 3px 10px; border: 0; border-radius: 999px; background: var(--portal-card); color: var(--muted); font-size: 11px; font-weight: 750; }
.inquiry-summary__filter button:hover { color: var(--portal-blue); }
.inquiry-list-footer { display: grid; grid-template-columns: minmax(0, 1fr); justify-items: center; gap: 20px; margin-top: 24px; }
.inquiry-list-footer > .atlas-pager { margin-top: 0; max-width: 100%; }
.inquiry-search { display: flex; width: min(100%, 360px); min-width: 0; gap: 8px; }
.view:not(#view-home) .inquiry-search input { flex: 1; min-width: 0; padding: 0 14px 0 38px; background: var(--portal-input) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a95a6' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='10.8' cy='10.8' r='6.8'/%3E%3Cpath d='m16 16 5 5'/%3E%3C/svg%3E") 13px center / 16px no-repeat; }
.inquiry-search button { min-height: 44px; padding: 0 18px; border: 0; border-radius: 12px; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; font-size: 13px; font-weight: 800; box-shadow: 0 8px 18px rgba(31,99,224,.22); }
.inquiry-search button:hover { filter: brightness(1.07); }
@media (max-width: 640px) { .inquiry-list-heading { flex-direction: column; align-items: flex-start; gap: 6px; } }

/* ---------- 5차: 다크 모드를 부드러운 남회색 톤으로 ---------- */
:root[data-theme="dark"] {
  --bg: #1b2230;
  --card: #242d3e;
  --surface: #242d3e;
  --surface-2: #2a3446;
  --text: #e8edf5;
  --muted: #a8b3c5;
  --border: #374357;
  --apple-lightgray: #2a3446;
  --apple-border: #374357;
  --apple-gray: #a8b3c5;
  --blue-100: #22395c;
  --shadow: 0 10px 28px rgba(6,12,24,.28);
  --portal-ink: #ecf1f8;
  --portal-line: #364359;
  --portal-soft: #222b3b;
  --portal-card: #273143;
  --portal-head: rgba(31,39,55,.95);
  --portal-head-text: #ecf1f8;
  --portal-head-muted: #a3afc2;
  --portal-page: #1d2433;
  --portal-input: #202939;
  --portal-input-line: #3f4c63;
  --portal-shadow: 0 12px 30px rgba(6,12,24,.28);
  --chart-line: #3b485d;
}
:root[data-theme="dark"] .topbar { box-shadow: 0 6px 22px rgba(6,12,24,.25); }
:root[data-theme="dark"] .portal-hero__main { background: radial-gradient(120% 140% at 85% 15%, rgba(80,140,240,.5) 0%, rgba(80,140,240,0) 55%), linear-gradient(125deg, #142b5e 0%, #1b3f88 48%, #2357b2 78%, #2b69c4 100%); box-shadow: 0 26px 60px rgba(6,12,24,.4), inset 0 0 0 1px rgba(150,190,255,.14); }
:root[data-theme="dark"] .sub-visual { background-image: radial-gradient(90% 160% at 88% 0%, rgba(80,140,240,.45), rgba(80,140,240,0) 60%), linear-gradient(120deg, #142b5e, #1b3f88 55%, #2459b3); }
:root[data-theme="dark"] .portal-quick__card, :root[data-theme="dark"] .portal-quick .home-account-card { box-shadow: 0 18px 40px rgba(6,12,24,.35); }
:root[data-theme="dark"] .footer { background: #161618; }
:root[data-theme="dark"] .portal-tabs button.is-active { background: linear-gradient(135deg, #3b7cf0, #2a5fc9); }
:root[data-theme="dark"] .portal-partner--img { background: #eef2f8; }

/* ---------- 6차: 연구 데이터 픽토그램 (Healthicons, MIT) ---------- */
.portal-pill__icon i { display: block; width: 28px; height: 28px; background: #fff; -webkit-mask: var(--icon) center / contain no-repeat; mask: var(--icon) center / contain no-repeat; }

/* ---------- 6차: 지원 기관 로고 ---------- */
.portal-partner { display: inline-flex; min-width: 150px; height: 64px; align-items: center; justify-content: center; gap: 8px; padding: 0 20px; border-radius: 14px; background: #fff; box-sizing: border-box; }
.portal-partner img { display: block; width: auto; max-width: 150px; height: 30px; object-fit: contain; }
.portal-partner--karc img, .portal-partner--snu img { height: 38px; }
.portal-partner b { color: #1b2433; font-size: 14px; font-weight: 850; letter-spacing: -.02em; white-space: nowrap; }
.portal-partner--snu b { color: #0f2b74; }
.portal-partner--karc b { color: #2d5aa8; }
.portal-partner--carelink { flex-direction: column; gap: 1px; }
.portal-partner--carelink b { font-size: 17px; letter-spacing: .02em; }
.portal-partner--carelink small { color: #1b2433; font-size: 11px; font-weight: 700; }
:root[data-theme="dark"] .portal-partner { border-color: transparent; background: #fff; }

/* ---------- 6차: 데이터 제출 버튼 정리 ---------- */
.view:not(#view-home) .input-mode button { min-height: 46px; }
.view:not(#view-home) .input-mode button.is-active { background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; box-shadow: 0 8px 18px rgba(31,99,224,.25); }
.view:not(#view-home) :is(.input-mode, .request-steps, #omicsChips, .id-input-row, .data-add-actions) button:focus { outline: none; }
.view:not(#view-home) :is(.input-mode, .request-steps, #omicsChips, .id-input-row, .data-add-actions) button:focus-visible { outline: 3px solid rgba(31,99,224,.35); outline-offset: 2px; }
.view:not(#view-home) .id-input-row { gap: 8px; }
.view:not(#view-home) .id-input-row :is(.id-lookup-btn, .id-search-btn) { display: inline-flex; min-width: 108px; min-height: 44px; align-items: center; justify-content: center; gap: 6px; padding: 0 16px; border-radius: 12px; font-size: 12.5px; font-weight: 800; transition: background .15s, color .15s, border-color .15s; }
.view:not(#view-home) .id-input-row .id-lookup-btn { border: 1px solid var(--portal-blue); background: var(--portal-card); color: var(--portal-blue); }
.view:not(#view-home) .id-input-row .id-lookup-btn::before { width: 14px; height: 14px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5 10 17 19 7'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5 10 17 19 7'/%3E%3C/svg%3E") center / contain no-repeat; content: ""; }
.view:not(#view-home) .id-input-row .id-lookup-btn:hover { background: var(--portal-blue); color: #fff; }
.view:not(#view-home) .id-input-row .id-search-btn { border: 0; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; box-shadow: 0 8px 18px rgba(31,99,224,.22); }
.view:not(#view-home) .id-input-row .id-search-btn::before { width: 14px; height: 14px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'%3E%3Ccircle cx='10.8' cy='10.8' r='6.8'/%3E%3Cpath d='m16 16 5 5'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'%3E%3Ccircle cx='10.8' cy='10.8' r='6.8'/%3E%3Cpath d='m16 16 5 5'/%3E%3C/svg%3E") center / contain no-repeat; content: ""; }
.view:not(#view-home) .id-input-row .id-search-btn:hover { filter: brightness(1.07); }
.view:not(#view-home) .file-drop { display: flex; min-height: 64px; align-items: center; justify-content: center; gap: 10px; border: 1.5px dashed #c3d1e8; border-radius: 14px; background: var(--portal-soft); color: var(--muted); font-size: 13px; font-weight: 700; transition: border-color .15s, background .15s, color .15s; }
.view:not(#view-home) .file-drop::before { width: 22px; height: 22px; flex: 0 0 22px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 16V4M7 9l5-5 5 5M4 16v3a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-3'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 16V4M7 9l5-5 5 5M4 16v3a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-3'/%3E%3C/svg%3E") center / contain no-repeat; content: ""; }
.view:not(#view-home) .file-drop:hover { border-color: var(--portal-blue); background: rgba(31,99,224,.05); color: var(--portal-blue); }
.view:not(#view-home) .file-drop.has-file { border-style: solid; border-color: var(--portal-blue); background: rgba(31,99,224,.06); color: var(--portal-blue); }
:root[data-theme="dark"] .view:not(#view-home) .file-drop { border-color: #4a5870; }
.view:not(#view-home) .data-add-actions button { display: inline-flex; min-height: 48px; align-items: center; justify-content: center; gap: 6px; border: 1.5px dashed rgba(31,99,224,.45); border-radius: 14px; background: var(--portal-card); color: var(--portal-blue); font-size: 13px; font-weight: 800; transition: background .15s, border-color .15s; }
.view:not(#view-home) .data-add-actions button:hover { border-style: solid; border-color: var(--portal-blue); background: rgba(31,99,224,.06); }

.pi-meth { --icon: url("../assets/icons/meth.svg"); }
.pi-fentanyl { --icon: url("../assets/icons/fentanyl.svg"); }
.pi-cannabinoid { --icon: url("../assets/icons/cannabinoid.svg"); }
.pi-brain { --icon: url("../assets/icons/brain.svg"); }
.pi-liver { --icon: url("../assets/icons/liver.svg"); }
.pi-blood { --icon: url("../assets/icons/blood.svg"); }
.pi-urine { --icon: url("../assets/icons/urine.svg"); }
.pi-rna { --icon: url("../assets/icons/rna.svg"); }
.pi-atac { --icon: url("../assets/icons/atac.svg"); }
.pi-metabolome { --icon: url("../assets/icons/metabolome.svg"); }
.pi-pet { --icon: url("../assets/icons/pet.svg"); }

/* ---------- 7차: 연구 지원 배너 + 관련 기관 흐르는 로고 ---------- */
.portal-partners { --partner-line: #e1e4e8; --partner-surface: #fff; --partner-text: #1d1d1f; display: grid; gap: 22px; margin-top: 64px; padding: 0 0 60px; border-top: 0; }
:root[data-theme="dark"] .portal-partners { --partner-line: #424b59; --partner-surface: #232932; --partner-text: #f2f4f7; }
.portal-funding { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 28px 36px; border: 1px solid var(--partner-line); border-radius: 22px; background: var(--partner-surface); }
.portal-funding__copy p { margin: 0 0 10px; color: var(--portal-blue); font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; font-weight: 700; letter-spacing: .22em; }
.portal-funding__copy strong { color: var(--partner-text); font-size: 16px; font-weight: 750; letter-spacing: -.02em; }
.portal-funding__copy em { color: inherit; font-style: normal; }
.portal-funding__logo { display: flex; align-items: center; padding-left: 36px; border-left: 1px solid var(--partner-line); }
.portal-funding__logo img { display: block; width: auto; height: 48px; padding: 8px 14px; border-radius: 12px; background: #fff; }
.portal-marquee { position: relative; overflow: hidden; padding: 4px 0; -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.portal-marquee__track { display: flex; width: max-content; gap: 14px; animation: portal-marquee 32s linear infinite; }
.portal-marquee:hover .portal-marquee__track { animation-play-state: paused; }
@keyframes portal-marquee { from { transform: translateX(0); } to { transform: translateX(calc(-50% - 7px)); } }
.portal-marquee .portal-partner { flex: 0 0 auto; min-width: 190px; height: 72px; border: 1px solid var(--partner-line); background: var(--partner-surface); box-shadow: none; }
:root[data-theme="dark"] .portal-marquee .portal-partner { border-color: var(--partner-line); background: var(--partner-surface); }
.portal-marquee .portal-partner b { color: var(--partner-text); }
.portal-marquee .portal-partner img { height: 32px; max-width: 160px; }
.portal-marquee .portal-partner--karc img, .portal-marquee .portal-partner--snu img { height: 40px; }
:root[data-theme="dark"] .portal-marquee .portal-partner img { box-sizing: content-box; padding: 4px; border-radius: 4px; background: #fff; }
@media (prefers-reduced-motion: reduce) {
  .portal-marquee { -webkit-mask-image: none; mask-image: none; }
  .portal-marquee__track { flex-wrap: wrap; width: auto; animation: none; }
  .portal-marquee__track [aria-hidden="true"] { display: none; }
}
@media (max-width: 640px) {
  .portal-funding { flex-direction: column; align-items: flex-start; padding: 22px 20px; }
  .portal-funding__logo { padding: 16px 0 0; border-top: 1px solid var(--partner-line); border-left: 0; }
  .portal-marquee .portal-partner { min-width: 160px; height: 62px; }
}

/* ---------- 7차: 전처리 결과 제출(엑셀) 화면 정리 ---------- */
.view:not(#view-home) .processed-format { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 0; margin: 0 0 16px; }
.view:not(#view-home) .processed-format label { display: flex; min-height: 52px; align-items: center; gap: 12px; padding: 0 18px; border: 1.5px solid var(--portal-line); border-radius: 14px; background: var(--portal-card); color: var(--portal-ink); font-size: 14px; font-weight: 750; cursor: pointer; transition: border-color .15s, background .15s, box-shadow .15s; }
.view:not(#view-home) .processed-format label:hover { border-color: rgba(31,99,224,.4); }
.view:not(#view-home) .processed-format input[type="radio"] { display: grid; width: 20px; height: 20px; flex: 0 0 20px; place-items: center; margin: 0; border: 2px solid #b9c5d8; border-radius: 50%; background: var(--portal-card); -webkit-appearance: none; appearance: none; cursor: pointer; }
.view:not(#view-home) .processed-format input[type="radio"]::after { width: 10px; height: 10px; border-radius: 50%; background: var(--portal-blue); content: ""; transform: scale(0); transition: transform .15s; }
.view:not(#view-home) .processed-format input[type="radio"]:checked { border-color: var(--portal-blue); }
.view:not(#view-home) .processed-format input[type="radio"]:checked::after { transform: scale(1); }
.view:not(#view-home) .processed-format input[type="radio"]:focus-visible { outline: 3px solid rgba(31,99,224,.35); outline-offset: 2px; }
.view:not(#view-home) .processed-format label:has(input:checked) { border-color: var(--portal-blue); background: linear-gradient(160deg, rgba(31,99,224,.08), var(--portal-card) 70%); color: var(--portal-blue); box-shadow: 0 0 0 3px rgba(31,99,224,.12); }
.view:not(#view-home) .excel-request__intro { margin-bottom: 14px; padding: 18px 20px; border: 1px solid rgba(31,99,224,.2); border-left: 4px solid var(--portal-blue); border-radius: 16px; background: linear-gradient(100deg, rgba(31,99,224,.07), var(--portal-card) 70%); }
.view:not(#view-home) .excel-request__intro strong { color: var(--portal-ink); font-size: 14px; }
.view:not(#view-home) .excel-request__intro p { color: var(--muted); font-size: 12.5px; }
.view:not(#view-home) .excel-request__scope { padding-top: 8px; border-top: 1px dashed var(--portal-line); }
.view:not(#view-home) .template-download { display: inline-flex; min-height: 40px; align-items: center; gap: 8px; margin-top: 12px; padding: 0 16px; border: 1px solid var(--portal-blue); border-radius: 12px; background: var(--portal-card); color: var(--portal-blue); font-size: 12.5px; font-weight: 800; }
.view:not(#view-home) .template-download::before { width: 16px; height: 16px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v12M7 11l5 5 5-5M4 20h16'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v12M7 11l5 5 5-5M4 20h16'/%3E%3C/svg%3E") center / contain no-repeat; content: ""; }
.view:not(#view-home) .template-download:hover { background: var(--portal-blue); color: #fff; }
.view:not(#view-home) .metadata-workflow-guide { gap: 12px; margin-bottom: 16px; }
.view:not(#view-home) .metadata-workflow-guide > div { padding: 16px 18px; border: 1px solid var(--portal-line); border-radius: 14px; background: var(--portal-soft); }
.view:not(#view-home) .metadata-workflow-guide span { display: inline-flex; margin-bottom: 8px; padding: 3px 10px; border-radius: 999px; background: rgba(31,99,224,.1); color: var(--portal-blue); font-size: 10.5px; letter-spacing: .06em; }
.view:not(#view-home) .metadata-workflow-guide strong { font-size: 13px; }
.view:not(#view-home) .metadata-workflow-guide p { font-size: 12px; }
.view:not(#view-home) .excel-drop { min-height: 150px; border: 1.5px dashed #c3d1e8; border-radius: 16px; background: var(--portal-soft); transition: border-color .15s, background .15s; }
.view:not(#view-home) .excel-drop:hover, .view:not(#view-home) .excel-drop.is-dragover { border-color: var(--portal-blue); background: rgba(31,99,224,.05); }
.view:not(#view-home) .excel-drop.has-file { border-style: solid; border-color: var(--portal-blue); background: rgba(31,99,224,.05); }
.view:not(#view-home) .excel-drop__icon { width: 52px; height: 52px; margin-bottom: 12px; border-radius: 14px; background: linear-gradient(135deg, #1f8a5b, #146c45); font-size: 11px; box-shadow: 0 8px 18px rgba(20,108,69,.22); }
.view:not(#view-home) .excel-drop strong { font-size: 14px; }
.view:not(#view-home) .excel-drop small { font-size: 12px; }
:root[data-theme="dark"] .view:not(#view-home) .excel-drop { border-color: #4a5870; }
.view:not(#view-home) .excel-add-btn { display: inline-flex; min-height: 40px; align-items: center; gap: 6px; margin-top: 10px; padding: 0 16px; border: 1px solid var(--portal-input-line); border-radius: 12px; background: var(--portal-card); color: var(--portal-ink); font-size: 12.5px; font-weight: 800; }
.view:not(#view-home) .excel-add-btn:hover { border-color: var(--portal-blue); color: var(--portal-blue); }
.view:not(#view-home) .excel-request__details { padding: 18px; }
.view:not(#view-home) .excel-sheet-guide p { margin: 0 0 10px; color: var(--portal-ink); font-size: 13px; font-weight: 800; }
.view:not(#view-home) #excelSheetGuide { display: flex; flex-wrap: wrap; gap: 6px; }
.view:not(#view-home) #excelSheetGuide span { display: inline-flex; min-height: 30px; align-items: center; gap: 5px; padding: 0 12px; border: 1px dashed var(--portal-input-line); border-radius: 999px; background: var(--portal-card); color: var(--muted); font-size: 12px; font-weight: 800; opacity: 1; }
.view:not(#view-home) #excelSheetGuide span.is-required { border: 1px solid transparent; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; }
.view:not(#view-home) #excelSheetGuide span.is-required::before { content: "✓"; font-size: 11px; }
.view:not(#view-home) .excel-sheet-guide small { display: block; margin-top: 10px; color: var(--muted); font-size: 11.5px; line-height: 1.5; }
@media (max-width: 640px) { .view:not(#view-home) .processed-format { grid-template-columns: 1fr; } }

/* ---------- 8차: 분석 결과 예시 · 결과 웹 보기 ---------- */
.example-toolbar { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 18px 24px; margin: 0 0 20px; padding: 22px 24px; border: 1px solid rgba(31,99,224,.25); border-radius: 20px; background: linear-gradient(110deg, rgba(31,99,224,.08), var(--portal-card) 60%); box-shadow: var(--portal-shadow); }
.example-toolbar__copy { min-width: 0; flex: 1 1 360px; }
.example-toolbar__badge { display: inline-flex; padding: 3px 10px; border-radius: 999px; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; font-size: 10.5px; font-weight: 850; letter-spacing: .14em; }
.example-toolbar h2 { margin: 10px 0 6px; color: var(--portal-ink); font-size: 20px; font-weight: 850; letter-spacing: -.035em; }
.example-toolbar p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.6; word-break: keep-all; }
.example-toolbar__controls { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; }
.example-toolbar__controls label { display: grid; gap: 6px; color: var(--muted); font-size: 12px; font-weight: 750; }
.example-toolbar__controls select { min-width: 170px; }
.example-toolbar__controls button { min-height: 44px; padding: 0 18px; border: 0; border-radius: 12px; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; font-size: 13px; font-weight: 800; box-shadow: 0 8px 18px rgba(31,99,224,.22); }
.example-toolbar__controls button:hover { filter: brightness(1.07); }
.job-receipt__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 6px; }
.job-receipt .job-receipt__secondary { border: 1px solid var(--portal-blue); background: var(--portal-card); color: var(--portal-blue); }
.job-receipt .job-receipt__secondary:hover { background: var(--portal-blue); color: #fff; }
.view:not(#view-home) .job-receipt { padding: 30px 32px; border: 1px solid var(--portal-line); border-radius: 20px; background: var(--portal-card); box-shadow: var(--portal-shadow); }
.view:not(#view-home) .job-receipt h2 { margin: 0 0 12px; color: var(--portal-ink); font-size: 22px; letter-spacing: -.04em; }
.view:not(#view-home) .job-receipt p { margin: 6px 0; color: var(--muted); font-size: 14px; }
.view:not(#view-home) .job-receipt a, .view:not(#view-home) .job-receipt button.kbds-record__use { display: inline-flex; min-height: 44px; align-items: center; padding: 0 18px; border-radius: 12px; font-size: 13px; font-weight: 800; }
.view:not(#view-home) .job-receipt a.kbds-record__use, .view:not(#view-home) .job-receipt button.kbds-record__use { border: 0; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; box-shadow: 0 8px 18px rgba(31,99,224,.22); }
.my-request-view-btn { display: inline-flex; min-height: 34px; align-items: center; gap: 6px; padding: 0 12px; border: 1px solid var(--portal-blue); border-radius: 8px; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; font-size: 11px; font-weight: 800; cursor: pointer; }
.my-request-view-btn::before { width: 13px; height: 13px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") center / contain no-repeat; content: ""; }
.my-request-view-btn:hover { filter: brightness(1.07); }
.my-request-view-btn + .my-request-pdf-btn { border-color: var(--portal-blue); background: var(--portal-card); color: var(--portal-blue); }
.my-request-view-btn + .my-request-pdf-btn:hover { background: rgba(31,99,224,.08); }
.report-modal[data-mode="pdf"] #reportPrintBtn { display: none; }
.report-modal[data-mode="pdf"] .report-modal__panel { display: flex; height: 90vh; flex-direction: column; overflow: hidden; }
.report-modal[data-mode="pdf"] .report-doc { flex: 1; min-height: 0; padding: 0; }
.report-pdf-frame { display: block; width: 100%; height: 100%; min-height: 70vh; border: 0; }
.report-pdf-state { margin: 0; padding: 60px 20px; color: #64708a; font-size: 14px; text-align: center; }
.report-pdf-state.is-error { color: #b42318; }
.view:not(#view-home) .result { max-width: 1320px; box-sizing: border-box; }
.report-modal[data-mode="pdf"] .report-modal__panel { max-width: 1100px; }

/* ---------- 9차: 분석 결과 화면 (result-view.js) ---------- */
.rv { display: grid; gap: 18px; }
.rv-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 24px; padding: 18px 22px; border: 1px solid var(--portal-line); border-radius: 18px; background: var(--portal-card); box-shadow: var(--portal-shadow); }
.rv-head__copy { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; min-width: 0; }
.rv-badge { display: inline-flex; padding: 4px 12px; border-radius: 999px; background: rgba(31,99,224,.1); color: var(--portal-blue); font-size: 12px; font-weight: 850; }
.rv-badge--sample { background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; }
.rv-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.rv-chip { display: inline-flex; align-items: center; min-height: 28px; padding: 0 12px; border: 1px solid var(--portal-line); border-radius: 999px; background: var(--portal-soft); color: var(--portal-ink); font-size: 12px; font-weight: 700; }
.rv-downloads { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.rv-downloads span { margin-right: 4px; color: var(--muted); font-size: 12px; font-weight: 750; }
.rv-downloads button, .rv-link { display: inline-flex; min-height: 34px; align-items: center; gap: 6px; padding: 0 12px; border: 1px solid var(--portal-input-line); border-radius: 10px; background: var(--portal-card); color: var(--portal-ink); font-size: 12px; font-weight: 800; cursor: pointer; }
.rv-downloads button::before { width: 13px; height: 13px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v12M7 11l5 5 5-5M4 20h16'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v12M7 11l5 5 5-5M4 20h16'/%3E%3C/svg%3E") center / contain no-repeat; content: ""; }
.rv-downloads button:hover, .rv-link:hover { border-color: var(--portal-blue); color: var(--portal-blue); }
.rv-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; }
.rv-kpi { position: relative; display: flex; flex-direction: column; gap: 6px; overflow: hidden; padding: 20px 22px; border: 1px solid var(--portal-line); border-radius: 18px; background: var(--portal-card); box-shadow: var(--portal-shadow); }
.rv-kpi::before { position: absolute; top: 0; right: 0; left: 0; height: 4px; background: linear-gradient(90deg, #1f63e0, #5aa2ff); content: ""; }
.rv-kpi--stage::before { background: var(--stage); }
.rv-kpi span { color: var(--muted); font-size: 12px; font-weight: 750; }
.rv-kpi strong { color: var(--portal-ink); font-size: 24px; font-weight: 850; letter-spacing: -.035em; line-height: 1.2; }
.rv-kpi--stage strong { color: var(--stage); }
.rv-kpi strong em { margin-left: 4px; color: var(--muted); font-size: 14px; font-style: normal; font-weight: 700; }
.rv-kpi small { color: var(--muted); font-size: 12px; line-height: 1.5; }
.rv-kpi small b { color: var(--portal-ink); }
.rv-kpi--qc strong { color: #15803d; }
:root[data-theme="dark"] .rv-kpi--qc strong { color: #4ade80; }
.rv-meter { position: relative; height: 8px; margin: 4px 0 2px; border-radius: 999px; background: var(--portal-soft); }
.rv-meter i { position: absolute; inset: 0 auto 0 0; border-radius: 999px; background: linear-gradient(90deg, #5aa2ff, #1f63e0 60%, #e11d48); }
.rv-meter b { position: absolute; top: -3px; height: 14px; border: 2px solid var(--portal-ink); border-radius: 6px; opacity: .45; }
.rv-insight { display: flex; align-items: flex-start; gap: 14px; padding: 16px 20px; border: 1px solid rgba(31,99,224,.22); border-left: 4px solid var(--portal-blue); border-radius: 16px; background: linear-gradient(100deg, rgba(31,99,224,.07), var(--portal-card) 70%); }
.rv-insight__icon { width: 30px; height: 30px; flex: 0 0 30px; border-radius: 10px; background: linear-gradient(135deg, #2f7cf6, #1957d2) center / 18px no-repeat; -webkit-mask: none; position: relative; }
.rv-insight__icon::after { position: absolute; inset: 6px; background: #fff; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.5 10.9c.6.5 1 1.2 1 2.1h5c0-.9.4-1.6 1-2.1A6 6 0 0 0 12 3z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.5 10.9c.6.5 1 1.2 1 2.1h5c0-.9.4-1.6 1-2.1A6 6 0 0 0 12 3z'/%3E%3C/svg%3E") center / contain no-repeat; content: ""; }
.rv-insight p { margin: 0 0 6px; color: var(--portal-ink); font-size: 14.5px; font-weight: 700; line-height: 1.65; word-break: keep-all; }
.rv-insight small { color: var(--muted); font-size: 12px; line-height: 1.6; }
.rv-tabs { display: flex; gap: 6px; overflow-x: auto; padding: 6px; border: 1px solid var(--portal-line); border-radius: 16px; background: var(--portal-card); box-shadow: var(--portal-shadow); scroll-margin-top: 130px; }
.rv-tabs button { flex: 0 0 auto; min-height: 44px; padding: 0 18px; border: 0; border-radius: 11px; background: transparent; color: var(--muted); font-size: 13.5px; font-weight: 800; white-space: nowrap; }
.rv-tabs button:hover { background: var(--portal-soft); color: var(--portal-ink); }
.rv-tabs button.is-active { background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; box-shadow: 0 8px 18px rgba(31,99,224,.22); }
.rv-panel { display: grid; gap: 18px; animation: atlas-fade-in .3s ease both; }
.rv-grid { display: grid; gap: 18px; }
.rv-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rv-card { min-width: 0; padding: 20px 22px; border: 1px solid var(--portal-line); border-radius: 18px; background: var(--portal-card); box-shadow: var(--portal-shadow); }
.rv-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.rv-card__head h3 { margin: 0; color: var(--portal-ink); font-size: 16px; font-weight: 850; letter-spacing: -.03em; }
.rv-card__head p { margin: 4px 0 0; color: var(--muted); font-size: 12.5px; line-height: 1.55; word-break: keep-all; }
.rv-chart { width: 100%; min-height: 260px; }
.rv-chart--tall { min-height: 340px; }
.rv-stage-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 14px; margin: 8px 0 0; padding: 0; list-style: none; color: var(--muted); font-size: 12px; font-weight: 700; }
.rv-stage-legend i { display: inline-block; width: 10px; height: 10px; margin-right: 6px; border-radius: 50%; vertical-align: -1px; }
.rv-filter { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.rv-filter button { min-height: 34px; padding: 0 14px; border: 1px solid var(--portal-line); border-radius: 999px; background: var(--portal-card); color: var(--muted); font-size: 12px; font-weight: 800; }
.rv-filter button.is-active { border-color: transparent; background: var(--portal-ink); color: var(--bg); }
.rv-table-wrap { overflow-x: auto; border: 1px solid var(--portal-line); border-radius: 14px; }
.rv-table { width: 100%; min-width: 860px; border-collapse: collapse; font-size: 13px; }
.rv-table-wrap.is-compact .rv-table { min-width: 760px; }
.rv-table th, .rv-table td { padding: 11px 12px; border-bottom: 1px solid var(--portal-line); text-align: left; vertical-align: middle; }
.rv-table thead th { background: var(--portal-soft); color: var(--muted); font-size: 11.5px; font-weight: 800; white-space: nowrap; }
.rv-table tbody tr:last-child > * { border-bottom: 0; }
.rv-table tbody tr:hover { background: rgba(31,99,224,.04); }
.rv-table tbody th b { color: var(--portal-ink); }
.rv-table tbody th small { display: block; margin-top: 2px; color: var(--muted); font-size: 11px; font-weight: 600; }
.rv-layer { display: inline-flex; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 850; }
.rv-layer--transcriptome { background: rgba(47,111,224,.12); color: #2f6fe0; }
.rv-layer--epigenome { background: rgba(90,162,255,.16); color: #2a7be0; }
.rv-layer--metabolome { background: rgba(139,92,246,.14); color: #7c4ddb; }
/* td에 flex를 주면 표 칸 높이를 따르지 않아 행 구분선이 어긋난다. 안쪽 span에만 flex를 준다. */
.rv-lfc { white-space: nowrap; }
.rv-lfc__inner { display: inline-flex; align-items: center; gap: 8px; vertical-align: middle; }
.rv-lfc__bar { position: relative; display: block; width: 84px; height: 8px; border-radius: 999px; background: var(--portal-soft); }
.rv-lfc__bar::after { position: absolute; top: -2px; bottom: -2px; left: 50%; width: 1px; background: var(--portal-input-line); content: ""; }
.rv-lfc__bar i { position: absolute; top: 0; bottom: 0; border-radius: 999px; }
.rv-lfc__bar i.is-up { left: 50%; background: #e11d48; }
.rv-lfc__bar i.is-down { right: 50%; background: #2563eb; }
.rv-lfc b { min-width: 44px; color: var(--portal-ink); font-variant-numeric: tabular-nums; }
.rv-dir { font-size: 12px; font-weight: 800; white-space: nowrap; }
.rv-dir--up { color: #e11d48; }
.rv-dir--down { color: #2563eb; }
.rv-dir--mixed { color: #8b5cf6; }
.rv-match { display: inline-flex; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 800; }
.rv-match.is-yes { background: rgba(21,128,61,.12); color: #15803d; }
.rv-match.is-no { background: rgba(234,88,12,.12); color: #c2410c; }
.rv-spark { display: block; width: 96px; height: 26px; }
.rv-spark path { fill: none; stroke: var(--portal-ink); stroke-width: 1.3; opacity: .5; }
.rv-spark__zero { stroke: var(--portal-line); stroke-dasharray: 2 2; }
.rv-desc { min-width: 200px; color: var(--muted); font-size: 12.5px; line-height: 1.5; }
.rv-pathway-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.rv-pathway-list li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 12px; padding: 12px 14px; border-radius: 12px; background: var(--portal-soft); }
.rv-pathway-list b { color: var(--portal-ink); font-size: 13.5px; }
.rv-pathway-list span { color: var(--muted); font-size: 12px; }
.rv-overlaps { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.rv-overlaps li { display: grid; grid-template-columns: 110px 1fr 40px; align-items: center; gap: 10px; color: var(--portal-ink); font-size: 13px; font-weight: 750; }
.rv-overlaps i { display: block; height: 10px; border-radius: 999px; background: linear-gradient(90deg, #1f63e0, #8b5cf6); }
.rv-overlaps b { text-align: right; font-variant-numeric: tabular-nums; }
.rv-subhead { margin: 18px 0 8px; color: var(--muted); font-size: 12px; font-weight: 800; }
.rv-genes { display: flex; flex-wrap: wrap; gap: 6px; }
.rv-genes span { padding: 4px 11px; border-radius: 999px; background: rgba(31,99,224,.1); color: var(--portal-blue); font-size: 12px; font-weight: 800; font-style: italic; }
.rv-qc { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.rv-qc li { display: grid; grid-template-columns: 22px minmax(120px, auto) 1fr auto; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 12px; background: var(--portal-soft); font-size: 13px; }
.rv-qc b { color: var(--portal-ink); }
.rv-qc span:not(.rv-qc__icon) { color: var(--muted); }
.rv-qc em { font-size: 11.5px; font-style: normal; font-weight: 800; }
.rv-qc__icon { width: 18px; height: 18px; border-radius: 50%; background: #16a34a; }
.rv-qc li.is-pass em { color: #15803d; }
.rv-qc li.is-warn .rv-qc__icon { background: #f59e0b; }
.rv-qc li.is-fail .rv-qc__icon { background: #dc2626; }
.rv-qc li.is-na .rv-qc__icon { background: var(--portal-input-line); }
.rv-qc li.is-na em { color: var(--muted); }
.rv-methods { display: grid; gap: 0; margin: 0; }
.rv-methods div { display: grid; grid-template-columns: 120px 1fr; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--portal-line); font-size: 13px; }
.rv-methods div:last-child { border-bottom: 0; }
.rv-methods dt { color: var(--muted); font-weight: 750; }
.rv-methods dd { margin: 0; color: var(--portal-ink); }
.rv-caveats { display: grid; gap: 6px; margin: 0; padding-left: 18px; color: var(--muted); font-size: 13px; line-height: 1.6; }
.rv-empty { margin: 0; padding: 28px 12px; color: var(--muted); font-size: 13px; text-align: center; }
@media (max-width: 1080px) { .rv-grid--2 { grid-template-columns: 1fr; } }
@media (max-width: 640px) {
  .rv-head, .rv-card { padding: 16px; }
  .rv-kpi strong { font-size: 21px; }
  .rv-qc li { grid-template-columns: 22px 1fr auto; }
  .rv-qc li span:not(.rv-qc__icon) { grid-column: 2 / -1; }
  .rv-methods div { grid-template-columns: 1fr; gap: 2px; }
}
/* 결과 화면: 상단 시연 문구는 결과 안의 안내로 대체 */
#view-atlas-result .result-page-actions__note { display: none; }
#view-atlas-result .result-page-actions { justify-content: flex-end; margin-bottom: 0; }
#view-atlas-result .result-page-actions:not(:has(#reportBtn:not([hidden]))):not(:has(#resultRequestId:not([hidden]))) { display: none; }

/* ===================== Round 10: 상태 레이블 · 결과 색상 · 리포트 · 모바일 ===================== */
/* 상태 레이블: 원색 배경 대신 점(dot) + 톤 다운된 블루/그레이 계열로 통일 */
:root { --badge-done-bg: #edf3fe; --badge-done-ink: #2152b8; --badge-done-dot: #2f6fe0; --badge-wait-bg: #f2f4f8; --badge-wait-ink: #5a6578; --badge-wait-dot: #a3adbd; --badge-run-bg: #eff0fd; --badge-run-ink: #4a4fc2; --badge-run-dot: #6a6ff0; --badge-fail-bg: #f8f0f1; --badge-fail-ink: #9a4452; --badge-fail-dot: #c86a78; --badge-off-ink: #7b8597; }
:root[data-theme="dark"] { --badge-done-bg: rgba(91,157,255,.14); --badge-done-ink: #a9c9ff; --badge-done-dot: #6aa6ff; --badge-wait-bg: rgba(255,255,255,.06); --badge-wait-ink: #b4bfce; --badge-wait-dot: #7d8899; --badge-run-bg: rgba(132,138,255,.15); --badge-run-ink: #c3c6ff; --badge-run-dot: #8f94ff; --badge-fail-bg: rgba(226,120,136,.13); --badge-fail-ink: #f0b5bf; --badge-fail-dot: #e07f8e; --badge-off-ink: #8f9aab; }
:is(.inquiry-status, .my-request-status, .admin-status) { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px 4px 8px; border: 0; border-radius: 999px; font-size: 11px; font-weight: 700; letter-spacing: -.01em; line-height: 1.35; white-space: nowrap; }
:is(.inquiry-status, .my-request-status, .admin-status)::before { content: ""; flex: none; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
:root .inquiry-status--answered, :root .my-request-status--done, :root .admin-status--done { background: var(--badge-done-bg); color: var(--badge-done-ink); }
:root .inquiry-status--answered::before, :root .my-request-status--done::before, :root .admin-status--done::before { background: var(--badge-done-dot); }
:root .inquiry-status--received, :root .my-request-status--queued, :root .admin-status--queued { background: var(--badge-wait-bg); color: var(--badge-wait-ink); }
:root .inquiry-status--received::before, :root .my-request-status--queued::before, :root .admin-status--queued::before { background: transparent; box-shadow: inset 0 0 0 1.5px var(--badge-wait-dot); }
:root .inquiry-status--in_progress, :root .my-request-status--running, :root .admin-status--running { background: var(--badge-run-bg); color: var(--badge-run-ink); }
:root .inquiry-status--in_progress::before, :root .my-request-status--running::before, :root .admin-status--running::before { background: var(--badge-run-dot); animation: badge-pulse 1.6s ease-in-out infinite; }
:root .my-request-status--failed, :root .admin-status--failed { background: var(--badge-fail-bg); color: var(--badge-fail-ink); }
:root .my-request-status--failed::before, :root .admin-status--failed::before { background: var(--badge-fail-dot); }
:root .inquiry-status--closed, :root .my-request-status--cancelled, :root .admin-status--cancelled { background: transparent; color: var(--badge-off-ink); box-shadow: inset 0 0 0 1px var(--portal-line); }
@keyframes badge-pulse { 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) { :is(.inquiry-status, .my-request-status, .admin-status)::before { animation: none !important; } }
:root .inquiry-category { padding: 4px 9px; border-radius: 6px; background: var(--portal-soft); color: var(--muted); font-size: 11px; font-weight: 700; }
:root .inquiry-mine { padding: 2px 7px; border-radius: 6px; background: var(--badge-done-bg); color: var(--badge-done-ink); font-size: 10.5px; font-weight: 700; }

/* 결과 화면: 빨강·초록 강조를 블루/오렌지 대비로 정리 */
:root { --rv-up: #e38a4a; --rv-up-ink: #b8642a; --rv-down: #3a78d8; --rv-down-ink: #2a63c0; }
:root[data-theme="dark"] { --rv-up: #f0a26a; --rv-up-ink: #f3b385; --rv-down: #6aa2ff; --rv-down-ink: #8fb8ff; }
.rv-lfc__bar i.is-up { background: var(--rv-up); }
.rv-lfc__bar i.is-down { background: var(--rv-down); }
.rv-dir--up { color: var(--rv-up-ink); }
.rv-dir--down { color: var(--rv-down-ink); }
.rv-dir--mixed { color: #6f6cc4; }
.rv-match.is-yes { background: var(--badge-done-bg); color: var(--badge-done-ink); }
.rv-match.is-no { background: var(--badge-wait-bg); color: var(--badge-wait-ink); }
.rv-kpi--qc strong, :root[data-theme="dark"] .rv-kpi--qc strong { color: var(--portal-ink); }
.rv-qc__icon { position: relative; background: var(--portal-blue); }
.rv-qc__icon::after { content: ""; position: absolute; left: 6px; top: 4px; width: 4px; height: 7px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.rv-qc li.is-pass em { color: var(--badge-done-ink); }
.rv-qc li.is-warn .rv-qc__icon { background: #d9a13c; }
.rv-qc li.is-fail .rv-qc__icon { background: #c86a78; }
.rv-qc li:not(.is-pass) .rv-qc__icon::after { display: none; }

/* 리포트 미리보기 · 인쇄 */
.report-modal__panel { max-width: 920px; }
.report-doc:has(.rp) { padding: 0; background: #eef1f6; }
.rp { --rp-ink: #1b2433; --rp-muted: #667186; --rp-line: #e3e8f0; --rp-soft: #f5f7fb; --rp-blue: #1f5fd6; max-width: 820px; margin: 24px auto; padding: 0 44px 36px; border-radius: 6px; background: #fff; box-shadow: 0 4px 24px rgba(20,34,60,.08); color: var(--rp-ink); font-size: 12.5px; line-height: 1.6; }
.rp-cover { margin: 0 -44px 22px; padding: 30px 44px 24px; border-radius: 6px 6px 0 0; color: #fff; background: radial-gradient(80% 140% at 100% 0%, rgba(68,140,240,.55), transparent 60%), linear-gradient(125deg, #0b1d45 0%, #133a86 60%, #1f5fd6 100%); }
.rp-brand { display: flex; align-items: center; gap: 10px; margin-bottom: 26px; font-size: 12px; letter-spacing: .08em; }
.rp-brand span { opacity: .72; }
.rp-brand b { padding-left: 10px; border-left: 1px solid rgba(255,255,255,.35); font-size: 15px; }
.rp-kicker { margin: 0 0 6px; font-size: 9.5px; letter-spacing: .16em; opacity: .7; }
.rp-cover h1 { margin: 0 0 12px; font-size: 26px; line-height: 1.25; letter-spacing: -.02em; }
.rp-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 18px; }
.rp-chip { padding: 3px 10px; border: 1px solid rgba(255,255,255,.32); border-radius: 999px; background: rgba(255,255,255,.08); font-size: 11px; font-weight: 600; }
.rp-cover__meta { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 0; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.18); }
.rp-cover__meta dt { font-size: 9.5px; letter-spacing: .04em; opacity: .65; }
.rp-cover__meta dd { margin: 2px 0 0; font-size: 11.5px; font-weight: 600; word-break: break-all; }
.rp-notice { margin: 0 0 6px; padding: 10px 14px; border-left: 3px solid #8aa7d8; border-radius: 4px; background: var(--rp-soft); }
.rp-notice strong { font-size: 12px; }
.rp-notice p { margin: 2px 0 0; color: var(--rp-muted); font-size: 11px; }
.rp-section { margin-top: 26px; }
.rp-section__title { display: flex; align-items: baseline; gap: 10px; margin: 0 0 12px; padding-bottom: 8px; border-bottom: 1.5px solid var(--rp-ink); font-size: 15px; letter-spacing: -.02em; }
.rp-section__title span { color: var(--rp-blue); font-size: 11px; font-weight: 800; letter-spacing: .06em; }
.rp-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.rp-kpi { padding: 12px 14px; border: 1px solid var(--rp-line); border-radius: 8px; }
.rp-kpi span { display: block; color: var(--rp-muted); font-size: 10.5px; font-weight: 600; }
.rp-kpi strong { display: block; margin: 2px 0; font-size: 18px; letter-spacing: -.02em; }
.rp-kpi strong em { margin-left: 3px; color: var(--rp-muted); font-size: 11px; font-style: normal; font-weight: 600; }
.rp-kpi small { color: var(--rp-muted); font-size: 10px; }
.rp-kpi--accent { border-color: transparent; background: linear-gradient(135deg, #eef4ff, #e3ecfd); }
.rp-kpi--accent strong { color: var(--rp-blue); }
.rp-insight { margin: 12px 0 0; padding: 12px 14px; border-radius: 8px; background: var(--rp-soft); font-size: 12.5px; font-weight: 600; }
.rp-note, .rp-lead { margin: 8px 0 0; color: var(--rp-muted); font-size: 10.5px; }
.rp-lead { margin: 0 0 8px; }
.rp-subhead { margin: 0 0 6px; font-size: 11.5px; font-weight: 700; }
.rp-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; align-items: start; }
.rp-grid:has(> .rp-fig) { gap: 18px 14px; }
.rp-fig { margin: 0; break-inside: avoid; page-break-inside: avoid; }
.rp-fig.is-wide { grid-column: 1 / -1; }
.rp-fig__img { min-height: 60px; border: 1px solid var(--rp-line); border-radius: 8px; padding: 6px; }
.rp-fig__img:empty { background: linear-gradient(90deg, #f3f5f9, #fafbfd, #f3f5f9); }
.rp-fig__img img { display: block; width: 100%; height: auto; }
.rp-fig figcaption { margin-top: 4px; color: var(--rp-muted); font-size: 10px; }
.rp-legend { margin: 6px 0 10px; }
.rp-table { width: 100%; margin-top: 10px; border-collapse: collapse; font-size: 11px; }
.rp-table th { padding: 7px 8px; border-bottom: 1px solid var(--rp-ink); color: var(--rp-muted); font-size: 10px; font-weight: 700; text-align: left; white-space: nowrap; }
.rp-table td { padding: 6px 8px; border-bottom: 1px solid var(--rp-line); vertical-align: top; }
.rp-table tr { break-inside: avoid; page-break-inside: avoid; }
.rp-table tr.is-key td { background: #f0f5ff; font-weight: 700; }
.rp-table--compact { margin-top: 0; }
.rp-table--nohead thead { display: none; }
.rp-table--kv td:first-child { width: 32%; color: var(--rp-muted); }
.rp-num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.rp-dir { font-weight: 700; white-space: nowrap; }
.rp-dir--up { color: #284f78; }
.rp-dir--down { color: #2a807a; }
.rp-dir--mixed { color: #6f6cc4; }
.rp-qc { display: inline-flex; align-items: center; gap: 5px; font-weight: 700; }
.rp-qc::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.rp-qc--pass { color: #2152b8; }
.rp-qc--warn { color: #a87418; }
.rp-qc--fail { color: #9a4452; }
.rp-qc--na { color: var(--rp-muted); }
.rp-methods { display: grid; gap: 0; margin: 0; }
.rp-methods div { display: grid; grid-template-columns: 38% 1fr; gap: 8px; padding: 6px 0; border-bottom: 1px solid var(--rp-line); font-size: 11px; }
.rp-methods dt { color: var(--rp-muted); }
.rp-methods dd { margin: 0; }
.rp-genes { margin: 0; font-size: 11px; }
.rp-caveats { margin: 0; padding-left: 18px; color: var(--rp-muted); font-size: 11px; }
.rp-footer { display: flex; justify-content: space-between; margin-top: 28px; padding-top: 10px; border-top: 1px solid var(--rp-line); color: var(--rp-muted); font-size: 10px; }
@media (max-width: 720px) {
  .rp { margin: 0; padding: 0 18px 24px; border-radius: 0; }
  .rp-cover { margin: 0 -18px 18px; padding: 24px 18px 20px; border-radius: 0; }
  .rp-cover__meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rp-grid { grid-template-columns: minmax(0, 1fr); }
  .rp-table { display: block; overflow-x: auto; }
}
@media print {
  .report-doc:has(.rp) { background: #fff; }
  .rp { max-width: none; margin: 0; padding: 0; box-shadow: none; border-radius: 0; font-size: 10pt; }
  .rp-cover { margin: 0 0 16px; border-radius: 0; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .rp-kpi--accent, .rp-insight, .rp-notice, .rp-table tr.is-key td { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .rp-section { margin-top: 18px; }
  .rp-section__title { break-after: avoid; page-break-after: avoid; }
  .rp-kpis { break-inside: avoid; page-break-inside: avoid; }
  .rp-grid { break-inside: auto; page-break-inside: auto; }
}

/* 문의 삭제 */
.inquiry-delete { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--portal-line); }
.inquiry-delete__btn { border: 0; background: none; padding: 4px 0; color: var(--muted); font: inherit; font-size: 12.5px; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.inquiry-delete__btn:hover { color: var(--badge-fail-ink); }
.inquiry-delete__confirm { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; border-radius: 12px; background: var(--badge-fail-bg); }
.inquiry-delete__confirm[hidden] { display: none; }
.inquiry-delete__confirm p { margin: 0; color: var(--badge-fail-ink); font-size: 12.5px; font-weight: 600; }
.inquiry-delete__confirm div { display: flex; gap: 8px; }
.inquiry-danger-btn { min-height: 36px; padding: 0 16px; border: 0; border-radius: 10px; background: #b4505f; color: #fff; font: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.inquiry-danger-btn:hover { background: #9c4251; }
.inquiry-danger-btn:disabled { opacity: .6; cursor: wait; }

/* 모바일: 유관 사이트 카드 · 문의 목록 겹침 정리 */
@media (max-width: 900px) {
  .portal-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .portal-links { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .portal-links a { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "name link" "desc link"; align-items: center; gap: 2px 12px; padding: 16px 18px; }
  .portal-links a:hover { transform: none; }
  .portal-links strong { grid-area: name; font-size: 15.5px; word-break: keep-all; }
  .portal-links span { grid-area: desc; word-break: keep-all; }
  .portal-links em { grid-area: link; margin: 0; white-space: nowrap; }
  .view:not(#view-home) .inquiry-table-wrap { overflow: visible; }
  .inquiry-table thead { display: none; }
  .inquiry-table, .inquiry-table tbody { display: block; }
  .inquiry-table tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "title title" "status date"; align-items: center; gap: 10px 12px; padding: 16px 18px; border-bottom: 1px solid var(--portal-line); }
  .inquiry-table tr:last-child { border-bottom: 0; }
  .inquiry-table td { display: block; padding: 0 !important; border: 0 !important; font-size: 13px; }
  .inquiry-table td:first-child { display: none; }
  .inquiry-table td:nth-child(2) { grid-area: title; min-width: 0; }
  .inquiry-table td:nth-child(3) { grid-area: status; }
  .inquiry-table td:nth-child(4) { grid-area: date; justify-self: end; }
  .inquiry-table td:nth-child(4) time { color: var(--muted); font-size: 11.5px; white-space: nowrap; }
  .inquiry-title-link { text-align: left; word-break: keep-all; overflow-wrap: anywhere; }
}
.rv-meter i { background: linear-gradient(90deg, #a9cbff, #4f8cf0 55%, #2350c4); }
.rp-fig .rv-stage-legend { margin: 6px 0 0; }
/* 결과 화면이 모바일에서 표·차트의 최소 폭만큼 늘어나 잘리던 문제 */
.rv { grid-template-columns: minmax(0, 1fr); }
#resultView { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; min-width: 0; }
@media (max-width: 1080px) { .rv-grid--2 { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 640px) {
  .rv-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .rv-kpi { padding: 14px; }
  .rv-kpi strong { font-size: 18px; word-break: keep-all; }
  .rv-downloads { width: 100%; flex-wrap: wrap; }
  .rv-tabs { overflow-x: auto; flex-wrap: nowrap; scrollbar-width: none; }
  .rv-tabs button { flex: none; }
  .explorer-matrix-card { min-width: 0; max-width: 100%; overflow-x: auto; }
}
:root[data-theme="dark"] .inquiry-status--received { background: var(--badge-wait-bg); color: var(--badge-wait-ink); }
:root[data-theme="dark"] .inquiry-status--answered { background: var(--badge-done-bg); color: var(--badge-done-ink); }

/* ============ Round 11: 공통 페이지네이션 ============ */
.atlas-pager { display: flex; flex-direction: column; align-items: center; gap: 9px; margin-top: 26px; }
.atlas-pager[hidden] { display: none; }
.atlas-pager__bar { display: inline-flex; align-items: center; gap: 4px; max-width: 100%; padding: 5px; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); box-shadow: 0 8px 22px rgba(23, 46, 92, .07); }
.atlas-pager__nums { display: flex; align-items: center; gap: 2px; margin: 0 4px; }
.atlas-pager__nums--narrow { display: none; }
.atlas-pager__btn, .atlas-pager__num { display: inline-flex; align-items: center; justify-content: center; gap: 4px; height: 36px; min-width: 36px; border: 1px solid transparent; border-radius: 10px; background: transparent; color: var(--text); font: inherit; font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1; cursor: pointer; transition: background .15s ease, color .15s ease, border-color .15s ease, box-shadow .15s ease; }
.atlas-pager__num { padding: 0 8px; }
.atlas-pager__btn--edge { color: var(--muted); }
.atlas-pager__btn--prev, .atlas-pager__btn--next { padding: 0 13px; border-color: var(--apple-blue); background: var(--surface); color: var(--apple-blue); font-weight: 800; }
.atlas-pager__btn--prev { padding-left: 9px; }
.atlas-pager__btn--next { padding-right: 9px; }
.atlas-pager__num:hover, .atlas-pager__btn--edge:hover:not(:disabled) { background: var(--blue-100); color: var(--apple-blue); }
.atlas-pager__btn--prev:hover:not(:disabled), .atlas-pager__btn--next:hover:not(:disabled) { background: var(--apple-blue); color: #fff; }
.atlas-pager__num.is-current { background: var(--apple-blue); color: #fff; box-shadow: 0 6px 14px rgba(0, 113, 227, .26); cursor: default; }
.atlas-pager__btn:disabled { border-color: transparent; background: transparent; color: var(--muted); opacity: .45; cursor: default; }
.atlas-pager__btn--prev:disabled, .atlas-pager__btn--next:disabled { border-color: var(--border); }
.atlas-pager__btn:focus-visible, .atlas-pager__num:focus-visible { outline: 2px solid var(--apple-blue); outline-offset: 2px; }
.atlas-pager__gap { display: inline-flex; align-items: flex-end; justify-content: center; width: 24px; height: 36px; padding-bottom: 11px; color: var(--muted); font-size: 13px; letter-spacing: 1px; user-select: none; }
.atlas-pager__info { margin: 0; color: var(--muted); font-size: 12px; font-variant-numeric: tabular-nums; }
.atlas-pager__info strong { color: var(--apple-blue); font-weight: 800; }
.atlas-pager__dot { margin: 0 4px; opacity: .6; }
.atlas-pager--compact { margin-top: 16px; }
:root[data-theme="dark"] .atlas-pager__bar { box-shadow: 0 8px 22px rgba(0, 0, 0, .28); }
:root[data-theme="dark"] .atlas-pager__num.is-current { color: #0b1626; box-shadow: none; }
:root[data-theme="dark"] .atlas-pager__btn--prev:hover:not(:disabled), :root[data-theme="dark"] .atlas-pager__btn--next:hover:not(:disabled) { color: #0b1626; }
@media (max-width: 640px) {
  .atlas-pager__nums--wide { display: none; }
  .atlas-pager__nums--narrow { display: flex; margin: 0 2px; }
  .atlas-pager__bar { gap: 2px; padding: 4px; }
  .atlas-pager__btn, .atlas-pager__num { height: 34px; min-width: 32px; font-size: 12.5px; }
  .atlas-pager__num { padding: 0 6px; }
  .atlas-pager__btn--prev, .atlas-pager__btn--next { min-width: 34px; padding: 0; }
  .atlas-pager__btn--prev span, .atlas-pager__btn--next span { display: none; }
  .atlas-pager__gap { width: 16px; height: 34px; padding-bottom: 10px; }
}
@media (max-width: 380px) {
  .atlas-pager__btn--edge { display: none; }
}

/* ============ Round 13: 결과 화면 머리·요약 정리 ============ */
/* 예시 선택(장기·약물)은 결과 머리 안으로 옮겨진다(result-view.js). 별도 상자·안내 줄은 숨긴다. */
#view-atlas-result .example-toolbar, #view-atlas-result .result-page-actions { display: none; }
.rv { gap: 16px; }
.rv-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 14px 24px; padding: 22px 24px; border-radius: 18px; box-shadow: none; }
.rv-head__title { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.rv-head__title h2 { margin: 0; color: var(--portal-ink); font-size: 22px; font-weight: 850; letter-spacing: -.035em; }
.rv-head .rv-badge { padding: 3px 10px; border-radius: 99px; background: rgba(31,99,224,.1); color: var(--portal-blue); font-size: 11.5px; font-weight: 800; }
.rv-head__meta { display: flex; flex-wrap: wrap; gap: 4px 0; margin: 8px 0 0; color: var(--muted); font-size: 13px; font-weight: 600; }
.rv-head__meta span + span::before { margin: 0 9px; color: var(--portal-line); content: "|"; }
.rv-head__actions { display: flex; align-items: center; gap: 8px; }
.rv-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 38px; padding: 0 15px; border: 1px solid var(--portal-input-line); border-radius: 10px; background: var(--portal-card); color: var(--portal-ink); font-size: 13px; font-weight: 750; cursor: pointer; white-space: nowrap; list-style: none; }
.rv-btn::-webkit-details-marker { display: none; }
.rv-btn:hover { border-color: var(--portal-blue); color: var(--portal-blue); }
.rv-btn--primary { border-color: var(--portal-blue); background: var(--portal-blue); color: #fff; }
.rv-btn--primary:hover { background: #1854bd; color: #fff; }
.rv-menu { position: relative; }
.rv-menu > summary::after { width: 8px; height: 8px; margin: -3px 0 0 8px; border-right: 1.8px solid currentColor; border-bottom: 1.8px solid currentColor; content: ""; transform: rotate(45deg); }
.rv-menu[open] > summary::after { margin-top: 3px; transform: rotate(-135deg); }
.rv-menu__list { position: absolute; top: calc(100% + 6px); right: 0; z-index: 20; display: grid; min-width: 210px; padding: 6px; border: 1px solid var(--portal-line); border-radius: 12px; background: var(--portal-card); box-shadow: 0 12px 30px rgba(16,38,82,.14); }
.rv-menu__list button { padding: 9px 12px; border: 0; border-radius: 8px; background: none; color: var(--portal-ink); font-size: 13px; font-weight: 650; text-align: left; cursor: pointer; }
.rv-menu__list button:hover { background: var(--portal-soft); color: var(--portal-blue); }
.rv-head__controls { grid-column: 1 / -1; padding-top: 14px; border-top: 1px solid var(--portal-line); }
.rv-head__controls .example-toolbar__controls { align-items: center; gap: 10px 16px; }
.rv-head__controls label { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12.5px; font-weight: 700; }
.rv-head__controls select { min-width: 150px; min-height: 36px; padding: 0 30px 0 12px; font-size: 13px; }
.rv-head__controls button { min-height: 36px; padding: 0 14px; border: 1px solid var(--portal-blue); border-radius: 10px; background: var(--portal-card); color: var(--portal-blue); font-size: 12.5px; font-weight: 800; box-shadow: none; }
.rv-head__controls button:hover { background: var(--portal-blue); color: #fff; filter: none; }

/* 핵심 지표: 한 줄 요약 띠 */
.rv-kpis { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); grid-template-columns: none; gap: 0; border: 1px solid var(--portal-line); border-radius: 18px; background: var(--portal-card); overflow: hidden; }
.rv-kpi { gap: 4px; padding: 20px 24px; border: 0; border-radius: 0; background: none; box-shadow: none; }
.rv-kpi + .rv-kpi { border-left: 1px solid var(--portal-line); }
.rv-kpi::before { display: none; }
.rv-kpi span { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 700; }
.rv-kpi--stage span::before { width: 8px; height: 8px; border-radius: 50%; background: var(--stage); content: ""; }
.rv-kpi strong, .rv-kpi--stage strong { margin-top: 2px; color: var(--portal-ink); font-size: 26px; font-weight: 800; }
.rv-kpi small { font-size: 12.5px; }
.rv-kpi .rv-meter { height: 6px; margin: 6px 0 4px; }
.rv-kpi .rv-meter b { top: -2px; height: 10px; border-width: 1.5px; }

/* 요약 문장 */
.rv-insight { display: block; padding: 18px 24px; border: 0; border-radius: 16px; background: var(--portal-soft); }
.rv-insight span { display: block; margin-bottom: 6px; color: var(--portal-blue); font-size: 12px; font-weight: 800; letter-spacing: .04em; }
.rv-insight p { margin: 0 0 8px; font-size: 15px; font-weight: 600; line-height: 1.7; }
.rv-insight small { display: block; font-size: 12px; }

/* 탭: 밑줄형 */
.rv-tabs { gap: 2px; padding: 0; border: 0; border-bottom: 1px solid var(--portal-line); border-radius: 0; background: none; box-shadow: none; }
.rv-tabs button { min-height: 46px; padding: 0 16px; border-bottom: 2px solid transparent; border-radius: 0; font-size: 14px; font-weight: 700; }
.rv-tabs button:hover { background: none; color: var(--portal-ink); }
.rv-tabs button.is-active { border-bottom-color: var(--portal-blue); background: none; color: var(--portal-blue); box-shadow: none; }

/* 카드 그림자 줄이기 */
.rv-card { border-radius: 16px; box-shadow: 0 1px 2px rgba(16,38,82,.04); }
:root[data-theme="dark"] .rv-card { box-shadow: none; }
:root[data-theme="dark"] .rv-menu__list { box-shadow: 0 12px 30px rgba(0,0,0,.45); }

@media (max-width: 900px) {
  .rv-head { grid-template-columns: minmax(0, 1fr); }
  .rv-kpis { grid-auto-flow: row; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rv-kpi + .rv-kpi { border-left: 0; }
  .rv-kpi:nth-child(even) { border-left: 1px solid var(--portal-line); }
  .rv-kpi:nth-child(n+3) { border-top: 1px solid var(--portal-line); }
}
@media (max-width: 640px) {
  .rv-head { padding: 18px 16px; }
  .rv-head__title h2 { font-size: 19px; }
  .rv-head__actions { flex-wrap: wrap; }
  .rv-head__actions .rv-btn--primary { flex: 1 1 auto; }
  .rv-menu__list { right: auto; left: 0; }
  .rv-head__controls .example-toolbar__controls { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .rv-head__controls label { display: grid; gap: 4px; }
  .rv-head__controls select { width: 100%; min-width: 0; }
  .rv-head__controls button { grid-column: 1 / -1; }
  .rv-kpi { padding: 14px 16px; }
  .rv-kpi strong, .rv-kpi--stage strong { font-size: 20px; }
  .rv-insight { padding: 16px; }
  .rv-tabs button { padding: 0 12px; font-size: 13px; }
}

/* ============ Round 14: 관리자 통계 · 의뢰 취소/삭제 ============ */
.ad-stats { display: grid; gap: 16px; }
/* 통계 탭에서는 위쪽 요청 건수 카드가 통계와 겹치므로 숨긴다. */
#view-admin:has([data-page-panel="admin:stats"]:not([hidden])) .admin-stats { display: none; }
.ad-stats__bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; }
.ad-range { display: inline-flex; padding: 3px; border: 1px solid var(--portal-line); border-radius: 11px; background: var(--portal-card); }
.ad-range button { min-height: 32px; padding: 0 14px; border: 0; border-radius: 8px; background: none; color: var(--muted); font-size: 13px; font-weight: 750; cursor: pointer; }
.ad-range button[aria-pressed="true"] { background: var(--portal-blue); color: #fff; }
.ad-stats__range { color: var(--muted); font-size: 12.5px; font-variant-numeric: tabular-nums; }
.ad-stats__actions { display: flex; gap: 8px; margin-left: auto; }
.rv-menu__list a { display: block; padding: 9px 12px; border-radius: 8px; color: var(--portal-ink); font-size: 13px; font-weight: 650; text-decoration: none; }
.rv-menu__list a:hover { background: var(--portal-soft); color: var(--portal-blue); }
.ad-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.ad-wide { grid-column: 1 / -1; }
.ad-chart { width: 100%; min-height: 260px; }
.ad-chart--sm { min-height: 150px; margin-bottom: 8px; }
.ad-bars { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.ad-bars li { display: grid; grid-template-columns: minmax(90px, 38%) minmax(0, 1fr) auto; align-items: center; gap: 10px; font-size: 13px; }
.ad-bars span { overflow: hidden; color: var(--portal-ink); text-overflow: ellipsis; white-space: nowrap; }
.ad-bars i { height: 8px; border-radius: 99px; background: linear-gradient(90deg, var(--portal-blue) var(--w), var(--portal-soft) var(--w)); }
.ad-bars b { min-width: 34px; color: var(--portal-ink); font-variant-numeric: tabular-nums; text-align: right; }
.ad-sub { margin: 16px 0 8px; color: var(--muted); font-size: 12px; font-weight: 800; }
.ad-table { width: 100%; margin-top: 14px; border-collapse: collapse; font-size: 13px; }
.ad-table th, .ad-table td { padding: 8px 4px; border-top: 1px solid var(--portal-line); text-align: left; }
.ad-table th { color: var(--muted); font-size: 12px; font-weight: 750; }
.ad-table td:last-child, .ad-table th:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.ad-table small { color: var(--muted); }
.ad-empty { margin: 0; padding: 18px 0; color: var(--muted); font-size: 13px; }

.my-request-manage { min-height: 34px; padding: 0 12px; border: 1px solid var(--portal-input-line); border-radius: 9px; background: var(--portal-card); color: var(--portal-ink); font-size: 12.5px; font-weight: 750; cursor: pointer; }
.my-request-manage:hover { border-color: var(--portal-blue); color: var(--portal-blue); }
.my-request-manage.is-danger:hover, .my-request-manage.is-armed, .admin-request-delete.is-armed { border-color: #c2410c; color: #c2410c; }
.my-request-manage.is-armed, .admin-request-delete.is-armed { background: #fff4ed; }
.admin-cancel-flag { display: inline-flex; margin-left: 6px; padding: 2px 8px; border-radius: 99px; background: #fff4ed; color: #c2410c; font-size: 11px; font-weight: 800; }
.admin-request-delete { display: block; margin-top: 8px; min-height: 30px; padding: 0 10px; border: 1px solid var(--portal-input-line); border-radius: 8px; background: var(--portal-card); color: var(--muted); font-size: 12px; font-weight: 750; cursor: pointer; }
.admin-request-delete:hover { border-color: #c2410c; color: #c2410c; }
:root[data-theme="dark"] .my-request-manage.is-armed, :root[data-theme="dark"] .admin-request-delete.is-armed, :root[data-theme="dark"] .admin-cancel-flag { background: #3a2a1f; color: #fdba74; border-color: #9a5b2e; }

@media (max-width: 900px) {
  .ad-grid { grid-template-columns: minmax(0, 1fr); }
  .ad-stats__actions { margin-left: 0; }
}

/* ===== Round 15: 데이터 시각화 전체 비교 · 비교 리포트 ===== */
.explorer-compare { margin-top: 14px; display: grid; gap: 14px; }
.explorer-compare[hidden] { display: none; }
.explorer-compare__kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.cmp-kpi { display: grid; gap: 2px; min-width: 0; padding: 12px 14px; border: 1px solid var(--portal-line, var(--border)); border-radius: 12px; }
.cmp-kpi span { color: var(--muted); font-size: 11.5px; font-weight: 700; }
.cmp-kpi strong { color: var(--text); font-size: 22px; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.cmp-kpi small { overflow: hidden; color: var(--muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.cmp-kpi--accent { border-color: transparent; background: linear-gradient(135deg, rgba(47,124,246,.10), rgba(47,124,246,.04)); }
.cmp-kpi--accent strong { color: var(--apple-blue); }
.explorer-compare__layers[hidden] { display: none; }
.explorer-compare__label, .explorer-compare__table-title { margin: 0 0 6px; color: var(--text); font-size: 13px; font-weight: 800; }
.explorer-compare__table-title { margin: 6px 0 -6px; }
.explorer-compare__scroll { overflow-x: auto; }
.cmp-matrix { width: 100%; border-collapse: collapse; font-size: 12px; font-variant-numeric: tabular-nums; }
.cmp-matrix th, .cmp-matrix td { padding: 8px 10px; border-bottom: 1px solid var(--portal-line, var(--border)); text-align: left; white-space: nowrap; }
.cmp-matrix thead th { color: var(--muted); font-size: 11px; font-weight: 700; }
.cmp-matrix tbody th { color: var(--text); font-weight: 700; }
.cmp-matrix tr.is-current th, .cmp-matrix tr.is-current td { background: rgba(47,124,246,.06); }
.cmp-up { color: #d0413a; font-weight: 700; }
.cmp-down { color: #2f6fed; font-weight: 700; }
.explorer-compare__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.explorer-compare__card { min-width: 0; padding: 14px 14px 6px; border: 1px solid var(--portal-line, var(--border)); border-radius: 14px; }
.explorer-compare__card--wide { grid-column: 1 / -1; }
.explorer-compare__card h3 { margin: 0; color: var(--text); font-size: 13.5px; font-weight: 800; }
.explorer-compare__card p { margin: 2px 0 0; color: var(--muted); font-size: 11.5px; }
.explorer-compare__chart { min-height: 120px; }
.explorer-compare__empty { display: grid; place-items: center; min-height: 200px; margin: 0; color: var(--muted); font-size: 12.5px; }
.explorer-compare__pair-head { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 14px; }
.explorer-compare__pair-head > div { flex: 1 1 260px; }
.explorer-compare__pair-head label { display: grid; gap: 4px; }
.explorer-compare__pair-head label span { color: var(--muted); font-size: 11px; font-weight: 700; }
.explorer-compare__pair-head select { min-width: 150px; padding: 7px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2); color: var(--text); font-size: 12.5px; }
.explorer-report { display: grid; gap: 6px; padding-top: 12px; border-top: 1px solid var(--border); }
.explorer-report button { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 42px; padding: 0 14px; border: 0; border-radius: 12px; background: linear-gradient(135deg, #2f7cf6, #1957d2); color: #fff; font: inherit; font-size: 13px; cursor: pointer; box-shadow: 0 8px 18px rgba(31,99,224,.22); }
.explorer-report button:hover { filter: brightness(1.06); }
.explorer-report button span { padding: 2px 6px; border: 1px solid rgba(255,255,255,.55); border-radius: 5px; font-size: 10px; font-weight: 800; letter-spacing: .04em; }
.explorer-report small { color: var(--muted); font-size: 11px; line-height: 1.45; }
.rp-notice--warn { border-left-color: #c0566a; background: #fbf1f3; }
@media (max-width: 900px) {
  .explorer-compare__kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .explorer-compare__grid { grid-template-columns: minmax(0, 1fr); }
}
@media print {
  /* 비교 리포트: 그림 묶음은 페이지를 넘겨도 되고, 그림 하나는 자르지 않는다. */
  .rp[data-explorer-report] .rp-grid { break-inside: auto; page-break-inside: auto; }
  .rp[data-explorer-report] .rp-section { break-inside: auto; page-break-inside: auto; }
  .rp[data-explorer-report] .rp-table td { padding: 4px 6px; }
}
@media print {
  .rp[data-explorer-report] .rp-section--keep { break-inside: avoid; page-break-inside: avoid; }
}

/* ===== Round 16: 둥근 박스 강조선을 모서리 곡선에 맞춤 =====
   두꺼운 한쪽 테두리·별도 막대 대신 배경 띠로 그려, 박스 바깥 곡선에 맞춰 잘리게 한다. */
.view:not(#view-home) .request-summary::before { display: none; }
.view:not(#view-home) aside.request-summary { background-image: linear-gradient(90deg, #1f63e0, #5aa2ff); background-size: 100% 4px; background-repeat: no-repeat; }
.view:not(#view-home) .excel-request__intro { padding-left: 23px; border-left: 1px solid rgba(31,99,224,.2); background: linear-gradient(var(--portal-blue), var(--portal-blue)) left / 4px 100% no-repeat, linear-gradient(100deg, rgba(31,99,224,.07), var(--portal-card) 70%); }
.kbds-connection-notice { --edge: #c24136; padding-left: 21px; border-left-width: 1px; border-left-color: #e8b7b2; }
.kbds-related-heading { --edge: #1688d4; padding-left: 23px; border-left-width: 1px; border-left-color: var(--border, #d5dce6); }
:root[data-theme="dark"] .kbds-connection-notice { --edge: #ff8274; border-left-color: #71423e; }
:is(.kbds-connection-notice, .kbds-related-heading), :root[data-theme="dark"] .kbds-connection-notice { background-image: linear-gradient(var(--edge), var(--edge)); background-size: 4px 100%; background-repeat: no-repeat; }
.rp-notice { --edge: #8aa7d8; padding-left: 17px; border-left: 0; background: linear-gradient(var(--edge), var(--edge)) left / 3px 100% no-repeat, var(--rp-soft); }
.rp-notice--warn { --edge: #c0566a; background-color: #fbf1f3; }

/* ===== Round 17: 리포트 하단 저작권 표기 (언어와 무관하게 영문, 왼쪽 정렬) ===== */
.rp-footer { flex-wrap: wrap; row-gap: 4px; }
.rp-copyright { flex-basis: 100%; color: var(--rp-muted); font-size: 9.5px; letter-spacing: .02em; }

/* ===== Round 18: 분석 의뢰 (키보드 파일 첨부·선택 상태·검토 단계) ===== */
#view-atlas-search { --req-muted: #5f6b7a; --req-warn: #b45309; --req-ok: #1b7f4b; }
:root[data-theme="dark"] #view-atlas-search { --req-muted: #a8b3c5; --req-warn: #f5b042; --req-ok: #5fd39a; }
/* 파일 입력: 화면에서는 숨기되 키보드·스크린리더로는 닿게 */
.file-input-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); border: 0; white-space: nowrap; }
.csv-slot__pick { position: relative; }
.csv-slot__pick:focus-within { outline: 3px solid var(--portal-blue); outline-offset: 2px; }
:is(.excel-drop, .file-drop):has(+ .file-input-sr:focus-visible) { outline: 3px solid var(--portal-blue); outline-offset: 3px; }
.view:not(#view-home) .pick-card:focus-visible, .chip-add:focus-visible { outline: 3px solid var(--portal-blue); outline-offset: 2px; }

/* 발현값 CSV 선택 시 분석 유형 변경 안내 */
.request-inline-note { margin: 12px 0 0; padding: 10px 14px; border-radius: 10px; background: var(--blue-100); color: var(--portal-ink); font-size: 13px; line-height: 1.5; }

/* 3단계: 검토 후 제출 */
.request-review { display: grid; margin: 0; }
.request-review__row { display: grid; grid-template-columns: 150px minmax(0, 1fr) auto; align-items: start; gap: 6px 18px; padding: 14px 0; border-bottom: 1px solid var(--portal-line); }
.request-review__row dt { color: var(--req-muted); font-size: 13px; font-weight: 700; }
.request-review__row dd { margin: 0; min-width: 0; color: var(--portal-ink); font-size: 14px; font-weight: 650; line-height: 1.5; overflow-wrap: anywhere; }
.request-review__row.is-missing dd { color: var(--req-warn); }
.request-review__edit { padding: 4px 10px; border: 1px solid var(--portal-input-line); border-radius: 8px; background: var(--portal-card); color: var(--portal-blue); font-size: 12.5px; font-weight: 750; }
.request-review__edit:hover { border-color: var(--portal-blue); }
.request-review__edit:focus-visible { outline: 3px solid var(--portal-blue); outline-offset: 2px; }
.request-review__files { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.request-review__files li { display: grid; grid-template-columns: 130px minmax(0, 1fr); gap: 2px 12px; }
.request-review__files li span { grid-row: span 2; color: var(--req-muted); font-size: 12.5px; font-weight: 700; }
.request-review__files li b { font-weight: 700; }
.request-review__files li small { color: var(--req-muted); font-size: 12.5px; font-weight: 500; }
.request-review__files li.is-ok small { color: var(--req-ok); }
.request-review__files li.is-missing b { color: var(--req-warn); }
.request-next { margin-top: 22px; padding: 18px 20px; border-radius: 14px; background: var(--portal-soft); }
.request-next h3 { margin: 0 0 12px; color: var(--portal-ink); font-size: 14px; font-weight: 800; }
.request-next ol { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin: 0; padding: 0; list-style: none; counter-reset: next; }
.request-next li { display: grid; align-content: start; gap: 4px; padding-left: 30px; position: relative; counter-increment: next; }
.request-next li::before { position: absolute; top: 0; left: 0; display: grid; width: 22px; height: 22px; place-items: center; border-radius: 50%; background: var(--portal-blue); color: #fff; font-size: 12px; font-weight: 800; content: counter(next); }
.request-next b { color: var(--portal-ink); font-size: 13.5px; }
.request-next span { color: var(--req-muted); font-size: 12.5px; line-height: 1.55; }
#requestSection3 .field-error { margin: 16px 0 0; font-size: 13px; }
#requestSection3 .field-error:focus { outline: none; }
.view:not(#view-home) #searchBtn.request-submit { margin: 0 0 0 auto; padding: 0 28px; min-height: 48px; border-radius: 12px; }
.view:not(#view-home) #searchBtn[aria-disabled="true"] { background: linear-gradient(135deg, #9dbcf0, #86a8e6); box-shadow: none; }
.request-submit__hint { margin: 8px 0 0; color: var(--req-muted); font-size: 12.5px; text-align: right; }
@media (max-width: 720px) {
  .request-review__row { grid-template-columns: minmax(0, 1fr) auto; }
  .request-review__row dt { grid-column: 1 / -1; }
  .request-next ol { grid-template-columns: 1fr; }
}
@media (max-width: 720px) { .request-review__files li { grid-template-columns: 1fr; } .request-review__files li span { grid-row: auto; } }

/* ===== Round 19: 홈 히어로 — 깊은 남색 (k-arc.org 톤) ===== */
.portal-hero__main, :root[data-theme="dark"] .portal-hero__main {
  background:
    radial-gradient(42% 70% at 76% 46%, rgba(0,113,227,.26), rgba(0,113,227,0) 72%),
    radial-gradient(60% 90% at 0% 100%, rgba(40,90,190,.16), rgba(40,90,190,0) 70%),
    linear-gradient(165deg, #0c1834 0%, #0a1329 52%, #070d1d 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.06), inset 0 1px 0 rgba(255,255,255,.08), 0 28px 64px rgba(6,13,32,.32);
}
.portal-hero__main::before { background-image: radial-gradient(rgba(255,255,255,.15) 1px, transparent 1.2px); background-size: 26px 26px; mask-image: radial-gradient(70% 90% at 30% 40%, rgba(0,0,0,.7), transparent 75%); -webkit-mask-image: radial-gradient(70% 90% at 30% 40%, rgba(0,0,0,.7), transparent 75%); }
.portal-hero__main::after { display: none; }
.portal-hero__art { opacity: .18; }
.portal-hero__lead { color: rgba(214,226,245,.82); }
.portal-hero__stats li { border-left-color: rgba(255,255,255,.1); }
.portal-hero__stats span { color: rgba(196,212,236,.7); }
.portal-emblem__ring { border-color: rgba(255,255,255,.1); }
.portal-emblem__ring--2 { border-color: rgba(120,170,255,.18); }
.portal-emblem__chip { border-color: rgba(255,255,255,.14); background: rgba(255,255,255,.05); animation: none; }
.portal-emblem__chip { font-family: inherit; line-height: 1.3; cursor: grab; user-select: none; touch-action: none; transform-origin: center; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.portal-emblem__chip:hover, .portal-emblem__chip.is-dragging { border-color: rgba(155,219,228,.55); background: rgba(155,219,228,.11); box-shadow: 0 6px 20px rgba(3,15,50,.18), 0 0 16px rgba(155,219,228,.08); }
.portal-emblem__chip.is-dragging { cursor: grabbing; z-index: 2; }
.portal-emblem__chip:focus-visible { outline: 2px solid #b9e7ef; outline-offset: 4px; }
.portal-emblem__chip:active { background: rgba(155,219,228,.17); }
/* Three quiet points follow the existing rings behind the emblem. */
.portal-emblem__orbit { position: absolute; inset: 12%; border-radius: 50%; pointer-events: none; --orbit-period: 28s; animation: portal-orbit-drift var(--orbit-period) linear infinite; animation-delay: -5s; }
.portal-emblem__orbit::before, .portal-emblem__orbit--outer::after { position: absolute; top: 0; left: 50%; width: 3px; height: 3px; border-radius: 50%; background: #fff; box-shadow: 0 0 6px rgba(255,255,255,.24); opacity: .55; transform: translate(-50%, -50%); animation: portal-orbit-fade var(--orbit-period) ease-in-out infinite; pointer-events: none; content: ""; }
.portal-emblem__orbit--outer::after { top: 75%; left: 6.7%; width: 2px; height: 2px; animation-delay: -14s; }
.portal-emblem__orbit--inner { inset: 24%; --orbit-period: 30s; animation-direction: reverse; animation-delay: -17s; }
.portal-emblem__orbit--inner::before { width: 2px; height: 2px; animation-delay: -9s; }
@keyframes portal-orbit-drift { from { transform: rotate(0); } to { transform: rotate(1turn); } }
@keyframes portal-orbit-fade { 0%, 100% { opacity: .18; } 40%, 65% { opacity: .65; } }
@media (prefers-reduced-motion: reduce) {
  .portal-emblem__orbit, .portal-emblem__orbit::before, .portal-emblem__orbit::after { animation: none; }
  .portal-emblem__orbit--outer { transform: rotate(-45deg); }
  .portal-emblem__orbit--inner { transform: rotate(135deg); }
  .portal-emblem__orbit::before, .portal-emblem__orbit::after { opacity: .35; }
}
/* Pearl light and a few champagne flecks behind the emblem. */
.portal-hero__atmosphere { position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.portal-hero__cursor-light { display: none; position: absolute; top: 0; left: 0; width: 400px; height: 400px; margin: -200px; border-radius: 50%; pointer-events: none; opacity: 0; background: radial-gradient(circle, rgba(231,245,255,.15), rgba(151,204,255,.10) 25%, rgba(115,177,245,.035) 48%, transparent 70%); transition: opacity .4s ease; }
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .portal-hero__cursor-light { display: block; }
  .portal-hero__cursor-light.is-lit { opacity: 1; }
}
.portal-hero__aura { position: absolute; top: -20%; right: -3%; width: 650px; max-width: 70%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(ellipse, rgba(171,218,255,.16), rgba(63,136,218,.1) 37%, transparent 68%); filter: blur(22px); animation: portal-aura-flow 16s ease-in-out infinite alternate; }
.portal-hero__aura--warm { top: -48%; right: 24%; width: 500px; background: radial-gradient(ellipse, rgba(245,218,171,.07), transparent 64%); animation-duration: 21s; animation-delay: -9s; }
.portal-hero__particles { position: absolute; inset: 0; mask-image: linear-gradient(90deg, rgba(0,0,0,.35), #000 72%); }
.portal-hero__particles i { position: absolute; left: var(--x); top: var(--y); width: var(--size, 3px); height: var(--size, 3px); border-radius: 50%; color: #e5f3ff; background: currentColor; box-shadow: 0 0 9px rgba(194,226,255,.65); opacity: 0; --tilt: 0deg; animation: portal-light-drift var(--duration, 18s) ease-in-out infinite; animation-delay: var(--delay, 0s); }
.portal-hero__particles .is-warm { color: #f1d8a5; box-shadow: 0 0 9px rgba(241,216,165,.4); }
.portal-hero__particles .is-trail { width: 1.5px; height: 9px; border-radius: 2px; --tilt: 28deg; background: linear-gradient(transparent, rgba(230,245,255,.9), transparent); }
.portal-hero__particles .is-glint { width: 12px; height: 12px; border-radius: 0; background: linear-gradient(90deg, transparent, #eaf7ff, transparent) center / 100% 1px no-repeat, linear-gradient(transparent, #eaf7ff, transparent) center / 1px 100% no-repeat; box-shadow: none; filter: drop-shadow(0 0 4px rgba(203,235,255,.65)); }
@keyframes portal-light-drift {
  0%, 100% { opacity: 0; transform: translate3d(0, 18px, 0) rotate(var(--tilt)); }
  22%, 65% { opacity: .78; }
  90% { opacity: 0; transform: translate3d(var(--drift, 18px), -36px, 0) rotate(var(--tilt)); }
}
@keyframes portal-aura-flow { from { opacity: .55; transform: translate3d(0, 0, 0) scale(1); } to { opacity: 1; transform: translate3d(-16px, 12px, 0) scale(1.08); } }
@media (max-width: 900px) {
  .portal-hero__atmosphere { opacity: .55; }
  .portal-hero__aura { top: -12%; right: -35%; max-width: none; width: 480px; }
  .portal-hero__aura--warm { display: none; }
  .portal-hero__particles i:nth-child(n+9) { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .portal-hero__aura, .portal-hero__particles i { animation: none; }
  .portal-hero__aura { opacity: .65; }
  .portal-hero__particles i { opacity: .3; }
}
/* 서브페이지 상단 밴드도 같은 남색 */
.sub-visual, :root[data-theme="dark"] .sub-visual {
  background-color: #0a1329;
  background-image:
    radial-gradient(260px 200px at calc(100% - max(4%, calc(50% - 620px)) - 125px) 50%, rgba(0,113,227,.3), rgba(0,113,227,0) 72%),
    radial-gradient(50% 120% at 0% 100%, rgba(40,90,190,.14), rgba(40,90,190,0) 70%),
    linear-gradient(165deg, #0c1834 0%, #0a1329 55%, #070d1d 100%);
  box-shadow: inset 0 -1px 0 rgba(255,255,255,.06);
}
.sub-visual::before { background-image: radial-gradient(rgba(255,255,255,.09) 1px, transparent 1.2px); }
@media (max-width: 1180px) {
  .sub-visual, :root[data-theme="dark"] .sub-visual { background-image: radial-gradient(50% 120% at 0% 100%, rgba(40,90,190,.14), rgba(40,90,190,0) 70%), linear-gradient(165deg, #0c1834 0%, #0a1329 55%, #070d1d 100%); }
}

/* ===== Round 20: 전체 톤 정리 — Apple·k-arc.org 계열 (단색 강조색, 그라데이션 버튼·글자 제거, Pretendard) ===== */
:root { --portal-blue: #0071e3; --accent-btn: #0071e3; --accent-btn-h: #0077ed; --accent-tint: rgba(0,113,227,.09); --accent-tint-strong: rgba(0,113,227,.14); }
:root[data-theme="dark"] { --portal-blue: #2997ff; --accent-btn: #0071e3; --accent-btn-h: #0a7cf0; --accent-tint: rgba(41,151,255,.14); --accent-tint-strong: rgba(41,151,255,.22); }
body { font-family: "Pretendard Variable", Pretendard, Inter, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Segoe UI", sans-serif; letter-spacing: -.01em; -webkit-font-smoothing: antialiased; }

/* 기본 버튼: 단색 파랑, 그림자·떠오르기 없음 */
.view:not(#view-home) :is(.kbds-search-btn, #searchBtn, .mypage-primary-btn, .inquiry-primary-btn, .explorer-source button.explorer-primary, #explorerMatrixBtn, .pipeline-admin-section > .pipeline-new, .cta-btn),
:root[data-theme="dark"] .view:not(#view-home) :is(.kbds-search-btn, #searchBtn, .mypage-primary-btn, .inquiry-primary-btn, #explorerMatrixBtn),
.request-step-nav__next, .inquiry-search button, .access-dialog__actions .inquiry-primary-btn, .view:not(#view-home) .pipeline-admin-section .admin-section-head > button,
.portal-search .global-search button, .portal-quick .home-account-card__primary {
  background: var(--accent-btn); box-shadow: none; transition: background-color .15s;
}
.view:not(#view-home) :is(.kbds-search-btn, #searchBtn, .mypage-primary-btn, .inquiry-primary-btn, #explorerMatrixBtn, .cta-btn):hover:not(:disabled),
.request-step-nav__next:hover, .inquiry-search button:hover, .portal-search .global-search button:hover, .portal-quick .home-account-card__primary:hover {
  background: var(--accent-btn-h); filter: none; transform: none; box-shadow: none;
}
.view:not(#view-home) #searchBtn:disabled, .view:not(#view-home) #searchBtn[aria-disabled="true"] { background: #a9c7ee; box-shadow: none; }
:root[data-theme="dark"] .view:not(#view-home) #searchBtn[aria-disabled="true"] { background: #2b4a72; color: #c7d6ea; }

/* 선택된 탭·단계: 단색 */
.page-tabs button.is-active, .view:not(#view-home) .request-steps li.is-active,
.view:not(#view-home) :is(.inquiry-status-tab.is-active, .explorer-tabs button.is-active, .request-steps li.is-active),
:root[data-theme="dark"] .portal-tabs button.is-active { border-color: transparent; background: var(--accent-btn); color: #fff; box-shadow: none; }
.primary-nav a::after { background: var(--portal-blue); }

/* 번호·아이콘 배지: 옅은 파랑 바탕 + 파랑 기호 */
.view:not(#view-home) .request-section__num, .sf-num, .request-start-banner__icon, .view:not(#view-home) .mypage__avatar, .portal-intro__points li::before {
  background: var(--accent-tint-strong); color: var(--portal-blue); box-shadow: none;
}
.request-start-banner__icon svg { stroke: var(--portal-blue); }
.portal-quick__icon { background: var(--accent-tint); box-shadow: none; }
.portal-quick__icon svg { stroke: var(--portal-blue); }
.portal-quick__card::after, .view:not(#view-home) :is(.admin-stat, .mypage__stats article)::before { display: none; }
.view:not(#view-home) aside.request-summary { background-image: none; }

/* 연구 데이터 알약 아이콘: 옅은 파랑 원 */
.portal-pill__icon, .portal-data__row:nth-child(n) .portal-pill__icon { background: var(--accent-tint-strong); box-shadow: none; }
.portal-pill__icon i { background: var(--portal-blue); }
.portal-data__row .portal-pill.is-soon .portal-pill__icon { background: rgba(120,130,150,.14); }
.portal-data__row .portal-pill.is-soon .portal-pill__icon i { background: #8792a4; }

/* 그라데이션 글자 → 단색 */
.portal-section__head p, .view:not(#view-home) :is(.kbds-filter-panel__kicker, .kbds-catalog-toolbar__eyebrow, .workflow-resources > header .hero__eyebrow, .request-summary__eyebrow) {
  background: none; -webkit-background-clip: border-box; background-clip: border-box; -webkit-text-fill-color: currentColor; color: var(--portal-blue); letter-spacing: .08em;
}
.view:not(#view-home) :is(.admin-stat, .mypage__stats article) strong { background: none; -webkit-background-clip: border-box; background-clip: border-box; -webkit-text-fill-color: currentColor; color: var(--portal-ink); }

/* 카드 그림자: 얕고 부드럽게 */
.view:not(#view-home) :is(.request-section, .request-summary, .request-public-guide, .kbds-filter-panel, .kbds-record, .admin-stat, .admin-table-wrap, .mypage__identity, .mypage__stats article, .my-request-card, .mypage-form, .inquiry-form, .inquiry-card, .inquiry-table-wrap, .pipeline-toolbar, .pipeline-card, .explorer-matrix-card, .explorer-source, .explorer-panel, .explorer-main) { box-shadow: 0 1px 2px rgba(16,24,40,.04), 0 6px 20px rgba(16,24,40,.05); }
.view:not(#view-home) .request-summary { box-shadow: 0 1px 2px rgba(16,24,40,.04), 0 6px 20px rgba(16,24,40,.05); }
.portal-quick__card, .portal-quick .home-account-card { box-shadow: 0 2px 6px rgba(16,24,40,.05), 0 14px 34px rgba(16,24,40,.08); }
.portal-quick__card:hover { box-shadow: 0 4px 10px rgba(16,24,40,.06), 0 20px 44px rgba(16,24,40,.1); }
:root[data-theme="dark"] .view:not(#view-home) :is(.request-section, .request-summary, .kbds-filter-panel, .admin-stat, .admin-table-wrap, .mypage__stats article, .inquiry-table-wrap, .explorer-source, .explorer-panel, .explorer-main) { box-shadow: none; }
.page-tabs { box-shadow: none; }


/* ===== UI refinement: navy branding and brighter blue supporting UI ===== */
:root {
  --ui-icon: #2d72bf;
  --ui-label: #2c65a6;
  --portal-ink: #1c3558;
  --ui-icon-bg: #e6f1ff;
  --muted: #5b7393;
  --portal-page: #f2f7fd;
  --portal-soft: #edf4fd;
  --portal-input: #f7faff;
  --portal-line: #d8e5f5;
  --portal-input-line: #c8dcf2;
}
:root[data-theme="dark"] {
  --ui-icon: #8fc5ff;
  --ui-label: #a2caff;
  --portal-ink: #e4efff;
  --ui-icon-bg: #2b476b;
  --muted: #a6bfdf;
  --portal-page: #1c2a40;
  --portal-soft: #243650;
  --portal-input: #21324b;
  --portal-line: #395274;
  --portal-input-line: #456387;
}

/* Labels and icons support the content; blue identifies actions and selections. */
.portal-quick__icon,
.portal-pill__icon,
.portal-data__row:nth-child(n) .portal-pill__icon,
.view:not(#view-home) .request-section__num,
.request-start-banner__icon,
.portal-intro__points li::before {
  background: var(--ui-icon-bg);
  color: var(--ui-icon);
}
.portal-quick__icon svg,
.request-start-banner__icon svg { stroke: var(--ui-icon); }
.portal-pill__icon i { background: var(--ui-icon); }
.portal-quick__card:hover .portal-quick__icon,
.portal-pill:is(a, button):hover .portal-pill__icon { background: var(--accent-tint); }
.portal-quick__card:hover .portal-quick__icon svg { stroke: var(--portal-blue); }
.portal-pill:is(a, button):hover .portal-pill__icon i { background: var(--portal-blue); }
.portal-quick__card > :is(a, button) { color: var(--ui-label); }
.portal-quick__card > :is(a, button):hover { color: var(--portal-blue); }
.view:not(#view-home) .pick-group__label { color: var(--ui-label); }
.view:not(#view-home) .pick-icon { color: var(--ui-icon); }
.view:not(#view-home) .pick-card:is(:hover, .is-selected) .pick-icon { color: var(--portal-blue); }
.view:not(#view-home) .pick-card,
.view:not(#view-home) #omicsChips .chip-add { transition: border-color .15s, background-color .15s; }
.view:not(#view-home) .pick-card:hover,
.view:not(#view-home) #omicsChips .chip-add:hover:not(:disabled) {
  transform: none;
  border-color: var(--portal-blue);
  box-shadow: none;
}
.view:not(#view-home) .pick-card.is-selected,
:root[data-theme="dark"] .view:not(#view-home) .pick-card.is-selected,
.view:not(#view-home) #omicsChips .chip-add.is-active {
  border-color: var(--portal-blue);
  background: var(--accent-tint);
  box-shadow: none;
}

.request-start-banner { border-color: var(--portal-line); background: var(--portal-soft); }
.request-start-banner button { border-color: var(--portal-input-line); color: var(--ui-label); }
.request-start-banner button:hover { border-color: var(--portal-blue); background: var(--accent-tint); color: var(--portal-blue); }
.view:not(#view-home) aside.request-summary { border-color: var(--portal-line); }
.request-checklist li.is-missing .request-checklist__mark { border-color: var(--portal-input-line); }
.request-checklist li.is-missing em,
.request-checklist small { color: var(--muted); }
.request-summary__notice { padding: 0; background: none; font-size: 12px; line-height: 1.6; }
.sub-visual__title { margin-top: 0; }
.sub-visual__desc { color: #bfd9f7; }

.view:not(#view-home) .pick-icon svg { fill: currentColor; }
.view:not(#view-home) .pick-icon svg path[fill="none"] { fill: none; stroke: currentColor; }
:root[data-theme="dark"] .portal-quick__card > :is(a, button) { color: var(--ui-label); }
:root[data-theme="dark"] .portal-quick__card > :is(a, button):hover { color: var(--portal-blue); }
.portal-search__label { color: #a9d0ff; }
.portal-search__advanced { border-color: rgba(184,203,227,.5); color: #d5e4f6; }
.portal-search__advanced:hover { background: rgba(184,203,227,.12); }
/* Soft blue-green markers on the navy hero. */
.portal-emblem__chip i { flex-shrink: 0; background: #9bdbe4; box-shadow: 0 0 8px rgba(155,219,228,.35); }
.portal-quick .home-account-card__avatar,
:root[data-theme="dark"] .portal-quick .home-account-card__avatar { background: var(--ui-icon-bg); color: var(--ui-icon); }
:root[data-theme="dark"] .request-checklist li.is-missing em { color: var(--muted); }
@media (max-width: 640px) {
  .request-start-banner { display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: start; gap: 10px 12px; }
  .request-start-banner p { min-width: 0; }
  .request-start-banner strong { display: block; margin-bottom: 3px; }
  .request-start-banner button { grid-column: 2; justify-self: start; }
  .view:not(#view-home) .request-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .view:not(#view-home) .request-steps li { min-width: 0; justify-content: center; gap: 5px; padding: 6px; }
  .view:not(#view-home) .request-steps li span { width: 24px; height: 24px; flex-shrink: 0; }
  .view:not(#view-home) .request-steps li b { font-size: 11px; }
}

/* Header wordmark: navy on light surfaces, pale blue on dark surfaces. */
.brand__mark { color: #183b68; }
:root[data-theme="dark"] .brand__mark { color: #b8d8ff; }

/* Catalog actions: restrained navy, clear hierarchy and comfortable text size. */
.kbds-record__actions { gap: 8px; margin-top: 16px; }
.kbds-record__actions > button {
  min-height: 36px;
  padding: 8px 14px;
  border: 1px solid #c2d0e1;
  border-radius: 6px;
  background: transparent;
  color: #284b73;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.4;
  box-shadow: none;
  transition: background-color .15s, border-color .15s;
}
.kbds-record__actions > .kbds-record__detail:hover { border-color: #819bbd; background: #edf3fa; color: #1d3f66; }
.kbds-record__actions > .kbds-record__use { border-color: #284b73; background: #284b73; color: #fff; }
.kbds-record__actions > .kbds-record__use:hover { border-color: #1d3b5e; background: #1d3b5e; }
.kbds-record__actions > button:focus-visible { outline: 2px solid var(--portal-blue); outline-offset: 3px; }
:root[data-theme="dark"] .kbds-record__actions > button { border-color: #577397; background: transparent; color: #c4d9f3; }
:root[data-theme="dark"] .kbds-record__actions > .kbds-record__detail:hover { border-color: #8eaed4; background: #304665; color: #e2eeff; }
:root[data-theme="dark"] .kbds-record__actions > .kbds-record__use { border-color: #b6d0f0; background: #b6d0f0; color: #183554; }
:root[data-theme="dark"] .kbds-record__actions > .kbds-record__use:hover { border-color: #d0e2fa; background: #d0e2fa; }

/* Keep the compose action beside the inquiry list title on small screens. */
#inquiryListView > .inquiry-toolbar { flex-direction: row; align-items: center; }
#inquiryListView > .inquiry-toolbar { flex-wrap: wrap; }
.inquiry-toolbar__actions { display: flex; align-items: center; gap: 10px; min-width: 0; }
.inquiry-toolbar__actions > button { flex-shrink: 0; min-height: 40px; }
.inquiry-toolbar__actions .inquiry-search { width: 300px; }
#inquiryListView .inquiry-toolbar__actions .inquiry-search :is(input, button) { min-height: 40px; }
#inquiryListView .inquiry-toolbar__actions .inquiry-search button { border: 1px solid var(--portal-line); background: var(--portal-card); color: var(--portal-ink); box-shadow: none; }
#inquiryListView .inquiry-toolbar__actions .inquiry-search button:hover { filter: none; border-color: var(--portal-blue); color: var(--portal-blue); }
@media (max-width: 640px) {
  .inquiry-toolbar__actions { width: 100%; }
  .inquiry-toolbar__actions .inquiry-search { flex: 1; width: auto; }
}
