/* ═══════════════════════════════════════════════════════════════════════════
   안전이지 산업 스킨 · 공용 팔레트 (data-skin="ind")  —  크림/그린 (초기 산업톤 · 최종 확정)
   프리뷰(안전이지-전체메뉴-프리뷰.html) 기준: 크림 바탕 + 먹빛(ink) 강조 + 상태색만 유채색.
   페이지별 토큰명 제각각 → 흔한 변형 모두 커버. 인라인 hex는 생성기 오버라이드가 처리.
   ═══════════════════════════════════════════════════════════════════════════ */
/* 본문 폰트 단일 토큰(스킨 on/off 무관 적용) — 폰트 교체는 이 줄 + styles.css의 --sans 두 곳만 */
:root{ --sans:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,system-ui,'Apple SD Gothic Neo','Malgun Gothic',sans-serif; }
html[data-skin="ind"]{
  --input-radius:0;  /* KEY-IN 박스 각지게 — styles.css '폼 컨트롤 단일 출처'가 이 토큰을 읽음 */
  /* 강조색 = 먹빛(ink). 초록 아님. 페이지/테넌트 지정을 !important로 되받아침 */
  --primary-color:#1c1b17 !important; --primary:#1c1b17 !important; --primary-dark:#000000 !important;
  --accent-green:#2e7d46; --accent-orange:#b26a08; --accent-blue:#2b5fb4;
  /* 상태색 = 유채(색+라벨 병용) — E 정본(e-industrial-evolved) 채도 한 단 상향.
     styles.css:1860의 구값 정의는 로드 순서(styles → skin)상 여기가 이긴다. */
  --ok:#2e7d46; --warn:#b26a08; --danger:#bb3524; --info:#2b5fb4;
  /* 종이/잉크 = 크림 (토큰명 변형 다수 커버) — 패널 2단 층위 = E 정본(#f4f2ea/#e6e2d6) */
  --secondary-color:#edeae1; --white:#f4f2ea;
  --bg-card:#f4f2ea; --bg-subtle:#f4f2ea; --bg-muted:#e6e2d6; --bg:#edeae1; --panel:#f4f2ea;
  --text-main:#1c1b17; --text:#1c1b17; --ink:#1c1b17;
  --text-secondary:#56544c; --text-sub:#6f6d63; --sub:#6f6d63;
  --text-tertiary:#6f6d63; --text-faint:#9a978c;
  --border-color:rgba(28,27,23,.16); --line:rgba(28,27,23,.16); --border:rgba(28,27,23,.16);
  --border-strong:rgba(28,27,23,.30);
  --card-shadow:none; --border-radius:2px;
  /* soft 배경 = 새 상태색 기반 E 정본 알파(-bg 계열) */
  --bg-danger-soft:rgba(187,53,36,.10); --bg-success-soft:rgba(46,125,70,.11);
  --bg-info-soft:rgba(43,95,180,.11); --bg-warn-soft:rgba(178,106,8,.12);
  /* 행/항목 hover 배경(E --hover) — 표 hover 규칙의 1순위 소스 */
  --hover:rgba(28,27,23,.045);
  --mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
}
html[data-skin="ind"] body.dark-mode{
  --secondary-color:#17181a; --white:#1e2023; --bg-card:#1e2023; --bg-subtle:#1e2023; --bg-muted:#23252a;
  --text-main:#e9e7df; --text:#e9e7df; --text-secondary:#c7c5bd; --text-sub:#9b9a92; --sub:#9b9a92;
  --text-tertiary:#9b9a92; --text-faint:#6c6b64;
  --border-color:rgba(233,231,223,.16); --line:rgba(233,231,223,.16); --border-strong:rgba(233,231,223,.30);
  /* 다크 강조 = 중간톤(흰/밝은 글자 가독 위해 너무 밝지 않게) */
  --primary-color:#57564d !important; --primary:#57564d !important; --primary-dark:#3f3e37 !important;
  --ok:#6fbf82; --warn:#e0a44e; --danger:#e8746a; --info:#7aa5ec;
  --bg-danger-soft:rgba(232,116,106,.14); --bg-success-soft:rgba(111,191,130,.14);
  --bg-info-soft:rgba(122,165,236,.14); --bg-warn-soft:rgba(224,164,78,.14);
  --hover:rgba(233,231,223,.055);
}
/* 다크에서 primary 위 글자는 밝게 고정(중간톤 primary 가독 보장) */
html[data-skin="ind"] body.dark-mode .btn-primary,
html[data-skin="ind"] body.dark-mode .act.pri{ color:#f4f2ea !important }
/* ── 오버라이드 레이어(자동생성) : 인라인 하드코딩 → 토큰, 스킨 스코프 한정 ── */
html[data-skin="ind"] [style*="color:#1e293b"],
html[data-skin="ind"] [style*="color: #1e293b"]{color:var(--text-main) !important}
html[data-skin="ind"] [style*="color:#0f172a"],
html[data-skin="ind"] [style*="color: #0f172a"]{color:var(--text-main) !important}
html[data-skin="ind"] [style*="color:#263238"],
html[data-skin="ind"] [style*="color: #263238"]{color:var(--text-main) !important}
html[data-skin="ind"] [style*="color:#111827"],
html[data-skin="ind"] [style*="color: #111827"]{color:var(--text-main) !important}
html[data-skin="ind"] [style*="color:#1f2937"],
html[data-skin="ind"] [style*="color: #1f2937"]{color:var(--text-main) !important}
html[data-skin="ind"] [style*="color:#0b0b0b"],
html[data-skin="ind"] [style*="color: #0b0b0b"]{color:var(--text-main) !important}
html[data-skin="ind"] [style*="color:#334155"],
html[data-skin="ind"] [style*="color: #334155"]{color:var(--text-secondary) !important}
html[data-skin="ind"] [style*="color:#475569"],
html[data-skin="ind"] [style*="color: #475569"]{color:var(--text-secondary) !important}
html[data-skin="ind"] [style*="color:#374151"],
html[data-skin="ind"] [style*="color: #374151"]{color:var(--text-secondary) !important}
html[data-skin="ind"] [style*="color:#4b5563"],
html[data-skin="ind"] [style*="color: #4b5563"]{color:var(--text-secondary) !important}
html[data-skin="ind"] [style*="color:#607d8b"],
html[data-skin="ind"] [style*="color: #607d8b"]{color:var(--text-secondary) !important}
html[data-skin="ind"] [style*="color:#64748b"],
html[data-skin="ind"] [style*="color: #64748b"]{color:var(--text-tertiary) !important}
html[data-skin="ind"] [style*="color:#6b7280"],
html[data-skin="ind"] [style*="color: #6b7280"]{color:var(--text-tertiary) !important}
html[data-skin="ind"] [style*="color:#71717a"],
html[data-skin="ind"] [style*="color: #71717a"]{color:var(--text-tertiary) !important}
html[data-skin="ind"] [style*="color:#94a3b8"],
html[data-skin="ind"] [style*="color: #94a3b8"]{color:var(--text-faint) !important}
html[data-skin="ind"] [style*="color:#9ca3af"],
html[data-skin="ind"] [style*="color: #9ca3af"]{color:var(--text-faint) !important}
html[data-skin="ind"] [style*="color:#a1a1aa"],
html[data-skin="ind"] [style*="color: #a1a1aa"]{color:var(--text-faint) !important}
html[data-skin="ind"] [style*="color:#b4b2a9"],
html[data-skin="ind"] [style*="color: #b4b2a9"]{color:var(--text-faint) !important}
html[data-skin="ind"] [style*="background:#ffffff"],
html[data-skin="ind"] [style*="background: #ffffff"]{background-color:var(--bg-card) !important}
html[data-skin="ind"] [style*="background-color:#ffffff"],
html[data-skin="ind"] [style*="background-color: #ffffff"]{background-color:var(--bg-card) !important}
html[data-skin="ind"] [style*="background:#f8fafc"],
html[data-skin="ind"] [style*="background: #f8fafc"]{background-color:var(--bg-subtle) !important}
html[data-skin="ind"] [style*="background-color:#f8fafc"],
html[data-skin="ind"] [style*="background-color: #f8fafc"]{background-color:var(--bg-subtle) !important}
html[data-skin="ind"] [style*="background:#f9fafb"],
html[data-skin="ind"] [style*="background: #f9fafb"]{background-color:var(--bg-subtle) !important}
html[data-skin="ind"] [style*="background-color:#f9fafb"],
html[data-skin="ind"] [style*="background-color: #f9fafb"]{background-color:var(--bg-subtle) !important}
html[data-skin="ind"] [style*="background:#fafafa"],
html[data-skin="ind"] [style*="background: #fafafa"]{background-color:var(--bg-subtle) !important}
html[data-skin="ind"] [style*="background-color:#fafafa"],
html[data-skin="ind"] [style*="background-color: #fafafa"]{background-color:var(--bg-subtle) !important}
html[data-skin="ind"] [style*="background:#f1f5f9"],
html[data-skin="ind"] [style*="background: #f1f5f9"]{background-color:var(--bg-muted) !important}
html[data-skin="ind"] [style*="background-color:#f1f5f9"],
html[data-skin="ind"] [style*="background-color: #f1f5f9"]{background-color:var(--bg-muted) !important}
html[data-skin="ind"] [style*="background:#f3f4f6"],
html[data-skin="ind"] [style*="background: #f3f4f6"]{background-color:var(--bg-muted) !important}
html[data-skin="ind"] [style*="background-color:#f3f4f6"],
html[data-skin="ind"] [style*="background-color: #f3f4f6"]{background-color:var(--bg-muted) !important}
html[data-skin="ind"] [style*="background:#e5e7eb"],
html[data-skin="ind"] [style*="background: #e5e7eb"]{background-color:var(--bg-muted) !important}
html[data-skin="ind"] [style*="background-color:#e5e7eb"],
html[data-skin="ind"] [style*="background-color: #e5e7eb"]{background-color:var(--bg-muted) !important}
html[data-skin="ind"] [style*="background:#eef2f7"],
html[data-skin="ind"] [style*="background: #eef2f7"]{background-color:var(--bg-muted) !important}
html[data-skin="ind"] [style*="background-color:#eef2f7"],
html[data-skin="ind"] [style*="background-color: #eef2f7"]{background-color:var(--bg-muted) !important}
html[data-skin="ind"] [style*="background:#fef2f2"],
html[data-skin="ind"] [style*="background: #fef2f2"]{background-color:var(--bg-danger-soft) !important}
html[data-skin="ind"] [style*="background-color:#fef2f2"],
html[data-skin="ind"] [style*="background-color: #fef2f2"]{background-color:var(--bg-danger-soft) !important}
html[data-skin="ind"] [style*="background:#fee2e2"],
html[data-skin="ind"] [style*="background: #fee2e2"]{background-color:var(--bg-danger-soft) !important}
html[data-skin="ind"] [style*="background-color:#fee2e2"],
html[data-skin="ind"] [style*="background-color: #fee2e2"]{background-color:var(--bg-danger-soft) !important}
html[data-skin="ind"] [style*="background:#fff1f2"],
html[data-skin="ind"] [style*="background: #fff1f2"]{background-color:var(--bg-danger-soft) !important}
html[data-skin="ind"] [style*="background-color:#fff1f2"],
html[data-skin="ind"] [style*="background-color: #fff1f2"]{background-color:var(--bg-danger-soft) !important}
html[data-skin="ind"] [style*="background:#fef2f3"],
html[data-skin="ind"] [style*="background: #fef2f3"]{background-color:var(--bg-danger-soft) !important}
html[data-skin="ind"] [style*="background-color:#fef2f3"],
html[data-skin="ind"] [style*="background-color: #fef2f3"]{background-color:var(--bg-danger-soft) !important}
html[data-skin="ind"] [style*="background:#f0fdf4"],
html[data-skin="ind"] [style*="background: #f0fdf4"]{background-color:var(--bg-success-soft) !important}
html[data-skin="ind"] [style*="background-color:#f0fdf4"],
html[data-skin="ind"] [style*="background-color: #f0fdf4"]{background-color:var(--bg-success-soft) !important}
html[data-skin="ind"] [style*="background:#dcfce7"],
html[data-skin="ind"] [style*="background: #dcfce7"]{background-color:var(--bg-success-soft) !important}
html[data-skin="ind"] [style*="background-color:#dcfce7"],
html[data-skin="ind"] [style*="background-color: #dcfce7"]{background-color:var(--bg-success-soft) !important}
html[data-skin="ind"] [style*="background:#ecfdf5"],
html[data-skin="ind"] [style*="background: #ecfdf5"]{background-color:var(--bg-success-soft) !important}
html[data-skin="ind"] [style*="background-color:#ecfdf5"],
html[data-skin="ind"] [style*="background-color: #ecfdf5"]{background-color:var(--bg-success-soft) !important}
html[data-skin="ind"] [style*="background:#fffbeb"],
html[data-skin="ind"] [style*="background: #fffbeb"]{background-color:var(--bg-warn-soft) !important}
html[data-skin="ind"] [style*="background-color:#fffbeb"],
html[data-skin="ind"] [style*="background-color: #fffbeb"]{background-color:var(--bg-warn-soft) !important}
html[data-skin="ind"] [style*="background:#fef3c7"],
html[data-skin="ind"] [style*="background: #fef3c7"]{background-color:var(--bg-warn-soft) !important}
html[data-skin="ind"] [style*="background-color:#fef3c7"],
html[data-skin="ind"] [style*="background-color: #fef3c7"]{background-color:var(--bg-warn-soft) !important}
html[data-skin="ind"] [style*="background:#fff7ed"],
html[data-skin="ind"] [style*="background: #fff7ed"]{background-color:var(--bg-warn-soft) !important}
html[data-skin="ind"] [style*="background-color:#fff7ed"],
html[data-skin="ind"] [style*="background-color: #fff7ed"]{background-color:var(--bg-warn-soft) !important}
html[data-skin="ind"] [style*="background:#eff6ff"],
html[data-skin="ind"] [style*="background: #eff6ff"]{background-color:var(--bg-info-soft) !important}
html[data-skin="ind"] [style*="background-color:#eff6ff"],
html[data-skin="ind"] [style*="background-color: #eff6ff"]{background-color:var(--bg-info-soft) !important}
html[data-skin="ind"] [style*="background:#dbeafe"],
html[data-skin="ind"] [style*="background: #dbeafe"]{background-color:var(--bg-info-soft) !important}
html[data-skin="ind"] [style*="background-color:#dbeafe"],
html[data-skin="ind"] [style*="background-color: #dbeafe"]{background-color:var(--bg-info-soft) !important}
html[data-skin="ind"] [style*="background:#e0f2fe"],
html[data-skin="ind"] [style*="background: #e0f2fe"]{background-color:var(--bg-info-soft) !important}
html[data-skin="ind"] [style*="background-color:#e0f2fe"],
html[data-skin="ind"] [style*="background-color: #e0f2fe"]{background-color:var(--bg-info-soft) !important}
html[data-skin="ind"] [style*="border-color:#e2e8f0"],
html[data-skin="ind"] [style*="border-color: #e2e8f0"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-top-color:#e2e8f0"],
html[data-skin="ind"] [style*="border-top-color: #e2e8f0"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-bottom-color:#e2e8f0"],
html[data-skin="ind"] [style*="border-bottom-color: #e2e8f0"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-color:#e5e7eb"],
html[data-skin="ind"] [style*="border-color: #e5e7eb"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-top-color:#e5e7eb"],
html[data-skin="ind"] [style*="border-top-color: #e5e7eb"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-bottom-color:#e5e7eb"],
html[data-skin="ind"] [style*="border-bottom-color: #e5e7eb"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-color:#eaeaea"],
html[data-skin="ind"] [style*="border-color: #eaeaea"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-top-color:#eaeaea"],
html[data-skin="ind"] [style*="border-top-color: #eaeaea"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-bottom-color:#eaeaea"],
html[data-skin="ind"] [style*="border-bottom-color: #eaeaea"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-color:#ececec"],
html[data-skin="ind"] [style*="border-color: #ececec"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-top-color:#ececec"],
html[data-skin="ind"] [style*="border-top-color: #ececec"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-bottom-color:#ececec"],
html[data-skin="ind"] [style*="border-bottom-color: #ececec"]{border-color:var(--border-color) !important}
html[data-skin="ind"] [style*="border-color:#cbd5e1"],
html[data-skin="ind"] [style*="border-color: #cbd5e1"]{border-color:var(--border-strong) !important}
html[data-skin="ind"] [style*="border-top-color:#cbd5e1"],
html[data-skin="ind"] [style*="border-top-color: #cbd5e1"]{border-color:var(--border-strong) !important}
html[data-skin="ind"] [style*="border-bottom-color:#cbd5e1"],
html[data-skin="ind"] [style*="border-bottom-color: #cbd5e1"]{border-color:var(--border-strong) !important}
html[data-skin="ind"] [style*="border-color:#d1d5db"],
html[data-skin="ind"] [style*="border-color: #d1d5db"]{border-color:var(--border-strong) !important}
html[data-skin="ind"] [style*="border-top-color:#d1d5db"],
html[data-skin="ind"] [style*="border-top-color: #d1d5db"]{border-color:var(--border-strong) !important}
html[data-skin="ind"] [style*="border-bottom-color:#d1d5db"],
html[data-skin="ind"] [style*="border-bottom-color: #d1d5db"]{border-color:var(--border-strong) !important}
html[data-skin="ind"] [style*="border-color:#d4d4d8"],
html[data-skin="ind"] [style*="border-color: #d4d4d8"]{border-color:var(--border-strong) !important}
html[data-skin="ind"] [style*="border-top-color:#d4d4d8"],
html[data-skin="ind"] [style*="border-top-color: #d4d4d8"]{border-color:var(--border-strong) !important}
html[data-skin="ind"] [style*="border-bottom-color:#d4d4d8"],
html[data-skin="ind"] [style*="border-bottom-color: #d4d4d8"]{border-color:var(--border-strong) !important}
html[data-skin="ind"] [style*="border-radius:20px"],
html[data-skin="ind"] [style*="border-radius: 20px"],
html[data-skin="ind"] [style*="border-radius:18px"],
html[data-skin="ind"] [style*="border-radius: 18px"],
html[data-skin="ind"] [style*="border-radius:16px"],
html[data-skin="ind"] [style*="border-radius: 16px"],
html[data-skin="ind"] [style*="border-radius:14px"],
html[data-skin="ind"] [style*="border-radius: 14px"],
html[data-skin="ind"] [style*="border-radius:12px"],
html[data-skin="ind"] [style*="border-radius: 12px"],
html[data-skin="ind"] [style*="border-radius:10px"],
html[data-skin="ind"] [style*="border-radius: 10px"],
html[data-skin="ind"] [style*="border-radius:9px"],
html[data-skin="ind"] [style*="border-radius: 9px"],
html[data-skin="ind"] [style*="border-radius:8px"],
html[data-skin="ind"] [style*="border-radius: 8px"],
html[data-skin="ind"] [style*="border-radius:7px"],
html[data-skin="ind"] [style*="border-radius: 7px"],
html[data-skin="ind"] [style*="border-radius:6px"],
html[data-skin="ind"] [style*="border-radius: 6px"]{border-radius:2px !important}
html[data-skin="ind"] [style*="box-shadow"]{box-shadow:none !important}
/* ── 기능버튼 솔리드 배경 → 저채도 솔리드 (뒤 세미콜론 있는 솔리드만; 틴트 배지 보존) ── */
html[data-skin="ind"] [style*="background:#3b82f6;"],
html[data-skin="ind"] [style*="background: #3b82f6;"],
html[data-skin="ind"] [style*="background-color:#3b82f6;"],
html[data-skin="ind"] [style*="background-color: #3b82f6;"],
html[data-skin="ind"] [style*="background:#2563eb;"],
html[data-skin="ind"] [style*="background: #2563eb;"],
html[data-skin="ind"] [style*="background-color:#2563eb;"],
html[data-skin="ind"] [style*="background-color: #2563eb;"],
html[data-skin="ind"] [style*="background:#2196f3;"],
html[data-skin="ind"] [style*="background: #2196f3;"],
html[data-skin="ind"] [style*="background-color:#2196f3;"],
html[data-skin="ind"] [style*="background-color: #2196f3;"],
html[data-skin="ind"] [style*="background:#1d4ed8;"],
html[data-skin="ind"] [style*="background: #1d4ed8;"],
html[data-skin="ind"] [style*="background-color:#1d4ed8;"],
html[data-skin="ind"] [style*="background-color: #1d4ed8;"],
html[data-skin="ind"] [style*="background:#1e40af;"],
html[data-skin="ind"] [style*="background: #1e40af;"],
html[data-skin="ind"] [style*="background-color:#1e40af;"],
html[data-skin="ind"] [style*="background-color: #1e40af;"],
html[data-skin="ind"] [style*="background:#4f46e5;"],
html[data-skin="ind"] [style*="background: #4f46e5;"],
html[data-skin="ind"] [style*="background-color:#4f46e5;"],
html[data-skin="ind"] [style*="background-color: #4f46e5;"],
html[data-skin="ind"] [style*="background:#6366f1;"],
html[data-skin="ind"] [style*="background: #6366f1;"],
html[data-skin="ind"] [style*="background-color:#6366f1;"],
html[data-skin="ind"] [style*="background-color: #6366f1;"]{ background-color:var(--info) !important; background-image:none !important }
html[data-skin="ind"] [style*="background:#10b981;"],
html[data-skin="ind"] [style*="background: #10b981;"],
html[data-skin="ind"] [style*="background-color:#10b981;"],
html[data-skin="ind"] [style*="background-color: #10b981;"],
html[data-skin="ind"] [style*="background:#16a34a;"],
html[data-skin="ind"] [style*="background: #16a34a;"],
html[data-skin="ind"] [style*="background-color:#16a34a;"],
html[data-skin="ind"] [style*="background-color: #16a34a;"],
html[data-skin="ind"] [style*="background:#22c55e;"],
html[data-skin="ind"] [style*="background: #22c55e;"],
html[data-skin="ind"] [style*="background-color:#22c55e;"],
html[data-skin="ind"] [style*="background-color: #22c55e;"],
html[data-skin="ind"] [style*="background:#059669;"],
html[data-skin="ind"] [style*="background: #059669;"],
html[data-skin="ind"] [style*="background-color:#059669;"],
html[data-skin="ind"] [style*="background-color: #059669;"],
html[data-skin="ind"] [style*="background:#15803d;"],
html[data-skin="ind"] [style*="background: #15803d;"],
html[data-skin="ind"] [style*="background-color:#15803d;"],
html[data-skin="ind"] [style*="background-color: #15803d;"],
html[data-skin="ind"] [style*="background:#14b8a6;"],
html[data-skin="ind"] [style*="background: #14b8a6;"],
html[data-skin="ind"] [style*="background-color:#14b8a6;"],
html[data-skin="ind"] [style*="background-color: #14b8a6;"],
html[data-skin="ind"] [style*="background:#0d9488;"],
html[data-skin="ind"] [style*="background: #0d9488;"],
html[data-skin="ind"] [style*="background-color:#0d9488;"],
html[data-skin="ind"] [style*="background-color: #0d9488;"]{ background-color:var(--ok) !important; background-image:none !important }
html[data-skin="ind"] [style*="background:#ef4444;"],
html[data-skin="ind"] [style*="background: #ef4444;"],
html[data-skin="ind"] [style*="background-color:#ef4444;"],
html[data-skin="ind"] [style*="background-color: #ef4444;"],
html[data-skin="ind"] [style*="background:#dc2626;"],
html[data-skin="ind"] [style*="background: #dc2626;"],
html[data-skin="ind"] [style*="background-color:#dc2626;"],
html[data-skin="ind"] [style*="background-color: #dc2626;"],
html[data-skin="ind"] [style*="background:#b91c1c;"],
html[data-skin="ind"] [style*="background: #b91c1c;"],
html[data-skin="ind"] [style*="background-color:#b91c1c;"],
html[data-skin="ind"] [style*="background-color: #b91c1c;"],
html[data-skin="ind"] [style*="background:#e11d48;"],
html[data-skin="ind"] [style*="background: #e11d48;"],
html[data-skin="ind"] [style*="background-color:#e11d48;"],
html[data-skin="ind"] [style*="background-color: #e11d48;"],
html[data-skin="ind"] [style*="background:#e53e3e;"],
html[data-skin="ind"] [style*="background: #e53e3e;"],
html[data-skin="ind"] [style*="background-color:#e53e3e;"],
html[data-skin="ind"] [style*="background-color: #e53e3e;"]{ background-color:var(--danger) !important; background-image:none !important }
html[data-skin="ind"] [style*="background:#f59e0b;"],
html[data-skin="ind"] [style*="background: #f59e0b;"],
html[data-skin="ind"] [style*="background-color:#f59e0b;"],
html[data-skin="ind"] [style*="background-color: #f59e0b;"],
html[data-skin="ind"] [style*="background:#d97706;"],
html[data-skin="ind"] [style*="background: #d97706;"],
html[data-skin="ind"] [style*="background-color:#d97706;"],
html[data-skin="ind"] [style*="background-color: #d97706;"],
html[data-skin="ind"] [style*="background:#b45309;"],
html[data-skin="ind"] [style*="background: #b45309;"],
html[data-skin="ind"] [style*="background-color:#b45309;"],
html[data-skin="ind"] [style*="background-color: #b45309;"],
html[data-skin="ind"] [style*="background:#ea580c;"],
html[data-skin="ind"] [style*="background: #ea580c;"],
html[data-skin="ind"] [style*="background-color:#ea580c;"],
html[data-skin="ind"] [style*="background-color: #ea580c;"],
html[data-skin="ind"] [style*="background:#f97316;"],
html[data-skin="ind"] [style*="background: #f97316;"],
html[data-skin="ind"] [style*="background-color:#f97316;"],
html[data-skin="ind"] [style*="background-color: #f97316;"]{ background-color:var(--warn) !important; background-image:none !important }
/* ── [전 메뉴 톤] 1. 솔리드 버튼 배경 보강 → 저채도 솔리드 ── */
html[data-skin="ind"] [style*="background:#3b82f6;"],
html[data-skin="ind"] [style*="background: #3b82f6;"],
html[data-skin="ind"] [style*="background-color:#3b82f6;"],
html[data-skin="ind"] [style*="background-color: #3b82f6;"],
html[data-skin="ind"] [style*="background:#2563eb;"],
html[data-skin="ind"] [style*="background: #2563eb;"],
html[data-skin="ind"] [style*="background-color:#2563eb;"],
html[data-skin="ind"] [style*="background-color: #2563eb;"],
html[data-skin="ind"] [style*="background:#2196f3;"],
html[data-skin="ind"] [style*="background: #2196f3;"],
html[data-skin="ind"] [style*="background-color:#2196f3;"],
html[data-skin="ind"] [style*="background-color: #2196f3;"],
html[data-skin="ind"] [style*="background:#1d4ed8;"],
html[data-skin="ind"] [style*="background: #1d4ed8;"],
html[data-skin="ind"] [style*="background-color:#1d4ed8;"],
html[data-skin="ind"] [style*="background-color: #1d4ed8;"],
html[data-skin="ind"] [style*="background:#1e40af;"],
html[data-skin="ind"] [style*="background: #1e40af;"],
html[data-skin="ind"] [style*="background-color:#1e40af;"],
html[data-skin="ind"] [style*="background-color: #1e40af;"],
html[data-skin="ind"] [style*="background:#0369a1;"],
html[data-skin="ind"] [style*="background: #0369a1;"],
html[data-skin="ind"] [style*="background-color:#0369a1;"],
html[data-skin="ind"] [style*="background-color: #0369a1;"],
html[data-skin="ind"] [style*="background:#0284c7;"],
html[data-skin="ind"] [style*="background: #0284c7;"],
html[data-skin="ind"] [style*="background-color:#0284c7;"],
html[data-skin="ind"] [style*="background-color: #0284c7;"],
html[data-skin="ind"] [style*="background:#0ea5e9;"],
html[data-skin="ind"] [style*="background: #0ea5e9;"],
html[data-skin="ind"] [style*="background-color:#0ea5e9;"],
html[data-skin="ind"] [style*="background-color: #0ea5e9;"],
html[data-skin="ind"] [style*="background:#4f46e5;"],
html[data-skin="ind"] [style*="background: #4f46e5;"],
html[data-skin="ind"] [style*="background-color:#4f46e5;"],
html[data-skin="ind"] [style*="background-color: #4f46e5;"],
html[data-skin="ind"] [style*="background:#6366f1;"],
html[data-skin="ind"] [style*="background: #6366f1;"],
html[data-skin="ind"] [style*="background-color:#6366f1;"],
html[data-skin="ind"] [style*="background-color: #6366f1;"],
html[data-skin="ind"] [style*="background:#4338ca;"],
html[data-skin="ind"] [style*="background: #4338ca;"],
html[data-skin="ind"] [style*="background-color:#4338ca;"],
html[data-skin="ind"] [style*="background-color: #4338ca;"],
html[data-skin="ind"] [style*="background:#7c3aed;"],
html[data-skin="ind"] [style*="background: #7c3aed;"],
html[data-skin="ind"] [style*="background-color:#7c3aed;"],
html[data-skin="ind"] [style*="background-color: #7c3aed;"],
html[data-skin="ind"] [style*="background:#8b5cf6;"],
html[data-skin="ind"] [style*="background: #8b5cf6;"],
html[data-skin="ind"] [style*="background-color:#8b5cf6;"],
html[data-skin="ind"] [style*="background-color: #8b5cf6;"],
html[data-skin="ind"] [style*="background:#6d28d9;"],
html[data-skin="ind"] [style*="background: #6d28d9;"],
html[data-skin="ind"] [style*="background-color:#6d28d9;"],
html[data-skin="ind"] [style*="background-color: #6d28d9;"],
html[data-skin="ind"] [style*="background:#312e81;"],
html[data-skin="ind"] [style*="background: #312e81;"],
html[data-skin="ind"] [style*="background-color:#312e81;"],
html[data-skin="ind"] [style*="background-color: #312e81;"],
html[data-skin="ind"] [style*="background:#1e1b4b;"],
html[data-skin="ind"] [style*="background: #1e1b4b;"],
html[data-skin="ind"] [style*="background-color:#1e1b4b;"],
html[data-skin="ind"] [style*="background-color: #1e1b4b;"]{ background-color:var(--info) !important; background-image:none !important }
html[data-skin="ind"] [style*="background:#10b981;"],
html[data-skin="ind"] [style*="background: #10b981;"],
html[data-skin="ind"] [style*="background-color:#10b981;"],
html[data-skin="ind"] [style*="background-color: #10b981;"],
html[data-skin="ind"] [style*="background:#16a34a;"],
html[data-skin="ind"] [style*="background: #16a34a;"],
html[data-skin="ind"] [style*="background-color:#16a34a;"],
html[data-skin="ind"] [style*="background-color: #16a34a;"],
html[data-skin="ind"] [style*="background:#22c55e;"],
html[data-skin="ind"] [style*="background: #22c55e;"],
html[data-skin="ind"] [style*="background-color:#22c55e;"],
html[data-skin="ind"] [style*="background-color: #22c55e;"],
html[data-skin="ind"] [style*="background:#059669;"],
html[data-skin="ind"] [style*="background: #059669;"],
html[data-skin="ind"] [style*="background-color:#059669;"],
html[data-skin="ind"] [style*="background-color: #059669;"],
html[data-skin="ind"] [style*="background:#15803d;"],
html[data-skin="ind"] [style*="background: #15803d;"],
html[data-skin="ind"] [style*="background-color:#15803d;"],
html[data-skin="ind"] [style*="background-color: #15803d;"],
html[data-skin="ind"] [style*="background:#047857;"],
html[data-skin="ind"] [style*="background: #047857;"],
html[data-skin="ind"] [style*="background-color:#047857;"],
html[data-skin="ind"] [style*="background-color: #047857;"],
html[data-skin="ind"] [style*="background:#0d9488;"],
html[data-skin="ind"] [style*="background: #0d9488;"],
html[data-skin="ind"] [style*="background-color:#0d9488;"],
html[data-skin="ind"] [style*="background-color: #0d9488;"],
html[data-skin="ind"] [style*="background:#14b8a6;"],
html[data-skin="ind"] [style*="background: #14b8a6;"],
html[data-skin="ind"] [style*="background-color:#14b8a6;"],
html[data-skin="ind"] [style*="background-color: #14b8a6;"],
html[data-skin="ind"] [style*="background:#0f766e;"],
html[data-skin="ind"] [style*="background: #0f766e;"],
html[data-skin="ind"] [style*="background-color:#0f766e;"],
html[data-skin="ind"] [style*="background-color: #0f766e;"]{ background-color:var(--ok) !important; background-image:none !important }
html[data-skin="ind"] [style*="background:#ef4444;"],
html[data-skin="ind"] [style*="background: #ef4444;"],
html[data-skin="ind"] [style*="background-color:#ef4444;"],
html[data-skin="ind"] [style*="background-color: #ef4444;"],
html[data-skin="ind"] [style*="background:#dc2626;"],
html[data-skin="ind"] [style*="background: #dc2626;"],
html[data-skin="ind"] [style*="background-color:#dc2626;"],
html[data-skin="ind"] [style*="background-color: #dc2626;"],
html[data-skin="ind"] [style*="background:#b91c1c;"],
html[data-skin="ind"] [style*="background: #b91c1c;"],
html[data-skin="ind"] [style*="background-color:#b91c1c;"],
html[data-skin="ind"] [style*="background-color: #b91c1c;"],
html[data-skin="ind"] [style*="background:#e11d48;"],
html[data-skin="ind"] [style*="background: #e11d48;"],
html[data-skin="ind"] [style*="background-color:#e11d48;"],
html[data-skin="ind"] [style*="background-color: #e11d48;"],
html[data-skin="ind"] [style*="background:#be123c;"],
html[data-skin="ind"] [style*="background: #be123c;"],
html[data-skin="ind"] [style*="background-color:#be123c;"],
html[data-skin="ind"] [style*="background-color: #be123c;"],
html[data-skin="ind"] [style*="background:#9f1239;"],
html[data-skin="ind"] [style*="background: #9f1239;"],
html[data-skin="ind"] [style*="background-color:#9f1239;"],
html[data-skin="ind"] [style*="background-color: #9f1239;"],
html[data-skin="ind"] [style*="background:#991b1b;"],
html[data-skin="ind"] [style*="background: #991b1b;"],
html[data-skin="ind"] [style*="background-color:#991b1b;"],
html[data-skin="ind"] [style*="background-color: #991b1b;"],
html[data-skin="ind"] [style*="background:#7f1d1d;"],
html[data-skin="ind"] [style*="background: #7f1d1d;"],
html[data-skin="ind"] [style*="background-color:#7f1d1d;"],
html[data-skin="ind"] [style*="background-color: #7f1d1d;"],
html[data-skin="ind"] [style*="background:#e53e3e;"],
html[data-skin="ind"] [style*="background: #e53e3e;"],
html[data-skin="ind"] [style*="background-color:#e53e3e;"],
html[data-skin="ind"] [style*="background-color: #e53e3e;"]{ background-color:var(--danger) !important; background-image:none !important }
html[data-skin="ind"] [style*="background:#f59e0b;"],
html[data-skin="ind"] [style*="background: #f59e0b;"],
html[data-skin="ind"] [style*="background-color:#f59e0b;"],
html[data-skin="ind"] [style*="background-color: #f59e0b;"],
html[data-skin="ind"] [style*="background:#d97706;"],
html[data-skin="ind"] [style*="background: #d97706;"],
html[data-skin="ind"] [style*="background-color:#d97706;"],
html[data-skin="ind"] [style*="background-color: #d97706;"],
html[data-skin="ind"] [style*="background:#b45309;"],
html[data-skin="ind"] [style*="background: #b45309;"],
html[data-skin="ind"] [style*="background-color:#b45309;"],
html[data-skin="ind"] [style*="background-color: #b45309;"],
html[data-skin="ind"] [style*="background:#ea580c;"],
html[data-skin="ind"] [style*="background: #ea580c;"],
html[data-skin="ind"] [style*="background-color:#ea580c;"],
html[data-skin="ind"] [style*="background-color: #ea580c;"],
html[data-skin="ind"] [style*="background:#f97316;"],
html[data-skin="ind"] [style*="background: #f97316;"],
html[data-skin="ind"] [style*="background-color:#f97316;"],
html[data-skin="ind"] [style*="background-color: #f97316;"],
html[data-skin="ind"] [style*="background:#c2410c;"],
html[data-skin="ind"] [style*="background: #c2410c;"],
html[data-skin="ind"] [style*="background-color:#c2410c;"],
html[data-skin="ind"] [style*="background-color: #c2410c;"],
html[data-skin="ind"] [style*="background:#9a3412;"],
html[data-skin="ind"] [style*="background: #9a3412;"],
html[data-skin="ind"] [style*="background-color:#9a3412;"],
html[data-skin="ind"] [style*="background-color: #9a3412;"],
html[data-skin="ind"] [style*="background:#ca8a04;"],
html[data-skin="ind"] [style*="background: #ca8a04;"],
html[data-skin="ind"] [style*="background-color:#ca8a04;"],
html[data-skin="ind"] [style*="background-color: #ca8a04;"]{ background-color:var(--warn) !important; background-image:none !important }
/* ── [전 메뉴 톤] 2. 그라디언트 중화 (linear-gradient + 대표색) ── */
html[data-skin="ind"] [style*="linear-gradient"][style*="#f59e0b"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#d97706"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#fbbf24"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#ea580c"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#c2410c"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#9a3412"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#78350f"]{ background-image:none !important; background-color:var(--warn) !important }
html[data-skin="ind"] [style*="linear-gradient"][style*="#10b981"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#059669"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#047857"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#065f46"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#0d9488"]{ background-image:none !important; background-color:var(--ok) !important }
html[data-skin="ind"] [style*="linear-gradient"][style*="#dc2626"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#b91c1c"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#7f1d1d"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#ef4444"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#991b1b"]{ background-image:none !important; background-color:var(--danger) !important }
html[data-skin="ind"] [style*="linear-gradient"][style*="#8b5cf6"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#6366f1"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#4f46e5"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#312e81"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#1e1b4b"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#0f2744"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#1e3a8a"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#3b82f6"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#0369a1"],
html[data-skin="ind"] [style*="linear-gradient"][style*="#7c3aed"]{ background-image:none !important; background-color:var(--info) !important }
/* ── [전 메뉴 톤] 3. 연한 틴트 배경 → 산업 소프트 틴트 ── */
html[data-skin="ind"] [style*="background:#fff5f5"],
html[data-skin="ind"] [style*="background: #fff5f5"],
html[data-skin="ind"] [style*="background-color:#fff5f5"],
html[data-skin="ind"] [style*="background-color: #fff5f5"],
html[data-skin="ind"] [style*="background:#fff8f8"],
html[data-skin="ind"] [style*="background: #fff8f8"],
html[data-skin="ind"] [style*="background-color:#fff8f8"],
html[data-skin="ind"] [style*="background-color: #fff8f8"],
html[data-skin="ind"] [style*="background:#fff1f2"],
html[data-skin="ind"] [style*="background: #fff1f2"],
html[data-skin="ind"] [style*="background-color:#fff1f2"],
html[data-skin="ind"] [style*="background-color: #fff1f2"],
html[data-skin="ind"] [style*="background:#ffe4e6"],
html[data-skin="ind"] [style*="background: #ffe4e6"],
html[data-skin="ind"] [style*="background-color:#ffe4e6"],
html[data-skin="ind"] [style*="background-color: #ffe4e6"],
html[data-skin="ind"] [style*="background:#fef2f3"],
html[data-skin="ind"] [style*="background: #fef2f3"],
html[data-skin="ind"] [style*="background-color:#fef2f3"],
html[data-skin="ind"] [style*="background-color: #fef2f3"]{ background-color:var(--bg-danger-soft) !important }
html[data-skin="ind"] [style*="background:#ecfdf5"],
html[data-skin="ind"] [style*="background: #ecfdf5"],
html[data-skin="ind"] [style*="background-color:#ecfdf5"],
html[data-skin="ind"] [style*="background-color: #ecfdf5"],
html[data-skin="ind"] [style*="background:#f0fdfa"],
html[data-skin="ind"] [style*="background: #f0fdfa"],
html[data-skin="ind"] [style*="background-color:#f0fdfa"],
html[data-skin="ind"] [style*="background-color: #f0fdfa"],
html[data-skin="ind"] [style*="background:#ccfbf1"],
html[data-skin="ind"] [style*="background: #ccfbf1"],
html[data-skin="ind"] [style*="background-color:#ccfbf1"],
html[data-skin="ind"] [style*="background-color: #ccfbf1"],
html[data-skin="ind"] [style*="background:#ecfeff"],
html[data-skin="ind"] [style*="background: #ecfeff"],
html[data-skin="ind"] [style*="background-color:#ecfeff"],
html[data-skin="ind"] [style*="background-color: #ecfeff"],
html[data-skin="ind"] [style*="background:#d1fae5"],
html[data-skin="ind"] [style*="background: #d1fae5"],
html[data-skin="ind"] [style*="background-color:#d1fae5"],
html[data-skin="ind"] [style*="background-color: #d1fae5"],
html[data-skin="ind"] [style*="background:#f0fdf9"],
html[data-skin="ind"] [style*="background: #f0fdf9"],
html[data-skin="ind"] [style*="background-color:#f0fdf9"],
html[data-skin="ind"] [style*="background-color: #f0fdf9"]{ background-color:var(--bg-success-soft) !important }
html[data-skin="ind"] [style*="background:#f0f9ff"],
html[data-skin="ind"] [style*="background: #f0f9ff"],
html[data-skin="ind"] [style*="background-color:#f0f9ff"],
html[data-skin="ind"] [style*="background-color: #f0f9ff"],
html[data-skin="ind"] [style*="background:#f8faff"],
html[data-skin="ind"] [style*="background: #f8faff"],
html[data-skin="ind"] [style*="background-color:#f8faff"],
html[data-skin="ind"] [style*="background-color: #f8faff"],
html[data-skin="ind"] [style*="background:#e0f2fe"],
html[data-skin="ind"] [style*="background: #e0f2fe"],
html[data-skin="ind"] [style*="background-color:#e0f2fe"],
html[data-skin="ind"] [style*="background-color: #e0f2fe"],
html[data-skin="ind"] [style*="background:#dbeafe"],
html[data-skin="ind"] [style*="background: #dbeafe"],
html[data-skin="ind"] [style*="background-color:#dbeafe"],
html[data-skin="ind"] [style*="background-color: #dbeafe"],
html[data-skin="ind"] [style*="background:#eef2ff"],
html[data-skin="ind"] [style*="background: #eef2ff"],
html[data-skin="ind"] [style*="background-color:#eef2ff"],
html[data-skin="ind"] [style*="background-color: #eef2ff"],
html[data-skin="ind"] [style*="background:#f5f3ff"],
html[data-skin="ind"] [style*="background: #f5f3ff"],
html[data-skin="ind"] [style*="background-color:#f5f3ff"],
html[data-skin="ind"] [style*="background-color: #f5f3ff"],
html[data-skin="ind"] [style*="background:#faf5ff"],
html[data-skin="ind"] [style*="background: #faf5ff"],
html[data-skin="ind"] [style*="background-color:#faf5ff"],
html[data-skin="ind"] [style*="background-color: #faf5ff"],
html[data-skin="ind"] [style*="background:#f3e8ff"],
html[data-skin="ind"] [style*="background: #f3e8ff"],
html[data-skin="ind"] [style*="background-color:#f3e8ff"],
html[data-skin="ind"] [style*="background-color: #f3e8ff"],
html[data-skin="ind"] [style*="background:#e0e7ff"],
html[data-skin="ind"] [style*="background: #e0e7ff"],
html[data-skin="ind"] [style*="background-color:#e0e7ff"],
html[data-skin="ind"] [style*="background-color: #e0e7ff"],
html[data-skin="ind"] [style*="background:#ede9fe"],
html[data-skin="ind"] [style*="background: #ede9fe"],
html[data-skin="ind"] [style*="background-color:#ede9fe"],
html[data-skin="ind"] [style*="background-color: #ede9fe"]{ background-color:var(--bg-info-soft) !important }
html[data-skin="ind"] [style*="background:#fff7ed"],
html[data-skin="ind"] [style*="background: #fff7ed"],
html[data-skin="ind"] [style*="background-color:#fff7ed"],
html[data-skin="ind"] [style*="background-color: #fff7ed"],
html[data-skin="ind"] [style*="background:#ffedd5"],
html[data-skin="ind"] [style*="background: #ffedd5"],
html[data-skin="ind"] [style*="background-color:#ffedd5"],
html[data-skin="ind"] [style*="background-color: #ffedd5"],
html[data-skin="ind"] [style*="background:#fefce8"],
html[data-skin="ind"] [style*="background: #fefce8"],
html[data-skin="ind"] [style*="background-color:#fefce8"],
html[data-skin="ind"] [style*="background-color: #fefce8"],
html[data-skin="ind"] [style*="background:#fef9ee"],
html[data-skin="ind"] [style*="background: #fef9ee"],
html[data-skin="ind"] [style*="background-color:#fef9ee"],
html[data-skin="ind"] [style*="background-color: #fef9ee"],
html[data-skin="ind"] [style*="background:#fef08a"],
html[data-skin="ind"] [style*="background: #fef08a"],
html[data-skin="ind"] [style*="background-color:#fef08a"],
html[data-skin="ind"] [style*="background-color: #fef08a"]{ background-color:var(--bg-warn-soft) !important }

/* ═══════════════════════════════════════════════════════════════════════════
   Phase 3 · 앱 셸 그리드 (단일 출처 — 레이아웃은 이 파일이 담당)
   기준: docs/redesign-previews/앱셸-그리드-프리뷰.html — 좌210 / 중앙1fr / 우300 · 상단바 · 하단34px
   대상: 기존 요소(.top-nav) 재배치 + shell.js가 런타임 주입하는 .ind-gtitle/.ind-aside/.ind-footer.
   데스크톱(≥1281px)·스킨 스코프 전용. top 오프셋은 skin-industrial-shell.js가 --ind-top으로 실측 설정.
   ═══════════════════════════════════════════════════════════════════════════ */
/* 사이드바 접기 토글(.ind-nav-toggle, shell.js 주입) — 데스크톱 셸 밖(모바일·태블릿)에선 숨김 */
html[data-skin="ind"] .ind-nav-toggle{ display:none; }
@media (min-width:1281px){
  /* 좌측 내비 폭 단일 변수 — 접기(html.ind-nav-collapsed, shell.js 토글) 시 레일 폭으로.
     사이드바·콘텐츠 여백·푸터가 전부 이 변수를 따라가므로 폭 수정은 여기서만 한다. */
  html[data-skin="ind"]{ --ind-nav-w:210px; }
  html[data-skin="ind"].ind-nav-collapsed{ --ind-nav-w:28px; }
  /* 좌측 내비 → 210px 고정 사이드바 (마크업 무수정, 기존 .top-nav 재배치) */
  html[data-skin="ind"] .top-nav{
    position:fixed; left:0; top:var(--ind-top,103px); bottom:0; width:var(--ind-nav-w,210px); margin:0; padding:14px 0;
    background:var(--bg-card); border-right:1px solid var(--border-color);
    display:block; overflow-y:auto; z-index:900;
  }
  /* 접기 토글 — 내비 최상단 한 줄, 아코디언 화살표(\203A)와 같은 문자 문법 */
  html[data-skin="ind"] .ind-nav-toggle{
    display:flex; align-items:center; justify-content:flex-end;
    height:26px; padding:0 12px; margin-bottom:4px;
    border-bottom:1px solid var(--border-color);
    font-family:var(--mono); font-size:13px; color:var(--text-faint);
    cursor:pointer; user-select:none;
  }
  html[data-skin="ind"] .ind-nav-toggle:hover{ color:var(--text-main); background:var(--bg-subtle); }
  /* 접힘(레일 모드): 메뉴 숨기고 토글만 중앙 정렬. 레일에 마우스를 올리면 메뉴가 콘텐츠 위로
     임시 펼쳐진다(오버레이 — 콘텐츠 여백은 레일 폭 유지, z-index 900이라 위로 뜸). 토글 = 고정/해제. */
  html[data-skin="ind"].ind-nav-collapsed .top-nav{ padding:8px 0; overflow:hidden; transition:width .12s ease; }
  html[data-skin="ind"].ind-nav-collapsed .top-nav .ind-nav-toggle{ justify-content:center; padding:0; border-bottom:none; }
  html[data-skin="ind"].ind-nav-collapsed .top-nav .nav-group{ display:none; }
  html[data-skin="ind"].ind-nav-collapsed .top-nav:hover{ width:210px; overflow-y:auto; }
  html[data-skin="ind"].ind-nav-collapsed .top-nav:hover .nav-group{ display:block; }
  html[data-skin="ind"].ind-nav-collapsed .top-nav:hover .ind-nav-toggle{ justify-content:flex-end; padding:0 12px; border-bottom:1px solid var(--border-color); }
  html[data-skin="ind"] .top-nav .nav-group{ display:block; }
  html[data-skin="ind"] .top-nav .nav-main{
    display:flex; align-items:center; width:100%; height:33px; padding:0 18px;
    border-bottom:none; border-left:2px solid transparent;
    font-size:12.5px; font-weight:500; color:var(--text-secondary); white-space:nowrap;
  }
  html[data-skin="ind"] .top-nav .nav-main:hover{
    background:var(--bg-subtle); border-bottom:none; border-left-color:var(--border-strong); color:var(--text-main);
  }
  html[data-skin="ind"] .top-nav .nav-main.active{
    background:var(--bg-muted); border-bottom:none; border-left-color:var(--text-main); color:var(--text-main); font-weight:600;
  }
  /* shell.js가 nav-main 앞에 주입하는 번호 그룹 타이틀 */
  html[data-skin="ind"] .top-nav .ind-gtitle{
    font-family:var(--mono); font-size:10.5px; letter-spacing:.06em;
    color:var(--text-faint); padding:16px 18px 6px; white-space:nowrap;
  }
  html[data-skin="ind"] .top-nav .ind-gtitle:first-child{ padding-top:2px; }

  /* 중앙 콘텐츠 : 좌210 · 우300 여백 확보, 기존 max-width:auto-center 무력화 */
  html[data-skin="ind"] .sub-nav-bar,
  html[data-skin="ind"] #view-home,
  html[data-skin="ind"] #section-processmap,
  html[data-skin="ind"] .dashboard-container{ margin-left:var(--ind-nav-w,210px); margin-right:300px; max-width:none; }

  /* 우측 300px 패널(.ind-aside, shell.js 주입) */
  html[data-skin="ind"] .ind-aside{
    position:fixed; right:0; top:var(--ind-top,103px); bottom:0; width:300px;
    border-left:1px solid var(--border-color); background:var(--bg-card);
    display:flex; flex-direction:column; overflow:hidden; z-index:850;
  }
  html[data-skin="ind"] .ind-panel{
    padding:16px; border-bottom:1px solid var(--border-color);
    display:flex; flex-direction:column; flex:0 0 auto; min-height:0;
  }
  html[data-skin="ind"] .ind-ph{
    font-family:var(--mono); font-size:10.5px; letter-spacing:.05em; color:var(--text-faint);
    text-transform:uppercase; margin-bottom:12px;
  }
  /* ── 아코디언: 한 번에 한 섹션만 펼침(접었다 폈다) ──────────────────────────
     헤더(.ind-acc-head) 클릭 토글 · 본문(.ind-acc-body)만 접힘 · 열린 패널이 잔여 높이 채움 */
  html[data-skin="ind"] .ind-acc-head{
    display:flex; align-items:center; cursor:pointer; user-select:none; flex:0 0 auto;
  }
  html[data-skin="ind"] .ind-acc-head::after{
    content:"\203A"; margin-left:auto; padding-left:10px; flex:0 0 auto;
    font-family:var(--mono); font-size:14px; line-height:1; color:var(--text-faint);
    transition:transform .15s ease;
  }
  html[data-skin="ind"] .ind-acc-head:hover::after{ color:var(--text-secondary); }
  html[data-skin="ind"] .ind-panel.ind-open > .ind-acc-head::after{ transform:rotate(90deg); }
  /* 접힌 패널은 헤더만 (하단 여백 제거로 목록처럼 콤팩트하게) */
  html[data-skin="ind"] .ind-panel:not(.ind-open) > .ind-acc-head{ margin-bottom:0; }
  html[data-skin="ind"] .ind-acc-body{ display:none; min-height:0; }
  html[data-skin="ind"] .ind-panel.ind-open{ flex:1 1 auto; overflow:hidden; }
  html[data-skin="ind"] .ind-panel.ind-open > .ind-acc-body{
    display:block; flex:1 1 auto; min-height:0; overflow-y:auto;
  }
  /* AI 패널: 본문이 로그(스크롤)+입력줄 세로 배치 → 본문 자체는 flex 컬럼, 로그만 스크롤 */
  html[data-skin="ind"] .ind-panel.ind-open > .ind-ai-body{
    display:flex; flex-direction:column; overflow:hidden;
  }
  html[data-skin="ind"] .ind-ai-log{
    flex:1 1; min-height:0; overflow-y:auto; font-family:var(--mono); font-size:11px; line-height:1.7; color:var(--text-secondary);
  }
  html[data-skin="ind"] .ind-ai-log .sys{ color:var(--text-faint); }
  html[data-skin="ind"] .ind-ai-log .ai{ color:var(--text-main); }
  html[data-skin="ind"] .ind-ai-log .usr{ color:var(--info); }
  html[data-skin="ind"] .ind-ai-log .rec{ color:var(--warn); }
  html[data-skin="ind"] .ind-inrow{
    display:flex; align-items:center; gap:8px; border:1px solid var(--border-color);
    margin-top:12px; padding:0 10px; height:34px;
  }
  html[data-skin="ind"] .ind-inrow input{
    flex:1; border:none; background:none; color:var(--text-main);
    font-family:var(--mono); font-size:11.5px; outline:none;
  }
  html[data-skin="ind"] .ind-inrow input::placeholder{ color:var(--text-faint); }
  html[data-skin="ind"] .ind-inrow .caret{ font-family:var(--mono); color:var(--ok); }
  html[data-skin="ind"] .ind-taglabel{
    font-family:var(--mono); font-size:10.5px; letter-spacing:.04em; color:var(--text-faint);
    text-transform:uppercase; margin-top:10px;
  }
  html[data-skin="ind"] .ind-lookup-res{ margin-top:12px; font-size:12.5px; }
  html[data-skin="ind"] .ind-lr-msg{ font-family:var(--mono); font-size:11px; color:var(--text-faint); }
  html[data-skin="ind"] .ind-lr-name{ font-weight:600; color:var(--text-main); margin-bottom:3px; }
  html[data-skin="ind"] .ind-lr-cas{ font-size:11px; color:var(--text-faint); margin-bottom:8px; }
  html[data-skin="ind"] .ind-lr-tags{ display:flex; flex-wrap:wrap; gap:5px; }
  html[data-skin="ind"] .ind-lr-tag{
    font-family:var(--mono); font-size:10px; padding:2px 7px; letter-spacing:.02em;
    color:var(--info); background:var(--bg-info-soft);
  }

  /* 하단 34px 푸터(.ind-footer, shell.js 주입) */
  html[data-skin="ind"] .ind-footer{
    position:fixed; left:var(--ind-nav-w,210px); right:300px; bottom:0; height:28px;
    display:flex; align-items:center; gap:18px; padding:0 18px;
    background:var(--bg-card); border-top:1px solid var(--border-color);
    font-family:var(--mono); font-size:10.5px; color:var(--text-faint); z-index:800;
  }
  html[data-skin="ind"] .ind-footer b{ color:var(--text-secondary); font-weight:600; }
  html[data-skin="ind"] .ind-footer .r{ margin-left:auto; display:flex; gap:18px; }
  /* '사업자 서류' 푸터 메뉴 — 이지세이프티 서류 워터마크 다운로드 */
  html[data-skin="ind"] .ind-footer .ind-biz-docs{
    cursor:pointer; color:var(--text-secondary);
    text-decoration:underline; text-underline-offset:3px;
  }
  html[data-skin="ind"] .ind-biz-docs-menu{
    position:fixed; bottom:34px; display:none; flex-direction:column; gap:8px;
    min-width:240px; padding:12px 14px; z-index:900;
    background:var(--panel); border:1px solid var(--border-color);
    font-family:var(--mono); font-size:11px; color:var(--text-main);
  }
  html[data-skin="ind"] .ind-biz-docs-menu b{ font-size:10px; color:var(--text-faint); font-weight:600; letter-spacing:.4px; }
  html[data-skin="ind"] .ind-biz-docs-menu a{
    cursor:pointer; color:var(--text-main);
    text-decoration:underline; text-underline-offset:3px;
  }
  html[data-skin="ind"] .ind-biz-docs-menu small{ font-family:var(--sans, inherit); color:var(--text-faint); }
  html[data-skin="ind"] .ind-barcode{
    display:flex; gap:1px; height:12px; align-items:stretch; flex:0 0 auto; width:110px; overflow:hidden;
  }
  html[data-skin="ind"] .ind-barcode i{ width:1px; background:var(--text-faint); }

  /* 콘텐츠가 하단 푸터에 안 가리게 */
  html[data-skin="ind"] .dashboard-container,
  html[data-skin="ind"] #section-processmap,
  html[data-skin="ind"] #view-home{ padding-bottom:40px; }
}

/* ── 표 공통 스킨 보강 (체크리스트 #2 · 전역 hover, 마크업 무수정) ── */
html[data-skin="ind"] tbody tr:hover td{ background:var(--hover, var(--bg-subtle)) !important; }
html[data-skin="ind"] .table-wrapper{ border-radius:0; }

/* ═══════════════════════════════════════════════════════════════════════════
   상태태그 컴포넌트 (스펙 2.3) — 색+라벨 병용, 데스크톱/모바일 공통(스킨 스코프)
   매핑: 적합/완료/합격/선임=ok, 점검요망/갱신임박/조건부/예정=warn,
        갱신필요/초과/공석/기한초과/D판정=danger, 관리감독자/상신/위촉=info
   ═══════════════════════════════════════════════════════════════════════════ */
/* E판 상향(2026-07-19): 사각 유지 + 7px 상태색 점 + 라벨, -soft 배경(정본 = 보더 없음·틴트만).
   수치 = 정본 .status-tag(gap 6·10.5px·600·.04em·3px 8px·점 7px). */
html[data-skin="ind"] .status-tag{
  display:inline-flex !important; align-items:center; gap:6px; font-family:var(--mono);
  font-size:10.5px !important; padding:3px 8px !important; letter-spacing:.04em; border-radius:0 !important;
  font-weight:600 !important; white-space:nowrap;
  border:none !important;
}
html[data-skin="ind"] .status-tag .ico{ width:7px; height:7px; border-radius:0; flex:0 0 auto; }
html[data-skin="ind"] .status-tag.t-ok{ color:var(--ok) !important; background:var(--bg-success-soft) !important; }
html[data-skin="ind"] .status-tag.t-ok .ico{ background:var(--ok); }
html[data-skin="ind"] .status-tag.t-warn{ color:var(--warn) !important; background:var(--bg-warn-soft) !important; }
html[data-skin="ind"] .status-tag.t-warn .ico{ background:var(--warn); }
html[data-skin="ind"] .status-tag.t-danger{ color:var(--danger) !important; background:var(--bg-danger-soft) !important; }
html[data-skin="ind"] .status-tag.t-danger .ico{ background:var(--danger); }
html[data-skin="ind"] .status-tag.t-info{ color:var(--info) !important; background:var(--bg-info-soft) !important; }
html[data-skin="ind"] .status-tag.t-info .ico{ background:var(--info); }

/* ── 표 헤더 모노 일반화: 클래스 없는 모듈 생성 표(선해임 이력 등)도 프리뷰 룩 적용 ── */
html[data-skin="ind"] thead th{
  font-family:var(--mono); font-weight:500; font-size:11px; letter-spacing:.02em;
  color:var(--text-tertiary);
}

/* ── 셸 주입물(.ind-aside/.ind-footer)은 데스크톱 전용 — 모바일에선 생 텍스트 노출 방지 ── */
html[data-skin="ind"] .ind-aside,
html[data-skin="ind"] .ind-footer{ display:none; }
/* (≥1281px 블록의 display:flex가 이 기본값을 덮음 — 소스순서상 위 Phase3 블록보다 뒤라서
   동일 특이성 later-wins로 죽지 않도록 min-width에서 명시 재선언) */
@media (min-width:1281px){
  html[data-skin="ind"] .ind-aside{ display:flex; }
  html[data-skin="ind"] .ind-footer{ display:flex; }
}

/* ── body 바탕 일반화: 자체 CSS 규칙에 리터럴 hex로 배경을 칠하는 독립 페이지(tbm 등)도 종이 바탕으로 ── */
html[data-skin="ind"] body{ background-color:var(--secondary-color) !important; }

/* ═══════════════════════════════════════════════════════════════════════════
   다크 남색 잔재 정리 — styles.css의 개별 다크규칙(전역 input !important·edit-input·
   체크박스 스카이블루·izi-fab #dbeafe 매핑·헤더 유틸버튼)을 스킨 스코프로 야간판 재정의.
   원본 규칙이 !important라 여기도 !important + 상위 특이성(html[data-skin]) 필요.
   ═══════════════════════════════════════════════════════════════════════════ */
html[data-skin="ind"] body.dark-mode input:not([type="color"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html[data-skin="ind"] body.dark-mode textarea,
html[data-skin="ind"] body.dark-mode select{
  background:var(--bg-muted) !important; color:var(--text-main) !important; border-color:var(--border-strong) !important;
}
html[data-skin="ind"] body.dark-mode .search-input-group input{
  background:var(--bg-muted) !important; color:var(--text-main) !important; border-color:var(--border-strong) !important;
}
html[data-skin="ind"] body.dark-mode .search-input-group input:focus{
  border-color:var(--ok) !important; box-shadow:0 0 0 3px var(--bg-success-soft) !important;
}
html[data-skin="ind"] body.dark-mode .edit-input,
html[data-skin="ind"] body.dark-mode .org-level-select{
  background:var(--bg-muted) !important; border-color:var(--border-strong) !important; color:var(--text-main) !important;
}
html[data-skin="ind"] body.dark-mode input[type="checkbox"]{
  border-color:var(--border-strong) !important; background:var(--bg-muted) !important;
}
html[data-skin="ind"] body.dark-mode input[type="checkbox"]:checked{
  background:var(--ok) !important; border-color:var(--ok) !important;
}
html[data-skin="ind"] body.dark-mode .chat-input-bar{
  background:var(--bg-card) !important; border-color:var(--border-color) !important;
}
html[data-skin="ind"] body.dark-mode .dark-toggle,
html[data-skin="ind"] body.dark-mode #noti-bell,
html[data-skin="ind"] body.dark-mode #admin-dropdown-btn{
  background:var(--bg-muted) !important; border-color:var(--border-strong) !important; color:var(--text-secondary) !important;
}
html[data-skin="ind"] body.dark-mode div[style*="background:#dbeafe"]{
  background:var(--bg-info-soft) !important; border-color:var(--border-strong) !important;
}
/* body 페이지 바탕: dark에서 bg-card로 새던 것 → secondary(페이지 톤)로 교정 */
html[data-skin="ind"] body.dark-mode{ background-color:var(--secondary-color) !important; }

/* 헤더 유틸바(#user-info-bar) 버튼·관리자 드롭다운 — 원본이 ID+!important라 ID 포함 상위 특이성 필요 */
html[data-skin="ind"] body.dark-mode #user-info-bar button{
  background:var(--bg-muted) !important; border-color:var(--border-strong) !important; color:var(--text-secondary) !important;
}
html[data-skin="ind"] body.dark-mode #admin-dropdown-menu{
  background:var(--bg-card) !important; border-color:var(--border-color) !important;
}
html[data-skin="ind"] body.dark-mode #admin-dropdown-menu button{
  background:none !important; color:var(--text-secondary) !important; border-bottom-color:var(--border-color) !important;
}
html[data-skin="ind"] body.dark-mode #admin-dropdown-menu button:hover{ background:var(--bg-muted) !important; }
html[data-skin="ind"] body.dark-mode #admin-dropdown-menu button:last-child{ color:var(--danger) !important; }

/* ── 이지 캐릭터: 사이드바 AI 패널 헤더에 아바타로 (터미널 톤 유지) ── */
html[data-skin="ind"] .ind-ai-head{ display:flex; align-items:center; gap:7px; margin-bottom:12px; }
html[data-skin="ind"] .ind-ai-head img{
  width:20px; height:20px; border-radius:50%; flex:0 0 auto;
  background:var(--bg-info-soft); box-shadow:0 0 0 2px var(--bg-success-soft);
}
html[data-skin="ind"] .ind-ai-head .ind-ph{ margin-bottom:0; }

/* ── 이지 행동 확인카드 (사이드바 로그 내, 사람 확인 필수) ── */
html[data-skin="ind"] .ind-act-card{ border:1px solid var(--border-color); padding:10px; margin:8px 0; font-family:var(--mono); font-size:11px; }
html[data-skin="ind"] .ind-act-h{ font-weight:600; color:var(--text-main); margin-bottom:4px; }
html[data-skin="ind"] .ind-act-lab{ color:var(--text-faint); margin:7px 0 2px; font-size:10.5px; }
html[data-skin="ind"] .ind-act-inp{
  width:100%; box-sizing:border-box; padding:5px 7px; border:1px solid var(--border-color);
  background:none; color:var(--text-main); font-family:var(--mono); font-size:11px; outline:none;
}
html[data-skin="ind"] .ind-act-bar{ display:flex; gap:6px; margin-top:9px; }
html[data-skin="ind"] .ind-act-run{
  flex:1; border:1px solid var(--text-main); background:var(--text-main); color:var(--bg-card);
  font-family:var(--mono); font-size:11px; padding:6px 0; cursor:pointer;
}
html[data-skin="ind"] .ind-act-cancel{
  border:1px solid var(--border-color); background:none; color:var(--text-secondary);
  font-family:var(--mono); font-size:11px; padding:6px 10px; cursor:pointer;
}

/* ── 데스크톱(셸 3분할): 플로팅 이지 fab/panel 숨김 — .ind-aside가 이지 본체(중복 제거).
   모바일(≤1280)은 aside가 없으므로 플로팅 이지 그대로 유지. 스킨 OFF 시 원상복구. ── */
@media (min-width:1281px){
  html[data-skin="ind"] #izi-fab,
  html[data-skin="ind"] #izi-panel{ display:none !important; }
}

/* ── 프로세스맵 에디터 필드 높이: 원본 calc(100vh-120px)이 dev배너·스킨푸터를 모름 →
   실측 오프셋(--ind-top=배너+헤더) + 서브내비50 + 여백7 + 푸터28 로 교정(데스크톱 셸에서만) ── */
@media (min-width:1281px){
  html[data-skin="ind"] #section-processmap [style*="height:calc(100vh - 120px)"]{
    height:calc(100vh - var(--ind-top,70px) - 85px) !important;
  }
}

/* ═══ 프리뷰 레이아웃 정합(대표 지시): 상단 상태 스트립 · 우측 현황요약 · 서브탭 액션바 ═══ */

/* 상단 상태 스트립 — 프리뷰 topbar 오마주 (데스크톱 셸에서만) */
html[data-skin="ind"] .ind-topstat{ display:none; }
@media (min-width:1281px){
  html[data-skin="ind"] .ind-topstat{
    display:flex; gap:18px; align-items:center; margin-left:auto; margin-right:16px;
    font-family:var(--mono); font-size:11px; color:var(--text-tertiary); white-space:nowrap;
  }
  html[data-skin="ind"] .ind-topstat b{ color:var(--text-main); font-weight:600; }
  html[data-skin="ind"] .ind-topstat b.ok{ color:var(--ok); }
  /* user-info-bar의 margin-left:auto와 공존: 스트립이 auto를 가져가고 유저바는 바로 뒤 */
  html[data-skin="ind"] #user-info-bar{ margin-left:0 !important; }
}

/* 우측 현황 요약·컴플라이언스 스윕 kv (프리뷰 .kv) */
html[data-skin="ind"] #ind-summary-kv .ind-kv,
html[data-skin="ind"] #ind-sweep-kv .ind-kv{
  display:flex; justify-content:space-between; align-items:baseline; gap:10px;
  font-family:var(--mono); font-size:11.5px; padding:5px 0;
  border-bottom:1px solid var(--border-color);
}
html[data-skin="ind"] #ind-summary-kv .ind-kv:last-child,
html[data-skin="ind"] #ind-sweep-kv .ind-kv:last-child{ border-bottom:none; }
html[data-skin="ind"] #ind-summary-kv .ind-kv span,
html[data-skin="ind"] #ind-sweep-kv .ind-kv span{ color:var(--text-tertiary); }
html[data-skin="ind"] #ind-summary-kv .ind-kv b,
html[data-skin="ind"] #ind-sweep-kv .ind-kv b{ color:var(--text-main); font-weight:600; }
/* 스윕 kv 세부 — 항목 라벨은 본문 고딕 12px(E .kv .k), 값 색은 심각도별. 행 hover=이동 가능 표시 */
html[data-skin="ind"] #ind-sweep-kv .ind-kv{ padding:6px 0; }
html[data-skin="ind"] #ind-sweep-kv .ind-kv span{
  font-family:var(--sans); font-size:12px; color:var(--text-secondary);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
html[data-skin="ind"] #ind-sweep-kv .ind-kv b{ flex:0 0 auto; }
html[data-skin="ind"] #ind-sweep-kv .ind-kv b.neg{ color:var(--danger); }
html[data-skin="ind"] #ind-sweep-kv .ind-kv b.mid{ color:var(--warn); }
html[data-skin="ind"] #ind-sweep-kv .ind-kv b.inf{ color:var(--info); }
html[data-skin="ind"] #ind-sweep-kv .ind-kv b.okv{ color:var(--ok); }
html[data-skin="ind"] #ind-sweep-kv .ind-sw-row:hover span{ color:var(--text-main); }

/* 서브탭 우측 액션 버튼 — 프리뷰 .act 언어(모노·헤어라인·pri=잉크 솔리드) */
html[data-skin="ind"] .sub-nav-bar .btn{
  height:28px !important; padding:0 12px !important; border-radius:0 !important;
  font-family:var(--mono) !important; font-size:11.5px !important; font-weight:500 !important;
  background:none !important; border:1px solid var(--border-color) !important;
  color:var(--text-secondary) !important; box-shadow:none !important;
}
html[data-skin="ind"] .sub-nav-bar .btn:hover{ background:var(--bg-subtle) !important; color:var(--text-main) !important; }
html[data-skin="ind"] .sub-nav-bar .btn-primary{
  background:var(--text-main) !important; color:var(--bg-card) !important; border-color:var(--text-main) !important;
}
html[data-skin="ind"] .sub-nav-bar .btn-primary:hover{ background:#000 !important; }

/* ── 중메뉴바(서브탭) 프리뷰 정합: 높이 50→40 · 패딩 40→24 · 배경 투명(종이 위) ── */
html[data-skin="ind"] .sub-nav-bar{
  height:40px !important; padding:0 24px !important;
  background:transparent !important; box-shadow:none !important;
}
html[data-skin="ind"] .sub-nav-bar .nav-item{ height:40px !important; padding:0 14px !important; }
html[data-skin="ind"] body.dark-mode .sub-nav-bar{ background:transparent !important; }

/* ── 헤더 하단선: 테넌트 브랜드색(inline --primary-color) 누출 차단 → 헤어라인 고정 ── */
html[data-skin="ind"] .main-header{ border-bottom:1px solid var(--border-color) !important; }
html[data-skin="ind"] body.dark-mode .main-header{ border-bottom:1px solid var(--border-color) !important; }

/* ── 요약 카드 값: 카드폭(≈153px 가용) 안에서 한 줄 유지 — 28px 모노는 성별(남/여 병기) 초과 → 22px+nowrap ── */
html[data-skin="ind"] .stat-value{
  font-size:22px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
html[data-skin="ind"] .stat-value input{ font-size:22px !important; }

/* ═══ 버튼 평탄화 — 클래스(.btn radius:8px)든 인라인이든 전부 각지게.
   입력류(input/select/textarea)는 styles.css '폼 컨트롤 단일 출처' 블록이 --input-radius
   토큰으로 통제하므로 여기선 뺀다(아래 ind 토큰 블록에서 --input-radius:0으로 재정의). ═══ */
html[data-skin="ind"] button,
html[data-skin="ind"] .btn{ border-radius:0 !important; }

/* ── 틸(구 브랜드 잔재 #0d9488 계열) → 산업 그린 ── */
html[data-skin="ind"] [style*="color:#0d9488"], html[data-skin="ind"] [style*="color: #0d9488"],
html[data-skin="ind"] [style*="color:#0f766e"], html[data-skin="ind"] [style*="color: #0f766e"],
html[data-skin="ind"] [style*="color:#115e59"], html[data-skin="ind"] [style*="color: #115e59"]{ color:var(--ok) !important; }
html[data-skin="ind"] [style*="border"][style*="#0d9488"],
html[data-skin="ind"] [style*="border"][style*="#99f6e4"]{ border-color:var(--ok) !important; }
html[data-skin="ind"] [style*="background:#99f6e4"], html[data-skin="ind"] [style*="background: #99f6e4"],
html[data-skin="ind"] [style*="background-color:#99f6e4"]{ background-color:var(--bg-success-soft) !important; }

/* ── 안전인증 대상 목록 행/배지 — 산업 정합 (파랑행·알약배지 → 헤어라인+상태태그 톤) ── */
html[data-skin="ind"] .sc-item-row{
  background:var(--bg-card); border:1px solid var(--border-color);
  color:var(--text-secondary); border-radius:0;
}
html[data-skin="ind"] .sc-item-row:hover{ background:rgba(28,27,23,.05); }
html[data-skin="ind"] .sc-count-badge{ font-family:var(--mono); font-weight:600 !important; border-radius:0 !important; }
html[data-skin="ind"] .sc-count-has{ background:var(--bg-success-soft) !important; color:var(--ok) !important; }
html[data-skin="ind"] .sc-count-none{ background:var(--bg-muted) !important; color:var(--text-faint) !important; }
html[data-skin="ind"] body.dark-mode .sc-item-row{
  background:var(--bg-card) !important; border-color:var(--border-color) !important; color:var(--text-secondary) !important;
}
html[data-skin="ind"] body.dark-mode .sc-item-row:hover{ background:var(--bg-muted) !important; }

/* ═══ "컨테이너 박스 안에 표" 표준(프리뷰) — 최상위 래퍼 카드 평탄화 ═══
   앱은 모든 뷰가 거대한 content-card 하나에 담김 → 이중 박스 유발.
   프리뷰처럼 래퍼는 종이 위 투명, 박스는 콘텐츠 단위(표 카드·지표 카드)에만. */
html[data-skin="ind"] .dashboard-container > .content-card{
  border:none; background:transparent;
}

/* ── background:white/#fff/#ffffff 키워드·축약 매핑 누락 보완 → 패널색
   (주의: "#fff"는 #fff1f2 등 틴트와 substring 충돌하므로 반드시 세미콜론 포함 형태만) ── */
html[data-skin="ind"] [style*="background:white"], html[data-skin="ind"] [style*="background: white"],
html[data-skin="ind"] [style*="background:#fff;"], html[data-skin="ind"] [style*="background: #fff;"],
html[data-skin="ind"] [style*="background:#ffffff"], html[data-skin="ind"] [style*="background: #ffffff"],
html[data-skin="ind"] [style*="background-color:white"], html[data-skin="ind"] [style*="background-color: white"],
html[data-skin="ind"] [style*="background-color:#fff;"], html[data-skin="ind"] [style*="background-color: #ffffff"]{
  background-color:var(--bg-card) !important;
}

/* ═══ 서브탭 = 서류철 색인(폴더) 탭 — 프리뷰 정본(전체메뉴) 정합 (2026-07-06 대표 확정)
   선택 탭이 본문 종이와 한 몸으로 붙는다: 탭줄 하단 헤어라인을 선택 탭이 -1px로 덮음.
   app.js activateSubNavBtn이 인라인(color·fontWeight·borderBottom 3px)을 박으므로 !important 필수. ═══ */
html[data-skin="ind"] .sub-nav-bar{
  height:auto !important; min-height:44px;
  padding:8px 24px 0 !important;
  border-bottom:1px solid var(--border-color) !important;
}
html[data-skin="ind"] .sub-nav-container{ align-items:flex-end !important; }
/* 그룹 컨테이너(#sub-nav-*)의 인라인 gap:10px/20px 무력화 — 폴더 탭은 서로 붙는다
   (우측 액션 영역(margin-left:auto div)은 제외 — 버튼 간격 유지) */
html[data-skin="ind"] .sub-nav-container > div[id^="sub-nav-"]{ gap:0 !important; align-items:flex-end !important; }
html[data-skin="ind"] .sub-nav-bar .nav-item{
  height:30px !important; padding:0 14px !important;
  display:flex; align-items:center;
  border:1px solid var(--border-color) !important;
  border-bottom:none !important;
  background:var(--bg-muted) !important;
  color:var(--text-tertiary) !important; font-weight:500 !important;
  margin-right:-1px; position:relative;
}
html[data-skin="ind"] .sub-nav-bar .nav-item:hover{
  color:var(--text-main) !important; background:var(--bg-subtle) !important;
}
html[data-skin="ind"] .sub-nav-bar .nav-item.active{
  height:36px !important;
  background:var(--secondary-color) !important;   /* 본문 종이색 = 한 몸 */
  color:var(--text-main) !important; font-weight:600 !important;
  box-shadow:inset 0 2px 0 var(--text-main) !important;   /* 상단 잉크 라인 */
  margin-bottom:-1px; z-index:2;
}
html[data-skin="ind"] .sub-nav-bar .nav-item.active::after{ display:none !important; }

/* ── 버튼 변형 산업 톤(2026-07-06 디자인 정리) — styles.css 버튼 단일 정의의 스킨판.
   기본(.btn/.btn-primary 등)은 기존 일반 평탄화·잉크 규칙이 처리, 여기는 신설 변형만. ── */
html[data-skin="ind"] .btn-success{ background:var(--ok) !important; color:#f6f4ee !important; }
html[data-skin="ind"] .btn-success:hover{ background:#2f5f3b !important; }
html[data-skin="ind"] .btn-info{ background:var(--info) !important; color:#f6f4ee !important; }
html[data-skin="ind"] .btn-info:hover{ background:#254a85 !important; }
html[data-skin="ind"] .btn-soft-danger{ background:var(--bg-danger-soft) !important; color:var(--danger) !important; border:1px solid var(--danger) !important; }
html[data-skin="ind"] .btn-soft-info{ background:var(--bg-info-soft) !important; color:var(--info) !important; border:1px solid var(--info) !important; }
html[data-skin="ind"] .btn-ghost{ background:none !important; color:var(--text-secondary) !important; border:1px solid var(--border-color) !important; }
html[data-skin="ind"] .btn-ghost:hover{ background:var(--bg-subtle) !important; color:var(--text-main) !important; }
html[data-skin="ind"] .btn-warn{ background:var(--warn) !important; color:#f6f4ee !important; }
html[data-skin="ind"] .btn-warn:hover{ background:#8f5812 !important; }
html[data-skin="ind"] .btn-soft-warn{ background:var(--bg-warn-soft) !important; color:var(--warn) !important; border:1px solid var(--warn) !important; }

/* ── 브랜드 마커 — 헤더 회사명 왼쪽 4px 세로 바 (2026-07-06 대표 확정)
   테넌트 브랜드색의 앱 내 유일한 노출 지점. --brand-ink = applyTenantTheme가
   저채도 보정(muteBrandColor)해 세팅. 미설정 회사는 잉크 폴백(중립). ── */
html[data-skin="ind"] #header-title{ display:inline-flex; align-items:center; gap:9px; }
html[data-skin="ind"] #header-title::before{
  content:''; width:4px; height:16px; flex:0 0 4px;
  background:var(--brand-ink, var(--text-main));
}

/* ── 가운데 제목바 중복 제거 — 메인 헤더 제목(#personnel-list-title)은
   폴더탭(현재 메뉴) + 본문 모듈 제목과 3중 중복이라 숨김. 헤더는 검색창·저장버튼이
   보일 때만 툴바로 남고, 컨트롤이 없는 화면(위험성평가 등)에선 통째로 접힘.
   콘텐츠 카드의 일반 .card-title(보유 현황 요약 등)은 진짜 제목이므로 유지. ── */
html[data-skin="ind"] #personnel-list-title{ display:none !important; }
html[data-skin="ind"] .card-header:has(> #personnel-list-title){
  padding:0 24px !important; border-bottom:none !important;
  background:transparent !important; min-height:0 !important;
}
html[data-skin="ind"] .card-header:has(> #personnel-list-title):has(.search-input-group:not([style*="none"])){
  padding-top:10px !important; padding-bottom:10px !important;
}

/* ── 내부(2단계) 탭 — 서류철 색인 탭 축소판. 상위(30/36px)보다 작게(28/34px) 위계.
   대상: hp-inner-tab(건강증진) hc-checkup-tab(검진) hc-counseling-tab(상담)
        sc-inner-tab(안전인증) env-subtab(작업환경) ir-tab-btn(사내규정) sub-tab(화학)
        apt-vtab(선해임 현황/이력/체계도) apv-tab(결재함/상신함/완료함)
        — 두 계열은 모듈 JS가 active 클래스를 토글(2026-07-06 추가)
   제외: ra-tab(렌더되지 않는 죽은 코드), team-tab·law-side-tab(필터/사이드)
   각 모듈 JS가 인라인(color·fontWeight·borderBottom·background)을 박으므로 !important 필수. ── */
html[data-skin="ind"] #apv-tabs{
  gap:0 !important; align-items:flex-end !important; padding-top:6px;
  border-bottom:1px solid var(--border-color) !important;   /* 래퍼에 경계선 없음 → 부여 */
}
html[data-skin="ind"] div:has(> .apt-vtab),
html[data-skin="ind"] div:has(> .hp-inner-tab),
html[data-skin="ind"] div:has(> .hc-checkup-tab),
html[data-skin="ind"] div:has(> .hc-counseling-tab),
html[data-skin="ind"] div:has(> .sc-inner-tab),
html[data-skin="ind"] div:has(> .env-subtab),
html[data-skin="ind"] div:has(> .sub-tab),
html[data-skin="ind"] #ir-tab-bar{
  gap:0 !important; align-items:flex-end !important; padding-top:6px;
  border-bottom-width:1px !important;   /* env 2px → 1px (탭 -1px가 정확히 덮게) */
}
html[data-skin="ind"] .hp-inner-tab,
html[data-skin="ind"] .hc-checkup-tab,
html[data-skin="ind"] .hc-counseling-tab,
html[data-skin="ind"] .sc-inner-tab,
html[data-skin="ind"] .env-subtab,
html[data-skin="ind"] .ir-tab-btn,
html[data-skin="ind"] .apt-vtab,
html[data-skin="ind"] .apv-tab,
html[data-skin="ind"] .sub-tab{
  height:28px !important; padding:0 13px !important;
  display:inline-flex !important; align-items:center !important;
  border:1px solid var(--border-color) !important; border-bottom:none !important;
  background:var(--bg-muted) !important;
  color:var(--text-tertiary) !important; font-weight:500 !important; font-size:12.5px !important;
  margin:0 -1px 0 0 !important; position:relative; border-radius:0 !important;
  transition:none !important;
}
html[data-skin="ind"] .hp-inner-tab:hover,
html[data-skin="ind"] .hc-checkup-tab:hover,
html[data-skin="ind"] .hc-counseling-tab:hover,
html[data-skin="ind"] .sc-inner-tab:hover,
html[data-skin="ind"] .env-subtab:hover,
html[data-skin="ind"] .ir-tab-btn:hover,
html[data-skin="ind"] .apt-vtab:hover,
html[data-skin="ind"] .apv-tab:hover,
html[data-skin="ind"] .sub-tab:hover{
  color:var(--text-main) !important; background:var(--bg-subtle) !important;
}
html[data-skin="ind"] .hp-inner-tab.active,
html[data-skin="ind"] .hc-checkup-tab.active,
html[data-skin="ind"] .hc-counseling-tab.active,
html[data-skin="ind"] .sc-inner-tab.active,
html[data-skin="ind"] .env-subtab.active,
html[data-skin="ind"] .ir-tab-btn.active,
html[data-skin="ind"] .apt-vtab.active,
html[data-skin="ind"] .apv-tab.active,
html[data-skin="ind"] .sub-tab.active{
  height:34px !important;
  background:var(--bg-card) !important;   /* 카드 패널색 = 아래 본문과 한 몸 */
  color:var(--text-main) !important; font-weight:600 !important;
  box-shadow:inset 0 2px 0 var(--text-main) !important;
  margin-bottom:-1px !important; z-index:2;
}

/* ═══════════════════════════════════════════════════════════════════════════
   내비 개편 프로토타입 — 중메뉴 → 사이드바 아코디언 (2026-07-19, 대표 검토용)
   토글: 콘솔 setNavMode('side') / setNavMode('top') + 새로고침 (localStorage ezsafety:navmode)
   구조: 상단 서브내비 밴드 숨김(교육 3단 #edu-l3-bar는 유지) + 기존 모바일 아코디언
   (.m-accordion, 대메뉴 바로 뒤 형제)을 데스크톱 사이드바에서 활성 대메뉴 아래에 표시.
   active 동기화는 기존 app.js activateSubNavBtn이 양쪽 버튼을 같이 갱신하므로 무수정 —
   단 그 함수가 넣는 인라인 밑줄 스타일(borderBottom)은 세로 목록에 안 맞아 !important로 무력화.
   ═══════════════════════════════════════════════════════════════════════════ */
@media (min-width:1281px){
  html[data-skin="ind"].ind-nav-side .sub-nav-bar:not(#edu-l3-bar){ display:none !important; }
  /* 활성 대메뉴의 하위만 펼침 (비활성 그룹은 숨김 유지) */
  html[data-skin="ind"].ind-nav-side .top-nav .m-accordion{ display:none; background:none; border:none; padding:0; max-height:none; overflow:visible; }
  html[data-skin="ind"].ind-nav-side .top-nav .nav-main.active + .m-accordion{ display:block; }
  /* 하위 항목 행 — 들여쓰기 세로 목록, 인라인 언더라인 무력화 */
  html[data-skin="ind"].ind-nav-side .top-nav .m-accordion .sub-nav-btn{
    display:flex; align-items:center; height:29px; padding:0 18px 0 34px;
    font-size:12px; font-weight:500 !important; color:var(--text-tertiary) !important;
    border-bottom:none !important; border-left:2px solid transparent;
    cursor:pointer; white-space:nowrap;
  }
  html[data-skin="ind"].ind-nav-side .top-nav .m-accordion .sub-nav-btn:hover{
    background:var(--bg-subtle); color:var(--text-main) !important;
  }
  html[data-skin="ind"].ind-nav-side .top-nav .m-accordion .sub-nav-btn.active{
    color:var(--text-main) !important; font-weight:600 !important;
    border-left-color:var(--text-main); background:var(--bg-muted);
  }
  /* 밴드 소멸분(50px) 세로 보정 — 프로세스맵 높이 계산 */
  html[data-skin="ind"].ind-nav-side #section-processmap [style*="height:calc(100vh - 120px)"]{
    height:calc(100vh - var(--ind-top,70px) - 35px) !important;
  }
}

/* ── side 모드 보강: 현재 메뉴 제목 복원 — 상단 밴드가 사라져 3중 중복 논리가 해소됐으므로
   카드 헤더의 제목(#personnel-list-title, app.js가 뷰 전환 시 자동 갱신)을 다시 표시. ── */
@media (min-width:1281px){
  html[data-skin="ind"].ind-nav-side #personnel-list-title{
    display:block !important;
    font-size:15px; font-weight:700; color:var(--text-main); letter-spacing:-.2px;
    padding-left:11px; border-left:3px solid var(--text-main);   /* 브랜드 마커 문법 계승 */
    white-space:nowrap;
  }
  /* 제목이 돌아왔으니 헤더 줄에 최소 높이·간격 복원(컨트롤 없는 화면에서도 제목 줄 유지) */
  html[data-skin="ind"].ind-nav-side .card-header:has(> #personnel-list-title){
    padding-top:12px !important; padding-bottom:6px !important;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   E-홈 정합 (2026-07-19, 대표 지시) — 정본: docs/redesign-previews/v2/e-industrial-evolved.html
   홈 대시보드(#view-home)와 우측 이지 패널·푸터·내비 뱃지를 E 문법으로.
   수치·간격·타이포는 정본 그대로(색은 스킨 토큰으로 치환 — 하드코딩 금지 원칙).
   ═══════════════════════════════════════════════════════════════════════════ */
/* 정본 --line-soft(연한 헤어라인)만 스킨에 없어 지역 변수로 정의 */
html[data-skin="ind"] #view-home{ --ih-line-soft:rgba(28,27,23,.08); }
html[data-skin="ind"] body.dark-mode #view-home{ --ih-line-soft:rgba(233,231,223,.08); }

/* ── 스테이지(정본 main.stage: 28px 32px 40px) ── */
html[data-skin="ind"] #view-home .ih-stage{ padding:28px 32px 40px; }

/* ── 인사말 줄 (정본 .greet-row/.greet/.greet-meta) ── */
html[data-skin="ind"] #view-home .ih-greet-row{
  display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:6px;
}
html[data-skin="ind"] #view-home .ih-greet h1{
  margin:0; font-size:23px; font-weight:800; letter-spacing:-.02em; line-height:1.25; color:var(--text-main);
}
html[data-skin="ind"] #view-home .ih-greet .sub{ margin-top:5px; font-size:13px; color:var(--text-secondary); }
html[data-skin="ind"] #view-home .ih-greet .sub b{ color:var(--text-main); font-weight:700; }
html[data-skin="ind"] #view-home .ih-greet-meta{
  font-family:var(--mono); font-size:10.5px; color:var(--text-faint); text-align:right;
  letter-spacing:.05em; line-height:1.9; white-space:nowrap;
}
html[data-skin="ind"] #view-home .ih-greet-meta b{ color:var(--text-secondary); font-weight:600; }

/* ── 긴급 카드 (정본 .alerts/.alert) — 좌측 굵은 상태색 바 + 태그 + 우측 큰 건수 + → ── */
html[data-skin="ind"] #view-home .ih-alerts{
  display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:18px;
}
html[data-skin="ind"] #view-home .ih-alert{
  display:flex; align-items:center; gap:14px; padding:14px 16px;
  background:var(--bg-card); border:1px solid var(--border-color); border-left:4px solid var(--danger);
  cursor:pointer;
}
html[data-skin="ind"] #view-home .ih-alert:hover{ background:var(--hover, var(--bg-subtle)); }   /* 패널 층위 통일로 bg-subtle==카드색이 되어 hover 효과가 죽던 것 수리 */
html[data-skin="ind"] #view-home .ih-alert.warn{ border-left-color:var(--warn); }
html[data-skin="ind"] #view-home .ih-alert .badge{
  flex:0 0 auto; font-family:var(--mono); font-size:9.5px; font-weight:700; letter-spacing:.08em;
  color:var(--danger); background:var(--bg-danger-soft); padding:3px 7px;
}
html[data-skin="ind"] #view-home .ih-alert.warn .badge{ color:var(--warn); background:var(--bg-warn-soft); }
html[data-skin="ind"] #view-home .ih-alert .atxt{ min-width:0; }
html[data-skin="ind"] #view-home .ih-alert .atxt .t{ font-size:13.5px; font-weight:700; color:var(--text-main); }
html[data-skin="ind"] #view-home .ih-alert .atxt .d{
  font-size:12px; color:var(--text-secondary); margin-top:2px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
html[data-skin="ind"] #view-home .ih-alert .anum{
  margin-left:auto; font-family:var(--mono); font-size:24px; font-weight:600; letter-spacing:-.02em; color:var(--text-main);
}
html[data-skin="ind"] #view-home .ih-alert .anum small{ font-size:12px; color:var(--text-secondary); font-weight:400; margin-left:2px; }
html[data-skin="ind"] #view-home .ih-alert .go{ font-family:var(--mono); color:var(--text-faint); font-size:13px; }

/* ── 섹션 머리 (정본 .sec/.sec-head): 모노 인덱스(A/B) + 제목 + 헤어라인 + 우측 메타 ── */
html[data-skin="ind"] #view-home .ih-sec{ margin-top:28px; }
html[data-skin="ind"] #view-home .ih-sec-head{ display:flex; align-items:baseline; gap:10px; margin-bottom:12px; }
html[data-skin="ind"] #view-home .ih-sec-head .idx{
  font-family:var(--mono); font-size:10px; color:var(--text-faint); letter-spacing:.08em;
}
html[data-skin="ind"] #view-home .ih-sec-head h2{
  margin:0; font-size:13px; font-weight:800; letter-spacing:.01em; color:var(--text-main);
}
html[data-skin="ind"] #view-home .ih-sec-head .rule{ flex:1; height:1px; background:var(--border-color); align-self:center; }
html[data-skin="ind"] #view-home .ih-sec-head .more{
  font-family:var(--mono); font-size:10.5px; color:var(--text-secondary); text-decoration:none; letter-spacing:.03em;
}
html[data-skin="ind"] #view-home .ih-sec-head .more:hover{ color:var(--text-main); text-decoration:underline; }

/* ── 통계 카드 4 (정본 .metrics/.metric): 라벨+영문 모노 메타+큰 모노 수치+분해 메타+진행 바 ── */
html[data-skin="ind"] #view-home .ih-metrics{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
html[data-skin="ind"] #view-home .ih-metric{ background:var(--bg-card); border:1px solid var(--border-color); padding:16px 18px 18px; }
html[data-skin="ind"] #view-home .ih-metric .k{
  display:flex; justify-content:space-between; align-items:baseline;
  font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; color:var(--text-secondary);
}
html[data-skin="ind"] #view-home .ih-metric .k .u{ color:var(--text-faint); letter-spacing:.02em; }
html[data-skin="ind"] #view-home .ih-metric .v{
  font-family:var(--mono); font-size:34px; font-weight:600; letter-spacing:-.03em; margin-top:10px; line-height:1; color:var(--text-main);
}
html[data-skin="ind"] #view-home .ih-metric .v small{ font-size:15px; color:var(--text-secondary); font-weight:400; letter-spacing:0; }
html[data-skin="ind"] #view-home .ih-metric .s{
  margin-top:9px; font-size:11.5px; color:var(--text-secondary); display:flex; align-items:center; gap:6px;
}
html[data-skin="ind"] #view-home .ih-metric .s .mono{ font-family:var(--mono); }
html[data-skin="ind"] #view-home .ih-metric .gauge{ margin-top:11px; height:4px; background:var(--bg-muted); }
html[data-skin="ind"] #view-home .ih-metric .gauge i{ display:block; height:100%; background:var(--text-main); }
html[data-skin="ind"] #view-home .ih-metric .gauge.g-warn i{ background:var(--warn); }
html[data-skin="ind"] #view-home .ih-metric .gauge.g-ok i{ background:var(--ok); }
html[data-skin="ind"] #view-home .ih-metric .gauge.g-danger i{ background:var(--danger); }

/* ── B 최근 안전점검 표 (정본 .table-wrap/table) — 긴급 행은 좌측 바 + 제목 위험색 ── */
html[data-skin="ind"] #view-home .ih-table-wrap{
  border:1px solid var(--border-color); background:var(--bg-card); overflow-x:auto;
}
html[data-skin="ind"] #view-home .ih-table{ width:100%; border-collapse:collapse; }
html[data-skin="ind"] #view-home .ih-table thead th{
  font-family:var(--mono); font-size:10px; font-weight:600; letter-spacing:.1em; color:var(--text-faint);
  text-align:left; padding:10px 14px; border-bottom:1px solid var(--border-strong);
  background:var(--bg-muted); white-space:nowrap;
}
html[data-skin="ind"] #view-home .ih-table tbody td{
  padding:12px 14px; border-bottom:1px solid var(--ih-line-soft, var(--border-color));
  font-size:13px; vertical-align:middle; white-space:nowrap; color:var(--text-main);
}
html[data-skin="ind"] #view-home .ih-table tbody tr:last-child td{ border-bottom:none; }
html[data-skin="ind"] #view-home .ih-table td.c-date{ font-family:var(--mono); font-size:11.5px; color:var(--text-secondary); }
html[data-skin="ind"] #view-home .ih-table td.c-no{ font-family:var(--mono); font-size:10.5px; color:var(--text-faint); }
html[data-skin="ind"] #view-home .ih-table td.c-item{ font-weight:600; }
html[data-skin="ind"] #view-home .ih-table td.c-dept{ color:var(--text-secondary); font-size:12.5px; }
html[data-skin="ind"] #view-home .ih-table tr.r-danger td:first-child{ box-shadow:inset 3px 0 0 var(--danger); }
html[data-skin="ind"] #view-home .ih-table tr.r-danger td.c-item{ color:var(--danger); }
html[data-skin="ind"] #view-home .ih-table td.ih-empty{
  text-align:center; color:var(--text-faint); font-size:12.5px; padding:22px 14px;
}

/* ── E-홈 축소 대응 (정본 900px 문법) ── */
@media (max-width:900px){
  html[data-skin="ind"] #view-home .ih-stage{ padding:20px 16px 32px; }
  html[data-skin="ind"] #view-home .ih-greet-meta{ display:none; }
  html[data-skin="ind"] #view-home .ih-alerts{ grid-template-columns:1fr; }
  html[data-skin="ind"] #view-home .ih-metrics{ grid-template-columns:1fr 1fr; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   E-전체명단 (인원/조직 · 전체 명단) — 정본: docs/redesign-previews/v2/e-전체명단.html
   서브탭 카운트 · 페이지머리(제목+기준일 서브라인) · 통계 스트립 4(모노 메타+게이지) ·
   NO 모노 3자리 · 구분 status-tag. 마크업은 personnel.js가 #view-all-members에
   ind 전용으로 주입(운영/classic 렌더 불변). 여기선 스킨 문법만 담당(ind 스코프).
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── 서브탭 카운트 뱃지 (정본 .subtab .n — 모노 소형). personnel.js가 data-count 주입 ── */
html[data-skin="ind"] .sub-nav-bar .nav-item[data-count]::after{
  content:attr(data-count);
  font-family:var(--mono); font-size:9.5px; font-weight:600; letter-spacing:.02em;
  color:var(--text-faint); margin-left:7px; align-self:center;
}
html[data-skin="ind"] .sub-nav-bar .nav-item.active[data-count]::after{ color:var(--text-tertiary); }
/* 좌측 내비 모바일 아코디언 클론에도 동일 카운트(밴드+아코디언 양쪽) */
html[data-skin="ind"] .top-nav .m-accordion .sub-nav-btn[data-count]::after{
  content:attr(data-count); font-family:var(--mono); font-size:10px; font-weight:600;
  color:var(--text-faint); margin-left:7px;
}

/* ── 인원/조직 통계 요약: classic 4카드(.stat-card)만 숨기고, E 스트립을 .summary-grid 안에 주입.
   .summary-grid 컨테이너 자체는 app.js가 active/retired/leave/dept에서만 display:grid로 켠다(그 외 none).
   → E 스트립이 그 스코프를 그대로 물려받아 dept(인원 현황) 뷰에서도 기준일·통계가 유지된다.
   원본 #base-date(4번째 카드 안)는 숨겨진 채 DOM에 남아 값 판독 가능(리버서블·기능 유지). */
html[data-skin="ind"] main.dashboard-container > .summary-grid > .stat-card{ display:none !important; }
/* 주입 래퍼는 그리드 전 폭 차지(원 카드가 숨어도 레이아웃 붕괴 없음) */
html[data-skin="ind"] main.dashboard-container > .summary-grid > .ind-ros-wrap{ grid-column:1 / -1; }

/* ── 페이지 머리: 제목 + 기준일/조직단계 서브라인 (정본 .page-head) ── */
html[data-skin="ind"] .ind-ros-head{
  display:flex; align-items:flex-end; justify-content:space-between; gap:16px;
  margin:2px 0 18px;
}
html[data-skin="ind"] .ind-ros-head h1{
  margin:0; font-size:20px; font-weight:800; letter-spacing:-.02em; line-height:1.25; color:var(--text-main);
}
html[data-skin="ind"] .ind-ros-head .sub{
  margin-top:5px; font-size:12.5px; color:var(--text-secondary); display:flex; align-items:center;
  flex-wrap:wrap; gap:8px; row-gap:4px;
}
html[data-skin="ind"] .ind-ros-head .sub .ros-basis{
  display:inline-flex; align-items:center; gap:7px;
  font-family:var(--mono); font-size:11px; color:var(--text-tertiary); letter-spacing:.02em;
}
/* 서브라인 기준일 프록시 입력 — 종이 위 모노 미니 컨트롤(라디우스 0은 전역 규칙) */
html[data-skin="ind"] .ind-ros-head .sub .ros-date{
  font-family:var(--mono); font-size:11.5px; font-weight:600;
  color:var(--text-main); background:transparent;
  border:1px solid var(--border-color); padding:1px 5px; height:22px;
  width:auto; line-height:1;
}
html[data-skin="ind"] .ind-ros-head .sub .ros-note{ color:var(--text-tertiary); }

/* ── 통계 스트립 4 (정본 .metrics/.metric): 모노 메타 + 큰 모노 수치 + 분해 메타 + 게이지 ── */
html[data-skin="ind"] .ind-ros-metrics{
  display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:20px;
}
html[data-skin="ind"] .ind-ros-metric{ background:var(--bg-card); border:1px solid var(--border-color); padding:14px 16px 16px; }
html[data-skin="ind"] .ind-ros-metric .k{
  display:flex; justify-content:space-between; align-items:baseline; gap:8px;
  font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; color:var(--text-secondary);
}
html[data-skin="ind"] .ind-ros-metric .k .u{ color:var(--text-faint); letter-spacing:.02em; white-space:nowrap; }
html[data-skin="ind"] .ind-ros-metric .v{
  font-family:var(--mono); font-size:30px; font-weight:600; letter-spacing:-.03em; margin-top:9px; line-height:1; color:var(--text-main);
}
html[data-skin="ind"] .ind-ros-metric .v small{ font-size:14px; color:var(--text-secondary); font-weight:400; letter-spacing:0; }
html[data-skin="ind"] .ind-ros-metric .s{
  margin-top:8px; font-size:11.5px; color:var(--text-secondary); min-height:1.4em;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
html[data-skin="ind"] .ind-ros-metric .gauge{ margin-top:10px; height:4px; background:var(--bg-muted); display:block; }
html[data-skin="ind"] .ind-ros-metric .gauge i{ display:block; height:100%; background:var(--text-main); }
html[data-skin="ind"] .ind-ros-metric .gauge.g-ok i{ background:var(--ok); }
html[data-skin="ind"] .ind-ros-metric .gauge.g-split{ display:flex; }
html[data-skin="ind"] .ind-ros-metric .gauge.g-split i{ background:var(--text-main); }
html[data-skin="ind"] .ind-ros-metric .gauge.g-split i+i{ background:var(--text-faint); }

/* ── 표: NO 컬럼 모노 3자리(001…) ── */
html[data-skin="ind"] #personnel-table tbody td.c-no{
  font-family:var(--mono); font-size:10.5px; color:var(--text-faint); letter-spacing:.03em;
}
/* ── 역할(안전보건) 태그 — 상태가 아닌 '직책'은 잉크 헤어라인으로(정본 .role-tag, 색은 상태에만) ── */
html[data-skin="ind"] #personnel-table .role-tag{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--mono); font-size:10px; font-weight:600; letter-spacing:.03em;
  padding:3px 8px; border:1px solid var(--border-strong); color:var(--text-main);
  background:var(--secondary-color); white-space:nowrap;
}
html[data-skin="ind"] #personnel-table .role-tag .ico{ width:6px; height:6px; flex:0 0 6px; background:var(--text-main); }

/* ── E-전체명단 축소 대응(정본 900px 문법) ── */
@media (max-width:900px){
  html[data-skin="ind"] .ind-ros-metrics{ grid-template-columns:1fr 1fr; }
  html[data-skin="ind"] .ind-ros-head{ flex-direction:column; align-items:flex-start; }
}
/* 모바일(≤1280px)에선 카드헤더 제목(#personnel-list-title)이 다시 노출되므로
   주입한 페이지 제목 h1은 숨겨 제목 중복 방지(서브라인·기준일은 유지). 데스크톱은 폴더탭+h1 = 정본. */
@media (max-width:1280px){
  html[data-skin="ind"] .ind-ros-head h1{ display:none; }
}

/* ── 우측 이지 패널: 인원·선임 현황 kv (정본 e-전체명단 .izi-kv "인원 · 선임 현황") ──
   shell.js가 #ind-apt 패널을 주입(인원/조직 메뉴 활성 시만 노출). 스윕 kv 문법 계승. */
html[data-skin="ind"] #ind-apt{ padding:14px 16px; }
html[data-skin="ind"] #ind-apt .ind-ph{ margin-bottom:8px; letter-spacing:.12em; }
html[data-skin="ind"] #ind-apt-kv .ind-kv{
  display:flex; justify-content:space-between; align-items:center; gap:10px;
  padding:6px 0; border-bottom:1px solid var(--border-color); font-size:12px;
}
html[data-skin="ind"] #ind-apt-kv .ind-kv:last-child{ border-bottom:none; }
html[data-skin="ind"] #ind-apt-kv .ind-kv span{ font-family:var(--sans); color:var(--text-secondary); }
html[data-skin="ind"] #ind-apt-kv .ind-kv b{ font-family:var(--mono); font-size:11.5px; font-weight:600; color:var(--text-main); flex:0 0 auto; }
html[data-skin="ind"] #ind-apt-kv .ind-kv b.pos{ color:var(--ok); }
html[data-skin="ind"] #ind-apt-kv .ind-kv b.mid{ color:var(--warn); }
html[data-skin="ind"] #ind-apt-kv .ind-kv b.neg{ color:var(--danger); }

/* ── 우측 이지 패널 E-구성: 이지 헤드(아바타·AI SAFETY ASSISTANT·ONLINE) ── */
html[data-skin="ind"] .ind-izi-head{
  display:flex; align-items:center; gap:10px; padding:16px 16px 14px;
  border-bottom:1px solid var(--border-color); flex:0 0 auto;
}
html[data-skin="ind"] .ind-izi-avatar{
  width:34px; height:34px; flex:0 0 34px; border-radius:50%; background:var(--text-main);
  display:flex; align-items:center; justify-content:center; overflow:hidden;
}
html[data-skin="ind"] .ind-izi-avatar img{ width:100%; height:100%; object-fit:cover; border-radius:50%; display:block; }
html[data-skin="ind"] .ind-izi-who{ display:flex; flex-direction:column; min-width:0; }
html[data-skin="ind"] .ind-izi-who .nm{ font-size:13px; font-weight:800; color:var(--text-main); line-height:1.2; }
html[data-skin="ind"] .ind-izi-who .rl{
  font-family:var(--mono); font-size:9.5px; color:var(--text-faint); letter-spacing:.08em; margin-top:1px;
}
html[data-skin="ind"] .ind-izi-live{
  margin-left:auto; display:flex; align-items:center; gap:5px;
  font-family:var(--mono); font-size:9.5px; color:var(--ok); letter-spacing:.06em;
}
html[data-skin="ind"] .ind-izi-live i{ width:6px; height:6px; border-radius:50%; background:var(--ok); }

/* ── TODAY BRIEFING 버블 (정본 .izi-bubble) ── */
html[data-skin="ind"] .ind-izi-bubble{
  background:var(--secondary-color); border:1px solid var(--border-color); padding:12px 13px;
  font-size:12.5px; line-height:1.65; color:var(--text-main); word-break:keep-all;
}
html[data-skin="ind"] .ind-izi-bubble .act-link{
  display:inline-block; margin-top:9px; font-family:var(--mono); font-size:10.5px;
  color:var(--text-main); border:1px solid var(--border-strong); padding:4px 9px;
  text-decoration:none; letter-spacing:.02em; cursor:pointer;
}
html[data-skin="ind"] .ind-izi-bubble .act-link:hover{ background:var(--text-main); color:var(--bg-card); }

/* ── 하단 "이지에게 물어보기" 입력줄 (정본 .izi-input) ── */
html[data-skin="ind"] .ind-ask{ margin-top:auto; padding:14px 16px 16px; flex:0 0 auto; }
html[data-skin="ind"] .ind-ask .row{
  display:flex; align-items:center; gap:8px;
  border:1px solid var(--border-strong); background:var(--secondary-color); padding:0 4px 0 12px; height:38px;
}
html[data-skin="ind"] .ind-ask input{
  flex:1; min-width:0; border:none; background:none; outline:none;
  color:var(--text-main); font-family:var(--sans); font-size:12.5px;
}
html[data-skin="ind"] .ind-ask input::placeholder{ color:var(--text-faint); }
html[data-skin="ind"] .ind-ask button{
  height:28px; padding:0 12px; border:none; background:var(--text-main); color:var(--bg-card);
  font-family:var(--mono); font-size:11px; cursor:pointer; flex:0 0 auto;
}
html[data-skin="ind"] .ind-ask .hint{
  font-family:var(--mono); font-size:9.5px; color:var(--text-faint); margin-top:8px; letter-spacing:.03em;
}

/* ── 좌측 내비 카운트 뱃지 (정본 .nitem .cnt — 모노·위험색) ── */
html[data-skin="ind"] .nav-main .ind-ncnt{
  font-family:var(--mono); font-size:10px; font-weight:700; color:var(--danger); margin-left:6px;
}
@media (min-width:1281px){
  html[data-skin="ind"] .top-nav .nav-main .ind-ncnt{ margin-left:auto; padding-left:8px; }
}

/* ── 헤더 사용자: 이름 아래 역할 모노 라벨 (정본 .top-user .urole)
   버튼 내부가 [이름 span][▾ 텍스트노드]라 그리드로 2행 배치(이름/라벨 좌, ▾ 우 — 재부모화 없이) ── */
@media (min-width:1281px){
  html[data-skin="ind"] #admin-dropdown-btn{
    display:grid !important; grid-template-columns:auto auto; column-gap:6px;
    align-items:center; justify-items:start; text-align:left; line-height:1.25;
  }
  html[data-skin="ind"] #admin-dropdown-btn #user-name-display{ grid-row:1; grid-column:1; font-weight:600; }
  html[data-skin="ind"] #admin-dropdown-btn .ind-urole{
    grid-row:2; grid-column:1; font-family:var(--mono); font-size:9px;
    letter-spacing:.07em; color:var(--text-faint);
  }
}

/* ── E 패널 간격 미세 정합: TODAY BRIEFING(16px·라벨 9px), 스윕(14px 16px·라벨 8px) ── */
html[data-skin="ind"] #ind-brief{ padding:16px; }
html[data-skin="ind"] #ind-brief .ind-ph{ margin-bottom:9px; letter-spacing:.12em; }
html[data-skin="ind"] #ind-sweep{ padding:14px 16px; }
html[data-skin="ind"] #ind-sweep .ind-ph{ margin-bottom:8px; letter-spacing:.12em; }

/* 역할 라벨은 데스크톱 셸 전용 — 모바일 인라인 헤더에선 숨김 */
@media (max-width:1280px){
  html[data-skin="ind"] .ind-urole{ display:none; }
}

/* ── E-홈 보정: 온보딩 카드 스킨 문법 정렬(그림자·radius 인라인 무력화 — 검증 L1) ── */
html[data-skin="ind"] #view-home .ih-onboard-card{
  border-radius:0 !important; box-shadow:none !important;
}

/* ═══════════════════════════════════════════════════════════════════════════
   E-전역 상향 (2026-07-19) — 정본: docs/redesign-previews/v2/e-industrial-evolved.html
   표 전역 가독 + 섹션 라벨 문법 일반화. (상태색·패널 층위·status-tag 상향은 각 원 규칙에서 수정)
   ═══════════════════════════════════════════════════════════════════════════ */
/* 표: 숫자 자리 맞춤(tabular-nums) — 모노가 아닌 셀의 숫자도 세로 정렬 */
html[data-skin="ind"] table{ font-variant-numeric:tabular-nums; }
/* thead 배경 층위 — 패널(#f4f2ea) 한 단 아래(--bg-muted #e6e2d6, E .table thead 문법).
   모노 11px 타이포는 기존 "표 헤더 모노 일반화" 규칙이 담당(여기선 배경만).
   주력 래퍼(.table-wrapper/.data-table) 셀렉터 병기 — styles.css의 동특이성 규칙(1811)을
   로드 순서로 이기게(안 하면 특이성 0,2,2에 밀려 주력 표만 층위 미적용되는 2원화 발생). */
html[data-skin="ind"] table thead th,
html[data-skin="ind"] .table-wrapper thead th,
html[data-skin="ind"] .data-table thead th{ background:var(--bg-muted); }
/* 다크: styles.css의 body.dark-mode thead th !important(1853)를 상위 특이성 !important로 재정의 — 층위 유지 */
html[data-skin="ind"] body.dark-mode table thead th,
html[data-skin="ind"] body.dark-mode .table-wrapper thead th,
html[data-skin="ind"] body.dark-mode .data-table thead th{ background-color:var(--bg-muted) !important; }
/* 데스크톱 셸: 행높이 최소 40px + 셀 상하 패딩 정돈(!important 없음 — 모듈 인라인이 이김) */
@media (min-width:1281px){
  html[data-skin="ind"] table tbody td{ height:40px; padding-top:10px; padding-bottom:10px; }
}
/* hover 행 배경은 기존 전역 규칙(tbody tr:hover td → var(--hover, …))이 새 --hover 토큰을 받아 처리 */

/* ── 섹션 라벨 문법 일반화 — 홈 ih-sec(모노 인덱스+제목+헤어라인)을 재사용 클래스로.
   마크업 적용은 이번 범위 아님(클래스만 준비). 사용법:
   <section class="ind-sec"><div class="ind-sec-head"><span class="idx">A</span><h2>제목</h2>
   <span class="rule"></span><a class="more">전체 보기 →</a></div>…</section> ── */
html[data-skin="ind"] .ind-sec{ margin-top:28px; }
html[data-skin="ind"] .ind-sec-head{ display:flex; align-items:baseline; gap:10px; margin-bottom:12px; }
html[data-skin="ind"] .ind-sec-head .idx{
  font-family:var(--mono); font-size:10px; color:var(--text-faint); letter-spacing:.08em;
}
html[data-skin="ind"] .ind-sec-head h2{
  margin:0; font-size:13px; font-weight:800; letter-spacing:.01em; color:var(--text-main);
}
html[data-skin="ind"] .ind-sec-head .rule{ flex:1; height:1px; background:var(--border-color); align-self:center; }
html[data-skin="ind"] .ind-sec-head .more{
  font-family:var(--mono); font-size:10.5px; color:var(--text-secondary);
  text-decoration:none; letter-spacing:.03em; cursor:pointer;
}
html[data-skin="ind"] .ind-sec-head .more:hover{ color:var(--text-main); text-decoration:underline; }

/* ═══════════════════════════════════════════════════════════════════════════
   E. 안전점검 (data-skin="ind")  —  정본: docs/redesign-previews/v2/e-안전점검.html
   실화면: inspection.js renderInspectionTable() ind 분기 + index.html #view-safety-inspection.
   구조: 통계 스트립4(.ii-metrics) → 목록 머리(.ii-list-head) → 점검종류 블록(.ii-block, 아코디언)
        → 점검(헤더) 섹션(.ii-name-sec) → 유해위험요인 표(table.ii-findings).
   상태=status-tag(전역 재사용), 숫자·메타=모노, radius 0, 그림자 0, 헤어라인, 색+라벨 병용.
   classic/운영은 이 블록에 닿지 않음(전용 .ii-* 클래스 + ind 스코프). ── */

/* 정적 머리/필터바의 인라인 radius(8px)만 각지게 정돈 — index.html 무변경(스킨 스코프 오버라이드) */
html[data-skin="ind"] #view-safety-inspection [style*="border-radius:8px"],
html[data-skin="ind"] #view-safety-inspection [style*="border-radius: 8px"]{ border-radius:0 !important; }

/* ── 통계 스트립 4 (정본 metric 문법) ── */
html[data-skin="ind"] .ii-metrics{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:6px; }
html[data-skin="ind"] .ii-metric{ background:var(--bg-card); border:1px solid var(--border-color); padding:14px 16px 16px; }
html[data-skin="ind"] .ii-metric .k{ display:flex; justify-content:space-between; align-items:baseline; font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; color:var(--text-secondary); }
html[data-skin="ind"] .ii-metric .k .u{ color:var(--text-faint); letter-spacing:.02em; }
html[data-skin="ind"] .ii-metric .v{ font-family:var(--mono); font-size:30px; font-weight:600; letter-spacing:-.03em; margin-top:9px; line-height:1; color:var(--text-main); }
html[data-skin="ind"] .ii-metric .v small{ font-size:14px; color:var(--text-secondary); font-weight:400; letter-spacing:0; }
html[data-skin="ind"] .ii-metric .v.neg{ color:var(--danger); }
html[data-skin="ind"] .ii-metric .s{ margin-top:8px; font-size:11.5px; color:var(--text-secondary); }
html[data-skin="ind"] .ii-metric .s .mono{ font-family:var(--mono); }
html[data-skin="ind"] .ii-metric .gauge{ margin-top:10px; height:4px; background:var(--bg-muted); }
html[data-skin="ind"] .ii-metric .gauge i{ display:block; height:100%; background:var(--text-main); }
html[data-skin="ind"] .ii-metric .gauge.g-ok i{ background:var(--ok); }
html[data-skin="ind"] .ii-metric .gauge.g-warn i{ background:var(--warn); }
html[data-skin="ind"] .ii-metric .gauge.g-danger i{ background:var(--danger); }

/* ── 목록 머리(종류 수 + 미조치/표시 메타) ── */
html[data-skin="ind"] .ii-list-head{ display:flex; align-items:baseline; gap:10px; margin:8px 0 2px; }
html[data-skin="ind"] .ii-list-head .lbl{ font-family:var(--mono); font-size:10.5px; letter-spacing:.1em; color:var(--text-faint); }
html[data-skin="ind"] .ii-list-head .meta{ margin-left:auto; font-family:var(--mono); font-size:10.5px; color:var(--text-faint); letter-spacing:.03em; }
html[data-skin="ind"] .ii-list-head .meta b{ color:var(--danger); font-weight:700; }

/* ── 점검 종류(그룹) 블록 — 아코디언 ── */
html[data-skin="ind"] .ii-block{ border:1px solid var(--border-color); background:var(--bg-card); }
html[data-skin="ind"] .ii-block-head{ display:flex; align-items:center; gap:14px; padding:13px 16px; border-bottom:1px solid var(--border-color); cursor:pointer; background:var(--bg-muted); }
html[data-skin="ind"] .ii-block-head:hover{ background:var(--hover); }
html[data-skin="ind"] .ii-block-head .caret{ font-family:var(--mono); font-size:11px; color:var(--text-faint); width:12px; flex:0 0 12px; }
html[data-skin="ind"] .ii-block-head .btype{ font-family:var(--mono); font-size:9.5px; font-weight:700; letter-spacing:.08em; padding:3px 7px; border:1px solid var(--border-strong); color:var(--text-main); }
html[data-skin="ind"] .ii-block-head .bname{ font-size:14.5px; font-weight:800; letter-spacing:-.01em; color:var(--text-main); }
/* 진행률 게이지 */
html[data-skin="ind"] .ii-block-head .prog{ margin-left:auto; display:flex; align-items:center; gap:11px; }
html[data-skin="ind"] .ii-block-head .prog .bar{ width:150px; height:6px; background:var(--bg-card); border:1px solid var(--border-color); }
html[data-skin="ind"] .ii-block-head .prog .bar i{ display:block; height:100%; }
html[data-skin="ind"] .ii-block-head .prog .bar i.p-ok{ background:var(--ok); }
html[data-skin="ind"] .ii-block-head .prog .bar i.p-mid{ background:var(--warn); }
html[data-skin="ind"] .ii-block-head .prog .bar i.p-low{ background:var(--info); }
html[data-skin="ind"] .ii-block-head .prog .lbl{ font-family:var(--mono); font-size:11px; color:var(--text-secondary); letter-spacing:.03em; white-space:nowrap; }
html[data-skin="ind"] .ii-block-head .prog .lbl b{ color:var(--text-main); font-weight:700; }
html[data-skin="ind"] .ii-block-head .ii-add{ height:28px; padding:0 11px; display:inline-flex; align-items:center; border:1px solid var(--border-strong); background:var(--secondary-color); color:var(--text-main); font-family:var(--mono); font-size:10px; cursor:pointer; letter-spacing:.02em; border-radius:0; }
html[data-skin="ind"] .ii-block-head .ii-add:hover{ background:var(--text-main); color:var(--secondary-color); }

/* ── 점검(헤더) 섹션 ── */
html[data-skin="ind"] .ii-name-sec{ border-bottom:1px solid var(--border-color); }
html[data-skin="ind"] .ii-name-sec:last-child{ border-bottom:none; }
html[data-skin="ind"] .ii-name-head{ display:flex; align-items:baseline; gap:12px; padding:11px 16px 10px; background:var(--bg-card); flex-wrap:wrap; }
html[data-skin="ind"] .ii-name-head .nt{ font-size:13px; font-weight:700; color:var(--text-main); }
html[data-skin="ind"] .ii-name-head .nsub{ font-family:var(--mono); font-size:10.5px; color:var(--text-faint); letter-spacing:.03em; }
html[data-skin="ind"] .ii-name-head .ncnt{ margin-left:auto; font-family:var(--mono); font-size:10.5px; color:var(--text-secondary); letter-spacing:.03em; }
html[data-skin="ind"] .ii-name-head .ncnt b{ color:var(--text-main); font-weight:700; }
html[data-skin="ind"] .ii-name-head .ii-subadd,
html[data-skin="ind"] .ii-name-head .ii-subedit,
html[data-skin="ind"] .ii-name-head .ii-subdel{ height:24px; padding:0 9px; display:inline-flex; align-items:center; border:1px solid var(--border-color); background:var(--secondary-color); color:var(--text-secondary); font-family:var(--mono); font-size:10px; cursor:pointer; letter-spacing:.02em; border-radius:0; }
html[data-skin="ind"] .ii-name-head .ii-subadd:hover,
html[data-skin="ind"] .ii-name-head .ii-subedit:hover{ background:var(--text-main); color:var(--secondary-color); }
html[data-skin="ind"] .ii-name-head .ii-subdel:hover{ background:var(--danger); border-color:var(--danger); color:#f6f4ee; }

/* ── 유해위험요인 표 ── */
html[data-skin="ind"] .ii-scroll{ overflow-x:auto; }
html[data-skin="ind"] table.ii-findings{ width:100%; border-collapse:collapse; }
html[data-skin="ind"] table.ii-findings thead th{ font-family:var(--mono); font-size:10px; font-weight:600; letter-spacing:.1em; color:var(--text-faint); text-align:left; padding:8px 14px; border-top:1px solid var(--border-color); border-bottom:1px solid var(--border-strong); background:var(--bg-muted); white-space:nowrap; }
html[data-skin="ind"] table.ii-findings tbody td{ padding:11px 14px; border-bottom:1px solid var(--border-color); font-size:12.5px; vertical-align:middle; color:var(--text-main); }
html[data-skin="ind"] table.ii-findings tbody tr:last-child td{ border-bottom:none; }
html[data-skin="ind"] table.ii-findings tbody tr:hover{ background:var(--hover); }
html[data-skin="ind"] table.ii-findings td.c-no{ font-family:var(--mono); font-size:10.5px; color:var(--text-faint); white-space:nowrap; }
html[data-skin="ind"] table.ii-findings td.c-hazard{ font-weight:700; min-width:240px; }
html[data-skin="ind"] table.ii-findings td.c-hazard .law{ display:block; margin-top:3px; font-family:var(--mono); font-size:10.5px; color:var(--text-faint); font-weight:400; letter-spacing:.01em; }
html[data-skin="ind"] table.ii-findings td.c-dept{ color:var(--text-secondary); font-size:12px; white-space:nowrap; }
html[data-skin="ind"] table.ii-findings td.c-due{ font-family:var(--mono); font-size:11.5px; color:var(--text-secondary); white-space:nowrap; }
html[data-skin="ind"] table.ii-findings td.c-due .dd{ display:block; font-size:10px; margin-top:2px; }
html[data-skin="ind"] table.ii-findings td.c-due .dd.over{ color:var(--danger); font-weight:700; }
html[data-skin="ind"] table.ii-findings td.c-due .dd.soon{ color:var(--warn); font-weight:700; }
html[data-skin="ind"] table.ii-findings td.c-penalty{ font-size:11px; color:var(--text-secondary); max-width:220px; white-space:normal; line-height:1.45; }
html[data-skin="ind"] table.ii-findings td.c-penalty .ii-dash{ color:var(--text-faint); font-family:var(--mono); }
html[data-skin="ind"] table.ii-findings td.c-status{ white-space:nowrap; }
html[data-skin="ind"] table.ii-findings td.c-act{ white-space:nowrap; text-align:right; }
html[data-skin="ind"] table.ii-findings td.c-act .btn{ margin:2px 0 2px 4px; }
html[data-skin="ind"] table.ii-findings tr.r-urgent td:first-child{ box-shadow:inset 3px 0 0 var(--danger); }
html[data-skin="ind"] table.ii-findings tr.ii-frow.active{ background:var(--bg-info-soft); }
html[data-skin="ind"] table.ii-findings tr.ii-frow.active td:first-child{ box-shadow:inset 3px 0 0 var(--info); }
html[data-skin="ind"] table.ii-findings td.ii-empty{ text-align:center; color:var(--text-faint); font-size:12px; padding:16px 14px; }
html[data-skin="ind"] .ii-empty-note{ text-align:center; padding:40px; color:var(--text-faint); font-size:12.5px; border:1px solid var(--border-color); background:var(--bg-card); }

/* ── 축소 대응: 좁은 뷰포트 + 사이드패널로 목록이 narrowed 될 때 스트립 2열 ── */
@media (max-width:900px){
  html[data-skin="ind"] .ii-metrics{ grid-template-columns:1fr 1fr; }
  html[data-skin="ind"] .ii-block-head .prog .bar{ width:90px; }
}
html[data-skin="ind"] #insp-list-pane.narrowed .ii-metrics{ grid-template-columns:1fr 1fr; }
html[data-skin="ind"] #insp-list-pane.narrowed .ii-block-head .prog{ display:none; }

/* ═══════════════════════════════════════════════════════════════════════════
   B2. 안전보건교육 (data-skin="ind") — 월별·부서별·이수현황·교육기준 표군
   정본: docs/redesign-previews/v2/e-industrial-evolved.html
   상태·이수율=status-tag(색+라벨), 페이지머리=ind-sec-head. classic(OFF)은 무변.
   ═══════════════════════════════════════════════════════════════════════════ */
/* 교육 뷰 페이지머리 — 산업 스킨에서만 노출(classic 렌더 무변). ind-sec-head가 레이아웃 담당 */
.edu-head-ind{ display:none; }
html[data-skin="ind"] .edu-head-ind{ display:flex; }
/* 이수현황 표 '이수등록' 버튼 — 알약 제거(radius 0), 헤어라인 평탄화 */
html[data-skin="ind"] .edu-att-record-btn{ border-radius:0 !important; }

/* ═══════════════════════════════════════════════════════════════════════════
   B3. 보건 검진·측정 (data-skin="ind") — 건강증진·검진 대시보드·종합/일반/특수·작업환경측정
   정본: docs/redesign-previews/v2/e-안전점검.html·e-전체명단.html (표·status-tag·평탄 버튼 문법 재사용)
   대상 화면: #view-health-promo(promotion.js) · #view-health-checkup(checkup-dashboard.js·checkup.js)
             · #view-health-env(environment.js)
   원칙: 인라인 hex 대량분은 상단 자동 오버라이드 레이어가 이미 처리(배경/그림자/라운드/그라디언트/솔리드).
        여기선 그 레이어가 못 잡는 것만 정리 — ① tokens.css ind 블록이 아직 안 덮은 채도 액센트/파스텔
        보더 토큰을 산업 상태색·헤어라인으로 재매핑 ② 검진 표 thead 색밴드 → 모노 균일화
        ③ 지능형 추천 배너·판정요약 정보박스 → 종이톤 ④ 행운의 추첨기 버튼·반기 토글 평탄화.
        전부 ind 스코프 → classic(스킨 OFF)·운영 렌더 무변. 상태 의미색은 숫자/배지에 유지(색+라벨 병용).
   ═══════════════════════════════════════════════════════════════════════════ */
/* ① 미토큰화 채도 토큰 재매핑(보건 뷰 한정) — 인라인 var(--x,#hex)가 자동 계승.
   액센트(카드 좌측 바·판정 강조) = 상태색, 파스텔 박스 보더 = 잉크 헤어라인. classic엔 이 블록이 없음. */
html[data-skin="ind"] #view-health-promo,
html[data-skin="ind"] #view-health-checkup,
html[data-skin="ind"] #view-health-env{
  --v1:var(--info); --b5:var(--info); --b39:var(--info); --c6:var(--info);
  --g25:var(--ok); --g11:var(--ok); --g16:var(--ok);
  --y16:var(--warn);
  --r12:var(--danger);
  /* 파스텔 박스 보더(핑크·복숭아·연녹·연노) → 헤어라인 */
  --r3:var(--border-color); --y7:var(--border-color); --y1:var(--border-color); --g4:var(--border-color);
}
/* ② 검진·측정 표 thead 색밴드(#f0f9ff·#fff7ed·#eff6ff·#faf5ff → 자동 소프트틴트) → 모노 헤어라인 균일화.
   자동 레이어의 소프트틴트를 id 특이성으로 되받아 모든 헤더 셀을 한 톤(bg-muted)으로. */
html[data-skin="ind"] #view-health-checkup thead th,
html[data-skin="ind"] #view-health-env thead th{
  background:var(--bg-muted) !important; color:var(--text-tertiary);
}
/* ③ 지능형 추천 배너(예비조사·측정결과) — 색 채움 → 종이톤 + 점선 헤어라인(제안 신호 dashed 유지) */
html[data-skin="ind"] #env-pre-suggestion-panel,
html[data-skin="ind"] #env-suggestion-panel{
  background:var(--bg-card) !important; border:1px dashed var(--border-strong) !important;
}
/* ③-b 특수검진 판정요약 정보박스 — 색밴드 배경(자동 danger/warn-soft) → 종이톤.
   숫자는 상태색(var(--r1)/var(--y10)) 유지 → 색+라벨 병용 보존. */
html[data-skin="ind"] #view-health-checkup .hc-sum-callout{ background:var(--bg-card) !important; }
/* ④ 행운의 추첨기 버튼 — amber 원색 배경 → 잉크 평탄(그림자·라운드는 자동 제거됨) */
html[data-skin="ind"] #btn-hp-lottery{
  background:var(--secondary-color) !important; color:var(--text-main) !important;
  border:1px solid var(--border-strong) !important;
}
html[data-skin="ind"] #btn-hp-lottery:hover{ background:var(--text-main) !important; color:var(--secondary-color) !important; }
/* ④-b 반기 선택 토글(.env-half-btn) — 알약 제거(각지게). 활성 잉크 채움은 모듈 JS 인라인 유지 */
html[data-skin="ind"] .env-half-btn{ border-radius:0 !important; }

/* ═══════════════════════════════════════════════════════════════════════════
   B4. 안전 잔여 — 안전인증(safety.js)·법정 안전검사(safety-statutory.js)·순회점검(patrol.js)
   정본: docs/redesign-previews/v2/e-안전점검.html·e-전체명단.html
   원칙: 상태·D-day = status-tag(색+라벨) — JS가 원본 인라인 알약에 class="status-tag t-*" + .ico를
        덧대는 "이중 렌더"로 심는다. classic(스킨 OFF)엔 status-tag CSS가 없어 인라인 알약이 그대로
        렌더되므로(백업 동등), 여기 블록은 오직 data-skin="ind"에서만 작동. radius/그림자/soft배경/
        솔리드/토큰 색은 상단 자동레이어·tokens.css가 이미 처리 → 여기선 그들이 못 잡는 것만.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── ① 안전인증 관리대장 저장버튼 — 인라인 하드 초록(--g6/--g14) → 잉크 평탄
   (액션 버튼은 잉크; 초록은 상태색 전용). classic은 인라인 var 폴백(#10b981)이라 무변. ── */
html[data-skin="ind"] #btn-sc-save{
  background:var(--primary-color) !important; border-color:var(--primary-color) !important; color:#f4f2ea !important;
}
html[data-skin="ind"] #btn-sc-save:hover{ background:#000 !important; }

/* ── ② 법정 안전검사 · 검사현황 요약 카드 4종(.si-status-card) — 쨍한 색밴드(bg/보더/그림자·radius10)
   → 종이톤+헤어라인. 상태색은 라벨 status-tag가 전담(색+라벨), 수치는 모노 잉크.
   active(선택 필터)는 3px 적색·그림자 → 잉크 inset 라인. bg/색/그림자 인라인은 !important로 되받음. ── */
html[data-skin="ind"] .si-status-card{
  background:var(--bg-card) !important; border:1px solid var(--border-color) !important;
  color:var(--text-main) !important;
}
html[data-skin="ind"] .si-status-card.active{
  border-color:var(--border-strong) !important; box-shadow:inset 0 2px 0 var(--text-main) !important;
}
html[data-skin="ind"] .si-status-card .si-cnt{ font-family:var(--mono); color:var(--text-main); font-weight:600; letter-spacing:-.02em; }
/* 다크: styles.css의 body.dark-mode div[style*="background:#dcfce7"](특이성 0,2,2)가 정상 카드를 남녹색으로
   되칠하므로, 상위 특이성(0,3,2)으로 되받아 먹지 톤 유지(남색·원색 금지). */
html[data-skin="ind"] body.dark-mode .si-status-card{ background:var(--bg-card) !important; border-color:var(--border-color) !important; }
html[data-skin="ind"] body.dark-mode .si-status-card.active{ border-color:var(--border-strong) !important; }

/* ── ③ 법정 대상기기 목록 카드 13종(.si-target-card) — active=적색 채움/보더 → 선택은 먹지+잉크 inset 라인.
   카운트 배지는 status-tag(t-ok/중립)를 JS가 이중렌더로 심음 → 전역 status-tag 규칙이 처리. ── */
html[data-skin="ind"] .si-target-card.active{
  background:var(--bg-muted) !important; border-color:var(--border-strong) !important;
  box-shadow:inset 3px 0 0 var(--text-main) !important;
}

/* ── ④ 순회점검 실시 폼·결과·조치 모달 — 미토큰 채도 토큰 재매핑(자동레이어가 못 덮는 var(--x,#hex)):
   카테고리 파랑 border-left(--b21), 불량입력 박스/입력 핑크 보더(--r3/--r8), 조치사진 보더(--g18). ── */
html[data-skin="ind"] #modal-patrol-form,
html[data-skin="ind"] #modal-patrol-result,
html[data-skin="ind"] #modal-patrol-action{
  --b21:var(--info); --r3:var(--border-color); --r8:var(--border-strong); --g18:var(--border-color);
}
/* 지적사항 카드(.pr-issue-card) — 하드 파스텔 보더 → 헤어라인(배경 soft틴트는 자동레이어가 상태 힌트로 유지).
   다크는 styles.css div[style*] 레거시(0,2,2)를 상위 특이성으로 되받아 보더 헤어라인 유지. */
html[data-skin="ind"] .pr-issue-card{ border-color:var(--border-color) !important; }
html[data-skin="ind"] body.dark-mode .pr-issue-card{ border-color:var(--border-color) !important; }

/* ── ⑤ 순회점검 통계/행 카드(.hp-stat-card/.hp-table-row) — styles.css 클래스 규칙의 화이트·남색 잔재 중화.
   특히 body.dark-mode의 #1e293b/#334155 !important가 인라인(var)을 눌러 다크에서 남색 카드가 새는 것을 차단
   (스킨=먹지 야간판, 남색 금지). patrol 컨테이너 스코프 한정 → 타 뷰 .hp-stat-card엔 무영향. ── */
html[data-skin="ind"] #patrol-content .hp-stat-card,
html[data-skin="ind"] #patrol-result-info .hp-stat-card{
  background:var(--bg-subtle) !important; border-color:var(--border-color) !important; color:var(--text-main) !important;
}
html[data-skin="ind"] #patrol-content .hp-table-row,
html[data-skin="ind"] body.dark-mode #patrol-content .hp-table-row{ border-bottom-color:var(--border-color) !important; }

/* ═══════════════════════════════════════════════════════════════════════════
   B5. 전자결재·프로세스맵 목록·위험성평가 목록·TBM·위험요인 제보함 (data-skin="ind")
   정본: docs/redesign-previews/v2/e-안전점검.html·e-전체명단.html
   원칙: 상태·결재단계·이행률 = status-tag(색+라벨) — 각 모듈 JS가 원본 인라인 알약에
        class="status-tag t-*" + .ico를 덧대는 "이중 렌더". classic(스킨 OFF)엔 status-tag CSS가
        없어 인라인 알약이 그대로 렌더(백업 동등)되므로, 아래 블록은 오직 data-skin="ind"에서만 작동.
        컨테이너/모달의 radius·그림자·흰 배경은 상단 자동레이어(radius 6~20→2 · box-shadow→none ·
        background:white/#fff→패널)가 이미 처리 → 여기선 그 레이어가 못 잡는 것만.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── ① 섹션 헤더 좌측 색바 — 결재·위험성평가는 빨강(--r4) 인라인 → 잉크로, 각지게(강조=잉크 원칙).
   width:5px + background:var(--r4 두 속성 동시 매칭이라 status-tag 점(7px) 등과 충돌 없음.
   classic은 인라인 var 폴백(#dc2626)이라 무변. ── */
html[data-skin="ind"] #view-approval [style*="width:5px"][style*="background:var(--r4"],
html[data-skin="ind"] #view-risk-assessment [style*="width:5px"][style*="background:var(--r4"]{
  background:var(--primary-color) !important; border-radius:0 !important;
}
/* TBM 섹션/소섹션 바(background:var(--primary-color) = 이미 잉크) — radius(3px/2px)만 각지게.
   버튼은 border-radius:8px라 아래 선택자에 안 걸림(자동레이어가 2px로 매핑). */
html[data-skin="ind"] #view-tbm [style*="background:var(--primary-color)"][style*="border-radius:3px"],
html[data-skin="ind"] #view-tbm [style*="background:var(--primary-color)"][style*="border-radius:2px"]{
  border-radius:0 !important;
}

/* ── ② TBM chip(tbmChip) — status-tag 이중렌더의 이모지 마크(⚠/✓)는 ind에서 숨기고 .ico 점으로 대체.
   classic엔 .tbm-chip-mark 규칙이 없어 이모지 그대로(백업 동등). ── */
html[data-skin="ind"] .tbm-chip-mark{ display:none; }

/* ── ③ 프로세스맵 목록 카드(showList의 .pm-card) — 부양 hover 그림자·전이 제거, 각지게, 메타=모노.
   hover 그림자는 JS 인라인(this.style.boxShadow)이라 !important로 되받음.
   ⚠ 에디터(showEditor)는 .pm-card 클래스가 없어 무영향 → B6 경계 보존. ── */
html[data-skin="ind"] #section-processmap .pm-card{ border-radius:0 !important; transition:none !important; }
html[data-skin="ind"] #section-processmap .pm-card:hover{ box-shadow:none !important; }
html[data-skin="ind"] #section-processmap .pm-card-meta{ font-family:var(--mono); letter-spacing:.02em; }
