/* SIMS Policy Chat Copilot — Design Tokens & Core Components (docs/17)
   기반: KRDS(대한민국 정부 디자인 시스템) v1.0.0 — 「AI+ OpenData 챌린지」 PoC 전면 채택.
   원천: design_tokens.json(정본, 동기화 테스트로 검증됨) + data/design_handoff_krds.
   원칙: KRDS 블루(#256EF4 계열) + KRDS 뉴트럴, 플랫 1px 보더, 그라디언트/블러/장식 금지,
         라이트 기본 + 다크 오버라이드, 색은 의미에만 사용, 점수는 breakdown과 동반.
   구조: (1) --krds-* 프리미티브/시맨틱 = KRDS 원본 토큰(재정의 금지)
         (2) 앱 시맨틱 별칭(--primary 등) = KRDS 토큰에 매핑(WCAG AA 4.5 통과값 고정)
   접근성: 브랜드 텍스트/링크/버튼 fill은 KRDS "AA on white" 단계(primary-60 #0B50D0)를 쓴다.
           KRDS base blue #256EF4는 실측 대비 4.55:1(AA 경계선·마진 없음)로 본문/버튼에 단독 사용하지 않고 focus ring에만 쓴다. */

/* ---------- 폰트: Pretendard GOV(KRDS 공식 서체) 자체 호스팅 ----------
   v1.3.9 dynamic-subset, 실사용 4웨이트(400/500/600/700)·480 서브셋(9.1MB, 요청 시
   필요한 유니코드 구간만 로드). 외부 CDN 의존 제거 — 대국민 시연 회복탄력성.
   same-origin @import이므로 오프라인·내부망에서도 동작. 게이트가 외부 @import를 금지한다. */
@import url("fonts/pretendard-gov.css");

:root {
  /* ==================================================================
     (1) KRDS 프리미티브 — 원본 값, 재정의 금지
     ================================================================== */

  /* Gray ramp */
  --krds-gray-0:   #ffffff;
  --krds-gray-5:   #f4f5f6;
  --krds-gray-10:  #eef2f7;
  --krds-gray-20:  #e6e8ea;
  --krds-gray-30:  #cdd1d5;
  --krds-gray-40:  #b1b8be;
  --krds-gray-50:  #8a949e;
  --krds-gray-60:  #6d7882;
  --krds-gray-70:  #58616a;
  --krds-gray-80:  #464c53;
  --krds-gray-90:  #33363d;
  --krds-gray-95:  #1e2124;
  --krds-gray-100: #131416;
  --krds-gray-black: #000000;

  /* Primary (KRDS Blue) */
  --krds-primary-5:   #f5f8fe;
  --krds-primary-10:  #ecf2fe;
  --krds-primary-20:  #d8e5fd;
  --krds-primary-30:  #b8d0fb;
  --krds-primary-40:  #6da3f7;
  --krds-primary-50:  #256ef4;  /* base / focus ring — 본문/버튼 단독 사용 금지(대비 3.5) */
  --krds-primary-60:  #0b50d0;  /* AA on white — 링크/버튼 fill */
  --krds-primary-70:  #083891;  /* pressed */
  --krds-primary-80:  #052b57;
  --krds-primary-90:  #041d3b;
  --krds-primary-95:  #03132a;
  --krds-primary-100: #020a17;

  /* Secondary (Teal) */
  --krds-secondary-5:   #f1f8f8;
  --krds-secondary-10:  #d9eded;
  --krds-secondary-20:  #b8dcdd;
  --krds-secondary-30:  #7fbfc1;
  --krds-secondary-40:  #4ea2a5;
  --krds-secondary-50:  #2c8588;
  --krds-secondary-60:  #1f6e71;
  --krds-secondary-70:  #18585b;
  --krds-secondary-80:  #114245;
  --krds-secondary-90:  #0c2e30;
  --krds-secondary-95:  #081f21;
  --krds-secondary-100: #051618;

  /* Accent (Wine) — 제한 사용 < 5% */
  --krds-accent-5:    #fbf1f3;
  --krds-accent-10:   #f7dde2;
  --krds-accent-20:   #f0bcc6;
  --krds-accent-30:   #e88a9a;
  --krds-accent-40:   #d95c72;
  --krds-accent-50:   #c63350;
  --krds-accent-60:   #a72341;
  --krds-accent-70:   #871a35;
  --krds-accent-80:   #66132a;
  --krds-accent-90:   #481020;
  --krds-accent-95:   #2e0a16;
  --krds-accent-100:  #1a060d;

  /* Graphic — data viz */
  --krds-graphic-blue-1: #d8e5fd;
  --krds-graphic-blue-2: #98acc5;
  --krds-graphic-blue-3: #61758f;
  --krds-graphic-blue-4: #395068;
  --krds-graphic-blue-5: #17324b;
  --krds-graphic-red-1:  #f7dde2;
  --krds-graphic-red-2:  #e8a8b3;
  --krds-graphic-red-3:  #cf6d80;
  --krds-graphic-red-4:  #a8334e;
  --krds-graphic-red-5:  #72182d;

  /* System / semantic ramps */
  --krds-danger-10:   #fde7e9;
  --krds-danger-30:   #f08a96;
  --krds-danger-50:   #d92843;
  --krds-danger-70:   #8c0e21;
  --krds-warning-10:  #fdf1d8;
  --krds-warning-30:  #f3c668;
  --krds-warning-50:  #b3791a;
  --krds-warning-70:  #6e470d;
  --krds-success-10:  #d8efe1;
  --krds-success-30:  #66bd84;
  --krds-success-50:  #1c8a4d;
  --krds-success-70:  #0c5530;
  --krds-info-10:     #d8eafd;
  --krds-info-30:     #7eb1ee;
  --krds-info-50:     #1467c6;
  --krds-info-70:     #08407f;

  /* KRDS 시맨틱(라이트 기본) — 신규 작업은 이 토큰을 사용 */
  --krds-fg-strong:    var(--krds-gray-100);
  --krds-fg-default:   var(--krds-gray-80);
  --krds-fg-muted:     var(--krds-gray-70);
  --krds-fg-subtle:    var(--krds-gray-50);
  --krds-fg-disabled:  var(--krds-gray-40);
  --krds-fg-inverse:   var(--krds-gray-0);
  --krds-fg-brand:     var(--krds-primary-60);
  --krds-fg-link:      var(--krds-primary-60);
  --krds-fg-danger:    var(--krds-danger-70);
  --krds-fg-success:   var(--krds-success-70);
  --krds-fg-warning:   var(--krds-warning-70);
  --krds-fg-info:      var(--krds-info-70);

  --krds-bg-canvas:    var(--krds-gray-0);
  --krds-bg-surface:   var(--krds-gray-5);
  --krds-bg-raised:    var(--krds-gray-0);
  --krds-bg-sunken:    var(--krds-gray-10);
  --krds-bg-inverse:   var(--krds-gray-95);
  --krds-bg-brand:        var(--krds-primary-60);
  --krds-bg-brand-hover:  var(--krds-primary-70);
  --krds-bg-brand-press:  var(--krds-primary-80);
  --krds-bg-brand-subtle: var(--krds-primary-10);
  --krds-bg-danger-subtle:  var(--krds-danger-10);
  --krds-bg-warning-subtle: var(--krds-warning-10);
  --krds-bg-success-subtle: var(--krds-success-10);
  --krds-bg-info-subtle:    var(--krds-info-10);

  --krds-border-default:  var(--krds-gray-30);
  --krds-border-strong:   var(--krds-gray-70);
  --krds-border-subtle:   var(--krds-gray-20);
  --krds-border-brand:    var(--krds-primary-50);
  --krds-border-focus:    var(--krds-primary-50);
  --krds-border-danger:   var(--krds-danger-50);

  /* KRDS 타이포 스케일 (신규 작업용; 앱 본문은 16px/1.6 유지) */
  --krds-font-sans:
    "Pretendard GOV", "Pretendard Variable", "Pretendard", -apple-system, BlinkMacSystemFont,
    "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", system-ui,
    "Segoe UI", Roboto, Arial, sans-serif;
  --krds-font-mono:
    "JetBrains Mono", "D2Coding", ui-monospace, SFMono-Regular,
    Menlo, Consolas, monospace;
  --krds-fw-regular: 400;
  --krds-fw-medium:  500;
  --krds-fw-bold:    700;
  --krds-heading-xlarge-size: 40px;  --krds-heading-xlarge-lh: 1.5;
  --krds-heading-large-size: 32px;   --krds-heading-large-lh: 1.4;
  --krds-heading-medium-lh: 1.5;
  --krds-heading-medium-size: 24px;
  --krds-heading-small-size: 19px;
  --krds-body-large-size: 19px;
  --krds-body-medium-size: 17px;
  --krds-body-small-size: 15px;
  --krds-body-xsmall-size: 13px;

  /* KRDS 간격(4px 그리드) / 라운딩 / 그림자 / 모션 / 레이아웃 */
  --krds-space-1: 4px;   --krds-space-2: 8px;   --krds-space-3: 12px;
  --krds-space-4: 16px;  --krds-space-5: 20px;  --krds-space-6: 24px;  --krds-space-8: 32px;
  --krds-space-12: 48px; --krds-space-16: 64px; --krds-space-20: 80px;
  --krds-radius-sm:  4px;
  --krds-radius-md:  6px;
  --krds-radius-lg:  8px;
  --krds-radius-xl:  12px;
  --krds-radius-pill: 9999px;
  --krds-shadow-1: 0 1px 2px rgba(19,20,22,.06), 0 1px 1px rgba(19,20,22,.04);
  --krds-shadow-2: 0 2px 4px rgba(19,20,22,.06), 0 4px 8px rgba(19,20,22,.06);
  --krds-shadow-3: 0 6px 12px rgba(19,20,22,.08), 0 2px 6px rgba(19,20,22,.04);
  --krds-shadow-4: 0 16px 24px rgba(19,20,22,.10), 0 4px 10px rgba(19,20,22,.06);
  --krds-shadow-focus-ring: 0 0 0 3px rgba(37,110,244,.30);
  --krds-dur-fast:   120ms;
  --krds-dur-base:   180ms;
  --krds-dur-slow:   240ms;
  --krds-ease-standard: cubic-bezier(.2, 0, 0, 1);
  --krds-container-pc: 1280px;

  /* ==================================================================
     (2) 앱 시맨틱 별칭 — KRDS 토큰에 매핑 (index.html/styleguide가 사용)
     ================================================================== */
  --canvas:        var(--krds-gray-0);      /* #ffffff */
  --surface:       var(--krds-gray-0);      /* #ffffff */
  --surface-alt:   var(--krds-gray-5);      /* #f4f5f6 */
  --border:        var(--krds-gray-20);     /* #e6e8ea */
  --border-strong: var(--krds-gray-30);     /* #cdd1d5 */
  --text:          var(--krds-gray-100);    /* #131416 */
  --text-muted:    var(--krds-gray-70);     /* #58616a */
  --primary:            var(--krds-primary-60);  /* #0b50d0 — AA on white */
  --primary-hover:      var(--krds-primary-70);  /* #083891 */
  --primary-button-bg:  var(--krds-primary-60);  /* #0b50d0 — 흰 텍스트 AA */
  --on-primary:    var(--krds-gray-0);      /* #ffffff */
  --focus-ring:    var(--krds-primary-50);  /* #256ef4 — 링만(대비 무관) */

  /* 신뢰도 4단계 배지 (confidence_level()과 1:1) — KRDS 시맨틱 램프(-70 on -10) */
  --conf-high-bg: var(--krds-success-10);       --conf-high-fg: var(--krds-success-70);
  --conf-medium-bg: var(--krds-info-10);        --conf-medium-fg: var(--krds-info-70);
  --conf-low-bg: var(--krds-warning-10);        --conf-low-fg: var(--krds-warning-70);
  --conf-insufficient-bg: var(--krds-gray-10);  --conf-insufficient-fg: var(--krds-gray-80);
  /* 신청 상태 배지 */
  --status-open-bg: var(--krds-success-10);     --status-open-fg: var(--krds-success-70);
  --status-upcoming-bg: var(--krds-info-10);    --status-upcoming-fg: var(--krds-info-70);
  --status-closed-bg: var(--krds-gray-10);      --status-closed-fg: var(--krds-gray-80);
  /* weak signal (정성 근거는 시각적으로도 약하게) */
  --weak-signal-fg: var(--krds-gray-70);        --weak-signal-border: var(--krds-gray-30);
  /* 한계 고지 */
  --limitation-bg: var(--krds-gray-5);          --limitation-fg: var(--krds-gray-80);
  --limitation-border: var(--krds-gray-70);
  /* 관측 전이 델타(부호+색 병용) */
  --delta-pos: var(--krds-success-70);          --delta-neg: var(--krds-danger-70);

  --font-sans: var(--krds-font-sans);
  --font-mono: var(--krds-font-mono);
  --radius-control: var(--krds-radius-md);      /* 6px */
  --radius-card:    var(--krds-radius-xl);      /* 12px */
  --radius-pill:    var(--krds-radius-pill);    /* 배지·칩·스텝 pill */
  --radius-circle:  50%;                        /* 상태 점 등 정원(pill과 구분) */
  --motion-micro:   var(--krds-dur-base);       /* 180ms */
  --ease:           var(--krds-ease-standard);  /* cubic-bezier(.2,0,0,1) */

  /* 타이포 스케일 별칭 — 워크벤치 실측 8단계를 수렴(값 불변, 시각 동일).
     rem 리터럴로 정의한다: px 프리미티브를 참조하면 루트 font-size 확대(접근성)에서
     스케일링이 사라지는데, 기본 16px 스크린샷으로는 검출되지 않기 때문.
     KRDS 추적성은 동기화 테스트가 보증: rem×16px == KRDS px
     (--fs-small=13 body-xsmall / --fs-control=15 body-small / --fs-metric=17 body-medium).
     나머지 5종(12/14/16/18/22px)은 KRDS 스케일에 대응이 없는 앱 고유값(app-native scale). */
  --fs-caption: 0.75rem;    /* 12px — 캡션·배지·데이터 출처 */
  --fs-small:   0.8125rem;  /* 13px = KRDS body-xsmall — 보조 라벨·breakdown */
  --fs-body-sm: 0.875rem;   /* 14px — 보조 본문(메타·표·상세) */
  --fs-control: 0.9375rem;  /* 15px = KRDS body-small — 입력·버튼 */
  --fs-body:    1rem;       /* 16px — 앱 본문(16px/1.6 정책) */
  --fs-metric:  1.0625rem;  /* 17px = KRDS body-medium — 관측 전이 수치 */
  --fs-title:   1.125rem;   /* 18px — 페이지·섹션 제목 */
  --fs-score:   1.375rem;   /* 22px — 적합도 점수 */

  /* 간격 미세 단계 별칭 — 4px 그리드(--krds-space-*)의 half-step. 워크벤치 실측
     off-grid 값(2/3/6/10/14/18px)을 시각 동일성 원칙으로 수렴(재설계 아님). */
  /* FE-T2 목업 시맨틱(3a 선행 정의 — 컴포넌트 규칙은 components.css에서 3b+) */
  --utilbar-bg: var(--krds-gray-5);        --utilbar-fg: var(--krds-gray-80);
  --footer-bg: var(--krds-gray-95);        --footer-fg: var(--krds-gray-20);
  --footer-muted: var(--krds-gray-50);
  --scorebox-bg: var(--krds-primary-10);   --scorebox-fg: var(--krds-primary-60);
  --status-recruiting-bg: var(--krds-primary-60);  --status-recruiting-fg: var(--krds-gray-0);
  /* 마감임박: 목업의 white on warning-50은 대비 3.71로 AA 미달 → warning 램프(-70 on -10) 채택 */
  --status-closing-bg: var(--krds-warning-10);     --status-closing-fg: var(--krds-warning-70);
  --check-pass-fg: var(--krds-success-70);  /* success-50 on white 4.38 미달 → -70 */
  --check-warn-fg: var(--krds-danger-50);   /* on white 4.84 — AA 통과 */

  --space-0-5:  2px;
  --space-0-75: 3px;
  --space-1-5:  6px;
  --space-2-5:  10px;
  --space-3-5:  14px;
  --space-4-5:  18px;
}

/* ==================================================================
   고대비(다크) 모드 — KRDS 시맨틱 + 앱 별칭 오버라이드
   프리미티브는 재정의하지 않는다. 그림자 제거, 표면 명도로 위계.
   ================================================================== */
[data-theme="dark"] {
  /* KRDS 시맨틱(다크) */
  --krds-fg-strong:    #ffffff;
  --krds-fg-default:   var(--krds-gray-20);
  --krds-fg-muted:     var(--krds-gray-40);
  --krds-fg-subtle:    var(--krds-gray-50);
  --krds-fg-brand:     var(--krds-primary-30);
  --krds-fg-link:      var(--krds-primary-40);
  --krds-fg-disabled:  var(--krds-gray-60);
  --krds-fg-inverse:   var(--krds-gray-100);
  --krds-fg-danger:    var(--krds-danger-30);
  --krds-fg-success:   var(--krds-success-30);
  --krds-fg-warning:   var(--krds-warning-30);
  --krds-fg-info:      var(--krds-info-30);
  --krds-bg-canvas:    var(--krds-gray-100);
  --krds-bg-surface:   var(--krds-gray-95);
  --krds-bg-raised:    var(--krds-gray-95);
  --krds-bg-sunken:    var(--krds-gray-black);
  --krds-bg-inverse:   var(--krds-gray-0);
  --krds-bg-brand:        var(--krds-primary-50);
  --krds-bg-brand-hover:  var(--krds-primary-40);
  --krds-bg-brand-press:  var(--krds-primary-30);
  --krds-bg-brand-subtle: var(--krds-primary-90);
  --krds-border-default: var(--krds-gray-90);
  --krds-border-strong:  var(--krds-gray-70);
  --krds-border-subtle:  var(--krds-gray-90);
  --krds-border-brand:   var(--krds-primary-40);
  --krds-border-focus:   var(--krds-primary-40);
  --krds-border-danger:  var(--krds-danger-30);
  --krds-shadow-1: none;
  --krds-shadow-2: none;
  --krds-shadow-3: none;
  --krds-shadow-4: none;
  --krds-bg-danger-subtle:  #3a151c;
  --krds-bg-warning-subtle: #33270e;
  --krds-bg-success-subtle: #10301e;
  --krds-bg-info-subtle:    #0f2540;
  --krds-shadow-focus-ring: 0 0 0 3px rgba(109, 163, 247, .40);

  /* 앱 별칭(다크) */
  --canvas:        var(--krds-gray-100);   /* #131416 */
  --surface:       var(--krds-gray-95);    /* #1e2124 */
  --surface-alt:   var(--krds-gray-90);    /* #33363d */
  --border:        var(--krds-gray-90);    /* #33363d */
  --border-strong: var(--krds-gray-70);    /* #58616a */
  --text:          var(--krds-gray-20);    /* #e6e8ea */
  --text-muted:    var(--krds-gray-40);    /* #b1b8be */
  --primary:            var(--krds-primary-40);  /* #6da3f7 — 링크/텍스트 */
  --primary-hover:      var(--krds-primary-30);  /* #b8d0fb */
  --primary-button-bg:  var(--krds-primary-60);  /* #0b50d0 — 흰 텍스트 AA */
  --on-primary:    var(--krds-gray-0);
  --focus-ring:    var(--krds-primary-40);

  /* 신뢰도/상태 배지(다크) — 밝은 -30 fg on 깊은 subtle bg */
  --conf-high-bg: #10301e;        --conf-high-fg: var(--krds-success-30);
  --conf-medium-bg: #0f2540;      --conf-medium-fg: var(--krds-info-30);
  --conf-low-bg: #33270e;         --conf-low-fg: var(--krds-warning-30);
  --conf-insufficient-bg: var(--krds-gray-95); --conf-insufficient-fg: var(--krds-gray-40);
  --status-open-bg: #10301e;      --status-open-fg: var(--krds-success-30);
  --status-upcoming-bg: #0f2540;  --status-upcoming-fg: var(--krds-info-30);
  --status-closed-bg: var(--krds-gray-95); --status-closed-fg: var(--krds-gray-40);
  --weak-signal-fg: var(--krds-gray-40);  --weak-signal-border: var(--krds-gray-70);
  --limitation-bg: var(--krds-gray-95);   --limitation-fg: var(--krds-gray-20);
  --limitation-border: var(--krds-gray-70);
  --delta-pos: var(--krds-success-30);    --delta-neg: var(--krds-danger-30);

  /* FE-T2 목업 시맨틱(다크) */
  --utilbar-bg: var(--krds-gray-95);       --utilbar-fg: var(--krds-gray-30);
  --footer-bg: var(--krds-gray-black);     --footer-fg: var(--krds-gray-20);
  --footer-muted: var(--krds-gray-50);
  --scorebox-bg: var(--krds-primary-90);   --scorebox-fg: var(--krds-primary-30);
  --status-recruiting-bg: var(--krds-primary-60);  --status-recruiting-fg: var(--krds-gray-0);
  --status-closing-bg: #33270e;            --status-closing-fg: var(--krds-warning-30);
  --check-pass-fg: var(--krds-success-30);
  --check-warn-fg: var(--krds-danger-30);
}

/* ── 기본 ─────────────────────────────────────────── */
html { font-size: 16px; }
body {
  margin: 0;
  background: var(--canvas);
  color: var(--text);
  font-family: var(--font-sans);
  line-height: 1.6;
  font-variant-numeric: tabular-nums;
}
a { color: var(--primary); text-underline-offset: 3px; }
a:hover { color: var(--primary-hover); }
:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
  border-radius: var(--radius-control);
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: 0.01ms !important; animation: none !important; }
}

/* ── 레이아웃 ─────────────────────────────────────── */
.workbench { max-width: 1080px; margin: 0 auto; padding: var(--krds-space-8) var(--krds-space-6) var(--krds-space-12); }
.section { margin-top: var(--krds-space-12); }
.section > h2 { font-size: var(--fs-title); margin: 0 0 var(--krds-space-3); letter-spacing: -0.01em; }
.grid { display: grid; gap: var(--krds-space-4); }
.grid.cols-2 { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }

/* ── 카드 (플랫, 1px 보더, 저강도 호버) ───────────── */
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: var(--krds-space-6);
  transition: border-color var(--motion-micro) var(--ease),
              box-shadow var(--motion-micro) var(--ease);
}
.card.interactive { cursor: pointer; }
.card.interactive:hover {
  border-color: var(--border-strong);
  box-shadow: var(--krds-shadow-2);
}
.card h3 { margin: 0 0 var(--krds-space-2); font-size: var(--fs-body); }
.card .meta { color: var(--text-muted); font-size: var(--fs-body-sm); }

/* ── 버튼 ─────────────────────────────────────────── */
.btn {
  display: inline-block;
  border: 1px solid transparent;
  border-radius: var(--radius-control);
  padding: var(--space-2-5) var(--krds-space-4);
  min-height: 44px;
  font: inherit;
  font-size: var(--fs-control);
  cursor: pointer;
  transition: background-color var(--motion-micro) var(--ease),
              border-color var(--motion-micro) var(--ease);
}
.btn-primary { background: var(--primary-button-bg); color: var(--on-primary); }
.btn-primary:hover { background: var(--primary-hover); }
.btn-secondary {
  background: var(--surface);
  color: var(--text);
  border-color: var(--border-strong);
}
.btn-secondary:hover { background: var(--surface-alt); }

/* ── 배지: 신뢰도 4단계 (confidence_level()과 1:1) ── */
.badge {
  display: inline-block;
  border-radius: var(--radius-pill);
  padding: var(--space-0-5) var(--space-2-5);
  font-size: var(--fs-caption);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.badge.conf-high { background: var(--conf-high-bg); color: var(--conf-high-fg); }
.badge.conf-medium { background: var(--conf-medium-bg); color: var(--conf-medium-fg); }
.badge.conf-low { background: var(--conf-low-bg); color: var(--conf-low-fg); }
.badge.conf-insufficient { background: var(--conf-insufficient-bg); color: var(--conf-insufficient-fg); }

/* 신청 상태 배지(공고 신청기간): 진행중=녹색·예정=파랑·마감=중립, 라이트/다크 대비 검증 */
.badge.status-진행중 { background: var(--status-open-bg); color: var(--status-open-fg); }
.badge.status-예정 { background: var(--status-upcoming-bg); color: var(--status-upcoming-fg); }
.badge.status-마감 { background: var(--status-closed-bg); color: var(--status-closed-fg); }

/* weak signal: 정성 근거임을 시각적으로도 '약하게' — 점선 아웃라인, 채움 없음 */
.badge.weak-signal {
  background: transparent;
  color: var(--weak-signal-fg);
  border: 1px dashed var(--weak-signal-border);
  text-transform: none;
  letter-spacing: 0;
}

/* ── 한계 고지 (GOV.UK inset text 변형) — 모든 결과 화면 필수 ── */
.limitation {
  background: var(--limitation-bg);
  color: var(--limitation-fg);
  border-left: 3px solid var(--limitation-border);
  border-radius: 0 var(--radius-control) var(--radius-control) 0;
  padding: var(--krds-space-3) var(--krds-space-4);
  font-size: var(--fs-body-sm);
}
.limitation ul { margin: var(--krds-space-1) 0 0; padding-left: var(--space-4-5); }

/* ── 관측 전이 범위: 부호+색 병용 (색 단독 표시 금지) ── */
.range { font-family: var(--font-mono); font-size: var(--fs-metric); }
.range .pos { color: var(--delta-pos); }
.range .neg { color: var(--delta-neg); }
.range .sample { color: var(--text-muted); font-size: var(--fs-small); font-family: var(--font-sans); }

/* ── 점수: 반드시 breakdown과 동반 (설명 없는 AI 점수 금지) ── */
.score { font-size: var(--fs-score); font-weight: 600; font-family: var(--font-mono); }
.score-breakdown { margin-top: var(--krds-space-2); display: grid; gap: var(--space-1-5); }
.score-breakdown .row {
  display: grid;
  grid-template-columns: 140px 1fr 48px;
  align-items: center;
  gap: var(--krds-space-2);
  font-size: var(--fs-small);
  color: var(--text-muted);
}
.score-breakdown .bar {
  height: 6px;
  background: var(--surface-alt);
  border-radius: var(--radius-pill);
  overflow: hidden;
}
.score-breakdown .bar > span {
  display: block;
  height: 100%;
  background: var(--primary);
  border-radius: var(--radius-pill);
}

/* ── 근거 인용 ────────────────────────────────────── */
.evidence {
  border-top: 1px solid var(--border);
  margin-top: var(--krds-space-3);
  padding-top: var(--space-2-5);
  font-size: var(--fs-small);
  color: var(--text-muted);
}
.evidence .source { font-family: var(--font-mono); }

/* ── 데이터 테이블 ────────────────────────────────── */
.table-wrap { overflow-x: auto; }
table.data { border-collapse: collapse; width: 100%; font-size: var(--fs-body-sm); }
table.data th, table.data td {
  text-align: left;
  padding: var(--krds-space-2) var(--krds-space-3);
  border-bottom: 1px solid var(--border);
}
table.data th { color: var(--text-muted); font-weight: 500; }
table.data tbody tr:hover { background: var(--surface-alt); }

kbd {
  font-family: var(--font-mono);
  font-size: var(--fs-caption);
  background: var(--surface-alt);
  border: 1px solid var(--border);
  border-radius: var(--krds-radius-sm);
  padding: 1px var(--space-1-5);
}

/* ── KRDS 아이콘: currentColor SVG를 mask로 착색 (이모지·유니코드 금지 대체) ── */
.krds-icon {
  display: inline-block;
  width: 1.25em;
  height: 1.25em;
  vertical-align: -0.2em;
  background-color: currentColor;
  -webkit-mask: var(--krds-icon-src) no-repeat center / contain;
  mask: var(--krds-icon-src) no-repeat center / contain;
}
