/* ═══════════════════════════════════════════════════════════════════════════
   안전이지 v2 스킨 · "A. 소프트 프리미엄" (data-skin="v2") — 대표 확정 2026-07-19
   ---------------------------------------------------------------------------
   정본: docs/redesign-previews/v2/a-soft-premium.html(대시보드) · a-전체명단.html(표)
   스펙: docs/redesign-previews/v2/스펙-v2-소프트프리미엄.md
   구조: [1부] 기초 토큰 + 기존 앱 변수 별칭  [2부] tokens.css 인라인 토큰 v2 재정의
        [3부] 구조 보정(셸 그리드 = skin-industrial.css Phase 3 이식 + A 문법 패치)
   철칙: 모든 규칙은 html[data-skin="v2"] 스코프 안에만(완전 리버서블 — 스킨 OFF·
        산업스킨(ind) 렌더 무영향). 값은 스펙 토큰만(새 색 발명 금지).
        금지: 그라디언트 · hover 부양(translateY) · 2단 이상 그림자.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── [1부] 기초 토큰 (정본 = a-soft-premium.html :root) ───────────────────── */
html[data-skin="v2"]{
  /* 표면 */
  --bg:#f7f6f3;               /* 웜그레이 바탕 */
  --surface:#ffffff;          /* 카드 */
  --surface-2:#fbfaf8;        /* 카드 내 보조면 */
  --hairline:#eae7e1;         /* 헤어라인 테두리 */
  --hairline-2:#f1efea;       /* 더 옅은 구분선 */
  /* 잉크 */
  --ink:#201e1a; --ink-2:#55524b; --ink-3:#8a857c;
  --ink-4:#b5b0a6;   /* 플레이스홀더·빈값 표시 — ink-3보다 한 단 옅게(스펙 증보 2026-07-19) */
  /* 포인트 — 딥 그린 하나만 */
  --accent:#1d5c45; --accent-soft:#eef4f0; --accent-line:#d6e4dc;
  /* 상태색 (색+라벨 병용) — -bg/-line 소프트 짝 */
  --ok:#1d6b46;     --ok-bg:#ecf5ee;     --ok-line:#d3e6d8;
  --warn:#96660a;   --warn-bg:#faf3e4;   --warn-line:#ecdcb8;
  --danger:#b3261e; --danger-bg:#fbeeed; --danger-line:#f0d4d2;
  --info:#44506b;   --info-bg:#eef0f5;   --info-line:#d9dde8;
  /* 형태 */
  --r-lg:16px; --r-md:12px; --r-sm:8px;
  --shadow:0 1px 2px rgba(32,30,26,.04), 0 6px 20px rgba(32,30,26,.05); /* 1단만 */
  --font:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,system-ui,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;

  /* ── 기존 앱 변수 별칭 (skin-industrial.css 1부와 동형 — styles.css/모듈이 쓰는
        토큰명 변형 전부 커버. 강조 = 딥 그린 액센트, 페이지/테넌트 인라인 지정은
        ind와 같은 이유로 !important로 되받아침) ── */
  --primary-color:var(--accent) !important; --primary:var(--accent) !important; --primary-dark:var(--accent) !important;
  --accent-green:var(--ok); --accent-orange:var(--warn); --accent-blue:var(--info);
  --secondary-color:var(--bg); --white:var(--surface);
  --bg-card:var(--surface); --bg-subtle:var(--surface-2); --bg-muted:var(--hairline-2); --panel:var(--surface);
  --text-main:var(--ink); --text:var(--ink);
  --text-secondary:var(--ink-2); --text-sub:var(--ink-2); --sub:var(--ink-2);
  --text-tertiary:var(--ink-3); --text-faint:var(--ink-3);
  --border-color:var(--hairline); --line:var(--hairline); --border:var(--hairline);
  --border-strong:var(--ink-3);          /* 강조 테두리 — 스펙에 별도 단계 없어 메타 잉크로 */
  --card-shadow:var(--shadow); --border-radius:var(--r-md);
  --bg-danger-soft:var(--danger-bg); --bg-success-soft:var(--ok-bg);
  --bg-info-soft:var(--info-bg); --bg-warn-soft:var(--warn-bg);
  --hover:var(--surface-2);
  /* v2는 모노 강제 아님(스펙: 숫자·코드도 고딕, 표 숫자는 tabular-nums) —
     셸 이식 규칙의 var(--mono) 참조가 전부 고딕으로 떨어지게 별칭만 유지 */
  --mono:var(--font);
}
/* ═══════════════════════════════════════════════════════════════════════════
   [2부] 인라인 색 토큰 v2 재정의 — 자동생성 소스: tools/tokenize/skin-v2-map.json
   tokens.css :root 원값을 v2 스코프에서 스펙 팔레트로 재매핑(매핑 195건).
   v2Token 보유분은 var() 참조(1부 기초 토큰 정의를 따라감), 나머지는 매핑 원값 유지.
   제외 10건(다크 컨텍스트 전용 등)은 재정의 생략 = tokens.css 원값 그대로.
   ═══════════════════════════════════════════════════════════════════════════ */
html[data-skin="v2"]{
  --tx1:var(--ink-3); /* #94a3b8 → --ink-3 */
  --tx2:var(--ink); /* #1e293b → --ink */
  --tx3:var(--ink-3); /* #64748b → --ink-3 */
  --tx4:var(--ink-2); /* #334155 → --ink-2 */
  --tx5:var(--ink-2); /* #475569 → --ink-2 */
  --tx6:var(--ink-2); /* #4b5563 → --ink-2 */
  --tx7:var(--ink-2); /* #666666 → --ink-2 */
  --tx8:var(--ink); /* #263238 → --ink */
  --tx9:var(--ink-3); /* #888888 → --ink-3 */
  --tx10:var(--ink-3); /* #94a3b8 → --ink-3 */
  --tx11:var(--ink-3); /* #94a3b8 → --ink-3 */
  --tx12:var(--ink-3); /* #999999 → --ink-3 */
  --tx13:var(--ink-3); /* #a0aec0 → --ink-3 */
  --ink1:rgba(32,30,26,0.3); /* rgba(0,0,0,0.3) → rgba(32,30,26,0.3) */
  --ink2:rgba(32,30,26,0.05); /* rgba(0,0,0,0.05) → rgba(32,30,26,0.05) */
  --ink3:rgba(32,30,26,0.02); /* rgba(0,0,0,0.02) → rgba(32,30,26,0.02) */
  --ink4:rgba(32,30,26,0.5); /* rgba(0,0,0,0.5) → rgba(32,30,26,0.5) */
  --ink5:var(--ink); /* #000000 → --ink */
  --ink6:var(--ink-2); /* #334155 → --ink-2 */
  --ink13:var(--ink-2); /* #334155 → --ink-2 */
  --ink16:var(--ink-2); /* #334155 → --ink-2 */
  --bg1:#ffffff; /* #ffffff → #ffffff */
  --bg2:var(--surface); /* #ffffff → --surface */
  --bg3:var(--surface-2); /* #f8fafc → --surface-2 */
  --bg4:var(--danger-bg); /* #fef2f2 → --danger-bg */
  --bg5:var(--danger-bg); /* #fee2e2 → --danger-bg */
  --bg6:var(--ok-bg); /* #f0fdf4 → --ok-bg */
  --bg7:var(--bg); /* #f1f5f9 → --bg */
  --bg8:var(--info-bg); /* #eff6ff → --info-bg */
  --bg9:var(--ok-bg); /* #dcfce7 → --ok-bg */
  --bg10:var(--ok-bg); /* #f0fdfa → --ok-bg */
  --bg11:var(--warn-bg); /* #fff7ed → --warn-bg */
  --bg12:var(--warn-bg); /* #fffbeb → --warn-bg */
  --bg13:var(--info-bg); /* #eef2ff → --info-bg */
  --bg14:var(--warn-bg); /* #fef3c7 → --warn-bg */
  --bg15:var(--surface-2); /* #fafafa → --surface-2 */
  --bg16:var(--info-bg); /* #f0f9ff → --info-bg */
  --bg17:var(--info-bg); /* #e0e7ff → --info-bg */
  --bg18:var(--info-bg); /* #f5f3ff → --info-bg */
  --bg20:var(--ok-bg); /* #ccfbf1 → --ok-bg */
  --bg21:var(--info-bg); /* #dbeafe → --info-bg */
  --bg22:var(--info-bg); /* #e0f2fe → --info-bg */
  --bg23:var(--danger-bg); /* #fff1f2 → --danger-bg */
  --bg24:var(--danger-bg); /* #fff5f5 → --danger-bg */
  --bg25:var(--ok-bg); /* #ecfdf5 → --ok-bg */
  --bg26:var(--ok-bg); /* #ecfeff → --ok-bg */
  --bg27:var(--info-bg); /* #faf5ff → --info-bg */
  --bg28:var(--warn-bg); /* #fefce8 → --warn-bg */
  --bg29:var(--warn-bg); /* #ffedd5 → --warn-bg */
  --bg30:var(--danger-bg); /* #fff8f8 → --danger-bg */
  --bg33:var(--info-bg); /* #f8faff → --info-bg */
  --bg35:var(--hairline); /* #dddddd → --hairline */
  --bg36:var(--info-bg); /* #ede9fe → --info-bg */
  --bg37:var(--info-bg); /* #f3e8ff → --info-bg */
  --bg38:var(--warn-bg); /* #fef08a → --warn-bg */
  --bg39:var(--warn-bg); /* #fef9ee → --warn-bg */
  --bg40:var(--surface); /* #ffffff → --surface */
  --bg41:#ffffff; /* #ffffff → #ffffff */
  --bd1:var(--hairline); /* #cbd5e1 → --hairline */
  --bd2:var(--hairline); /* #e2e8f0 → --hairline */
  --c1:var(--accent); /* #0e7490 → --accent */
  --c2:var(--accent); /* #0891b2 → --accent */
  --c3:var(--accent-line); /* #a5f3fc → --accent-line */
  --c5:var(--accent); /* #00796b → --accent */
  --c6:var(--accent-line); /* #7dd3fc → --accent-line */
  --c7:var(--accent-soft); /* #e0f2f1 → --accent-soft */
  --g1:var(--ok); /* #10b981 → --ok */
  --g2:var(--ok); /* #166534 → --ok */
  --g3:var(--ok); /* #16a34a → --ok */
  --g4:var(--ok-line); /* #bbf7d0 → --ok-line */
  --g5:var(--ok-line); /* #99f6e4 → --ok-line */
  --g6:var(--ok); /* #10b981 → --ok */
  --g7:var(--ok-line); /* #86efac → --ok-line */
  --g8:var(--ok-line); /* #ccfbf1 → --ok-line */
  --g9:var(--ok); /* #0d9488 → --ok */
  --g10:var(--ok); /* #15803d → --ok */
  --g11:var(--ok); /* #22c55e → --ok */
  --g12:var(--ok); /* #16a34a → --ok */
  --g13:var(--ok); /* #4ade80 → --ok */
  --g14:var(--ok); /* #10b981 → --ok */
  --g15:var(--ok); /* #0f766e → --ok */
  --g16:var(--ok); /* #22c55e → --ok */
  --g18:var(--ok-line); /* #d1fae5 → --ok-line */
  --g19:var(--ok); /* #059669 → --ok */
  --g20:var(--ok); /* #059669 → --ok */
  --g22:var(--ok); /* #10b981 → --ok */
  --g23:var(--ok); /* #14532d → --ok */
  --g24:var(--ok); /* #166534 → --ok */
  --g25:var(--ok); /* #16a34a → --ok */
  --g26:var(--ok); /* #22c55e → --ok */
  --g27:var(--ok-bg); /* #ccfbf1 → --ok-bg */
  --g28:var(--ok-line); /* #f0fdfa → --ok-line */
  --r1:var(--danger); /* #dc2626 → --danger */
  --r2:var(--danger); /* #ef4444 → --danger */
  --r3:var(--danger-line); /* #fecaca → --danger-line */
  --r4:var(--danger); /* #dc2626 → --danger */
  --r5:var(--danger); /* #ef4444 → --danger */
  --r6:var(--danger); /* #b91c1c → --danger */
  --r7:var(--danger); /* #e11d48 → --danger */
  --r8:var(--danger-line); /* #fca5a5 → --danger-line */
  --r9:var(--danger-line); /* #fee2e2 → --danger-line */
  --r10:var(--danger); /* #a5372a → --danger */
  --r11:var(--danger); /* #ef4444 → --danger */
  --r12:var(--danger); /* #dc2626 → --danger */
  --r14:var(--danger); /* #b91c1c → --danger */
  --r15:var(--danger); /* #be123c → --danger */
  --r16:var(--danger); /* #7f1d1d → --danger */
  --r18:var(--danger); /* #b30000 → --danger */
  --r19:var(--danger); /* #be123c → --danger */
  --r20:var(--danger); /* #dc2626 → --danger */
  --y1:var(--warn-line); /* #fde68a → --warn-line */
  --y2:var(--warn); /* #92400e → --warn */
  --y3:var(--warn); /* #d97706 → --warn */
  --y4:var(--warn); /* #b45309 → --warn */
  --y5:var(--warn); /* #c2410c → --warn */
  --y6:var(--bg); /* #f7f5ef → --bg */
  --y7:var(--warn-line); /* #fed7aa → --warn-line */
  --y8:var(--warn); /* #d97706 → --warn */
  --y9:var(--warn); /* #d97706 → --warn */
  --y10:var(--warn); /* #ea580c → --warn */
  --y11:var(--warn); /* #f59e0b → --warn */
  --y12:var(--warn); /* #f59e0b → --warn */
  --y14:var(--warn); /* #854d0e → --warn */
  --y15:var(--warn); /* #b06f16 → --warn */
  --y16:var(--warn); /* #d97706 → --warn */
  --y17:var(--warn); /* #f59e0b → --warn */
  --y18:var(--warn); /* #f59e0b → --warn */
  --y19:var(--warn); /* #fbbf24 → --warn */
  --y20:var(--warn-line); /* #ffedd5 → --warn-line */
  --y21:var(--warn); /* #fbbf24 → --warn */
  --y22:var(--warn-bg); /* #fffbeb → --warn-bg */
  --y24:var(--warn); /* #78350f → --warn */
  --y25:var(--warn); /* #78350f → --warn */
  --y26:var(--warn); /* #9a3412 → --warn */
  --y27:var(--warn); /* #eab308 → --warn */
  --y28:var(--warn); /* #eab308 → --warn */
  --y29:var(--warn); /* #f97316 → --warn */
  --y30:var(--warn-line); /* #fcd34d → --warn-line */
  --y31:var(--warn-line); /* #fde8cd → --warn-line */
  --y32:var(--warn-bg); /* #fef9c3 → --warn-bg */
  --y33:var(--warn-bg); /* #fff7ed → --warn-bg */
  --y34:var(--warn-bg); /* #fffbf5 → --warn-bg */
  --b1:var(--hairline-2); /* #f1f5f9 → --hairline-2 */
  --b2:var(--ink-4); /* #cbd5e1(빈값 플레이스홀더) → 옅은 잉크 — 명도 방향 보존(검증 F 경미 수리) */
  --b3:var(--hairline-2); /* #edf2f7 → --hairline-2 */
  --b4:var(--ink); /* #1e293b → --ink */
  --b5:var(--info); /* #3b82f6 → --info */
  --b6:var(--info); /* #2563eb → --info */
  --b7:var(--info); /* #4338ca → --info */
  --b8:var(--info); /* #7c3aed → --info */
  --b9:var(--info); /* #0369a1 → --info */
  --b10:var(--info); /* #1e40af → --info */
  --b11:var(--info); /* #0369a1 → --info */
  --b12:var(--info); /* #4f46e5 → --info */
  --b13:var(--info); /* #3b82f6 → --info */
  --b14:var(--info); /* #4f46e5 → --info */
  --b15:var(--info); /* #2563eb → --info */
  --b16:var(--info); /* #6d28d9 → --info */
  --b17:var(--info-line); /* #c7d2fe → --info-line */
  --b18:var(--info); /* #0284c7 → --info */
  --b19:var(--info); /* #8b5cf6 → --info */
  --b20:var(--info-line); /* #bfdbfe → --info-line */
  --b21:var(--info); /* #0369a1 → --info */
  --b22:var(--ink); /* #0f172a → --ink */
  --b23:var(--ink); /* #1e1b4b → --ink */
  --b24:var(--ink); /* #1e3a5f → --ink */
  --b25:var(--ink); /* #312e81 → --ink */
  --b26:var(--info); /* #4f46e5 → --info */
  --b27:var(--info); /* #6366f1 → --info */
  --b29:var(--ink); /* #0d1a2d → --ink */
  --b30:var(--info); /* #0ea5e9 → --info */
  --b31:var(--ink); /* #0f2744 → --ink */
  --b33:var(--info); /* #1d4ed8 → --info */
  --b34:var(--ink); /* #1e1b4b → --ink */
  --b35:var(--ink); /* #1e293b → --ink */
  --b36:var(--info); /* #1e3a8a → --info */
  --b37:var(--info); /* #1e40af → --info */
  --b39:var(--info); /* #2563eb → --info */
  --b40:var(--info); /* #3b82f6 → --info */
  --b41:var(--info); /* #6366f1 → --info */
  --b42:var(--info); /* #6366f1 → --info */
  --b43:var(--info); /* #6366f1 → --info */
  --b44:var(--info); /* #8b5cf6 → --info */
  --b47:var(--info-line); /* #bae6fd → --info-line */
  --b48:var(--hairline-2); /* #f8fafc → --hairline-2 */
  --v1:var(--info); /* #8b5cf6 → --info */
  --v2:var(--info-line); /* #ddd6fe → --info-line */
  --v3:var(--info); /* #7e22ce → --info */
  --v4:var(--info); /* #a78bfa → --info */
  --v6:var(--info); /* #6d28d9 → --info */
  --v7:var(--info); /* #8b5cf6 → --info */
  --v8:var(--info-line); /* #c4b5fd → --info-line */
  --pk1:var(--danger-bg); /* #fce7f3 → --danger-bg */
  --pk2:var(--danger); /* #be185d → --danger */
  --pk3:var(--danger); /* #db2777 → --danger */
}
/* 제외(원값 유지): --g17 --g21 --r13 --r17 --y13 --y23 --b32 --b45 --b46 --v5 — 다크 컨텍스트 전용·대응 단계 없음 */

/* ═══════════════════════════════════════════════════════════════════════════
   [3부] 구조 보정 — ① 앱 셸 그리드 (skin-industrial.css Phase 3 블록의 v2 스코프
   이식 · 좌 210px 사이드바+접기 레일 · 우 300px 이지 패널 · 하단 푸터 · 셸 주입물은
   js/skin-industrial-shell.js 공용). 색·폰트는 1부 별칭(--bg-card=surface,
   --border-color=hairline, --mono=고딕)을 타고 자동으로 A 문법으로 떨어지며,
   형태(라운드·액센트)는 블록 뒤 "A 문법 패치"가 같은 스코프에서 덮는다.
   ═══════════════════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════════════════════
   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="v2"] .ind-nav-toggle{ display:none; }
@media (min-width:1281px){
  /* 좌측 내비 폭 단일 변수 — 접기(html.ind-nav-collapsed, shell.js 토글) 시 레일 폭으로.
     사이드바·콘텐츠 여백·푸터가 전부 이 변수를 따라가므로 폭 수정은 여기서만 한다. */
  html[data-skin="v2"]{ --ind-nav-w:210px; }
  html[data-skin="v2"].ind-nav-collapsed{ --ind-nav-w:28px; }
  /* 좌측 내비 → 210px 고정 사이드바 (마크업 무수정, 기존 .top-nav 재배치) */
  html[data-skin="v2"] .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="v2"] .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="v2"] .ind-nav-toggle:hover{ color:var(--text-main); background:var(--bg-subtle); }
  /* 접힘(레일 모드): 메뉴 숨기고 토글만 중앙 정렬. 레일에 마우스를 올리면 메뉴가 콘텐츠 위로
     임시 펼쳐진다(오버레이 — 콘텐츠 여백은 레일 폭 유지, z-index 900이라 위로 뜸). 토글 = 고정/해제. */
  html[data-skin="v2"].ind-nav-collapsed .top-nav{ padding:8px 0; overflow:hidden; transition:width .12s ease; }
  html[data-skin="v2"].ind-nav-collapsed .top-nav .ind-nav-toggle{ justify-content:center; padding:0; border-bottom:none; }
  html[data-skin="v2"].ind-nav-collapsed .top-nav .nav-group{ display:none; }
  html[data-skin="v2"].ind-nav-collapsed .top-nav:hover{ width:210px; overflow-y:auto; }
  html[data-skin="v2"].ind-nav-collapsed .top-nav:hover .nav-group{ display:block; }
  html[data-skin="v2"].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="v2"] .top-nav .nav-group{ display:block; }
  html[data-skin="v2"] .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="v2"] .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="v2"] .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="v2"] .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="v2"] .top-nav .ind-gtitle:first-child{ padding-top:2px; }

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

  /* 우측 300px 패널(.ind-aside, shell.js 주입) */
  html[data-skin="v2"] .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="v2"] .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="v2"] .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="v2"] .ind-acc-head{
    display:flex; align-items:center; cursor:pointer; user-select:none; flex:0 0 auto;
  }
  html[data-skin="v2"] .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="v2"] .ind-acc-head:hover::after{ color:var(--text-secondary); }
  html[data-skin="v2"] .ind-panel.ind-open > .ind-acc-head::after{ transform:rotate(90deg); }
  /* 접힌 패널은 헤더만 (하단 여백 제거로 목록처럼 콤팩트하게) */
  html[data-skin="v2"] .ind-panel:not(.ind-open) > .ind-acc-head{ margin-bottom:0; }
  html[data-skin="v2"] .ind-acc-body{ display:none; min-height:0; }
  html[data-skin="v2"] .ind-panel.ind-open{ flex:1 1 auto; overflow:hidden; }
  html[data-skin="v2"] .ind-panel.ind-open > .ind-acc-body{
    display:block; flex:1 1 auto; min-height:0; overflow-y:auto;
  }
  /* AI 패널: 본문이 로그(스크롤)+입력줄 세로 배치 → 본문 자체는 flex 컬럼, 로그만 스크롤 */
  html[data-skin="v2"] .ind-panel.ind-open > .ind-ai-body{
    display:flex; flex-direction:column; overflow:hidden;
  }
  html[data-skin="v2"] .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="v2"] .ind-ai-log .sys{ color:var(--text-faint); }
  html[data-skin="v2"] .ind-ai-log .ai{ color:var(--text-main); }
  html[data-skin="v2"] .ind-ai-log .usr{ color:var(--info); }
  html[data-skin="v2"] .ind-ai-log .rec{ color:var(--warn); }
  html[data-skin="v2"] .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="v2"] .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="v2"] .ind-inrow input::placeholder{ color:var(--text-faint); }
  html[data-skin="v2"] .ind-inrow .caret{ font-family:var(--mono); color:var(--ok); }
  html[data-skin="v2"] .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="v2"] .ind-lookup-res{ margin-top:12px; font-size:12.5px; }
  html[data-skin="v2"] .ind-lr-msg{ font-family:var(--mono); font-size:11px; color:var(--text-faint); }
  html[data-skin="v2"] .ind-lr-name{ font-weight:600; color:var(--text-main); margin-bottom:3px; }
  html[data-skin="v2"] .ind-lr-cas{ font-size:11px; color:var(--text-faint); margin-bottom:8px; }
  html[data-skin="v2"] .ind-lr-tags{ display:flex; flex-wrap:wrap; gap:5px; }
  html[data-skin="v2"] .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="v2"] .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="v2"] .ind-footer b{ color:var(--text-secondary); font-weight:600; }
  html[data-skin="v2"] .ind-footer .r{ margin-left:auto; display:flex; gap:18px; }
  /* '사업자 서류' 푸터 메뉴 — 이지세이프티 서류 워터마크 다운로드 */
  html[data-skin="v2"] .ind-footer .ind-biz-docs{
    cursor:pointer; color:var(--text-secondary);
    text-decoration:underline; text-underline-offset:3px;
  }
  html[data-skin="v2"] .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="v2"] .ind-biz-docs-menu b{ font-size:10px; color:var(--text-faint); font-weight:600; letter-spacing:.4px; }
  html[data-skin="v2"] .ind-biz-docs-menu a{
    cursor:pointer; color:var(--text-main);
    text-decoration:underline; text-underline-offset:3px;
  }
  html[data-skin="v2"] .ind-biz-docs-menu small{ font-family:var(--sans, inherit); color:var(--text-faint); }
  html[data-skin="v2"] .ind-barcode{
    display:flex; gap:1px; height:12px; align-items:stretch; flex:0 0 auto; width:110px; overflow:hidden;
  }
  html[data-skin="v2"] .ind-barcode i{ width:1px; background:var(--text-faint); }

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

/* ── 표 공통 스킨 보강 (체크리스트 #2 · 전역 hover, 마크업 무수정) ── */
html[data-skin="v2"] tbody tr:hover td{ background:var(--hover, var(--bg-subtle)) !important; }
html[data-skin="v2"] .table-wrapper{ border-radius:0; }
/* ── 셸 주입물(.ind-aside/.ind-footer)은 데스크톱 전용 — 모바일에선 생 텍스트 노출 방지 ── */
html[data-skin="v2"] .ind-aside,
html[data-skin="v2"] .ind-footer{ display:none; }
/* (≥1281px 블록의 display:flex가 이 기본값을 덮음 — 소스순서상 위 Phase3 블록보다 뒤라서
   동일 특이성 later-wins로 죽지 않도록 min-width에서 명시 재선언) */
@media (min-width:1281px){
  html[data-skin="v2"] .ind-aside{ display:flex; }
  html[data-skin="v2"] .ind-footer{ display:flex; }
}

/* ── body 바탕 일반화: 자체 CSS 규칙에 리터럴 hex로 배경을 칠하는 독립 페이지(tbm 등)도 종이 바탕으로 ── */
html[data-skin="v2"] body{ background-color:var(--secondary-color) !important; }
/* ── 이지 캐릭터: 사이드바 AI 패널 헤더에 아바타로 (터미널 톤 유지) ── */
html[data-skin="v2"] .ind-ai-head{ display:flex; align-items:center; gap:7px; margin-bottom:12px; }
html[data-skin="v2"] .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="v2"] .ind-ai-head .ind-ph{ margin-bottom:0; }

/* ── 이지 행동 확인카드 (사이드바 로그 내, 사람 확인 필수) ── */
html[data-skin="v2"] .ind-act-card{ border:1px solid var(--border-color); padding:10px; margin:8px 0; font-family:var(--mono); font-size:11px; }
html[data-skin="v2"] .ind-act-h{ font-weight:600; color:var(--text-main); margin-bottom:4px; }
html[data-skin="v2"] .ind-act-lab{ color:var(--text-faint); margin:7px 0 2px; font-size:10.5px; }
html[data-skin="v2"] .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="v2"] .ind-act-bar{ display:flex; gap:6px; margin-top:9px; }
html[data-skin="v2"] .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="v2"] .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="v2"] #izi-fab,
  html[data-skin="v2"] #izi-panel{ display:none !important; }
}

/* ── 프로세스맵 에디터 필드 높이: 원본 calc(100vh-120px)이 dev배너·스킨푸터를 모름 →
   실측 오프셋(--ind-top=배너+헤더) + 서브내비50 + 여백7 + 푸터28 로 교정(데스크톱 셸에서만) ── */
@media (min-width:1281px){
  html[data-skin="v2"] #section-processmap [style*="height:calc(100vh - 120px)"]{
    height:calc(100vh - var(--ind-top,70px) - 85px) !important;
  }
}
/* ═══ 프리뷰 레이아웃 정합(대표 지시): 상단 상태 스트립 · 우측 현황요약 · 서브탭 액션바 ═══ */

/* 상단 상태 스트립 — 프리뷰 topbar 오마주 (데스크톱 셸에서만) */
html[data-skin="v2"] .ind-topstat{ display:none; }
@media (min-width:1281px){
  html[data-skin="v2"] .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="v2"] .ind-topstat b{ color:var(--text-main); font-weight:600; }
  html[data-skin="v2"] .ind-topstat b.ok{ color:var(--ok); }
  /* user-info-bar의 margin-left:auto와 공존: 스트립이 auto를 가져가고 유저바는 바로 뒤 */
  html[data-skin="v2"] #user-info-bar{ margin-left:0 !important; }
}

/* 우측 현황 요약 kv (프리뷰 .kv) */
html[data-skin="v2"] #ind-summary-kv .ind-kv{
  display:flex; justify-content:space-between; align-items:baseline;
  font-family:var(--mono); font-size:11.5px; padding:5px 0;
  border-bottom:1px solid var(--border-color);
}
html[data-skin="v2"] #ind-summary-kv .ind-kv:last-child{ border-bottom:none; }
html[data-skin="v2"] #ind-summary-kv .ind-kv span{ color:var(--text-tertiary); }
html[data-skin="v2"] #ind-summary-kv .ind-kv b{ color:var(--text-main); font-weight:600; }

/* ═══════════════════════════════════════════════════════════════════════════
   [3부] 구조 보정 — ② A 문법 패치 (이식 셸 규칙 위에 소프트 프리미엄 형태 덮기)
   ═══════════════════════════════════════════════════════════════════════════ */
@media (min-width:1281px){
  /* 좌측 내비 — 활성 = accent-soft 배경 + accent 글자 + 좌측 3px 액센트 바 (스펙) */
  html[data-skin="v2"] .top-nav .nav-main{
    height:36px; font-size:13.5px; color:var(--ink-2);
    border-left:3px solid transparent; border-radius:0 var(--r-sm) var(--r-sm) 0;
  }
  html[data-skin="v2"] .top-nav .nav-main:hover{
    background:var(--surface-2); color:var(--ink); border-left-color:transparent;
  }
  html[data-skin="v2"] .top-nav .nav-main.active{
    background:var(--accent-soft); color:var(--accent); border-left-color:var(--accent); font-weight:700;
  }
  /* 그룹 라벨 — 11px · ink-3 · 고딕 (스펙: 대문자 아님 — 한국어) */
  html[data-skin="v2"] .top-nav .ind-gtitle{
    font-family:var(--font); font-size:11px; font-weight:600; letter-spacing:.02em; color:var(--ink-3);
  }
  html[data-skin="v2"] .ind-ph{ text-transform:none; font-weight:600; letter-spacing:.02em; }
  /* 이지 패널·푸터 조각 — 라운드·액센트만 소프트 프리미엄으로 */
  html[data-skin="v2"] .ind-inrow{ border-radius:var(--r-sm); }
  html[data-skin="v2"] .ind-lr-tag{
    border-radius:999px; color:var(--info); background:var(--info-bg); border:1px solid var(--info-line);
  }
  html[data-skin="v2"] .ind-act-card{ border-radius:var(--r-sm); }
  html[data-skin="v2"] .ind-act-inp{ border-radius:var(--r-sm); }
  html[data-skin="v2"] .ind-act-run{
    background:var(--accent); border-color:var(--accent); color:#fff; border-radius:var(--r-sm);
  }
  html[data-skin="v2"] .ind-act-run:hover{ opacity:.92; }
  html[data-skin="v2"] .ind-act-cancel{ border-radius:var(--r-sm); }
  html[data-skin="v2"] .ind-biz-docs-menu{ border-radius:var(--r-sm); }
}

/* ── 헤더 — 60px · surface · 헤어라인 (테넌트 브랜드색 2px 하단선 차단 = ind와 동일 이유 !important) ── */
html[data-skin="v2"] .main-header{
  height:60px; background:var(--surface);
  border-bottom:1px solid var(--hairline) !important; box-shadow:none;
}

/* ── 카드 — surface + hairline 1px + r-lg + 1단 그림자 (카드 안 카드 금지 → 보조면 surface-2) ── */
html[data-skin="v2"] .content-card{
  background:var(--surface); border:1px solid var(--hairline);
  border-radius:var(--r-lg); box-shadow:var(--shadow);
}
html[data-skin="v2"] .stat-card{
  background:var(--surface); border:1px solid var(--hairline); border-left:1px solid var(--hairline);
  border-radius:var(--r-lg); box-shadow:var(--shadow);
}
html[data-skin="v2"] .card-header{ background:var(--surface); border-bottom:1px solid var(--hairline-2); }
html[data-skin="v2"] .card-title::before{ background:var(--accent); }

/* ── 표 — thead surface-2 · ink-3 라벨(12px 600) · 행 hover surface-2 · 숫자 tabular-nums
      (행 높이 44px, 셀 다단 내용은 height=최소높이라 자연 확장) ── */
html[data-skin="v2"] thead th{
  background:var(--surface-2); color:var(--ink-3);
  font-family:var(--font); font-size:12px; font-weight:600; letter-spacing:0;
  border-bottom:1px solid var(--hairline);
}
html[data-skin="v2"] .table-wrapper thead th{ background:var(--surface-2); }
html[data-skin="v2"] tbody td{
  border-bottom-color:var(--hairline-2); height:44px; font-variant-numeric:tabular-nums;
}

/* ── 상태 태그 — pill · 상태-bg 배경 + 상태-line 보더 + 상태색 글자 + 6px 점 (라벨 필수)
      (모듈 인라인 스타일을 덮어야 해서 ind와 같은 이유로 !important) ── */
html[data-skin="v2"] .status-tag{
  display:inline-flex !important; align-items:center; gap:6px;
  font-family:var(--font); font-size:12px !important; font-weight:600 !important;
  padding:2px 10px !important; border-radius:999px !important; line-height:1.6; letter-spacing:0;
}
html[data-skin="v2"] .status-tag .ico{ width:6px; height:6px; border-radius:50%; flex:0 0 auto; }
html[data-skin="v2"] .status-tag.t-ok{ color:var(--ok) !important; background:var(--ok-bg) !important; border:1px solid var(--ok-line) !important; }
html[data-skin="v2"] .status-tag.t-ok .ico{ background:var(--ok); }
html[data-skin="v2"] .status-tag.t-warn{ color:var(--warn) !important; background:var(--warn-bg) !important; border:1px solid var(--warn-line) !important; }
html[data-skin="v2"] .status-tag.t-warn .ico{ background:var(--warn); }
html[data-skin="v2"] .status-tag.t-danger{ color:var(--danger) !important; background:var(--danger-bg) !important; border:1px solid var(--danger-line) !important; }
html[data-skin="v2"] .status-tag.t-danger .ico{ background:var(--danger); }
html[data-skin="v2"] .status-tag.t-info{ color:var(--info) !important; background:var(--info-bg) !important; border:1px solid var(--info-line) !important; }
html[data-skin="v2"] .status-tag.t-info .ico{ background:var(--info); }

/* ── 버튼 — r-md · 주버튼 = accent 솔리드+화이트 · 보조 = surface+hairline ·
      hover는 배경 미세 변화만(부양·그림자 증폭 금지) ── */
html[data-skin="v2"] .btn{ border-radius:var(--r-md); box-shadow:none; }
html[data-skin="v2"] .btn:hover{ transform:none !important; box-shadow:none !important; }
html[data-skin="v2"] .btn-primary{ background:var(--accent); color:#fff; }
html[data-skin="v2"] .btn-primary:hover{ background:var(--accent); opacity:.92; }
html[data-skin="v2"] .btn-excel{ background:var(--accent); color:#fff; }
html[data-skin="v2"] .btn-excel:hover{ background:var(--accent); opacity:.92; }
html[data-skin="v2"] .btn-outline{ background:var(--surface); color:var(--ink-2); border:1px solid var(--hairline); }
html[data-skin="v2"] .btn-outline:hover{ background:var(--surface-2); color:var(--ink); border-color:var(--hairline); }
html[data-skin="v2"] .btn-secondary{ background:var(--surface-2); color:var(--ink-2); border:1px solid var(--hairline); }
html[data-skin="v2"] .btn-secondary:hover{ background:var(--hairline-2); }
html[data-skin="v2"] .btn-ghost{ background:transparent; color:var(--ink-2); border:1px solid var(--hairline); }
html[data-skin="v2"] .btn-ghost:hover{ background:var(--surface-2); color:var(--ink); }
html[data-skin="v2"] .btn-danger{ background:var(--danger); color:#fff; }
html[data-skin="v2"] .btn-danger:hover{ background:var(--danger); opacity:.92; }
html[data-skin="v2"] .btn-success{ background:var(--ok); color:#fff; }
html[data-skin="v2"] .btn-success:hover{ background:var(--ok); opacity:.92; }
html[data-skin="v2"] .btn-info{ background:var(--info); color:#fff; }
html[data-skin="v2"] .btn-info:hover{ background:var(--info); opacity:.92; }
html[data-skin="v2"] .btn-warn{ background:var(--warn); color:#fff; }
html[data-skin="v2"] .btn-warn:hover{ background:var(--warn); opacity:.92; }
html[data-skin="v2"] .btn-soft-danger{ background:var(--danger-bg); color:var(--danger); border:1px solid var(--danger-line); }
html[data-skin="v2"] .btn-soft-info{ background:var(--info-bg); color:var(--info); border:1px solid var(--info-line); }
html[data-skin="v2"] .btn-soft-warn{ background:var(--warn-bg); color:var(--warn); border:1px solid var(--warn-line); }
/* 입력류 — r-sm (스펙 라운드 3스케일: 입력 8px) */
html[data-skin="v2"] input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html[data-skin="v2"] select,
html[data-skin="v2"] textarea{ border-radius:var(--r-sm); }

/* ── 서브탭 — 필 컨테이너 문법 (a-전체명단.html .subtabs: 활성 = accent 솔리드 필)
      app.js activateSubNavBtn이 인라인(color·fontWeight·borderBottom)을 박아 !important 필수 ── */
html[data-skin="v2"] .sub-nav-bar{
  height:auto !important; min-height:44px; padding:6px 24px !important;
  background:transparent !important; box-shadow:none !important;
  border-bottom:1px solid var(--hairline) !important;
}
html[data-skin="v2"] .sub-nav-container{ align-items:center !important; }
html[data-skin="v2"] .sub-nav-bar .nav-item{
  height:30px !important; padding:0 14px !important;
  display:inline-flex; align-items:center;
  border:none !important; border-radius:var(--r-sm) !important;
  background:transparent !important; color:var(--ink-3) !important;
  font-size:13px !important; font-weight:500 !important;
}
html[data-skin="v2"] .sub-nav-bar .nav-item:hover{
  color:var(--ink-2) !important; background:var(--surface-2) !important;
}
html[data-skin="v2"] .sub-nav-bar .nav-item.active{
  background:var(--accent) !important; color:#fff !important; font-weight:600 !important;
  box-shadow:none !important;
}
html[data-skin="v2"] .sub-nav-bar .nav-item.active::after{ display:none !important; }
/* 서브탭 우측 액션 버튼 — 보조 = surface+hairline, 주 = accent 솔리드 */
html[data-skin="v2"] .sub-nav-bar .btn{
  height:30px !important; padding:0 14px !important; border-radius:var(--r-sm) !important;
  font-family:var(--font) !important; font-size:12.5px !important; font-weight:600 !important;
  background:var(--surface) !important; border:1px solid var(--hairline) !important;
  color:var(--ink-2) !important; box-shadow:none !important;
}
html[data-skin="v2"] .sub-nav-bar .btn:hover{ background:var(--surface-2) !important; color:var(--ink) !important; }
html[data-skin="v2"] .sub-nav-bar .btn-primary{
  background:var(--accent) !important; border-color:var(--accent) !important; color:#fff !important;
}
html[data-skin="v2"] .sub-nav-bar .btn-primary:hover{ opacity:.92; }

/* ── dev 배너 보정 — 인라인 노랑 줄무늬 그라디언트(var(--y11)/--y19)가 v2에선 둘 다
   --warn으로 수렴해 단색 암갈색+저대비가 되는 문제(적대검증 중간 결함). A 문법의
   경고 배너(warn-bg 면 + warn 글자 + warn-line 하단선)로 재정의. ── */
html[data-skin="v2"] #dev-banner{
  background:var(--warn-bg) !important;
  background-image:none !important;
  color:var(--warn) !important;
  border-bottom:1px solid var(--warn-line);
  font-weight:600;
}
html[data-skin="v2"] #dev-banner *{ color:var(--warn) !important; }

/* ── E-셸 신구조(.ind-izi-head/.ind-ask 등) v2 최소 대응 — v2는 보류 상태지만
   미리보기 시 생 HTML 노출 방지(검증 M1). A 문법 최소치만. ── */
html[data-skin="v2"] .ind-izi-head{ display:flex; align-items:center; gap:9px; padding:14px 16px; border-bottom:1px solid var(--hairline); }
html[data-skin="v2"] .ind-izi-head img{ width:30px; height:30px; border-radius:50%; }
html[data-skin="v2"] .ind-izi-who .nm{ font-weight:700; color:var(--ink); margin-right:6px; }
html[data-skin="v2"] .ind-izi-who .rl{ font-size:10px; color:var(--ink-3); letter-spacing:.04em; }
html[data-skin="v2"] .ind-izi-live{ margin-left:auto; font-size:10px; color:var(--ok); display:flex; align-items:center; gap:4px; }
html[data-skin="v2"] .ind-izi-live i{ width:6px; height:6px; border-radius:50%; background:var(--ok); }
html[data-skin="v2"] .ind-izi-bubble{ background:var(--accent-soft); border:1px solid var(--accent-line); border-radius:var(--r-md); padding:10px 12px; font-size:12.5px; line-height:1.6; color:var(--ink-2); }
html[data-skin="v2"] #ind-sweep-kv > div{ display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid var(--hairline-2); font-size:12px; color:var(--ink-2); }
html[data-skin="v2"] .ind-ask{ margin-top:auto; padding:12px 16px; border-top:1px solid var(--hairline); }
html[data-skin="v2"] .ind-ask .row{ display:flex; gap:6px; }
html[data-skin="v2"] .ind-ask input{ flex:1; border:1px solid var(--hairline); border-radius:var(--r-sm); padding:8px 10px; font-size:12.5px; background:var(--surface-2); color:var(--ink); outline:none; }
html[data-skin="v2"] .ind-ask button{ border:none; border-radius:var(--r-sm); background:var(--accent); color:#fff; font-size:12.5px; font-weight:600; padding:8px 12px; cursor:pointer; }
html[data-skin="v2"] .ind-ask .hint{ margin-top:6px; font-size:10.5px; color:var(--ink-3); }
html[data-skin="v2"] .ind-ncnt{ margin-left:auto; font-size:10.5px; font-weight:700; color:var(--danger); }
html[data-skin="v2"] .ind-urole{ font-size:9.5px; color:var(--ink-3); letter-spacing:.04em; }
