/* ============================================================
   Light-mode Readability — 텍스트 시인성 종합 패치
   - 모든 규칙은 :root:not([data-theme="dark"]) 조건 — 다크모드 무영향
   - 다크 팔레트 파스텔 텍스트를 라이트 친화 진한 톤으로 일괄 치환
   ============================================================ */

/* ====================  공통 상태 뱃지  ==================== */
/* .bb=파랑 .bp2=보라 .bg=초록 .ba=주황 .br=빨강 .bx=회색 */
:root:not([data-theme="dark"]) .bb  { background: #DBEAFE !important; color: #1E40AF !important; }
:root:not([data-theme="dark"]) .bp2 { background: #EDE9FE !important; color: #5B21B6 !important; }
:root:not([data-theme="dark"]) .bg  { background: #D1FAE5 !important; color: #065F46 !important; }
:root:not([data-theme="dark"]) .ba  { background: #FEF3C7 !important; color: #92400E !important; }
:root:not([data-theme="dark"]) .br  { background: #FEE2E2 !important; color: #991B1B !important; }
:root:not([data-theme="dark"]) .bx  { background: #F1F5F9 !important; color: #334155 !important; }
:root:not([data-theme="dark"]) .b   { font-weight: 700; }

/* ====================  갑지 블록 (.gb-*)  ==================== */
:root:not([data-theme="dark"]) .gb-plan { background: #DBEAFE !important; color: #1E40AF !important; }
:root:not([data-theme="dark"]) .gb-act  { background: #D1FAE5 !important; color: #065F46 !important; }
:root:not([data-theme="dark"]) .gb-diff { background: #FEF3C7 !important; color: #92400E !important; }
:root:not([data-theme="dark"]) .gb-ach  { background: #EDE9FE !important; color: #5B21B6 !important; }
:root:not([data-theme="dark"]) .gb-prev { background: #F1F5F9 !important; color: #334155 !important; }

/* ====================  표 합계 행 (.r-div-total, .r-corp-total)  ==================== */
:root:not([data-theme="dark"]) .r-div-total td  {
  background: rgba(99,102,241,.08) !important;
  color: #5B21B6 !important;
}
:root:not([data-theme="dark"]) .r-corp-total td {
  background: rgba(16,185,129,.10) !important;
  color: #065F46 !important;
}

/* ====================  gtbl 누계/연간 헤더  ==================== */
:root:not([data-theme="dark"]) .gtbl th.cum-h {
  background: #DBEAFE !important;
  color: #1E40AF !important;
}
:root:not([data-theme="dark"]) .gtbl th.yr-h {
  background: #C7D2FE !important;
  color: #3730A3 !important;
}
:root:not([data-theme="dark"]) .gtbl th.prev-h {
  background: var(--bg-3) !important;
  color: var(--fg-muted) !important;
}

/* ====================  .sr 합계 행  ==================== */
:root:not([data-theme="dark"]) .sr td {
  background: rgba(99,102,241,.08) !important;
  color: #1F2937 !important;
}

/* ====================  hover 행 강조  ==================== */
:root:not([data-theme="dark"]) tr:hover td {
  background: var(--primary-50) !important;
}

/* ====================  추가 다크 팔레트 색 (안전망 확장)  ==================== */
:root:not([data-theme="dark"]) [style*="#60a5fa"],
:root:not([data-theme="dark"]) [style*="#60A5FA"] { color: #1D4ED8 !important; }

:root:not([data-theme="dark"]) [style*="#f87171"],
:root:not([data-theme="dark"]) [style*="#F87171"] { color: #B91C1C !important; }

:root:not([data-theme="dark"]) [style*="#818cf8"],
:root:not([data-theme="dark"]) [style*="#818CF8"] { color: #4338CA !important; }

:root:not([data-theme="dark"]) [style*="#f472b6"],
:root:not([data-theme="dark"]) [style*="#F472B6"] { color: #BE185D !important; }

:root:not([data-theme="dark"]) [style*="#b0bec5"],
:root:not([data-theme="dark"]) [style*="#B0BEC5"] { color: #475569 !important; }

:root:not([data-theme="dark"]) [style*="#9ca3af"],
:root:not([data-theme="dark"]) [style*="#9CA3AF"] { color: #4B5563 !important; }

:root:not([data-theme="dark"]) [style*="#ddd"],
:root:not([data-theme="dark"]) [style*="#DDD"] { color: #4B5563 !important; }

/* ====================  토픽별 색  ==================== */
/* 메인 강조 컬러 — `--a*` 액센트 토큰 자체는 양 모드 공용이므로
   여기서는 인라인 사용 사례만 보강 */
:root:not([data-theme="dark"]) [style*="#3b82f6"] { color: #1D4ED8 !important; }
:root:not([data-theme="dark"]) [style*="#06b6d4"] { color: #0E7490 !important; }
:root:not([data-theme="dark"]) [style*="#8b5cf6"] { color: #6D28D9 !important; }
:root:not([data-theme="dark"]) [style*="#10b981"] { color: #047857 !important; }

/* ====================  드롭다운/검색 결과 박스  ==================== */
/* projSearchDD, hrSearch 등 검색 드롭다운 — 인라인으로 #1e293b 배경 */
:root:not([data-theme="dark"]) [style*="#1e293b"],
:root:not([data-theme="dark"]) [style*="#1E293B"] {
  /* 배경+color 동시 사용처를 위해 색만 변환은 위험 — 별도 처리 불가 */
}

/* ====================  카드 헤더/서브타이틀 일반  ==================== */
/* .sc-t, .cb-sub, .tb-sub 등 (이미 components.css에서 처리)
   여기는 일반 padding/세부 텍스트 보강 */
:root:not([data-theme="dark"]) .empty {
  color: var(--fg-muted) !important;
}
:root:not([data-theme="dark"]) .ldwrap,
:root:not([data-theme="dark"]) .ldwrap span {
  color: var(--fg-muted) !important;
}

/* 일반 sub 텍스트 (`font-size:10px;color:var(--t3)` 패턴) — t3는 이미 #4B5563로 진해짐 */

/* ====================  버튼 인라인 (linear-gradient 등)  ==================== */
/* `.btn` 변형이 components.css에 정의됨. 인라인 색 버튼만 추가 보강:
   rgba(...) 배경의 강조 텍스트 색을 라이트 친화로 */
:root:not([data-theme="dark"]) button[style*="rgba(59,130,246,.15)"],
:root:not([data-theme="dark"]) button[style*="rgba(59,130,246,.12)"],
:root:not([data-theme="dark"]) button[style*="rgba(59,130,246,.2)"],
:root:not([data-theme="dark"]) button[style*="rgba(59,130,246,.3)"] {
  background: #DBEAFE !important;
  color: #1E40AF !important;
  border-color: #93C5FD !important;
}
:root:not([data-theme="dark"]) button[style*="rgba(16,185,129,.15)"],
:root:not([data-theme="dark"]) button[style*="rgba(16,185,129,.2)"] {
  background: #D1FAE5 !important;
  color: #065F46 !important;
  border-color: #6EE7B7 !important;
}
:root:not([data-theme="dark"]) button[style*="rgba(245,158,11,.15)"],
:root:not([data-theme="dark"]) button[style*="rgba(245,158,11,.2)"] {
  background: #FEF3C7 !important;
  color: #92400E !important;
  border-color: #FCD34D !important;
}
:root:not([data-theme="dark"]) button[style*="rgba(239,68,68,.12)"],
:root:not([data-theme="dark"]) button[style*="rgba(239,68,68,.15)"] {
  background: #FEE2E2 !important;
  color: #991B1B !important;
  border-color: #FCA5A5 !important;
}
:root:not([data-theme="dark"]) button[style*="rgba(251,191,36,.15)"] {
  background: #FEF3C7 !important;
  color: #92400E !important;
  border-color: #FCD34D !important;
}

/* ============================================================
   라이트 모드 — 인라인 다크 배경 hex 일괄 변환
   - 인라인 `style="background:#XXX"` 의 다크 hex 를 라이트로 치환
   - 동시에 그 요소의 color 도 라이트 친화 (어두운 텍스트)로 강제
   - 자식 요소의 인라인 color 는 위 #ffffff/#fff/#cbd5e1/#e2e8f0 안전망이 잡음
   ============================================================ */

/* === 가장 어두운 배경 (page bg 톤) → bg-0 === */
:root:not([data-theme="dark"]) [style*="background:#060d1a"],
:root:not([data-theme="dark"]) [style*="background: #060d1a"],
:root:not([data-theme="dark"]) [style*="background:#040d1c"],
:root:not([data-theme="dark"]) [style*="background:#060e1c"],
:root:not([data-theme="dark"]) [style*="background:#080f1c"],
:root:not([data-theme="dark"]) [style*="background:#08111e"],
:root:not([data-theme="dark"]) [style*="background:#060f1e"] {
  background: var(--bg-0) !important;
  color: var(--fg) !important;
}

/* === 모달 헤더/패널 다크 배경 → bg-2 (연회색) === */
:root:not([data-theme="dark"]) [style*="background:#0a1628"],
:root:not([data-theme="dark"]) [style*="background: #0a1628"],
:root:not([data-theme="dark"]) [style*="background:#091224"],
:root:not([data-theme="dark"]) [style*="background: #091224"],
:root:not([data-theme="dark"]) [style*="background:#0d1835"],
:root:not([data-theme="dark"]) [style*="background: #0d1835"],
:root:not([data-theme="dark"]) [style*="background:#0d1829"],
:root:not([data-theme="dark"]) [style*="background:#0d1f3c"],
:root:not([data-theme="dark"]) [style*="background:#0b1524"],
:root:not([data-theme="dark"]) [style*="background:#0a1525"],
:root:not([data-theme="dark"]) [style*="background:#07111f"] {
  background: var(--bg-2) !important;
  color: var(--fg) !important;
}

/* === 카드/컨테이너 다크 배경 → bg-1 (흰색) === */
:root:not([data-theme="dark"]) [style*="background:#101d38"],
:root:not([data-theme="dark"]) [style*="background: #101d38"],
:root:not([data-theme="dark"]) [style*="background:#142240"],
:root:not([data-theme="dark"]) [style*="background:#1e293b"],
:root:not([data-theme="dark"]) [style*="background: #1e293b"] {
  background: var(--bg-1) !important;
  color: var(--fg) !important;
  border-color: var(--border) !important;
}

/* === 어둡고 채도 있는 파랑(테이블 헤더 강조 등) → 라이트 카드 + 강조 텍스트 === */
:root:not([data-theme="dark"]) [style*="background:#2d5282"],
:root:not([data-theme="dark"]) [style*="background:#1e3a5f"],
:root:not([data-theme="dark"]) [style*="background: #1e3a5f"] {
  background: var(--primary-100) !important;
  color: var(--primary-700) !important;
}

/* === 다크 보더 hex → 라이트 보더 === */
:root:not([data-theme="dark"]) [style*="border:1px solid #1a2e55"],
:root:not([data-theme="dark"]) [style*="border: 1px solid #1a2e55"],
:root:not([data-theme="dark"]) [style*="border:1px solid #1e3666"],
:root:not([data-theme="dark"]) [style*="border-color:#1a2e55"],
:root:not([data-theme="dark"]) [style*="border-color: #1a2e55"],
:root:not([data-theme="dark"]) [style*="border-color:#1e3666"],
:root:not([data-theme="dark"]) [style*="border-bottom:1px solid #1a2e55"],
:root:not([data-theme="dark"]) [style*="border-bottom: 1px solid #1a2e55"],
:root:not([data-theme="dark"]) [style*="border-top:1px solid #1a2e55"],
:root:not([data-theme="dark"]) [style*="border-right:1px solid #1a2e55"],
:root:not([data-theme="dark"]) [style*="border-left:1px solid #1a2e55"],
:root:not([data-theme="dark"]) [style*="border:1px solid #2a4a7f"],
:root:not([data-theme="dark"]) [style*="border-color:#2a4a7f"] {
  border-color: var(--border) !important;
}

/* === 모달 오버레이 — 너무 까만 backdrop 을 살짝 부드럽게 === */
:root:not([data-theme="dark"]) [style*="background:rgba(0,0,0,.72)"],
:root:not([data-theme="dark"]) [style*="background:rgba(0,0,0,.7)"],
:root:not([data-theme="dark"]) [style*="background:rgba(0,0,0,.8)"],
:root:not([data-theme="dark"]) [style*="background:rgba(0,0,0,.85)"],
:root:not([data-theme="dark"]) [style*="background:rgba(0,0,0,.88)"],
:root:not([data-theme="dark"]) [style*="background:rgba(6,13,26,.8)"],
:root:not([data-theme="dark"]) [style*="background:rgba(6,13,26,.85)"],
:root:not([data-theme="dark"]) [style*="background:rgba(6,13,26,.88)"],
:root:not([data-theme="dark"]) [style*="background:rgba(6,13,26,.9)"] {
  background: rgba(15, 23, 42, .45) !important;
  backdrop-filter: blur(4px);
}

/* === 텍스트 #ffffff/#fff 는 라이트 모드에서 흰배경 위에 흰 글자 → 어두운 글자로 강제
   단, 배경이 진한 색(primary/danger/ok)인 의도적 버튼은 별도 처리 필요.
   여기서는 일반 텍스트(헤더, 제목 등)만 대상.
   배경이 함께 다크 hex 인 경우는 위 룰에서 background 변환과 함께 color 도 변환했음.
   여기는 'color:#fff' 단독 사용된 경우 (배경은 부모에서 변환되어 흰색) 대상. === */
:root:not([data-theme="dark"]) [style*="color:#ffffff"]:not([style*="background:#10b981"]):not([style*="background:#3b82f6"]):not([style*="background:#ef4444"]):not([style*="background:#f59e0b"]):not([style*="background:#8b5cf6"]):not([style*="background:#06b6d4"]):not([style*="background:rgba(99,102,241"]):not([style*="background:linear-gradient"]) {
  color: var(--fg) !important;
}
:root:not([data-theme="dark"]) [style*="color: #ffffff"]:not([style*="background:#10b981"]):not([style*="background:#3b82f6"]):not([style*="background:#ef4444"]):not([style*="background:#f59e0b"]):not([style*="background:#8b5cf6"]):not([style*="background:#06b6d4"]):not([style*="background:rgba(99,102,241"]):not([style*="background:linear-gradient"]) {
  color: var(--fg) !important;
}
/* color:#fff (3자) — 단어 경계가 없는 부분문자열 매치라 #ffffff에도 매치되니 위 룰과 중복 OK */
:root:not([data-theme="dark"]) [style*="color:#fff;"]:not([style*="background:#10b981"]):not([style*="background:#3b82f6"]):not([style*="background:#ef4444"]):not([style*="background:#f59e0b"]):not([style*="background:#8b5cf6"]):not([style*="background:linear-gradient"]):not([style*="background:rgba(99,102,241"]) {
  color: var(--fg) !important;
}

/* ════════════════════════════════════════════════════════════════════
   외주 상세관리 패널 (outsourcing.js) 다크 텍스트 hex 보강 (2026-05-12)
   slide panel 안 인라인 color 가 라이트 모드에서도 다크 색상 그대로 노출되던 문제
   ════════════════════════════════════════════════════════════════════ */
:root:not([data-theme="dark"]) [style*="color:#cbd5e1"],
:root:not([data-theme="dark"]) [style*="color: #cbd5e1"],
:root:not([data-theme="dark"]) [style*="color:#CBD5E1"],
:root:not([data-theme="dark"]) [style*="color:#b0bec5"],
:root:not([data-theme="dark"]) [style*="color: #b0bec5"],
:root:not([data-theme="dark"]) [style*="color:#B0BEC5"] {
  color: var(--fg-muted) !important;
}
:root:not([data-theme="dark"]) [style*="color:#f1f5f9"],
:root:not([data-theme="dark"]) [style*="color: #f1f5f9"],
:root:not([data-theme="dark"]) [style*="color:#F1F5F9"],
:root:not([data-theme="dark"]) [style*="color:#e2e8f0"],
:root:not([data-theme="dark"]) [style*="color: #e2e8f0"],
:root:not([data-theme="dark"]) [style*="color:#E2E8F0"] {
  color: var(--fg) !important;
}

/* 외주 패널 추가 background hex (위 cover 외) */
:root:not([data-theme="dark"]) [style*="background:#060e1c"],
:root:not([data-theme="dark"]) [style*="background: #060e1c"],
:root:not([data-theme="dark"]) [style*="background:#1a2e55"],
:root:not([data-theme="dark"]) [style*="background: #1a2e55"],
:root:not([data-theme="dark"]) [style*="background:#1e3666"],
:root:not([data-theme="dark"]) [style*="background:#2a4a7f"] {
  background: var(--bg-2) !important;
  color: var(--fg) !important;
  border-color: var(--border) !important;
}

/* 외주 패널 안 divider/separator (color:#1a2e55 단독 — | 같은 구분자) */
:root:not([data-theme="dark"]) [style*="color:#1a2e55"],
:root:not([data-theme="dark"]) [style*="color: #1a2e55"] {
  color: var(--border-hi) !important;
}

