/* ============================================================
   RAGOps — "Precision Console" 디자인 시스템
   금융 전문 파싱·RAG 검수를 위한 정밀 데이터 인스트루먼트 톤.
   클래스명은 기존과 동일(rg-topbar/rg-card/console-side/side/…)
   → 마크업 변경 없이 전 화면 일괄 개편. 라이트 단일 테마(가독성 우선).
   ============================================================ */
:root {
  /* 뉴트럴 — 쿨 그래파이트(약간의 청록 바이어스) */
  --rg-bg:        #f4ece2;
  --rg-bg-grid:   #ece0d2;
  --rg-panel:     #fffdfa;
  --rg-panel-2:   #f8f1e9;
  --rg-ink:       #2c2621;
  --rg-ink-soft:  #4c4038;
  --rg-muted:     #8a7c6c;
  --rg-line:      #e6dccf;
  --rg-line-strong:#d0c1ad;

  /* 시그널 액센트 — 딥 틸(제너릭 블루 탈피) */
  --rg-accent:    #c9603f;
  --rg-accent-d:  #a54a2e;
  --rg-accent-t:  #f6e5dc;      /* 틴트 */

  /* 시맨틱(액센트와 분리) */
  --rg-ok:   #15803d;  --rg-ok-t:   #dcece1;
  --rg-warn: #b45309;  --rg-warn-t: #f6ecda;
  --rg-bad:  #be123c;  --rg-bad-t:  #f7dde3;
  --rg-info: #0e7490;  --rg-info-t: #dcedf2;

  /* 다크 크롬(상단바·사이드바) */
  --rg-chrome:   #241d18;
  --rg-chrome-2: #34291f;
  --rg-chrome-tx:#d9c9b7;

  --rg-radius: 10px;
  --rg-radius-sm: 7px;
  --rg-shadow: 0 1px 2px rgba(16,32,54,.06), 0 6px 16px -10px rgba(16,32,54,.18);
  --rg-shadow-sm: 0 1px 2px rgba(16,32,54,.06);

  --rg-sans: "Pretendard","Apple SD Gothic Neo","Malgun Gothic",system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans KR",sans-serif;
  --rg-mono: ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,"D2Coding",monospace;

  /* Bootstrap 변수 상속 지점 */
  --bs-primary: var(--rg-accent);
  --bs-body-color: var(--rg-ink);
  --bs-border-color: var(--rg-line);
}

/* ---- 베이스 ---- */
body {
  background-color: var(--rg-bg);
  background-image:
    linear-gradient(var(--rg-bg-grid) 1px, transparent 1px),
    linear-gradient(90deg, var(--rg-bg-grid) 1px, transparent 1px);
  background-size: 28px 28px;
  color: var(--rg-ink);
  font-family: var(--rg-sans);
  -webkit-font-smoothing: antialiased;
  letter-spacing: .002em;
}
::selection { background: var(--rg-accent); color: #fff; }
a { color: var(--rg-accent-d); text-decoration: none; }
a:hover { color: var(--rg-accent); text-decoration: underline; }
h1,h2,h3,h4,h5 { color: var(--rg-ink); letter-spacing: -.01em; }
.text-muted { color: var(--rg-muted) !important; }
.mono, code, kbd { font-family: var(--rg-mono); }
code { background: var(--rg-panel-2); border: 1px solid var(--rg-line);
  border-radius: 5px; padding: .05rem .35rem; font-size: .85em; color: var(--rg-ink-soft); }

/* ---- 상단바 ---- */
.rg-topbar {
  background: linear-gradient(180deg, var(--rg-chrome-2), var(--rg-chrome));
  border-bottom: 1px solid #000;
  box-shadow: inset 0 -1px 0 rgba(255,255,255,.04), 0 2px 10px -4px rgba(0,0,0,.4);
  flex-wrap: nowrap; align-items: center; gap: .4rem; overflow-x: auto;
  min-height: 54px; position: relative;
}
.rg-topbar::after { content:""; position:absolute; left:0; right:0; bottom:0; height:2px;
  background: linear-gradient(90deg, var(--rg-accent), transparent 60%); }
.rg-topbar .navbar-brand {
  font-weight: 800; letter-spacing: -.01em; color: #fff; display:flex; align-items:center; gap:.5rem;
}
.rg-topbar .navbar-brand::before {
  content: "❖"; color: var(--rg-accent); font-size: .8em;
}
.rg-topbar .navbar-nav { flex-direction: row; flex-wrap: nowrap; align-items: center; }
.rg-topbar .nav-link, .rg-topbar .btn, .rg-topbar .navbar-text { white-space: nowrap; }
.rg-topbar .nav-link { color: var(--rg-chrome-tx); font-size:.9rem; font-weight:600;
  border-radius: 6px; padding:.35rem .7rem; }
.rg-topbar .nav-link.active { color:#fff; background: rgba(201,96,63,.22);
  box-shadow: inset 0 0 0 1px rgba(232,137,106,.35); }
.rg-topbar .nav-link.disabled { color:#5c6b7d; }
.rg-topbar .nav-item { display: flex; align-items: center; }
.rg-topbar .navbar-text { color: var(--rg-chrome-tx) !important; }

/* ---- 사이드바(콘솔) ---- */
.console-side { background: var(--rg-chrome); min-height: calc(100vh - 54px);
  border-right: 1px solid #000; }
.side { position: sticky; top: 0; }
.side .side-head { color:#7f8da0; font-size:.66rem; letter-spacing:.12em;
  text-transform: uppercase; padding: 1rem .85rem .35rem; font-weight: 700;
  font-family: var(--rg-mono); }
.side .nav-link { cursor:pointer; color:#c3ccd8; border-radius:7px; padding:.5rem .8rem;
  display:flex; align-items:center; gap:.65rem; margin:.1rem .3rem; font-size:.9rem;
  transition: background .12s, color .12s, box-shadow .12s; }
.side .nav-link i { font-size:1.05rem; width:1.3rem; text-align:center; color:#7f8da0; }
.side .nav-link:hover { background: var(--rg-chrome-2); color:#fff; }
.side .nav-link:hover i { color: var(--rg-accent); }
.side .nav-link.active { background: linear-gradient(90deg, rgba(201,96,63,.28), rgba(201,96,63,.12));
  color:#fff; box-shadow: inset 3px 0 0 var(--rg-accent); }
.side .nav-link.active i { color: #e8896a; }

/* ---- 히어로(페이지 타이틀 블록) ---- */
.rg-hero { padding: 22px 0 6px; }
.rg-hero .eyebrow { font-family: var(--rg-mono); font-size: 11.5px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--rg-accent-d); font-weight: 700; }
.rg-hero h1 { font-size: clamp(22px, 3vw, 30px); font-weight: 800; margin:.25rem 0 .3rem; }
.rg-hero p { color: var(--rg-muted); margin:0; font-size: 14.5px; max-width: 70ch; }
.eyebrow { font-family: var(--rg-mono); font-size:11px; letter-spacing:.15em;
  text-transform: uppercase; color: var(--rg-accent-d); font-weight: 700; }

/* ---- 카드·섹션 ---- */
.rg-card { border: 1px solid var(--rg-line); border-radius: var(--rg-radius);
  background: var(--rg-panel); box-shadow: var(--rg-shadow); }
.rg-card > .card-body { padding: 1rem 1.15rem; }
.card { border-color: var(--rg-line); border-radius: var(--rg-radius); }
.rg-section-title { display:flex; align-items:center; gap:.5rem; font-weight:700; color:var(--rg-ink);
  font-size: 1rem; }
.rg-section-title i { color: var(--rg-accent); }
.rg-card h5, .rg-card h6 { font-weight: 700; }

/* 좌측 상태 스트라이프 카드 */
.rg-card.stripe-ok    { border-left: 3px solid var(--rg-ok); }
.rg-card.stripe-warn  { border-left: 3px solid var(--rg-warn); }
.rg-card.stripe-bad   { border-left: 3px solid var(--rg-bad); }
.rg-card.stripe-accent{ border-left: 3px solid var(--rg-accent); }

/* ---- 버튼 ---- */
.btn { border-radius: var(--rg-radius-sm); font-weight: 600; letter-spacing: .005em; }
.btn-primary { background: var(--rg-accent); border-color: var(--rg-accent); }
.btn-primary:hover, .btn-primary:focus { background: var(--rg-accent-d); border-color: var(--rg-accent-d); }
.btn-outline-primary { color: var(--rg-accent-d); border-color: var(--rg-accent); }
.btn-outline-primary:hover { background: var(--rg-accent); border-color: var(--rg-accent); }
.btn-success { background: var(--rg-ok); border-color: var(--rg-ok); }
.btn-warning { background: var(--rg-warn); border-color: var(--rg-warn); color:#fff; }
.btn-outline-secondary { color: var(--rg-ink-soft); border-color: var(--rg-line-strong); }
.btn:focus-visible { outline: 2px solid var(--rg-accent); outline-offset: 2px; box-shadow:none; }

/* ---- 테이블(기술 문서 톤) ---- */
.table { --bs-table-color: var(--rg-ink); font-variant-numeric: tabular-nums; }
.table > :not(caption) > * > * { border-color: var(--rg-line); }
.table thead th, .table thead.table-light th {
  color: var(--rg-muted); font-weight: 700; font-size: .72rem; letter-spacing: .05em;
  text-transform: uppercase; background: var(--rg-panel-2); border-bottom: 1px solid var(--rg-line-strong);
}
.table-hover > tbody > tr:hover > * { background: var(--rg-accent-t); }
.table-sm > :not(caption) > * > * { padding: .38rem .55rem; }

/* ---- 폼 ---- */
.form-control, .form-select { border-color: var(--rg-line-strong); border-radius: var(--rg-radius-sm);
  color: var(--rg-ink); }
.form-control:focus, .form-select:focus {
  border-color: var(--rg-accent); box-shadow: 0 0 0 3px var(--rg-accent-t); }
.form-control::placeholder { color: #9aa7b4; }

/* ---- 배지·상태 칩 ---- */
.badge { font-weight: 700; border-radius: 20px; letter-spacing: .01em; padding: .34em .7em; }
.badge.bg-secondary { background: #e2e8ef !important; color: var(--rg-ink-soft) !important; }
.badge.text-bg-success, .badge.bg-success { background: var(--rg-ok-t) !important; color: var(--rg-ok) !important;
  border: 1px solid rgba(21,128,61,.25); }
.badge.text-bg-warning, .badge.bg-warning { background: var(--rg-warn-t) !important; color: var(--rg-warn) !important;
  border: 1px solid rgba(180,83,9,.25); }
.badge.text-bg-danger, .badge.bg-danger { background: var(--rg-bad-t) !important; color: var(--rg-bad) !important;
  border: 1px solid rgba(190,18,60,.25); }
.badge.bg-info, .badge.text-bg-info { background: var(--rg-info-t) !important; color: var(--rg-info) !important; }
.badge.bg-dark { background: var(--rg-chrome) !important; }
.rg-chip { display:inline-flex; align-items:center; gap:.35rem; font-size:12.5px; font-weight:600;
  padding:.28rem .7rem; border-radius:20px; border:1px solid var(--rg-line); background:var(--rg-panel);
  color: var(--rg-ink-soft); }

/* KPI/스탯 타일 */
.rg-stat { background: var(--rg-panel); border:1px solid var(--rg-line); border-radius: var(--rg-radius);
  padding: .8rem 1rem; box-shadow: var(--rg-shadow-sm); }
.rg-stat .k { font-family: var(--rg-mono); font-size: 1.5rem; font-weight: 800; color: var(--rg-ink);
  line-height: 1; }
.rg-stat .lbl { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--rg-muted);
  font-weight: 700; margin-top: .3rem; }

/* 탭 */
.nav-tabs { border-bottom: 1px solid var(--rg-line-strong); }
.nav-tabs .nav-link { color: var(--rg-muted); font-weight: 600; border:none;
  border-bottom: 2px solid transparent; border-radius: 0; }
.nav-tabs .nav-link.active { color: var(--rg-accent-d); background: transparent;
  border-bottom-color: var(--rg-accent); }

/* 진행바 */
.progress { border-radius: 8px; background: #dde3ea; height: 16px; }
.progress-bar { background: linear-gradient(90deg, var(--rg-accent), #e8896a); }

/* 얇은 구분선·유틸 */
hr { border-color: var(--rg-line); opacity: 1; }
.rg-hairline { height:1px; background: var(--rg-line); margin: .75rem 0; }
.bg-light { background: var(--rg-bg) !important; }
.text-info { color: var(--rg-info) !important; }
.text-success { color: var(--rg-ok) !important; }
.text-danger { color: var(--rg-bad) !important; }

/* 활성 네비 버튼(테마 연동) — 인라인 하드코딩 대체 */
.rg-navactive { background: var(--rg-accent); color:#fff; border:1px solid var(--rg-accent-d); }
.rg-navactive:hover { background: var(--rg-accent-d); color:#fff; }

/* ============================================================
   스킨(테마) — data-theme 로 전 화면 일괄 전환. :root 는 웜(클래식).
   ============================================================ */
/* A. 인디고 라이트 (Linear·Vercel 풍, 제품 기본) */
html[data-theme="indigo"] {
  --rg-bg:#f8fafc; --rg-bg-grid:#eef2f7; --rg-panel:#ffffff; --rg-panel-2:#f1f5f9;
  --rg-ink:#0f172a; --rg-ink-soft:#334155; --rg-muted:#64748b; --rg-line:#e2e8f0; --rg-line-strong:#cbd5e1;
  --rg-accent:#4f46e5; --rg-accent-d:#4338ca; --rg-accent-t:#eef2ff;
  --rg-chrome:#1e293b; --rg-chrome-2:#334155; --rg-chrome-tx:#cbd5e1;
  --rg-sans:"Inter","Pretendard","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
}
html[data-theme="indigo"] .rg-topbar::after { background:linear-gradient(90deg,var(--rg-accent),transparent 60%); }

/* C. 깃허브/엔터프라이즈 라이트 */
html[data-theme="github"] {
  --rg-bg:#ffffff; --rg-bg-grid:#ffffff; --rg-panel:#ffffff; --rg-panel-2:#f6f8fa;
  --rg-ink:#1f2328; --rg-ink-soft:#3d444d; --rg-muted:#656d76; --rg-line:#d0d7de; --rg-line-strong:#b7bfc7;
  --rg-accent:#0969da; --rg-accent-d:#0550ae; --rg-accent-t:#ddf4ff;
  --rg-chrome:#24292f; --rg-chrome-2:#2f363d; --rg-chrome-tx:#d0d7de;
  --rg-sans:"Inter","Pretendard","Segoe UI","Malgun Gothic",system-ui,sans-serif;
}
html[data-theme="github"] body { background-image:none; }

/* B. 다크 대시보드 (Slate + 시안) */
html[data-theme="dark"] {
  --rg-bg:#0f172a; --rg-bg-grid:#111d33; --rg-panel:#1e293b; --rg-panel-2:#243447;
  --rg-ink:#e2e8f0; --rg-ink-soft:#cbd5e1; --rg-muted:#94a3b8; --rg-line:#334155; --rg-line-strong:#475569;
  --rg-accent:#22d3ee; --rg-accent-d:#06b6d4; --rg-accent-t:#0e3a44;
  --rg-ok:#34d399; --rg-ok-t:#0f3d31; --rg-warn:#fbbf24; --rg-warn-t:#3d3312;
  --rg-bad:#fb7185; --rg-bad-t:#3d1620; --rg-info:#38bdf8; --rg-info-t:#0e3346;
  --rg-chrome:#0b1220; --rg-chrome-2:#182338; --rg-chrome-tx:#cbd5e1;
  --rg-sans:"Inter","Pretendard","Malgun Gothic",system-ui,sans-serif;
  --rg-shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 20px -12px rgba(0,0,0,.6);
}
html[data-theme="dark"] .card { background:var(--rg-panel); color:var(--rg-ink); }
html[data-theme="dark"] .table { --bs-table-bg:var(--rg-panel); --bs-table-color:var(--rg-ink); }
html[data-theme="dark"] .form-control, html[data-theme="dark"] .form-select { background-color:var(--rg-panel-2); color:var(--rg-ink); }
html[data-theme="dark"] .form-control::placeholder { color:#7c8aa0; }
html[data-theme="dark"] .badge.bg-secondary { background:#334155 !important; color:#cbd5e1 !important; }
html[data-theme="dark"] .bg-light { background:var(--rg-bg) !important; }
html[data-theme="dark"] .badge.bg-primary-subtle { background:#0e3a44 !important; color:#67e8f9 !important; }
html[data-theme="dark"] .badge.bg-secondary-subtle { background:#243447 !important; color:#cbd5e1 !important; }
html[data-theme="dark"] .alert-secondary { background:#243447; color:#cbd5e1; border-color:#334155; }
html[data-theme="dark"] .rg-hero p, html[data-theme="dark"] .text-muted { color:var(--rg-muted) !important; }

/* 테마·글자·아이콘 컨트롤 — 상단바 우측(.in-bar) / 상단바 없으면 우상단 고정 */
#rg-theme-switch { display:flex; align-items:center; gap:.35rem; }
#rg-theme-switch .rg-fs { display:inline-flex; gap:.2rem; }
/* 상단바(어두운 배경) 안에 들어갈 때 */
.rg-topbar #rg-theme-switch.in-bar { margin-left:.5rem; }
#rg-theme-switch.in-bar select,
#rg-theme-switch.in-bar .rg-fs button {
  background:rgba(255,255,255,.14); color:#fff; border:1px solid rgba(255,255,255,.28);
  border-radius:6px; font-size:.78rem; padding:.15rem .4rem; outline:none; cursor:pointer; line-height:1.2; }
#rg-theme-switch.in-bar .rg-fs button { font-weight:800; }
#rg-theme-switch.in-bar select option { color:#111; }
/* 상단바가 없는 페이지 — 우상단 고정 패널 */
#rg-theme-switch:not(.in-bar) { position:fixed; top:12px; right:14px; z-index:3000;
  background:var(--rg-panel); border:1px solid var(--rg-line-strong); border-radius:12px;
  box-shadow:var(--rg-shadow); padding:.3rem .5rem; font-size:.82rem; }
#rg-theme-switch:not(.in-bar) select { border:1px solid var(--rg-line); background:var(--rg-panel); color:var(--rg-ink); font-size:.8rem; border-radius:6px; padding:.1rem .3rem; outline:none; cursor:pointer; }
#rg-theme-switch:not(.in-bar) .rg-fs button { border:1px solid var(--rg-line); background:var(--rg-panel); color:var(--rg-ink); font-weight:800; border-radius:6px; padding:.1rem .4rem; cursor:pointer; }

/* 아이콘 세트 — 이모지 모드: 자주 쓰는 Bootstrap 아이콘을 이모지로 치환(폐쇄망, 벤더링 불필요) */
html[data-icons="emoji"] .bi-grid-3x3-gap-fill::before,
html[data-icons="emoji"] .bi-grid-1x2-fill::before{content:"🧭"}
html[data-icons="emoji"] .bi-puzzle::before,
html[data-icons="emoji"] .bi-puzzle-fill::before{content:"🧩"}
html[data-icons="emoji"] .bi-stack::before{content:"📦"}
html[data-icons="emoji"] .bi-columns-gap::before{content:"🔀"}
html[data-icons="emoji"] .bi-mortarboard::before,
html[data-icons="emoji"] .bi-mortarboard-fill::before{content:"📖"}
html[data-icons="emoji"] .bi-clipboard2-check::before,
html[data-icons="emoji"] .bi-clipboard-check::before{content:"✅"}
html[data-icons="emoji"] .bi-clipboard-data::before{content:"📋"}
html[data-icons="emoji"] .bi-diagram-3::before,
html[data-icons="emoji"] .bi-diagram-2::before{content:"🌳"}
html[data-icons="emoji"] .bi-list-check::before{content:"🗒️"}
html[data-icons="emoji"] .bi-upload::before{content:"⬆️"}
html[data-icons="emoji"] .bi-download::before{content:"⬇️"}
html[data-icons="emoji"] .bi-database-add::before,
html[data-icons="emoji"] .bi-database-down::before,
html[data-icons="emoji"] .bi-box-arrow-in-down-right::before{content:"🗄️"}
html[data-icons="emoji"] .bi-folder2-open::before{content:"📂"}
html[data-icons="emoji"] .bi-magic::before{content:"✨"}
html[data-icons="emoji"] .bi-robot::before{content:"🤖"}
html[data-icons="emoji"] .bi-question-circle::before,
html[data-icons="emoji"] .bi-question-circle-fill::before{content:"❓"}
html[data-icons="emoji"] .bi-info-circle::before,
html[data-icons="emoji"] .bi-info-circle-fill::before{content:"ℹ️"}
html[data-icons="emoji"] .bi-sliders::before{content:"🎛️"}
html[data-icons="emoji"] .bi-file-earmark-text::before,
html[data-icons="emoji"] .bi-file-text::before{content:"📄"}
html[data-icons="emoji"] .bi-filetype-json::before,
html[data-icons="emoji"] .bi-file-earmark-code::before{content:"🧾"}
html[data-icons="emoji"] .bi-flag-fill::before,
html[data-icons="emoji"] .bi-flag::before{content:"🚩"}
html[data-icons="emoji"] .bi-play-circle::before,
html[data-icons="emoji"] .bi-play-fill::before{content:"▶️"}
html[data-icons="emoji"] .bi-check2-circle::before,
html[data-icons="emoji"] .bi-check-circle-fill::before{content:"✔️"}
html[data-icons="emoji"] .bi-trash::before,
html[data-icons="emoji"] .bi-trash-fill::before{content:"🗑️"}
html[data-icons="emoji"] .bi-arrow-clockwise::before{content:"🔄"}
html[data-icons="emoji"] .bi-eye::before,
html[data-icons="emoji"] .bi-eye-fill::before{content:"👁️"}
html[data-icons="emoji"] .bi-bar-chart::before,
html[data-icons="emoji"] .bi-bar-chart-fill::before{content:"📊"}
html[data-icons="emoji"] .bi-collection::before,
html[data-icons="emoji"] .bi-collection-fill::before{content:"🗂️"}
html[data-icons="emoji"] .bi-journal-check::before{content:"📓"}
html[data-icons="emoji"] .bi-funnel::before,
html[data-icons="emoji"] .bi-funnel-fill::before{content:"🔎"}
html[data-icons="emoji"] .bi-speedometer2::before{content:"⏱️"}
html[data-icons="emoji"] .bi-people-fill::before{content:"👥"}
html[data-icons="emoji"] .bi-megaphone-fill::before{content:"📣"}
html[data-icons="emoji"] .bi-chat-left-text-fill::before{content:"💬"}
html[data-icons="emoji"] .bi-save::before,
html[data-icons="emoji"] .bi-save-fill::before{content:"💾"}
html[data-icons="emoji"] .bi-pencil-square::before{content:"✏️"}
html[data-icons="emoji"] .bi-table::before{content:"🔳"}
html[data-icons="emoji"] .bi-signpost-2::before,
html[data-icons="emoji"] .bi-signpost-2-fill::before{content:"🪧"}

/* 다크 테마 — 템플릿 인라인 스타일(밝은 하드코딩) 보정 */
html[data-theme="dark"] .stepbar .step { background:var(--rg-panel); color:var(--rg-ink); border-color:var(--rg-line); }
html[data-theme="dark"] .stepbar .step.active { background:var(--rg-accent); color:#04222a; }
html[data-theme="dark"] .hlp-body { background:var(--rg-panel-2) !important; border-color:var(--rg-line) !important; color:var(--rg-ink-soft) !important; }
html[data-theme="dark"] #parsedTreeView, html[data-theme="dark"] #rawTreeView,
html[data-theme="dark"] #sampleBox { background:var(--rg-panel-2) !important; color:var(--rg-ink); border-color:var(--rg-line) !important; }
html[data-theme="dark"] .startcard .opt { background:var(--rg-panel-2); border-color:var(--rg-line); }
html[data-theme="dark"] .startcard .opt:hover { background:var(--rg-panel); border-color:var(--rg-accent); }
html[data-theme="dark"] .verdict-green { background:#123a2a; }
html[data-theme="dark"] .verdict-amber { background:#3d3312; }
html[data-theme="dark"] .verdict-red   { background:#3d1620; }
html[data-theme="dark"] .verdict-green td, html[data-theme="dark"] .verdict-amber td, html[data-theme="dark"] .verdict-red td { color:var(--rg-ink); }
html[data-theme="dark"] #fieldBody input { background:var(--rg-panel-2); color:var(--rg-ink); border-color:var(--rg-line); }

/* ── 다크 테마 가독성 보강 (하드코딩 라이트 요소 대응, 2026-08-24) ──
   indigo/github/warm 은 라이트 베이스라 문제없음. dark 만 베이스가 어두워
   템플릿에 하드코딩된 흰/파스텔 배경이 저대비로 보이던 것을 일괄 교정. */
/* 폼: 카드와 구분되는 테두리 + 밝은 플레이스홀더 + 포커스 링 + 파일버튼 */
html[data-theme="dark"] .form-control,
html[data-theme="dark"] .form-select { border-color:var(--rg-line-strong); }
html[data-theme="dark"] .form-control::placeholder { color:#9fb0c7; }
html[data-theme="dark"] .form-control:focus,
html[data-theme="dark"] .form-select:focus {
  background-color:var(--rg-panel-2); color:var(--rg-ink);
  border-color:var(--rg-accent); box-shadow:0 0 0 .2rem rgba(34,211,238,.20); }
html[data-theme="dark"] .form-control::file-selector-button {
  background:var(--rg-chrome-2); color:var(--rg-ink); border:0;
  border-inline-end:1px solid var(--rg-line); }

/* 부트스트랩 subtle 유틸리티(기존 primary/secondary 외 나머지) */
html[data-theme="dark"] .bg-info-subtle,
html[data-theme="dark"] .badge.bg-info-subtle { background:#0e3346 !important; color:#7dd3fc !important; }
html[data-theme="dark"] .bg-success-subtle,
html[data-theme="dark"] .badge.bg-success-subtle { background:#0f3d31 !important; color:#6ee7b7 !important; }
html[data-theme="dark"] .bg-warning-subtle,
html[data-theme="dark"] .badge.bg-warning-subtle { background:#3d3312 !important; color:#fcd34d !important; }
html[data-theme="dark"] .bg-danger-subtle,
html[data-theme="dark"] .badge.bg-danger-subtle { background:#3d1620 !important; color:#fda4af !important; }
html[data-theme="dark"] .text-success-emphasis { color:#6ee7b7 !important; }
html[data-theme="dark"] .text-danger-emphasis { color:#fda4af !important; }
html[data-theme="dark"] .text-warning-emphasis { color:#fcd34d !important; }
html[data-theme="dark"] .text-primary-emphasis,
html[data-theme="dark"] .text-info-emphasis { color:#7dd3fc !important; }
html[data-theme="dark"] .border-success-subtle { border-color:#0f3d31 !important; }
html[data-theme="dark"] .border-info-subtle { border-color:#0e3346 !important; }

/* 구조트리·도움말·설명서 박스(하드코딩 #fff / #faf6f1) — 인라인 style 대응 !important */
html[data-theme="dark"] #parsedTreeView,
html[data-theme="dark"] #rawTreeView,
html[data-theme="dark"] #rTreeView,
html[data-theme="dark"] #mtTreeBox {
  background:var(--rg-panel) !important; border-color:var(--rg-line) !important; color:var(--rg-ink); }
html[data-theme="dark"] #mtAiBox { border-color:var(--rg-line-strong) !important; color:var(--rg-ink); }
html[data-theme="dark"] .hlp-body {
  background:var(--rg-panel-2) !important; border-color:var(--rg-line-strong) !important; color:var(--rg-ink-soft) !important; }
html[data-theme="dark"] .band { background:var(--rg-panel); border-color:var(--rg-line-strong); }
html[data-theme="dark"] .stepbar .step { background:var(--rg-panel-2); border-color:var(--rg-line); color:var(--rg-ink); }
html[data-theme="dark"] .startcard .opt:hover { background:var(--rg-panel-2); }

/* 설명서 다이어그램 노드/범례/화살표 */
html[data-theme="dark"] .node.soft { background:#1e3a5f; color:#cfe0fb; border-color:#2f4d75; }
html[data-theme="dark"] .legend b { color:#8fb3e8; }
html[data-theme="dark"] .arrow { color:var(--rg-muted); }

/* 판정/권한 색칩(라이트 파스텔 → 다크 틴트, 텍스트까지 반전) */
html[data-theme="dark"] .verdict-green,
html[data-theme="dark"] .vg,
html[data-theme="dark"] .pill-perm { background:#0f3d31 !important; color:#6ee7b7 !important; }
html[data-theme="dark"] .verdict-amber,
html[data-theme="dark"] .va,
html[data-theme="dark"] .pill-weak,
html[data-theme="dark"] .me-row { background:#3d3312 !important; color:#fcd34d !important; }
html[data-theme="dark"] .verdict-red,
html[data-theme="dark"] .vr,
html[data-theme="dark"] .pill-strong { background:#3d1620 !important; color:#fda4af !important; }
html[data-theme="dark"] .pill-unknown,
html[data-theme="dark"] .pill-other { background:#243447 !important; color:#cbd5e1 !important; }
html[data-theme="dark"] .bar-track { background:var(--rg-panel-2) !important; }

/* 나브 드롭다운(의존성 없음) — "파싱 ▾" 서브메뉴 */
.rg-dd{position:relative;display:inline-block}
.rg-dd-menu{display:none;position:absolute;top:100%;left:0;z-index:3500;min-width:190px;padding:.3rem;
  background:var(--rg-panel);border:1px solid var(--rg-line-strong);border-radius:9px;box-shadow:var(--rg-shadow);}
.rg-dd.open .rg-dd-menu{display:block}
.rg-dd-menu a{display:block;padding:.4rem .6rem;color:var(--rg-ink);text-decoration:none;border-radius:6px;font-size:.86rem;white-space:nowrap}
.rg-dd-menu a:hover{background:var(--rg-accent-t)}

/* JsonView — 원본 소스/구조 문법 하이라이트(고정 다크 코드테마, 스킨 무관 가독) */
.jv-pre{font-family:var(--rg-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);
  font-size:.8rem;line-height:1.55;white-space:pre;overflow:auto;margin:0;
  padding:.75rem .9rem;border-radius:8px;background:#0d1117;color:#c9d1d9;
  border:1px solid #30363d;tab-size:2;max-height:62vh;}
.jv-pre.jv-plain{white-space:pre-wrap;color:#c9d1d9;}
.jv-key{color:#79c0ff;}       /* 키 */
.jv-str{color:#7ee787;}       /* 문자열 값 */
.jv-num{color:#ffa657;}       /* 숫자 */
.jv-bool{color:#d2a8ff;}      /* boolean */
.jv-null{color:#8b949e;font-style:italic;} /* null */
.jv-attr{color:#79c0ff;}      /* XML 속성명 */
