/* EHS IOS v6.9 — Styles */

/* ═══════════════════════════════════════════════
   DESIGN SYSTEM TOKENS
═══════════════════════════════════════════════ */
:root{
  /* ── 배경 계층 (따뜻한 라이트 파스텔) ── */
  --bg-deep:#f0f4ff;--bg-panel:#f5f7ff;--bg-card:#ffffff;--bg-elevated:#eef1fa;--bg-hover:#e6eaf8;

  /* ── 액센트 컬러 (채도 낮춘 파스텔 톤) ── */
  --accent-amber:#b87d2a;--accent-teal:#1a9e8e;--accent-blue:#3b6fd4;
  --accent-red:#c94040;--accent-green:#2a9155;--accent-purple:#7c4db8;--accent-orange:#c4622a;

  /* ── 부서 컬러 (파스텔 계열) ── */
  --dept-0:#4a80d4;--dept-1:#c48a2a;--dept-2:#3da86a;--dept-3:#8a5cc4;--dept-4:#c45050;--dept-5:#2ab8a8;

  /* ── 폰트 ── */
  --font-display:'Orbitron',monospace;--font-body:'Noto Sans KR',sans-serif;--font-mono:'Share Tech Mono',monospace;

  /* ── 텍스트 ── */
  --text-primary:#1e2a3a;--text-secondary:#4a5a72;--text-muted:#8a9ab8;--text-accent:#b87d2a;

  /* ── 보더 ── */
  --border-subtle:rgba(60,80,140,0.10);--border-medium:rgba(60,80,140,0.18);--border-accent:rgba(184,125,42,0.4);

  /* ── 글로우 (라이트에선 그림자로) ── */
  --glow-amber:0 2px 16px rgba(184,125,42,0.12);--glow-teal:0 2px 16px rgba(26,158,142,0.12);--glow-blue:0 2px 16px rgba(59,111,212,0.12);--glow-purple:0 2px 16px rgba(124,77,184,0.12);

  /* ── 간격·모서리·트랜지션 ── */
  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;
  --r-sm:4px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-2xl:24px;
  --tx-fast:150ms cubic-bezier(0.4,0,0.2,1);--tx-normal:250ms cubic-bezier(0.4,0,0.2,1);--tx-slow:400ms cubic-bezier(0.4,0,0.2,1);

  /* ── Typography Scale (html base 15px 기준)
     title    1.20rem=18px  카드제목·케이스ID
     subtitle 1.00rem=15px  섹션부제목·모달타이틀
     body     1.00rem=15px  본문·입력·검토의견 (iOS max(16px) 적용)
     label    0.87rem=13px  폼레이블·배지·버튼
     small    0.80rem=12px  캡션·메타·타임스탬프 (절대하한)
     mono     0.87rem=13px  모노ID·코드 ── */
  --fs-title:1.20rem;--fs-subtitle:1.00rem;--fs-body:1.00rem;--fs-label:0.87rem;--fs-small:0.80rem;--fs-mono:0.87rem;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:15px;scroll-behavior:smooth;overflow-x:hidden;max-width:100vw}
body{font-family:var(--font-body);background:var(--bg-deep);color:var(--text-primary);overflow-x:hidden;max-width:100vw;min-height:100vh;line-height:1.75;letter-spacing:-0.02em;word-break:keep-all;overflow-x:hidden;-webkit-font-smoothing:antialiased;font-size:var(--fs-body)}
button{cursor:pointer;font-family:var(--font-body)}
input,select,textarea{font-family:var(--font-body)}

/* ═══════════════════════════════════════════════
   LAYOUT: 사이드바 + 메인 2열 앱 구조
═══════════════════════════════════════════════ */
.app-shell{display:flex;min-height:100vh;max-width:100vw;overflow-x:hidden}

/* ── 좌측 사이드바 ── */
.sidebar{
  width:260px;flex-shrink:0;background:rgba(240,244,255,0.98);
  border-right:1.5px solid var(--border-medium);
  display:flex;flex-direction:column;
  position:fixed;top:0;left:0;bottom:0;z-index:90;
  transition:transform var(--tx-normal);
  overflow:hidden;
  box-shadow:2px 0 20px rgba(60,80,140,0.06);
}
.sidebar-header{padding:var(--sp-5) var(--sp-5) var(--sp-4);border-bottom:1px solid var(--border-subtle)}
.sidebar-brand{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}
.brand-mark{width:34px;height:34px;border:1.5px solid var(--accent-amber);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;box-shadow:var(--glow-amber),;flex-shrink:0}
.brand-mark svg{color:var(--accent-amber)}
.brand-text-group .brand-name{font-family:var(--font-display);font-size:var(--fs-title);font-weight:700;letter-spacing:0.1em;color:var(--text-primary)}
.brand-text-group .brand-ver{font-size:var(--fs-small);color:var(--accent-purple);font-family:var(--font-mono);margin-top:1px}
.save-status{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-label);color:var(--text-muted)}
.save-dot{width:6px;height:6px;border-radius:50%;background:var(--text-muted);transition:all var(--tx-fast)}
.save-dot.dirty{background:var(--accent-amber);box-shadow:0 0 6px rgba(232,169,74,0.6);animation:pulse-dot 1.5s infinite}
.save-dot.saved{background:var(--accent-green)}
@keyframes pulse-dot{0%,100%{opacity:1}50%{opacity:0.4}}

/* 사이드바 케이스 목록 */
.sidebar-section{padding:var(--sp-4) var(--sp-5) var(--sp-2);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:0.08em;color:var(--text-muted);font-family:var(--font-mono)}
.case-list{flex:1;overflow-y:auto;padding:0 var(--sp-3)}
.case-list::-webkit-scrollbar{width:3px}
.case-list::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:2px}
.case-item{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-3);border-radius:var(--r-md);cursor:pointer;transition:all var(--tx-fast);margin-bottom:var(--sp-1);border:1px solid transparent;position:relative}
.case-item:hover{background:var(--bg-elevated);border-color:var(--border-subtle)}
.case-item.active{background:rgba(184,125,42,0.07);border-color:rgba(232,169,74,0.25)}
.case-item-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.case-item-content{flex:1;min-width:0}
.case-item-id{font-size:var(--fs-body);font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.case-item-date{font-size:var(--fs-small);color:var(--text-muted);margin-top:1px;font-family:var(--font-mono)}
.case-item-badge{font-size:var(--fs-small);font-weight:700;padding:1px 5px;border-radius:100px;flex-shrink:0}
.case-del-btn{position:absolute;top:6px;right:6px;background:none;border:none;color:transparent;padding:2px;border-radius:var(--r-sm);cursor:pointer;transition:all var(--tx-fast);line-height:0;font-size:var(--fs-small)}
.case-item:hover .case-del-btn{color:var(--text-muted)}
.case-del-btn:hover{color:var(--accent-red)!important;background:rgba(232,90,74,0.1)}
.btn-new-case{display:flex;align-items:center;gap:var(--sp-2);width:calc(100% - var(--sp-6));margin:var(--sp-3) var(--sp-3);padding:var(--sp-3) var(--sp-4);background:rgba(184,125,42,0.07);border:1.5px dashed rgba(184,125,42,0.3);border-radius:var(--r-md);color:var(--accent-amber);font-size:var(--fs-body);font-weight:600;font-family:var(--font-body);transition:all var(--tx-fast)}
.btn-new-case:hover{background:rgba(232,169,74,0.15);box-shadow:var(--glow-amber)}
.sidebar-footer{padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:var(--sp-2)}
.sidebar-action{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);cursor:pointer;font-size:var(--fs-body);color:var(--text-secondary);border:none;background:none;transition:all var(--tx-fast);font-family:var(--font-body);width:100%;text-align:left}
.sidebar-action:hover{background:var(--bg-elevated);color:var(--text-primary)}
.sidebar-action svg{color:var(--text-muted);flex-shrink:0}

/* ── 메인 영역 ── */
.main-area{flex:1;margin-left:260px;display:flex;flex-direction:column;min-height:100vh}

/* ── 상단 바 (사례별) ── */
.main-topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:var(--sp-3) var(--sp-6);
  background:rgba(240,244,255,0.95);border-bottom:1px solid var(--border-subtle);
  backdrop-filter:blur(12px);
  position:sticky;top:0;z-index:80;gap:var(--sp-4);
}
.case-breadcrumb{display:flex;align-items:center;gap:var(--sp-3)}
.case-id-display{font-family:var(--font-mono);font-size:var(--fs-title);font-weight:700;color:var(--accent-amber)}
.case-status-badge{font-size:var(--fs-small);font-weight:600;padding:2px 10px;border-radius:100px;cursor:pointer;border:none;font-family:var(--font-body);transition:all var(--tx-fast)}
.topbar-actions{display:flex;gap:var(--sp-2);align-items:center}
.btn-sm{background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);color:var(--text-secondary);padding:6px var(--sp-3);font-size:var(--fs-label);display:flex;align-items:center;gap:var(--sp-2);transition:all var(--tx-fast);cursor:pointer;white-space:nowrap;font-family:var(--font-body)}
.btn-sm:hover{background:var(--bg-hover);border-color:var(--border-medium);color:var(--text-primary)}
.btn-sm-primary{background:linear-gradient(135deg,var(--accent-amber),#d4831a);border:none;border-radius:var(--r-md);color:#1a0e00;padding:6px var(--sp-4);font-size:var(--fs-label);font-weight:700;display:flex;align-items:center;gap:var(--sp-2);transition:all var(--tx-fast);cursor:pointer;white-space:nowrap;font-family:var(--font-body)}
.btn-sm-primary:hover{transform:translateY(-1px);box-shadow:0 4px 16px rgba(232,169,74,0.4)}

/* ═══════════════════════════════════════════════
   WIZARD STEPPER
═══════════════════════════════════════════════ */
.wizard-stepper{
  display:flex;align-items:center;justify-content:center;
  padding:var(--sp-4) var(--sp-6);
  background:var(--bg-card);border-bottom:1px solid var(--border-subtle);
  gap:0;overflow-x:auto;
}
.wizard-stepper::-webkit-scrollbar{height:0}
.step-item{display:flex;align-items:center;cursor:pointer;flex-shrink:0;padding:4px 6px;border-radius:var(--r-lg);transition:background var(--tx-fast)}
.step-item:hover{background:rgba(59,111,212,0.06)}
.step-circle{
  width:28px;height:28px;border-radius:50%;border:1.5px solid var(--border-medium);
  display:flex;align-items:center;justify-content:center;
  font-size:var(--fs-label);font-weight:700;font-family:var(--font-mono);
  color:#b0bdd4;background:#f0f3fa;
  transition:all var(--tx-normal);flex-shrink:0;position:relative;
}
.step-circle.done{border-color:#a8c5a0;background:#f0f7f0;color:#6aa860}
.step-circle.active{
  border-color:#3b6fd4;background:#3b6fd4;color:#fff;
  box-shadow:0 0 0 4px rgba(59,111,212,0.18),0 2px 10px rgba(59,111,212,0.28);
  width:32px;height:32px;font-size:var(--fs-body);
}
.step-label{
  margin-left:var(--sp-2);font-size:var(--fs-small);font-weight:400;color:#b0bdd4;
  white-space:nowrap;transition:color var(--tx-fast);
}
.step-item.active .step-label{color:#2a55b8;font-weight:800;font-size:var(--fs-label)}
.step-item.active{background:rgba(59,111,212,0.07);border-radius:var(--r-lg)}
.step-item.done .step-label{color:#6aa860;font-weight:500}
.step-connector{width:24px;height:1.5px;background:#dde3f0;margin:0 2px;flex-shrink:0;border-radius:1px;transition:background var(--tx-normal)}
.step-connector.done{background:#a8c5a0}

/* ═══════════════════════════════════════════════
   WIZARD CONTENT PANELS
═══════════════════════════════════════════════ */
.wizard-content{flex:1;padding:var(--sp-4);overflow-y:auto;min-width:0;max-width:100%}
.step-panel{display:none;animation:fadeUp var(--tx-normal) ease}
.step-panel.active{display:block}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ── 공통 패널 ── */
.card{min-width:0;max-width:100%;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-xl);overflow:hidden;margin-bottom:var(--sp-5);box-shadow:0 2px 12px rgba(60,80,140,0.06)}
.card:last-child{margin-bottom:0}
.card-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border-subtle);background:var(--bg-card);gap:var(--sp-4)}
.card-title{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-title);font-weight:600;color:var(--text-primary)}
.card-icon{width:26px;height:26px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.card-body{padding:var(--sp-5)}
.card-body-sm{padding:var(--sp-4) var(--sp-5)}

/* ── 2단 그리드 ── */
.two-col{display:grid;grid-template-columns:1fr min(380px,100%);gap:var(--sp-5);align-items:start;min-width:0}
.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-4)}
.two-col-equal{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4)}
@media(max-width:1200px){.two-col{grid-template-columns:1fr}.three-col{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.three-col{grid-template-columns:1fr}.two-col-equal{grid-template-columns:1fr}}

/* ── 공통 입력 ── */
.field{display:flex;flex-direction:column;gap:var(--sp-2)}
.label{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted);font-family:var(--font-mono)}
.input{background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);color:var(--text-primary);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-body);transition:all var(--tx-fast);width:100%}
.input:focus{outline:none;border-color:var(--accent-amber);box-shadow:0 0 0 2px rgba(232,169,74,0.1)}
.input::placeholder{color:var(--text-muted)}
.select{background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);color:var(--text-primary);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-body);cursor:pointer;appearance:none;width:100%;transition:all var(--tx-fast)}
.select:focus{outline:none;border-color:var(--accent-amber)}
.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--sp-4)}

/* ── 버튼 ── */
.btn{background:var(--bg-elevated);border:1px solid var(--border-medium);border-radius:var(--r-md);color:var(--text-secondary);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-body);font-family:var(--font-body);transition:all var(--tx-fast);cursor:pointer;display:inline-flex;align-items:center;gap:var(--sp-2);white-space:nowrap}
.btn:hover{background:var(--bg-hover);color:var(--text-primary)}
.btn-teal{background:rgba(45,212,192,0.1);border-color:rgba(45,212,192,0.3);color:var(--accent-teal)}
.btn-teal:hover{background:rgba(45,212,192,0.2);box-shadow:var(--glow-teal)}
.btn-amber{background:rgba(232,169,74,0.1);border-color:rgba(232,169,74,0.3);color:var(--accent-amber)}
.btn-amber:hover{background:rgba(232,169,74,0.2);box-shadow:var(--glow-amber)}
.btn-purple{background:rgba(160,110,245,0.1);border-color:rgba(160,110,245,0.3);color:var(--accent-purple)}
.btn-purple:hover{background:rgba(160,110,245,0.2);box-shadow:var(--glow-purple)}
.btn-red{background:rgba(232,90,74,0.1);border-color:rgba(232,90,74,0.3);color:var(--accent-red)}
.btn-red:hover{background:rgba(232,90,74,0.2)}
.btn-row{display:flex;gap:var(--sp-3);flex-wrap:wrap;align-items:center}

/* ── 면책 배너 ── */
.disclaimer{display:flex;align-items:flex-start;gap:var(--sp-3);background:rgba(232,169,74,0.05);border:1px solid rgba(232,169,74,0.2);border-left:3px solid var(--accent-amber);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-5)}
.disclaimer svg{color:var(--accent-amber);flex-shrink:0;margin-top:2px}
.disclaimer-text{font-size:var(--fs-label);color:var(--text-secondary);line-height:1.6}
.disclaimer-text strong{color:var(--accent-amber);font-weight:600}

/* ── 프리셋 그리드 ── */
.preset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:var(--sp-2)}
.preset-btn{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1);padding:var(--sp-3) var(--sp-2);border-radius:var(--r-lg);border:1.5px solid var(--border-medium);background:var(--bg-elevated);color:var(--text-secondary);transition:all var(--tx-fast);cursor:pointer;text-align:center}
.preset-btn:hover{background:var(--bg-hover);transform:translateY(-2px)}
.preset-btn.active{background:rgba(232,169,74,0.1);border-color:var(--accent-amber);color:var(--text-primary);box-shadow:var(--glow-amber)}
.preset-icon{font-size:var(--fs-subtitle)}
.preset-name{font-size:var(--fs-label);font-weight:600}
.preset-desc{font-size:var(--fs-small);color:var(--text-muted)}
.preset-btn.active .preset-desc{color:var(--text-secondary)}

/* ── 기준표 ── */
.criterion-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--r-lg);overflow:hidden;margin-bottom:var(--sp-4);transition:border-color var(--tx-fast)}
.criterion-card:hover{border-color:var(--border-medium)}
.criterion-head{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--sp-4);background:var(--bg-elevated);gap:var(--sp-4)}
.criterion-meta{flex:1}
.criterion-cat{font-size:var(--fs-label);font-weight:700;color:var(--text-accent);margin-bottom:3px}
.criterion-q{font-size:var(--fs-body);color:var(--text-primary);line-height:1.6;word-break:keep-all}
.criterion-tip{font-size:var(--fs-label);color:var(--text-muted);line-height:1.5;margin-top:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:rgba(255,255,255,0.03);border-radius:var(--r-sm);border-left:2px solid var(--border-medium);word-break:keep-all}
.criterion-tip em{color:var(--accent-teal);font-style:normal;font-weight:500}
.weight-stack{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex-shrink:0}
.weight-badge{background:rgba(232,169,74,0.1);border:1px solid rgba(232,169,74,0.25);border-radius:var(--r-sm);padding:2px var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--accent-amber);white-space:nowrap}
.weight-rank{font-size:var(--fs-small);color:var(--text-muted);font-family:var(--font-mono)}
.criterion-body{padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}
.dept-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.dept-chip{display:flex;align-items:center;gap:6px;padding:5px var(--sp-3);border-radius:100px;font-size:var(--fs-label);font-weight:500;border:1.5px solid;cursor:pointer;transition:all var(--tx-fast);background:transparent;user-select:none}
.dept-chip:hover{transform:translateY(-1px)}
.dept-chip.active{color:#fff}
.dept-chip.na-btn{font-weight:700;font-size:var(--fs-label);letter-spacing:0.03em;border-style:dashed}
.dept-chip.na-btn:hover{background:rgba(139,155,170,0.12)!important;border-color:rgba(100,120,150,0.7)!important;transform:translateY(-1px)}
.split-controls{display:flex;flex-direction:column;gap:var(--sp-2)}
.split-row{display:flex;align-items:center;gap:var(--sp-3)}
.split-label{width:120px;font-size:var(--fs-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0}
.split-slider{flex:1;-webkit-appearance:none;appearance:none;height:4px;border-radius:2px;background:var(--bg-hover);outline:none;cursor:pointer}
.split-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent-amber);cursor:pointer;box-shadow:0 0 6px rgba(232,169,74,0.5)}
.split-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent-amber);cursor:pointer;border:none}
.split-num{width:64px;background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--fs-body);padding:2px var(--sp-2);text-align:right}
.split-num:focus{outline:none;border-color:var(--accent-amber)}
.split-sym{font-size:var(--fs-body);color:var(--text-muted);width:10px;flex-shrink:0}
.split-total{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);font-size:var(--fs-body);color:var(--text-muted)}
.total-val{font-family:var(--font-mono)}
.total-val.over{color:var(--accent-red)}
.total-val.ok{color:var(--accent-green)}

/* ── 점수 사이드바 ── */
.score-sidebar{position:sticky;top:0;display:flex;flex-direction:column;gap:var(--sp-4)}
.dept-score-card{background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-4);transition:all var(--tx-fast)}
.dept-score-card.dom{border-color:rgba(232,169,74,0.35);box-shadow:var(--glow-amber)}
.score-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-3)}
.score-name{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-body);font-weight:500}
.score-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.score-pct{font-family:var(--font-mono);font-size:var(--fs-title);font-weight:700}
.score-raw{font-family:var(--font-mono);font-size:var(--fs-small);color:var(--text-muted);text-align:right}
.progress-track{height:5px;background:var(--bg-hover);border-radius:3px;overflow:hidden}
.progress-fill{height:100%;border-radius:3px;transition:width var(--tx-slow)}
.dom-badge{display:inline-flex;align-items:center;gap:3px;background:rgba(232,169,74,0.1);border:1px solid rgba(232,169,74,0.3);color:var(--accent-amber);font-size:var(--fs-label);padding:2px var(--sp-2);border-radius:100px;margin-top:var(--sp-2);font-weight:700}

/* ── 신뢰도 다이얼 ── */
.conf-dial{position:relative;width:70px;height:70px;flex-shrink:0}
.conf-dial svg{width:100%;height:100%;transform:rotate(-90deg)}
.conf-dial-bg{fill:none;stroke:var(--bg-hover);stroke-width:6}
.conf-dial-fill{fill:none;stroke:var(--accent-teal);stroke-width:6;stroke-linecap:round;stroke-dasharray:200;stroke-dashoffset:200;transition:stroke-dashoffset var(--tx-slow)}
.conf-dial-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.conf-pct{font-family:var(--font-mono);font-size:var(--fs-body);font-weight:700;line-height:1}
.conf-lbl{font-size:var(--fs-small);color:var(--text-muted);text-transform:uppercase;letter-spacing:0.04em}

/* ── Barrier ── */
.barrier-cat-header{font-size:var(--fs-small);font-weight:700;color:var(--text-muted);letter-spacing:0.06em;padding:var(--sp-3) 0 var(--sp-1);margin-top:var(--sp-2);border-bottom:1px solid var(--border-subtle)}
/* barrier summary chips */
.barrier-sum-chips{display:flex;flex-wrap:wrap;gap:6px;padding:var(--sp-2) 0}
.barrier-sum-chip{display:inline-flex;align-items:center;font-size:var(--fs-label);font-weight:600;padding:3px 10px;border-radius:100px;border:1px solid}
.barrier-sum-chip.failed  {background:#fef2f2;color:#dc2626;border-color:#fecaca}
.barrier-sum-chip.partial {background:#fffbeb;color:#d97706;border-color:#fde68a}
.barrier-sum-chip.ok      {background:#f0fdf4;color:#16a34a;border-color:#bbf7d0}
.barrier-sum-chip.na      {background:var(--bg-elevated);color:var(--text-muted);border-color:var(--border-subtle)}
.barrier-sum-chip.unknown {background:var(--bg-elevated);color:var(--text-muted);border-color:var(--border-subtle)}
.barrier-row{display:flex;flex-direction:row;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);margin-bottom:var(--sp-2);transition:all var(--tx-fast)}
.barrier-row.failed{border-color:rgba(232,90,74,0.4);background:rgba(232,90,74,0.04)}
.barrier-row.partial{border-color:rgba(232,169,74,0.35);background:rgba(232,169,74,0.04)}
.barrier-row.ok{border-color:rgba(74,232,144,0.2);background:rgba(74,232,144,0.03)}
.barrier-name{font-weight:600;color:var(--text-primary);flex:1;min-width:0}
.barrier-phil{font-size:var(--fs-small);color:var(--text-muted);margin-top:2px}
.barrier-desc{font-size:var(--fs-label);color:var(--text-secondary);line-height:1.4;word-break:keep-all}
.b-select{background:var(--bg-card);border:1px solid var(--border-medium);border-radius:var(--r-md);color:var(--text-primary);font-size:var(--fs-body);font-family:var(--font-body);padding:6px var(--sp-2);cursor:pointer;appearance:none;width:100%;text-align:center}
.b-select:focus{outline:none;border-color:var(--accent-amber)}
.barrier-sum-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3);margin-top:var(--sp-4)}
.b-sum-card{padding:var(--sp-4);background:var(--bg-elevated);border-radius:var(--r-lg);border:1px solid var(--border-subtle);text-align:center}
.b-sum-num{font-family:var(--font-mono);font-size:var(--fs-title);font-weight:700;line-height:1}
.b-sum-label{font-size:var(--fs-small);color:var(--text-muted);margin-top:3px}

/* ── 증빙 ── */
.ev-row{display:grid;grid-template-columns:28px 1fr 140px 140px 82px;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);margin-bottom:var(--sp-2);transition:all var(--tx-fast)}
.ev-row.attached{border-color:rgba(74,232,144,0.2)}
.ev-row.na{opacity:0.55}
.ev-name{font-size:var(--fs-body);font-weight:600;color:var(--text-primary)}
.ev-file{font-size:var(--fs-small);color:var(--text-muted);margin-top:2px;font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev-type-sel{background:var(--bg-card);border:1px solid var(--border-medium);border-radius:var(--r-md);color:var(--text-primary);font-size:var(--fs-body);font-family:var(--font-body);padding:5px var(--sp-2);cursor:pointer;appearance:none;width:100%}
.ev-type-sel:focus{outline:none;border-color:var(--accent-amber)}
.ev-rel-bar{display:flex;align-items:center;gap:var(--sp-2)}
.ev-rel-track{flex:1;height:4px;background:var(--bg-hover);border-radius:2px;overflow:hidden}
.ev-rel-fill{height:100%;border-radius:2px;transition:width var(--tx-slow)}
.ev-rel-lbl{font-family:var(--font-mono);font-size:var(--fs-label);white-space:nowrap}
.ev-btn{border-radius:var(--r-md);font-size:var(--fs-small);padding:4px 10px;font-family:var(--font-body);transition:all var(--tx-fast);cursor:pointer;white-space:nowrap;border:1px solid}

/* ── 시정조치 ── */
.capa-sum-row{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-3);margin-bottom:var(--sp-5)}
.capa-sum-card{padding:var(--sp-4);background:var(--bg-elevated);border-radius:var(--r-lg);border:1px solid var(--border-subtle);text-align:center}
.capa-sum-num{font-family:var(--font-mono);font-size:var(--fs-title);font-weight:700;line-height:1}
.capa-sum-label{font-size:var(--fs-small);color:var(--text-muted);margin-top:3px}
.capa-auto-box{background:rgba(160,110,245,0.05);border:1px solid rgba(160,110,245,0.18);border-radius:var(--r-lg);padding:var(--sp-4);margin-bottom:var(--sp-4)}
.capa-auto-title{font-size:var(--fs-body);font-weight:700;color:var(--accent-purple);margin-bottom:var(--sp-3);display:flex;align-items:center;gap:var(--sp-2)}
.rec-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.rec-chip{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:rgba(160,110,245,0.08);border:1px solid rgba(160,110,245,0.22);border-radius:var(--r-md);font-size:var(--fs-label);color:var(--text-secondary);cursor:pointer;transition:all var(--tx-fast)}
.rec-chip:hover{background:rgba(160,110,245,0.18);color:var(--text-primary)}
.rec-chip svg{color:var(--accent-purple);flex-shrink:0}
.capa-form{display:grid;grid-template-columns:1fr 130px 120px 90px 80px;gap:var(--sp-2);margin-bottom:var(--sp-4);align-items:end}
.capa-tbl{width:100%;border-collapse:collapse}
.capa-tbl th{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted);font-family:var(--font-mono);text-align:left;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-medium)}
.capa-tbl td{padding:var(--sp-3);border-bottom:1px solid var(--border-subtle);font-size:var(--fs-body);color:var(--text-secondary);vertical-align:top}
.capa-tbl tr:hover td{background:rgba(255,255,255,0.015)}
.status-badge{display:inline-flex;align-items:center;gap:3px;border-radius:100px;padding:2px 8px;font-size:var(--fs-small);font-weight:700;cursor:pointer;border:none;font-family:var(--font-body)}
.pri-badge{display:inline-block;border-radius:var(--r-sm);padding:2px 6px;font-size:var(--fs-small);font-weight:700;font-family:var(--font-mono)}

/* ── 타임라인 ── */
.tl-form{display:grid;grid-template-columns:240px 1fr 130px 70px;gap:var(--sp-2);margin-bottom:var(--sp-3);align-items:end}
.tl-wrapper{position:relative;padding-left:var(--sp-8)}
.tl-line{position:absolute;left:20px;top:0;bottom:0;width:2px;background:var(--border-medium);border-radius:1px}
.tl-item{position:relative;margin-bottom:var(--sp-4)}
.tl-dot{position:absolute;left:-36px;top:14px;width:12px;height:12px;border-radius:50%;border:2px solid;background:var(--bg-deep)}
.tl-card{background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-3) var(--sp-4);transition:all var(--tx-fast);position:relative}
.tl-card.critical{border-color:rgba(232,90,74,0.4);background:rgba(232,90,74,0.04)}
.tl-card.warning{border-color:rgba(232,169,74,0.3);background:rgba(232,169,74,0.04)}
.tl-card.barrier{border-color:rgba(232,90,74,0.3);background:rgba(232,90,74,0.03)}
.tl-card.alarm{border-color:rgba(240,122,58,0.3);background:rgba(240,122,58,0.04)}
.tl-card.action{border-color:rgba(58,142,245,0.2)}

/* ══════════════════════════════════════════════════
   Barrier Detail — Failure Mode + 검증 질문 accordion
   ══════════════════════════════════════════════════ */
.barrier-detail {
  margin: 0 0 var(--sp-3) 0;
  background: rgba(255,255,255,0.03);
  border-left: 3px solid var(--accent-amber);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  padding: var(--sp-3) var(--sp-3) var(--sp-2);
  animation: fadeIn 0.15s ease;
}
.barrier-detail-inner { display:flex; flex-direction:column; gap:var(--sp-3); }

.bdetail-section { display:flex; flex-direction:column; gap:var(--sp-2); }
.bdetail-label {
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* Failure Mode chips */
.bdetail-fm-list { display:flex; flex-wrap:wrap; gap:var(--sp-1); }
.fm-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px 4px 6px;
  border-radius: 20px;
  border: 1px solid var(--border);
  background: var(--surface-2);
  color: var(--text-secondary);
  font-size: var(--fs-small);
  cursor: pointer;
  transition: all 0.12s;
  user-select: none;
}
.fm-chip:hover { border-color: var(--accent-amber); color: var(--text-primary); }
.fm-chip.fm-selected {
  border-color: var(--accent-amber);
  background: rgba(232,169,74,0.15);
  color: var(--accent-amber);
  font-weight: 600;
}
.fm-m4-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

/* 검증 질문 */
.bdetail-q {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  padding: var(--sp-2);
  background: var(--surface-2);
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
}
.bdetail-q-top {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 2px 8px;
}
.bdetail-qa-btns {
  display: flex;
  gap: var(--sp-1);
  padding-left: 36px;
  flex-wrap: wrap;
}
.qa-btn {
  padding: 3px 10px;
  font-size: var(--fs-small);
  border-radius: 12px;
  border: 1px solid var(--border);
  background: var(--bg-input);
  color: var(--text-muted);
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
  white-space: nowrap;
}
.qa-btn:hover { border-color: var(--accent-blue); color: var(--text-primary); }
.qa-btn.qa-active.qa-yes  { background: rgba(74,232,144,0.15); border-color: #4ae890; color: #4ae890; font-weight:700; }
.qa-btn.qa-active.qa-no   { background: rgba(232,90,74,0.15);  border-color: #e85a4a; color: #e85a4a; font-weight:700; }
.qa-btn.qa-active.qa-na   { background: rgba(143,163,184,0.15);border-color: #8fa3b8; color: #8fa3b8; font-weight:700; }
.bdetail-advisor {
  margin-top: var(--sp-2);
  padding: var(--sp-2) var(--sp-3);
  background: rgba(232,169,74,0.08);
  border-left: 3px solid var(--accent-amber);
  border-radius: 0 6px 6px 0;
  font-size: var(--fs-small);
  color: var(--text-secondary);
}
.advisor-ico { margin-right: 4px; }
.bdetail-qnum {
  align-self: start;
  padding-top: 1px;
  font-size: var(--fs-small);
  font-weight: 700;
  color: var(--accent-teal);
}
.bdetail-qtext {
  font-size: var(--fs-body);
  color: var(--text-primary);
  line-height: 1.45;
}
.bdetail-kosha {
  font-size: 10px;
  color: var(--text-muted);
  font-family: var(--font-mono);
}


/* ══════════════════════════════════════════════════
   4M Badge — read-only, FM에서 상속
   ══════════════════════════════════════════════════ */
.m4-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.03em;
  white-space: nowrap;
}
.m4-man        { background: rgba(74,232,144,0.15); color: #4ae890; border: 1px solid rgba(74,232,144,0.3); }
.m4-machine    { background: rgba(58,142,245,0.15); color: #3a8ef5; border: 1px solid rgba(58,142,245,0.3); }
.m4-method     { background: rgba(232,169,74,0.15); color: #e8a94a; border: 1px solid rgba(232,169,74,0.3); }
.m4-management { background: rgba(232,90,74,0.15);  color: #e85a4a; border: 1px solid rgba(232,90,74,0.3); }


/* ── Step Gate / Lock ── */
.step-item.locked { opacity: 0.45; cursor: not-allowed; }
.step-item.locked .step-circle { border-color: var(--border); color: var(--text-muted); }
.step-gate-dot {
  display: inline-block;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--accent-amber);
  margin-left: 4px;
  vertical-align: middle;
  opacity: 0.7;
}

.tl-time{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--accent-amber);margin-bottom:2px}
.tl-type-badge{display:inline-block;border-radius:100px;padding:1px 7px;font-size:var(--fs-small);font-weight:600;margin-bottom:var(--sp-1)}
.tl-event{font-size:var(--fs-body);color:var(--text-primary);font-weight:500;margin-bottom:2px}
.tl-note{font-size:var(--fs-label);color:var(--text-secondary);line-height:1.4;word-break:keep-all}
.tl-del{position:absolute;top:var(--sp-2);right:var(--sp-2);background:none;border:none;color:transparent;padding:2px;border-radius:var(--r-sm);cursor:pointer;transition:all var(--tx-fast);line-height:0}
.tl-card:hover .tl-del{color:var(--text-muted)}
.tl-del:hover{color:var(--accent-red)!important;background:rgba(232,90,74,0.1)}
.tl-gap{display:flex;align-items:center;gap:var(--sp-2);background:rgba(232,169,74,0.05);border:1px solid rgba(232,169,74,0.18);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3);margin:var(--sp-2) 0;font-size:var(--fs-body);color:var(--accent-amber)}

/* ── 내러티브 ── */
.narrative-para{padding:var(--sp-3) var(--sp-4);background:var(--bg-elevated);border-radius:var(--r-md);border-left:2px solid var(--accent-teal);margin-bottom:var(--sp-3)}
.narrative-tag{display:inline-block;font-size:var(--fs-small);font-family:var(--font-mono);color:var(--accent-teal);background:rgba(45,212,192,0.1);border-radius:var(--r-sm);padding:1px 6px;margin-bottom:var(--sp-2);letter-spacing:0.04em;text-transform:uppercase}
.narrative-text{font-size:var(--fs-body);color:var(--text-secondary);line-height:1.85;word-break:keep-all}
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-8);color:var(--text-muted);font-size:var(--fs-body);gap:var(--sp-3);text-align:center;line-height:1.7}

/* ═══════════════════════════════════════════════
   ★ STEP 6: MULTI-CASE INTELLIGENCE
═══════════════════════════════════════════════ */
/* 요약 통계 카드 */
.intel-kpi-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--sp-4);margin-bottom:var(--sp-5)}
.kpi-card{background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-4);}
.kpi-num{font-family:var(--font-mono);font-size:var(--fs-title);font-weight:700;line-height:1}
.kpi-label{font-size:var(--fs-small);color:var(--text-muted);margin-top:4px}
.kpi-sub{font-size:var(--fs-small);color:var(--text-secondary);margin-top:2px}

/* Barrier Ranking */
.barrier-rank-list{display:flex;flex-direction:column;gap:var(--sp-3)}
.barrier-rank-item{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md)}
.barrier-rank-num{font-family:var(--font-mono);font-size:var(--fs-title);font-weight:700;width:24px;text-align:center;flex-shrink:0}
.barrier-rank-name{flex:1;font-size:var(--fs-body);font-weight:500;color:var(--text-primary)}
.barrier-rank-bar-wrap{width:160px;flex-shrink:0}
.barrier-rank-bar-track{height:8px;background:var(--bg-hover);border-radius:4px;overflow:hidden}
.barrier-rank-bar-fill{height:100%;border-radius:4px;transition:width var(--tx-slow)}
.barrier-rank-count{font-family:var(--font-mono);font-size:var(--fs-body);font-weight:700;text-align:right;width:40px;flex-shrink:0}
.barrier-rank-pct{font-family:var(--font-mono);font-size:var(--fs-small);color:var(--text-muted);width:36px;text-align:right;flex-shrink:0}

/* Contractor Risk Table */
.risk-table{width:100%;border-collapse:collapse}
.risk-table th{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted);font-family:var(--font-mono);text-align:left;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-medium)}
.risk-table td{padding:var(--sp-3);border-bottom:1px solid var(--border-subtle);font-size:var(--fs-body);color:var(--text-secondary)}
.risk-table tr:hover td{background:rgba(255,255,255,0.015)}
.risk-level{display:inline-block;border-radius:100px;padding:2px 8px;font-size:var(--fs-small);font-weight:700}

/* Heatmap */
.heatmap-wrapper{overflow-x:auto}
.heatmap-grid{display:grid;gap:var(--sp-2)}
.heatmap-cell{border-radius:var(--r-sm);display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:56px;cursor:pointer;transition:all var(--tx-fast);padding:var(--sp-2)}
.heatmap-cell:hover{transform:scale(1.04);box-shadow:0 4px 16px rgba(60,80,140,0.18)}
.heatmap-cell-val{font-family:var(--font-mono);font-size:var(--fs-body);font-weight:700;line-height:1}
.heatmap-cell-label{font-size:var(--fs-small);color:rgba(30,42,58,0.7);margin-top:2px;text-align:center}
.heatmap-legend{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3);font-size:var(--fs-small);color:var(--text-muted)}
.legend-swatch{width:12px;height:12px;border-radius:2px}

/* Leading Indicator */
.leading-row{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);margin-bottom:var(--sp-2)}
.leading-icon-wrap{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:var(--fs-body)}
.leading-label{flex:1;font-size:var(--fs-body);font-weight:500;color:var(--text-primary)}
.leading-sub{font-size:var(--fs-small);color:var(--text-muted);margin-top:2px;word-break:keep-all}
.leading-val{font-family:var(--font-mono);font-size:var(--fs-body);font-weight:700;text-align:right;flex-shrink:0}
.leading-trend{font-size:var(--fs-small);text-align:right;flex-shrink:0;white-space:nowrap}

/* ══════════════════════════════════════════
   ★ CASE COMPARE (Step 8 탭)
══════════════════════════════════════════ */
/* ── 탭 바 ── */
.intel-tabs{display:flex;gap:2px;background:#eceef8;border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:3px;margin-bottom:var(--sp-5)}
.intel-tab{flex:1;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);font-size:var(--fs-body);font-weight:600;font-family:var(--font-body);color:var(--text-muted);background:none;border:none;cursor:pointer;transition:all var(--tx-fast);text-align:center;white-space:nowrap}
.intel-tab:hover{color:var(--text-primary);background:rgba(255,255,255,0.7)}
.intel-tab.active{background:#fff;color:var(--text-primary);box-shadow:0 1px 6px rgba(60,80,140,0.12)}
.intel-tab-panel{display:none}.intel-tab-panel.active{display:block;animation:fadeUp var(--tx-normal) ease}

/* ── 탭별 배경 tint (무의식적 모드 인지) ── */
#tab-overview  {background:rgba(230,238,255,0.35);border-radius:var(--r-lg);padding:var(--sp-4);margin:-4px}
#tab-compare   {background:rgba(255,243,224,0.4);border-radius:var(--r-lg);padding:var(--sp-4);margin:-4px}
#tab-patterns  {background:rgba(243,236,255,0.4);border-radius:var(--r-lg);padding:var(--sp-4);margin:-4px}

/* Compare 셀렉터 */
.compare-selector{display:grid;grid-template-columns:1fr 40px 1fr;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-5)}
.compare-vs{text-align:center;font-family:var(--font-display);font-size:var(--fs-subtitle);font-weight:700;color:var(--text-muted);letter-spacing:0.08em}
.compare-select{background:var(--bg-elevated);border:1.5px solid var(--border-medium);border-radius:var(--r-lg);color:var(--text-primary);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-body);cursor:pointer;appearance:none;width:100%;font-family:var(--font-body);transition:all var(--tx-fast)}
.compare-select:focus{outline:none;border-color:var(--accent-amber);box-shadow:0 0 0 2px rgba(232,169,74,0.1)}

/* Compare 그리드 */
.compare-grid{display:grid;grid-template-columns:180px 1fr 1fr;gap:1px;background:var(--border-subtle);border-radius:var(--r-lg);overflow:hidden;margin-bottom:var(--sp-4)}
.cmp-header{background:#f4f6fc;padding:var(--sp-3) var(--sp-4);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted);font-family:var(--font-mono)}
.cmp-case-header{background:#eef2fc;padding:var(--sp-3) var(--sp-4);border-bottom:2px solid var(--border-medium)}
.cmp-case-id{font-family:var(--font-mono);font-size:var(--fs-body);font-weight:700;color:var(--accent-blue)}
.cmp-case-sub{font-size:var(--fs-small);color:var(--text-muted);margin-top:2px}
.cmp-row-label{background:#f9fafd;padding:var(--sp-3) var(--sp-4);font-size:var(--fs-body);font-weight:500;color:var(--text-secondary);display:flex;align-items:center;border-right:1px solid var(--border-subtle)}
.cmp-cell{background:#fff;padding:var(--sp-3) var(--sp-4);font-size:var(--fs-body);color:var(--text-primary);display:flex;align-items:center}
.cmp-cell.highlight{background:#fffcf0;color:var(--accent-amber);font-weight:600}

/* Delta 뱃지 */
.delta-badge{display:inline-flex;align-items:center;gap:2px;font-family:var(--font-mono);font-size:var(--fs-label);font-weight:700;padding:1px 5px;border-radius:100px}
.delta-up{background:rgba(232,90,74,0.18);color:var(--accent-red)}
.delta-down{background:rgba(74,232,144,0.15);color:var(--accent-green)}
.delta-same{background:rgba(255,255,255,0.05);color:var(--text-muted)}

/* Barrier Diff 테이블 (Analysis Panel 스타일) */
.bdiff-table{width:100%;border-collapse:collapse;margin-bottom:var(--sp-4)}
.bdiff-table th{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted);font-family:var(--font-mono);padding:var(--sp-2) var(--sp-3);border-bottom:1.5px solid var(--border-medium);text-align:left;background:#f9fafd}
.bdiff-table td{padding:var(--sp-3);border-bottom:1px solid var(--border-subtle);font-size:var(--fs-body);vertical-align:middle;background:#fff}
.bdiff-table tr:hover td{background:#f8f9fe}
/* 공통 실패 → 연한 레드 */
.bdiff-table tr.both-failed td{background:#fff5f5;border-bottom-color:#fecdcd}
.bdiff-table tr.both-failed td:first-child{border-left:3px solid #e05050}
/* 신규 실패(B만) → 연한 앰버 */
.bdiff-table tr.b-only td{background:#fffaf0;border-bottom-color:#fde8b5}
.bdiff-table tr.b-only td:first-child{border-left:3px solid #c48a2a}
/* 개선 → 연한 그린 */
.bdiff-table tr.improved td{background:#f5fdf5}
.bdiff-table tr.improved td:first-child{border-left:3px solid #3da86a}

.barrier-status-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:100px;font-size:var(--fs-small);font-weight:700}

/* Contribution Delta 바 */
.contrib-diff-row{display:grid;grid-template-columns:140px 1fr 64px 64px 80px;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:#fff;border:1px solid #e8ecf6;border-radius:var(--r-md);margin-bottom:var(--sp-2);transition:all var(--tx-fast);box-shadow:0 1px 4px rgba(60,80,140,0.04)}
.contrib-diff-bar-wrap{position:relative;height:8px;background:var(--bg-hover);border-radius:4px;overflow:visible}
.contrib-diff-bar-a{position:absolute;top:0;left:0;height:100%;border-radius:4px;transition:width var(--tx-slow)}
.contrib-diff-bar-b{position:absolute;bottom:-11px;left:0;height:6px;border-radius:4px;opacity:0.6;transition:width var(--tx-slow)}

/* 시정조치 Recurrence */
.recur-item{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4);background:#fff8f7;border:1px solid #fdc8c0;border-radius:var(--r-lg);margin-bottom:var(--sp-3)}
.recur-icon{width:32px;height:32px;border-radius:50%;background:#ffe4df;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:var(--fs-body)}
.recur-title{font-size:var(--fs-body);font-weight:700;color:var(--accent-red);margin-bottom:var(--sp-1)}
.recur-detail{font-size:var(--fs-body);color:var(--text-secondary);line-height:1.55;word-break:keep-all}

/* Timeline Overlay */
.tl-overlay-wrap{position:relative;padding-left:var(--sp-8)}
.tl-overlay-line{position:absolute;left:20px;top:0;bottom:0;width:2px;background:var(--border-medium);border-radius:1px}
.tl-overlay-item{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin-bottom:var(--sp-3);position:relative}
.tl-overlay-dot{position:absolute;left:-36px;top:14px;width:12px;height:12px;border-radius:50%;border:2px solid;background:var(--bg-deep)}
.tl-ov-card{background:#fff;border:1px solid #e4e9f6;border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-body);min-height:44px;box-shadow:0 1px 3px rgba(60,80,140,0.05)}
.tl-ov-card.match{border-color:#f5b0a8;background:#fff5f4}
.tl-ov-empty{background:#fafbfe;border:1px dashed #d4dcf0;border-radius:var(--r-md);padding:var(--sp-3);display:flex;align-items:center;justify-content:center;color:#b0bdd4;font-size:var(--fs-body);min-height:44px}

/* Compare 내러티브 (insight panel) */
.compare-insight{background:#f0f6ff;border:1px solid #c8daf8;border-left:3px solid var(--accent-blue);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5);margin-bottom:var(--sp-4)}
.compare-insight-title{font-size:var(--fs-label);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:0.06em;color:var(--accent-blue);margin-bottom:var(--sp-2)}
.compare-insight-text{font-size:var(--fs-body);color:var(--text-secondary);line-height:1.8;word-break:keep-all}

/* ══════════════════════════════════════════
   ★ Initial Intake Parser (IIP) — v6.8
      Step 1 상단: 비정형 텍스트 → 메타 자동 추출
══════════════════════════════════════════ */
.intake-panel{
  background:linear-gradient(135deg,#f8fffe 0%,#f0f7ff 100%);
  border:1.5px dashed #a8d4c8;border-radius:var(--r-xl);
  padding:var(--sp-5);margin-bottom:var(--sp-5);
  position:relative;overflow:hidden;
}
.intake-panel::before{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--accent-teal),var(--accent-blue));
}
.intake-header{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}
.intake-icon{width:36px;height:36px;border-radius:var(--r-lg);background:rgba(26,158,142,0.12);color:var(--accent-teal);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.intake-title{font-size:var(--fs-body);font-weight:700;color:#0e4f47}
.intake-subtitle{font-size:var(--fs-small);color:var(--text-muted);margin-top:2px}
.intake-beta{font-size:var(--fs-small);font-weight:800;padding:1px 7px;border-radius:100px;background:rgba(26,158,142,0.15);color:var(--accent-teal);border:1px solid rgba(26,158,142,0.3);margin-left:var(--sp-2);vertical-align:middle}
.intake-textarea{
  width:100%;min-height:88px;resize:vertical;
  background:#fff;border:1.5px solid #b8ddd8;border-radius:var(--r-lg);
  padding:var(--sp-3) var(--sp-4);font-size:var(--fs-body);font-family:var(--font-body);
  color:var(--text-primary);line-height:1.7;
  transition:border-color var(--tx-fast);outline:none;
  box-sizing:border-box;
}
.intake-textarea:focus{border-color:var(--accent-teal);box-shadow:0 0 0 3px rgba(26,158,142,0.08)}
.intake-textarea::placeholder{color:#a0b4b0;font-size:var(--fs-small)}
.intake-actions{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3)}
.intake-btn{
  display:flex;align-items:center;gap:var(--sp-2);
  padding:var(--sp-2) var(--sp-4);border-radius:var(--r-md);font-size:var(--fs-body);font-weight:700;
  background:rgba(26,158,142,0.1);border:1.5px solid rgba(26,158,142,0.35);color:var(--accent-teal);
  cursor:pointer;transition:all var(--tx-fast);font-family:var(--font-body);
}
.intake-btn:hover{background:rgba(26,158,142,0.18);border-color:var(--accent-teal)}
.intake-btn:disabled{opacity:0.4;cursor:not-allowed}
.intake-hint{font-size:var(--fs-label);color:var(--text-muted);margin-left:auto;line-height:1.5}

/* 추출 결과 미리보기 */
.intake-result{
  margin-top:var(--sp-4);padding:var(--sp-4);
  background:#fff;border:1px solid #b8ddd8;border-radius:var(--r-lg);
  animation:fadeUp var(--tx-normal) ease;
}
.intake-result-title{font-size:var(--fs-subtitle);font-weight:800;text-transform:uppercase;letter-spacing:0.06em;color:var(--accent-teal);margin-bottom:var(--sp-3)}
.intake-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--sp-3)}
.intake-field{background:#f5fffe;border:1px solid #cce8e4;border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3)}
.intake-field-label{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:0.04em;color:#4a8a82;font-weight:700;margin-bottom:2px}
.intake-field-val{font-size:var(--fs-body);font-weight:600;color:var(--text-primary)}
.intake-field-conf{font-size:var(--fs-small);color:var(--text-muted);margin-top:1px}
.intake-apply-btn{
  margin-top:var(--sp-3);width:100%;padding:var(--sp-3);
  background:rgba(26,158,142,0.1);border:1.5px solid rgba(26,158,142,0.4);
  border-radius:var(--r-md);color:var(--accent-teal);font-weight:700;font-size:var(--fs-body);
  cursor:pointer;transition:all var(--tx-fast);font-family:var(--font-body);
}
.intake-apply-btn:hover{background:rgba(26,158,142,0.2)}

/* ══════════════════════════════════════════
   ★ 시정조치 Approval Trace — v6.8
      시정조치 승인 흐름 + 감사 가능한 이력
══════════════════════════════════════════ */
.capa-approve-row{
  display:flex;align-items:center;gap:var(--sp-3);
  padding:var(--sp-3) var(--sp-4);
  background:#f8faff;border:1px solid #e0e8f8;
  border-radius:var(--r-md);margin-top:var(--sp-2);
  animation:fadeUp var(--tx-fast) ease;
}
.capa-approve-input{
  flex:1;background:#fff;border:1px solid #d4dcf0;border-radius:var(--r-md);
  padding:var(--sp-2) var(--sp-3);font-size:var(--fs-body);font-family:var(--font-body);
  color:var(--text-primary);outline:none;transition:border-color var(--tx-fast);
}
.capa-approve-input:focus{border-color:var(--accent-blue)}
.capa-approve-btn{
  padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);font-size:var(--fs-body);font-weight:700;
  cursor:pointer;transition:all var(--tx-fast);font-family:var(--font-body);border:1.5px solid;
  white-space:nowrap;
}
.capa-btn-approve{background:rgba(42,145,85,0.1);border-color:rgba(42,145,85,0.4);color:var(--accent-green)}
.capa-btn-approve:hover{background:rgba(42,145,85,0.2)}
.capa-btn-reject{background:rgba(201,64,64,0.08);border-color:rgba(201,64,64,0.3);color:var(--accent-red)}
.capa-btn-reject:hover{background:rgba(201,64,64,0.15)}

/* 승인 이력 뱃지 */
.capa-approval-badge{
  display:inline-flex;align-items:center;gap:4px;
  font-size:var(--fs-label);font-weight:700;padding:2px 8px;border-radius:100px;
  margin-left:var(--sp-2);vertical-align:middle;
}
.capa-badge-approved{background:#f0fdf4;color:#2a9155;border:1px solid #bbf7d0}
.capa-badge-rejected{background:#fff5f5;color:#c94040;border:1px solid #fcd4d4}
.capa-badge-pending-approval{background:#f0f6ff;color:#3b6fd4;border:1px solid #c8daf8}

/* 시정조치 이력 타임라인 */
.capa-history{margin-top:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:#fafbfe;border-radius:var(--r-md);border:1px solid #edf0fa}
.capa-history-item{display:flex;align-items:flex-start;gap:var(--sp-2);font-size:var(--fs-small);color:var(--text-muted);padding:2px 0}
.capa-history-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;margin-top:4px}
.capa-history-text{line-height:1.5}
.capa-lineage{transition:opacity .15s}
.capa-evidence-detail summary::-webkit-details-marker{display:none}
.capa-evidence-detail[open] .capa-evidence-arrow{transform:rotate(90deg)}
.capa-evidence-arrow{transition:transform .15s;flex-shrink:0}
/* ── Contribution 탭 ── */
.contrib-tabs{display:flex;gap:2px;padding:var(--sp-3) var(--sp-4) 0;border-bottom:1px solid var(--border-subtle);margin-bottom:0}
.contrib-tab{padding:7px 16px;font-size:var(--fs-small);font-weight:600;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;display:flex;align-items:center;gap:4px;transition:color .15s,border-color .15s;white-space:nowrap}
.contrib-tab:hover{color:var(--text-primary)}
.contrib-tab.active{color:var(--accent-teal);border-bottom-color:var(--accent-teal)}
.contrib-tab-panel{display:none}
.contrib-tab-panel.active{display:block}

/* 시정조치 테이블 hover */
.capa-tbl td{padding:var(--sp-3);border-bottom:1px solid #edf0fa;font-size:var(--fs-body);color:var(--text-secondary);vertical-align:top;background:#fff}
.capa-tbl tr:hover td{background:#f8f9fe}
      자동 서술 — Step 2 CCB 상단
══════════════════════════════════════════ */
/* ══════════════════════════════════════════
   ★ 분석결과 팝업 모달 — v6.9r
══════════════════════════════════════════ */
.analysis-modal-ov{position:fixed;inset:0;background:rgba(30,42,80,0.45);z-index:600;display:none;align-items:center;justify-content:center;padding:var(--sp-6);backdrop-filter:blur(6px)}
.analysis-modal-ov.open{display:flex}
.analysis-modal-box{background:#fff;border-radius:var(--r-2xl);width:100%;max-width:720px;max-height:88vh;overflow-y:auto;box-shadow:0 24px 64px rgba(30,42,80,0.22);animation:slideUp var(--tx-normal) ease}
.analysis-modal-hdr{position:sticky;top:0;background:#fff;padding:var(--sp-5) var(--sp-6) var(--sp-4);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;gap:var(--sp-3);border-radius:var(--r-2xl) var(--r-2xl) 0 0;z-index:2}
.analysis-modal-title{font-size:var(--fs-title);font-weight:800;color:var(--text-primary);flex:1}
.analysis-modal-close{width:36px;height:36px;border-radius:50%;border:none;background:#f0f2fa;color:var(--text-muted);font-size:var(--fs-body);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--tx-fast)}
.analysis-modal-close:hover{background:#e0e4f4;color:var(--text-primary)}
.analysis-modal-body{padding:var(--sp-6)}
.amodal-tabs{display:flex;gap:4px;background:#f0f2fa;border-radius:var(--r-lg);padding:4px;margin-bottom:var(--sp-5)}
.amodal-tab{flex:1;padding:var(--sp-3) var(--sp-3);border-radius:var(--r-md);font-size:var(--fs-body);font-weight:600;border:none;background:none;cursor:pointer;transition:all var(--tx-fast);color:var(--text-muted);font-family:var(--font-body)}
.amodal-tab.active{background:#fff;color:var(--text-primary);box-shadow:0 1px 6px rgba(60,80,140,0.12)}
.amodal-panel{display:none}.amodal-panel.active{display:block;animation:fadeUp var(--tx-normal) ease}
.result-dept-card{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);background:#f8f9fe;border:1px solid #e4e9f6;border-radius:var(--r-xl);margin-bottom:var(--sp-3)}
.result-dept-card.dominant{background:#fff8f0;border-color:#fde8b0;border-left:4px solid var(--accent-amber)}
.result-rank{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--fs-body);font-weight:800;flex-shrink:0}
.result-name{font-size:var(--fs-title);font-weight:700;color:var(--text-primary)}
.result-sub{font-size:var(--fs-label);color:var(--text-muted);margin-top:2px}
.result-pct{font-size:var(--fs-title);font-weight:800;font-family:var(--font-mono);margin-left:auto}
.result-dom-tag{font-size:var(--fs-label);font-weight:700;color:var(--accent-amber);display:block;margin-top:2px}
/* 분석 실행 버튼 */
.btn-analyze{
  width:100%;padding:var(--sp-4) var(--sp-6);
  background:linear-gradient(135deg,var(--accent-blue),#1e55b8);
  border:none;border-radius:var(--r-xl);color:#fff;
  font-size:var(--fs-body);font-weight:800;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:var(--sp-3);
  font-family:var(--font-body);margin-top:var(--sp-5);
  box-shadow:0 4px 20px rgba(59,111,212,0.3);
  transition:all var(--tx-fast);
}
.btn-analyze:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(59,111,212,0.4)}

/* ══════════════════════════════════════════
   ★ Scoring Narrative Engine (SNE) v6.7
  background:linear-gradient(135deg,#f5f8ff 0%,#fef9f0 100%);
  border:1px solid #d8e4f8;border-left:4px solid var(--accent-blue);
  border-radius:var(--r-xl);padding:var(--sp-5);margin-bottom:var(--sp-4);
  box-shadow:0 2px 12px rgba(59,111,212,0.06);
}
.sne-header{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}
.sne-icon{width:36px;height:36px;border-radius:var(--r-lg);background:rgba(59,111,212,0.1);color:var(--accent-blue);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sne-title{font-size:var(--fs-title);font-weight:700;color:#1e3a70}
.sne-subtitle{font-size:var(--fs-small);color:var(--text-muted);margin-top:2px}
.sne-generated{font-size:var(--fs-small);color:#8aabec;margin-left:auto;font-family:var(--font-mono)}
.sne-para{font-size:var(--fs-body);color:#2a3a5c;line-height:1.9;word-break:keep-all;margin-bottom:var(--sp-3)}
.sne-para:last-child{margin-bottom:0}
.sne-hl{background:rgba(59,111,212,0.08);color:#1e3a70;font-weight:700;padding:0 3px;border-radius:3px}
.sne-barrier-tag{display:inline-flex;align-items:center;gap:3px;font-size:var(--fs-body);font-weight:700;padding:1px 7px;border-radius:100px;margin:0 2px;vertical-align:middle}
.sne-barrier-failed {background:#fff0f0;color:#c94040;border:1px solid #fcd4d4}
.sne-barrier-partial{background:#fffbf0;color:#b87d2a;border:1px solid #fde8b0}
.sne-barrier-ok     {background:#f0fdf4;color:#2a9155;border:1px solid #bbf7d0}
.sne-conclusion{margin-top:var(--sp-4);padding:var(--sp-3) var(--sp-4);background:#fff;border:1px solid #c8daf8;border-radius:var(--r-lg);border-left:3px solid var(--accent-blue)}
.sne-conclusion-label{font-size:var(--fs-label);font-weight:800;text-transform:uppercase;letter-spacing:0.06em;color:var(--accent-blue);margin-bottom:var(--sp-1)}
.sne-conclusion-text{font-size:var(--fs-body);color:#1e3a70;line-height:1.75;word-break:keep-all;font-weight:500}
.sne-trace-section{margin-top:var(--sp-4);border-top:1px solid #e8ecf6;padding-top:var(--sp-4)}
.sne-trace-title{font-size:var(--fs-subtitle);font-weight:800;text-transform:uppercase;letter-spacing:0.06em;color:var(--accent-amber);margin-bottom:var(--sp-3)}
.sne-trace-item{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3);background:#fff;border:1px solid #e8ecf6;border-radius:var(--r-md);margin-bottom:var(--sp-2)}
.sne-trace-barrier{font-size:var(--fs-body);font-weight:700;width:130px;flex-shrink:0;color:var(--text-primary);line-height:1.4}
.sne-trace-arrow{color:var(--text-muted);font-size:var(--fs-body);flex-shrink:0;padding-top:1px}
.sne-trace-phil-name{font-size:var(--fs-body);font-weight:700;color:#92400e;margin-bottom:2px}
.sne-trace-text{font-size:var(--fs-body);color:var(--text-secondary);line-height:1.6;word-break:keep-all}
.sne-control-level{font-size:var(--fs-small);font-weight:700;padding:1px 6px;border-radius:100px;background:#fef3c7;color:#92400e;border:1px solid #fde68a;white-space:nowrap;margin-left:auto;flex-shrink:0}
.sne-latent-badge{font-size:var(--fs-small);font-weight:700;padding:1px 6px;border-radius:100px;background:#fef2f2;color:#c94040;border:1px solid #fecaca;margin-left:4px;flex-shrink:0}
.sne-empty{padding:var(--sp-5);text-align:center;color:var(--text-muted);font-size:var(--fs-body);line-height:1.7}

/* ══════════════════════════════════════════
   ★ Contribution Causality Bridge (CCB) v6.6
══════════════════════════════════════════ */
/* 브릿지 패널 (Step 2 하단) */
.ccb-panel{background:#fff;border:1px solid #e4e9f6;border-radius:var(--r-xl);overflow:hidden;margin-top:var(--sp-4)}
.ccb-panel-header{
  display:flex;align-items:center;gap:var(--sp-3);
  padding:var(--sp-3) var(--sp-4);
  background:linear-gradient(90deg,#f0f4ff 0%,#f8f9fe 100%);
  border-bottom:1px solid #e4e9f6;
}
.ccb-panel-title{font-size:var(--fs-body);font-weight:700;color:#2a3a5c}
.ccb-panel-sub{font-size:var(--fs-small);color:var(--text-muted);margin-left:auto}

/* 부서 → Barrier 카드 */
.ccb-dept-block{padding:var(--sp-4);border-bottom:1px solid #f0f2fa}
.ccb-dept-block:last-child{border-bottom:none}
.ccb-dept-header{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}
.ccb-dept-rank{
  width:22px;height:22px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:var(--fs-label);font-weight:800;font-family:var(--font-mono);
  flex-shrink:0;
}
.ccb-dept-name{font-size:var(--fs-body);font-weight:700;color:var(--text-primary)}
.ccb-dept-pct{
  font-family:var(--font-mono);font-size:var(--fs-body);font-weight:800;
  margin-left:auto;
}
.ccb-dept-score{font-size:var(--fs-label);color:var(--text-muted);font-family:var(--font-mono);margin-left:var(--sp-2)}

/* Barrier 연결 리스트 */
.ccb-barrier-list{display:flex;flex-direction:column;gap:var(--sp-2);margin-left:34px}
.ccb-barrier-item{
  display:flex;align-items:center;gap:var(--sp-3);
  padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);
  border:1px solid;font-size:var(--fs-body);position:relative;
}
.ccb-barrier-item.primary  {background:#fff5f5;border-color:#fcd4d4}
.ccb-barrier-item.secondary{background:#fffdf5;border-color:#fde8b0}
.ccb-barrier-item.ok       {background:#f5fdf5;border-color:#bbf7d0}
.ccb-barrier-item.unknown  {background:#f9fafd;border-color:#e4e9f6}
.ccb-link-type{
  font-size:var(--fs-small);font-weight:800;font-family:var(--font-mono);
  text-transform:uppercase;letter-spacing:0.04em;
  padding:1px 5px;border-radius:100px;flex-shrink:0;
}
.ccb-link-type.primary  {background:rgba(201,64,64,0.12);color:#c94040}
.ccb-link-type.secondary{background:rgba(184,125,42,0.12);color:#b87d2a}
.ccb-barrier-name{font-weight:600;color:var(--text-primary);flex:1}
.ccb-barrier-status{font-size:var(--fs-body);font-weight:700;flex-shrink:0}
.ccb-reason{
  grid-column:1/-1;font-size:var(--fs-small);color:var(--text-muted);
  line-height:1.55;margin-top:var(--sp-1);margin-left:var(--sp-3);
  word-break:keep-all;font-style:italic;
}

/* 브릿지 설명 없음 상태 */
.ccb-empty{padding:var(--sp-5);text-align:center;color:var(--text-muted);font-size:var(--fs-body)}

/* Step 2 → Step 3 이동 유도 */
.ccb-cta{
  display:flex;align-items:center;justify-content:space-between;
  padding:var(--sp-3) var(--sp-4);
  background:#f0f4ff;border-top:1px solid #e4e9f6;
  font-size:var(--fs-body);color:#2a3a5c;
}
.ccb-cta-btn{
  font-size:var(--fs-body);font-weight:700;padding:5px 14px;border-radius:var(--r-md);
  background:#dde8fb;border:1px solid #aec4f0;color:#2a55b8;
  cursor:pointer;transition:all var(--tx-fast);font-family:var(--font-body);
}
.ccb-cta-btn:hover{background:#c8daf8;border-color:#8aabec}

/* ── 안전공학 철학 패널 (Step 2 사이드) ── */
.phil-panel{background:#fffdf5;border:1px solid #fde8b0;border-radius:var(--r-xl);overflow:hidden;margin-top:var(--sp-4)}
.phil-panel-header{padding:var(--sp-3) var(--sp-4);background:linear-gradient(90deg,#fffbf0,#fffdf8);border-bottom:1px solid #fde8b0;display:flex;align-items:center;gap:var(--sp-2)}
.phil-panel-title{font-size:var(--fs-body);font-weight:700;color:#78350f}
.phil-item{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid #fef3c7}
.phil-item:last-child{border-bottom:none}
.phil-item-header{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-1);cursor:pointer}
.phil-item-icon{font-size:var(--fs-subtitle)}
.phil-item-name{font-size:var(--fs-body);font-weight:700;color:#92400e}
.phil-item-src{font-size:var(--fs-label);color:#b45309;margin-left:auto;font-style:italic}
.phil-item-desc{font-size:var(--fs-body);color:#78350f;line-height:1.65;word-break:keep-all}
.phil-criteria-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:var(--sp-2)}
.phil-criteria-tag{font-size:var(--fs-label);font-weight:700;padding:1px 7px;border-radius:100px;background:rgba(180,83,9,0.1);color:#92400e;border:1px solid rgba(180,83,9,0.2)}
.alert-layer{display:flex;flex-direction:column;gap:var(--sp-2)}
.alert-item{
  display:flex;align-items:flex-start;gap:var(--sp-3);
  padding:10px var(--sp-4);border-radius:var(--r-lg);
  border:1px solid;font-size:var(--fs-body);line-height:1.55;
  animation:fadeUp var(--tx-normal) ease;word-break:keep-all;
  position:relative;overflow:hidden;
}
.alert-item::before{
  content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
}
/* critical — 레드 */
.alert-critical{background:#fff5f5;border-color:#fcd4d4;color:#7f1d1d}
.alert-critical::before{background:#c94040}
.alert-critical .alert-icon{color:#c94040}
/* warning — 앰버 */
.alert-warning{background:#fffdf5;border-color:#fde8b0;color:#78350f}
.alert-warning::before{background:#b87d2a}
.alert-warning .alert-icon{color:#b87d2a}
/* info — 블루 */
.alert-info{background:#f0f6ff;border-color:#c8daf8;color:#1e3a70}
.alert-info::before{background:#3b6fd4}
.alert-info .alert-icon{color:#3b6fd4}
.alert-icon{flex-shrink:0;margin-top:1px;font-size:var(--fs-body)}
.alert-body{flex:1}
.alert-title{font-weight:700;font-size:var(--fs-label);margin-bottom:2px}
.alert-desc{font-size:var(--fs-body);opacity:0.85;line-height:1.5}
.alert-step-link{
  display:inline-flex;align-items:center;gap:3px;
  font-size:var(--fs-label);font-weight:700;margin-top:4px;
  padding:2px 8px;border-radius:100px;border:1px solid currentColor;
  opacity:0.7;cursor:pointer;transition:opacity var(--tx-fast);background:none;
  font-family:var(--font-body);color:inherit;
}
.alert-step-link:hover{opacity:1}
.alert-dismiss{
  flex-shrink:0;width:20px;height:20px;border-radius:50%;border:none;
  background:none;cursor:pointer;opacity:0.4;font-size:var(--fs-body);
  display:flex;align-items:center;justify-content:center;color:inherit;
  transition:opacity var(--tx-fast);padding:0;
}
.alert-dismiss:hover{opacity:0.9}
/* 접힘 버튼 */
.alert-collapse-btn{
  display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-label);
  color:var(--text-muted);background:none;border:none;cursor:pointer;
  padding:2px 0;margin-top:2px;font-family:var(--font-body);
  transition:color var(--tx-fast);
}
.alert-collapse-btn:hover{color:var(--text-secondary)}

/* ══════════════════════════════════════════
   ★ Progressive Disclosure — v6.5
══════════════════════════════════════════ */
.disclosure-wrap{margin-bottom:var(--sp-4)}
.disclosure-summary{
  display:flex;align-items:center;gap:var(--sp-3);
  padding:var(--sp-3) var(--sp-4);background:#fff;
  border:1px solid #e4e9f6;border-radius:var(--r-lg);
  cursor:pointer;transition:all var(--tx-fast);
  user-select:none;
}
.disclosure-summary:hover{border-color:#c8d4f0;background:#f8f9fe}
.disclosure-summary.open{border-color:#c8d4f0;border-radius:var(--r-lg) var(--r-lg) 0 0;background:#f8f9fe}
.disclosure-chevron{
  margin-left:auto;width:16px;height:16px;color:var(--text-muted);
  transition:transform var(--tx-fast);flex-shrink:0;
}
.disclosure-summary.open .disclosure-chevron{transform:rotate(180deg)}
.disclosure-title{font-size:var(--fs-body);font-weight:700;color:var(--text-primary)}
.disclosure-subtitle{font-size:var(--fs-label);color:var(--text-muted);margin-top:1px}
.disclosure-badge{
  font-size:var(--fs-label);font-weight:700;padding:2px 8px;border-radius:100px;
  font-family:var(--font-mono);margin-left:var(--sp-2);
}
.disclosure-body{
  border:1px solid #c8d4f0;border-top:none;
  border-radius:0 0 var(--r-lg) var(--r-lg);
  background:#fff;overflow:hidden;
  max-height:0;transition:max-height 0.35s cubic-bezier(0.4,0,0.2,1);
}
.disclosure-body.open{max-height:2400px}
.disclosure-body-inner{padding:var(--sp-4)}
/* Failure Archetype 카드 */
.archetype-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--sp-4);margin-bottom:var(--sp-4)}
.archetype-card{background:#fff;border:1px solid #e4e9f6;border-radius:var(--r-xl);overflow:hidden;transition:all var(--tx-fast);box-shadow:0 2px 10px rgba(60,80,140,0.06)}
.archetype-card:hover{border-color:#c8d4f0;transform:translateY(-2px);box-shadow:0 8px 24px rgba(60,80,140,0.12)}
.archetype-card-header{padding:var(--sp-4);display:flex;align-items:flex-start;gap:var(--sp-3);border-bottom:1px solid var(--border-subtle)}
.archetype-icon-wrap{width:40px;height:40px;border-radius:var(--r-lg);display:flex;align-items:center;justify-content:center;font-size:var(--fs-subtitle);flex-shrink:0}
.archetype-name{font-size:var(--fs-title);font-weight:700;color:var(--text-primary);margin-bottom:3px}
.archetype-desc{font-size:var(--fs-label);color:var(--text-muted);line-height:1.5;word-break:keep-all}
.archetype-card-body{padding:var(--sp-4);background:#fafbfe}
.archetype-stat-row{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) 0;border-bottom:1px solid #edf0fa;font-size:var(--fs-body)}
.archetype-stat-row:last-child{border-bottom:none}
.archetype-stat-label{color:var(--text-muted)}
.archetype-stat-val{font-family:var(--font-mono);font-weight:700}
.archetype-case-list{margin-top:var(--sp-3);display:flex;flex-wrap:wrap;gap:var(--sp-1)}
.archetype-case-chip{font-size:var(--fs-label);font-family:var(--font-mono);padding:2px 7px;border-radius:100px;background:#eef1fa;color:var(--text-secondary);border:1px solid #d4dcf0}

/* 시정조치 Effectiveness Matrix */
.eff-matrix{width:100%;border-collapse:collapse;margin-bottom:var(--sp-4)}
.eff-matrix th{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted);font-family:var(--font-mono);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-medium);text-align:left}
.eff-matrix td{padding:var(--sp-3);border-bottom:1px solid var(--border-subtle);font-size:var(--fs-body);color:var(--text-secondary);vertical-align:middle;background:#fff}
.eff-matrix tr:hover td{background:rgba(255,255,255,0.015)}
.eff-score-bar{display:flex;align-items:center;gap:var(--sp-2)}
.eff-bar-track{flex:1;height:6px;background:#e8ecf6;border-radius:3px;overflow:hidden;min-width:80px}
.eff-bar-fill{height:100%;border-radius:3px;transition:width var(--tx-slow)}
.eff-badge{display:inline-flex;align-items:center;gap:3px;font-size:var(--fs-label);font-weight:700;padding:2px 7px;border-radius:100px}

/* Barrier Drift Timeline */
.drift-chart-wrap{overflow-x:auto;padding-bottom:var(--sp-2)}
.drift-chart{display:flex;flex-direction:column;gap:var(--sp-3)}
.drift-row{display:grid;grid-template-columns:130px 1fr;align-items:center;gap:var(--sp-4);padding:var(--sp-2) 0;border-bottom:1px solid #edf0fa}
.drift-barrier-name{font-size:var(--fs-body);font-weight:600;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drift-timeline{display:flex;align-items:center;gap:3px;flex-wrap:nowrap}
.drift-dot{width:28px;height:28px;border-radius:50%;border:2px solid;display:flex;align-items:center;justify-content:center;font-size:var(--fs-small);font-weight:700;cursor:pointer;transition:all var(--tx-fast);flex-shrink:0;position:relative}
.drift-dot:hover{transform:scale(1.2);z-index:10}
.drift-dot-label{font-size:var(--fs-small);color:var(--text-muted);writing-mode:horizontal-tb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:52px}
.drift-connector{width:8px;height:2px;flex-shrink:0;border-radius:1px}
.drift-trend-badge{font-size:var(--fs-label);font-weight:700;padding:2px 7px;border-radius:100px;white-space:nowrap;margin-left:var(--sp-2)}

/* Pattern summary insight */
.pattern-insight{background:#f5f0ff;border:1px solid #d4c0f8;border-left:3px solid var(--accent-purple);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5);margin-bottom:var(--sp-5)}
.pattern-insight-title{font-size:var(--fs-label);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:0.06em;color:var(--accent-purple);margin-bottom:var(--sp-2)}
.pattern-insight-text{font-size:var(--fs-body);color:var(--text-secondary);line-height:1.8;word-break:keep-all}

/* ── 이력 로그 ── */
.audit-list{display:flex;flex-direction:column;max-height:220px;overflow-y:auto}
.audit-list::-webkit-scrollbar{width:3px}
.audit-list::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:2px}
.audit-entry{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border-subtle)}
.audit-entry:last-child{border-bottom:none}
.audit-time{font-family:var(--font-mono);font-size:var(--fs-small);color:var(--text-muted);white-space:nowrap;flex-shrink:0;padding-top:2px}
.audit-msg{font-size:var(--fs-label);color:var(--text-secondary);line-height:1.4;word-break:keep-all}
.audit-msg strong{color:var(--text-primary);font-weight:600}
.audit-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0;margin-top:6px}

/* ── 아코디언 ── */
.acc-item{background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);overflow:hidden;margin-bottom:var(--sp-2)}
.acc-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);cursor:pointer;user-select:none;gap:var(--sp-4)}
.acc-header:hover{background:var(--bg-hover)}
.acc-tag{background:rgba(58,142,245,0.1);border:1px solid rgba(58,142,245,0.22);color:var(--accent-blue);font-size:var(--fs-label);font-family:var(--font-mono);padding:2px var(--sp-2);border-radius:var(--r-sm);white-space:nowrap;flex-shrink:0;text-transform:uppercase}
.acc-title{font-size:var(--fs-body);font-weight:500;color:var(--text-primary)}
.acc-chev{color:var(--text-muted);transition:transform var(--tx-fast);flex-shrink:0}
.acc-item.open .acc-chev{transform:rotate(180deg)}
.acc-body{display:none;padding:0 var(--sp-4) var(--sp-4)}
.acc-item.open .acc-body{display:block}
.acc-body p{font-size:var(--fs-body);color:var(--text-secondary);line-height:1.75;word-break:keep-all}

/* ── 모달 ── */
.modal-ov{position:fixed;inset:0;background:rgba(30,42,80,0.35);z-index:500;display:none;align-items:center;justify-content:center;padding:var(--sp-6);backdrop-filter:blur(6px)}
.modal-ov.open{display:flex}
.modal-box{background:var(--bg-panel);border:1px solid var(--border-medium);border-radius:var(--r-2xl);width:100%;max-width:800px;max-height:88vh;overflow-y:auto;animation:slideUp var(--tx-normal) ease}
@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.modal-hdr{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-6);border-bottom:1px solid var(--border-subtle);position:sticky;top:0;background:var(--bg-panel);z-index:10}
.modal-ttl{font-size:var(--fs-title);font-weight:700;color:var(--text-primary)}
.modal-close{background:none;border:none;color:var(--text-muted);font-size:var(--fs-body);padding:var(--sp-1);border-radius:var(--r-sm);transition:all var(--tx-fast);cursor:pointer}
.modal-close:hover{color:var(--text-primary);background:var(--bg-elevated)}
.modal-body{padding:var(--sp-6)}

/* ── 저장/불러오기 ── */
.sess-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);margin-bottom:var(--sp-2);transition:all var(--tx-fast)}
.sess-row:hover{border-color:var(--border-medium)}
.sess-info{flex:1;min-width:0}
.sess-name{font-size:var(--fs-body);font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sess-meta{font-size:var(--fs-label);color:var(--text-muted);margin-top:2px;font-family:var(--font-mono)}
.sess-type-badge{font-size:var(--fs-label);font-weight:600;padding:2px 8px;border-radius:100px;white-space:nowrap;flex-shrink:0}

/* ── 보고서 ── */
.rpt-section{margin-bottom:var(--sp-6)}
.rpt-section-title{font-family:var(--font-mono);font-size:var(--fs-small);text-transform:uppercase;letter-spacing:0.06em;color:var(--accent-amber);margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border-subtle)}
.rpt-kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2) var(--sp-6)}
.rpt-kv{display:flex;flex-direction:column;gap:2px}
.rpt-k{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted)}
.rpt-v{font-size:var(--fs-body);color:var(--text-primary);font-family:var(--font-mono)}
.rpt-row{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-3);background:var(--bg-elevated);border-radius:var(--r-md);margin-bottom:var(--sp-2)}

/* ── 웨이트 편집기 ── */
.weight-row{display:grid;grid-template-columns:1fr 56px 160px 80px;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--r-md);margin-bottom:var(--sp-2);transition:all var(--tx-fast)}
.weight-row.modified{border-color:rgba(232,169,74,0.3);background:rgba(232,169,74,0.03)}
/* 배점 가중치 카드 — 논란 방지: 기본 숨김 (감사 목적으로만 활성화) */
#weightEditorCard{display:none!important}
.w-name{font-size:var(--fs-body);font-weight:600;color:var(--text-primary)}
.w-note{font-size:var(--fs-label);color:var(--text-muted);margin-top:2px}
.w-val{font-family:var(--font-mono);font-size:var(--fs-body);font-weight:700;color:var(--accent-amber);text-align:center}
.w-slider{width:100%;-webkit-appearance:none;appearance:none;height:4px;border-radius:2px;background:var(--bg-hover);outline:none;cursor:pointer}
.w-slider::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;border-radius:50%;background:var(--accent-amber);cursor:pointer;box-shadow:0 0 6px rgba(232,169,74,0.5)}
.w-slider::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:var(--accent-amber);cursor:pointer;border:none}
.w-reset{background:none;border:1px solid var(--border-subtle);border-radius:var(--r-sm);color:var(--text-muted);font-size:var(--fs-label);padding:2px var(--sp-2);transition:all var(--tx-fast);white-space:nowrap;cursor:pointer}
.w-reset:hover{color:var(--accent-amber);border-color:rgba(232,169,74,0.35)}

/* ── 유틸리티 ── */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:3px}
.hidden{display:none!important}

/* ── 모바일 ── */
@media(max-width:900px){
  .sidebar{transform:translateX(-260px)}
  .sidebar.open{transform:translateX(0)}
  .main-area{margin-left:0}
  .wizard-content{padding:var(--sp-4)}
  .capa-form{grid-template-columns:1fr 1fr}
  .tl-form{grid-template-columns:1fr 1fr}
  /* barrier-row grid 제거 — flex 구조와 충돌 */
  .ev-row{grid-template-columns:1fr}
  .weight-row{grid-template-columns:1fr 52px}
}
/* ══════════════════════════════════════════
   PDF / PRINT — Structured Report Engine
══════════════════════════════════════════ */
/* PDF 문서 레이아웃 변수 */
.pdf-doc{
  font-family:'Noto Sans KR','Malgun Gothic','Apple SD Gothic Neo',sans-serif;
  font-size:10pt;color:#1a2332;line-height:1.7;
  background:#fff;width:100%;
}
/* 표지 */
.pdf-cover{
  min-height:240px;background:linear-gradient(135deg,#3b4f8c 0%,#5a6fb8 100%);
  border-radius:8px;padding:36px 40px;color:#fff;margin-bottom:28px;
  page-break-after:avoid;
}
.pdf-cover-label{font-size:7pt;letter-spacing:0.12em;text-transform:uppercase;color:#e8a94a;margin-bottom:12px;font-weight:700}
.pdf-cover-id{font-size:22pt;font-weight:800;color:#e8edf2;margin-bottom:6px;line-height:1.2}
.pdf-cover-desc{font-size:10pt;color:#8fa3b8;margin-bottom:24px;line-height:1.6;max-width:560px}
.pdf-cover-chips{display:flex;flex-wrap:wrap;gap:6px}
.pdf-chip{font-size:7.5pt;font-weight:700;padding:3px 10px;border-radius:100px;border:1px solid}
/* 섹션 구조 */
.pdf-section{margin-bottom:24px;page-break-inside:avoid}
.pdf-section-title{
  font-size:7pt;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;
  color:#e8a94a;padding-bottom:6px;border-bottom:1.5px solid #e8a94a33;
  margin-bottom:12px;display:flex;align-items:center;gap:6px;
}
.pdf-section-title svg{opacity:0.7}
/* KV 그리드 */
.pdf-kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 32px}
.pdf-kv{display:flex;flex-direction:column;gap:2px;padding:8px 0;border-bottom:1px solid #e8edf222}
.pdf-k{font-size:7pt;text-transform:uppercase;letter-spacing:0.04em;color:#8fa3b8;font-weight:600}
.pdf-v{font-size:9.5pt;color:#1a2332;font-weight:500}
/* 기여도 행 */
.pdf-contrib-row{display:flex;align-items:center;gap:12px;padding:8px 10px;background:#f8fafc;border-radius:4px;margin-bottom:4px;border-left:3px solid}
.pdf-contrib-bar-track{flex:1;height:5px;background:#e2e8f0;border-radius:3px;overflow:hidden}
.pdf-contrib-bar-fill{height:100%;border-radius:3px}
/* Barrier 테이블 */
.pdf-barrier-table{width:100%;border-collapse:collapse;font-size:9pt}
.pdf-barrier-table th{font-size:7pt;letter-spacing:0.04em;text-transform:uppercase;color:#8fa3b8;padding:6px 8px;border-bottom:1.5px solid #e2e8f0;text-align:left;background:#f8fafc}
.pdf-barrier-table td{padding:7px 8px;border-bottom:1px solid #f1f5f9;vertical-align:middle}
.pdf-barrier-table tr:hover td{background:#f8fafc}
.pdf-status-pill{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:100px;font-size:7.5pt;font-weight:700}
/* 시정조치 테이블 */
.pdf-capa-table{width:100%;border-collapse:collapse;font-size:9pt}
.pdf-capa-table th{font-size:7pt;letter-spacing:0.04em;text-transform:uppercase;color:#8fa3b8;padding:6px 8px;border-bottom:1.5px solid #e2e8f0;text-align:left;background:#f8fafc}
.pdf-capa-table td{padding:7px 8px;border-bottom:1px solid #f1f5f9;vertical-align:top}
/* 타임라인 */
.pdf-timeline{display:flex;flex-direction:column;gap:0}
.pdf-tl-item{display:grid;grid-template-columns:52px 1fr;gap:8px;padding:7px 0;border-bottom:1px solid #f1f5f9}
.pdf-tl-time{font-family:'Share Tech Mono',monospace;font-size:8.5pt;color:#e8a94a;font-weight:700;padding-top:1px}
.pdf-tl-event{font-size:9pt;color:#1a2332}
.pdf-tl-note{font-size:8pt;color:#8fa3b8;margin-top:2px}
/* ENE 내러티브 */
.pdf-narrative{background:#f8fafc;border-left:3px solid #e8a94a;padding:14px 16px;border-radius:0 6px 6px 0;margin-bottom:8px}
.pdf-narrative-title{font-size:7.5pt;font-weight:800;text-transform:uppercase;letter-spacing:0.04em;color:#e8a94a;margin-bottom:6px}
.pdf-narrative-text{font-size:9pt;color:#334155;line-height:1.75}
/* Pattern Lab 요약 */
.pdf-archetype-row{display:flex;align-items:flex-start;gap:12px;padding:8px 10px;background:#f8fafc;border-radius:4px;margin-bottom:4px;border-left:3px solid #a06ef5}
.pdf-archetype-icon{font-size:14pt;line-height:1}
/* 면책 박스 */
.pdf-disclaimer{background:#fffbeb;border:1px solid #fbbf24;border-left:3px solid #e8a94a;border-radius:4px;padding:12px 14px;font-size:8pt;color:#78350f;line-height:1.6;margin-top:28px}
.pdf-disclaimer-title{font-weight:800;font-size:7.5pt;text-transform:uppercase;letter-spacing:0.04em;margin-bottom:4px;color:#92400e}
/* 페이지 구분 제어 */
.pdf-page-break{page-break-before:always;height:0;margin:0;padding:0}
.pdf-no-break{page-break-inside:avoid}
/* 헤더/푸터 (인쇄 시) */
@media print{
  @page{size:A4;margin:18mm 15mm 18mm 15mm}
  body *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  .pdf-doc{font-size:9.5pt}
}
@media print{
  .sidebar,.wizard-stepper,.topbar-actions,.modal-ov,.app-shell{display:none!important}
  #pdfPrintTarget{display:block!important}
}

/* ── 모바일 터치 최적화 ──────────────────────── */
/* ════════════════════════════════════════════
   모바일 대응 — 768px 이하 (태블릿/폰)
════════════════════════════════════════════ */
@media (max-width: 768px) {

  /* ── 전체 레이아웃 ── */
  .wizard-content { padding: var(--sp-3); }
  .two-col { grid-template-columns: 1fr; gap: var(--sp-3); }
  .score-sidebar { position: static; }
  .card-body { padding: var(--sp-3); }
  .card-header { padding: var(--sp-3) var(--sp-3) var(--sp-2); }

  /* ── 스텝 네비게이터 ── */
  .wizard-stepper {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    gap: 0;
    padding: 0 var(--sp-2);
    scrollbar-width: none;
  }
  .wizard-stepper::-webkit-scrollbar { display: none; }
  .step-item { min-width: 64px; font-size: var(--fs-small); padding: var(--sp-1) var(--sp-2); }
  .step-label { display: none; }
  .step-item.active .step-label { display: block; font-size: var(--fs-small); white-space: nowrap; }
  .step-circle { width: 26px; height: 26px; font-size: var(--fs-label); }
  .step-circle.active { width: 30px; height: 30px; }

  /* ── 입력 폼 ── */
  .meta-grid { grid-template-columns: 1fr !important; }
  .input, .select, textarea.input {
    font-size: 16px !important; /* iOS 자동확대 방지 */
    min-height: 44px;
  }
  .label { font-size: var(--fs-label); }

  /* ── 부서 칩 ── */
  .dept-chips { flex-wrap: wrap; gap: 8px; }
  .dept-chip {
    font-size: var(--fs-label);
    padding: 8px 14px;
    min-height: 44px;  /* 터치 타겟 */
    border-radius: 100px;
  }
  .dept-chip.na-btn { min-height: 44px; }

  /* ── 기준표 슬라이더 ── */
  .criterion-card { padding: var(--sp-3); margin-bottom: var(--sp-3); }
  .split-row { flex-wrap: wrap; gap: var(--sp-2); }
  .split-label { width: 100%; font-size: var(--fs-label); }
  .split-slider {
    width: 100%;
    height: 6px;
    -webkit-appearance: none;
    border-radius: 3px;
    background: var(--bg-hover);
    order: 2;
  }
  .split-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 26px; height: 26px;
    border-radius: 50%;
    background: var(--accent-blue);
    cursor: pointer;
    box-shadow: 0 1px 4px rgba(0,0,0,0.2);
  }
  .split-num {
    width: 64px !important;
    min-height: 40px;
    font-size: 16px !important;
    order: 3;
    text-align: center;
  }
  .split-sym { order: 4; line-height: 40px; }
  .split-total { font-size: var(--fs-label); margin-top: var(--sp-2); }

  /* ── 보호조치 버튼 — 모바일 전용 override ── */
  .barrier-row { flex-direction: column; align-items: stretch; gap: var(--sp-2); padding: var(--sp-3); }
  .barrier-name { flex: none; width: 100%; gap: var(--sp-1); }
  .barrier-label { font-size: var(--fs-body); font-weight: 600; color: var(--text-primary); margin-bottom: 2px; }
  .barrier-desc { font-size: var(--fs-label); }
  .barrier-controls { gap: 4px; flex-shrink: unset; width: 100%; }
  .barrier-btn { min-height: 44px; padding: 8px 10px; font-size: var(--fs-small); touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
  .barrier-btn:active { transform: scale(0.95); }

  /* ── 타임라인 ── */
  .tl-form-grid { grid-template-columns: 1fr !important; }
  .tl-card { padding: var(--sp-3); }

  /* ── 시정조치 ── */
  .capa-form-grid { grid-template-columns: 1fr !important; }
  .capa-row { flex-direction: column; gap: var(--sp-2); }

  /* ── 버튼 ── */
  button, .btn, .btn-primary, .btn-amber {
    min-height: 44px;
    font-size: var(--fs-body);
  }
  .btn-analyze {
    width: 100%;
    font-size: var(--fs-body);
    min-height: 52px;
    margin-top: var(--sp-3);
  }

  /* ── 결과 카드 ── */
  .dept-score-card { padding: var(--sp-3); }
  .score-header { flex-wrap: wrap; gap: var(--sp-2); }

  /* ── 헤더 ── */
  .app-header { padding: var(--sp-2) var(--sp-3); gap: var(--sp-2); flex-wrap: wrap; }
  .case-tabs { display: none; } /* 모바일에서 케이스탭 숨김 */
  .topbar-actions { gap: var(--sp-2); }
  .topbar-actions .btn { padding: 6px 10px; font-size: var(--fs-label); min-height: 36px; }

  /* ── sticky bar 본문 하단 여백 ── */
  .app-main { padding-bottom: 72px; }
  .wizard-content { padding-bottom: 80px; }
  /* 핵심: 가로 넘침 완전 차단 */
  .app-shell, .app-main, .wizard-content,
  .two-col, .card, .field, .step-panel { max-width: 100%; overflow-x: hidden; }
  .two-col { grid-template-columns: 1fr !important; }
  .wizard-content { padding: var(--sp-2) var(--sp-3) 80px !important; }
  /* 입력칸 너비 강제 */
  .input, .select, textarea { width: 100% !important; max-width: 100% !important; box-sizing: border-box !important; }
  /* preset 그리드 스크롤 허용 */
  .preset-grid { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)) !important; }
  .preset-card { min-width: 0; }
}

/* ════════════════════════════════════════════
   소형 폰 — 480px 이하
════════════════════════════════════════════ */
@media (max-width: 480px) {
  .app-header { padding: var(--sp-2); }
  .wizard-content { padding: var(--sp-2); }
  .card-body { padding: var(--sp-2); }
  .criterion-cat { font-size: var(--fs-small); }
  .criterion-q { font-size: var(--fs-body); }
  .dept-chip { font-size: var(--fs-label); padding: 7px 12px; }
  .barrier-btn { font-size: var(--fs-small); padding: 5px 8px; }
  .btn-analyze { font-size: var(--fs-body); min-height: 48px; }
}

/* ════════════════════════════════════════════
   터치 디바이스 — hover 없는 환경
════════════════════════════════════════════ */
@media (hover: none) {
  /* hover 효과 제거, 대신 active 피드백 */
  .dept-chip:hover { transform: none; }
  .btn:hover { transform: none; }
  .dept-chip:active { transform: scale(0.95); transition: transform 0.1s; }
  .btn:active, .btn-primary:active, .btn-amber:active { transform: scale(0.97); }
  .barrier-btn:active { transform: scale(0.95); }
  /* 탭 하이라이트 제거 */
  * { -webkit-tap-highlight-color: transparent; }
}
@media (max-width: 480px){
  .app-header{ padding:var(--sp-3) var(--sp-4); flex-wrap:wrap; gap:var(--sp-2); }
  .meta-grid{ grid-template-columns:1fr; }
}
@media (hover:none){
  .dept-chip:active{ transform:scale(0.96); transition:transform 0.1s; }
  .btn:active,.btn-primary:active{ transform:scale(0.97); }
}
/* iOS Safe Area */
.app-shell{ padding-bottom:env(safe-area-inset-bottom,0px); }
.wizard-stepper{ padding-bottom:max(var(--sp-2),env(safe-area-inset-bottom,0px)); }
.modal-box{ padding-bottom:max(var(--sp-6),env(safe-area-inset-bottom,0px)); }

/* ── Sticky Action Bar (모바일 하단 고정) ─────── */
.sticky-action-bar{
  display:none; /* 모바일에서만 표시 */
  position:fixed;bottom:0;left:0;right:0;z-index:900;
  background:rgba(255,255,255,0.96);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-top:1px solid var(--border-medium);
  padding:var(--sp-2) var(--sp-4);
  padding-bottom:max(var(--sp-2),env(safe-area-inset-bottom,0px));
  display:flex;align-items:center;gap:var(--sp-3);
}
.sticky-btn{
  min-width:40px;min-height:40px;border-radius:var(--r-lg);
  display:flex;align-items:center;justify-content:center;gap:6px;
  border:1px solid var(--border-medium);background:var(--bg-card);
  color:var(--text-primary);font-size:var(--fs-label);font-weight:600;
  cursor:pointer;transition:all var(--tx-fast);padding:0 var(--sp-3);
  -webkit-tap-highlight-color:transparent;
}
.sticky-btn:active{transform:scale(0.94);background:var(--bg-hover);}
.sticky-btn-primary{background:var(--accent-blue);color:#fff;border-color:var(--accent-blue);flex:1;}
.sticky-btn-primary:active{background:#2a55b8;}
.sticky-step-info{flex:1;text-align:center;min-width:0;}
.sticky-step-num{font-size:var(--fs-small);color:var(--text-muted);display:block;line-height:1}
.sticky-step-label{font-size:var(--fs-label);font-weight:700;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
@media (max-width: 768px){
  .sticky-action-bar{ display:flex !important; }
  /* 본문 하단에 sticky bar 높이만큼 패딩 추가 */
  .app-main{ padding-bottom:80px; }
}
@media (min-width: 769px){
  .sticky-action-bar{ display:none !important; }
  /* barrier-btn — 데스크탑 기본값은 전역 정의에서 처리됨 */
}
/* ════════════════════════════════════════════
   Typography Normalization
   모든 컴포넌트 폰트 크기를 scale 변수로 통일
════════════════════════════════════════════ */

/* 카드 제목 */
.card-title { font-size: var(--fs-title); font-weight: 700; }
.card-title .card-icon { flex-shrink: 0; }

/* 섹션/카테고리 레이블 */
.criterion-cat,
.barrier-cat-header { font-size: var(--fs-label); font-weight: 700; letter-spacing: 0.04em; color: var(--text-muted); }

/* 기준 질문 */
.criterion-q { font-size: var(--fs-body); font-weight: 600; line-height: 1.5; color: var(--text-primary); margin: 4px 0; }

/* 기준 설명/팁 */
.criterion-tip { font-size: var(--fs-label); color: var(--text-secondary); line-height: 1.5; margin-top: 4px; }

/* 폼 레이블 */
.label { font-size: var(--fs-label); font-weight: 600; color: var(--text-secondary); margin-bottom: 4px; }

/* 폼 입력 — 모바일 16px 보장 */
.input, .select, textarea.input {
  font-size: max(16px, var(--fs-body));
  line-height: 1.5;
}

/* 부서칩 */
.dept-chip { font-size: var(--fs-label); }

/* 보호조치 */
.barrier-label { font-size: var(--fs-body); font-weight: 600; }
.barrier-desc  { font-size: var(--fs-label); color: var(--text-secondary); }
/* barrier-btn font-size → 전역 정의(.barrier-btn)에서 관리 */

/* 타임라인 */
.tl-event { font-size: var(--fs-body); }
.tl-meta  { font-size: var(--fs-small); color: var(--text-muted); }

/* 점수 카드 */
.score-name { font-size: var(--fs-body); font-weight: 600; }
.score-raw  { font-size: var(--fs-small); color: var(--text-muted); }
.qual-badge { font-size: var(--fs-small); }

/* 상단 바 */
.case-id-display { font-size: var(--fs-title); font-weight: 700; }
.case-status-badge { font-size: var(--fs-small); }

/* 면책 문구 */
.disclaimer-text { font-size: var(--fs-label); color: var(--text-muted); }

/* ════════════════════════════════════════════
   검토 의견 렌더 UX — Phase A
   앵커 헤더 + Reveal 애니메이션
════════════════════════════════════════════ */

/* 앵커 진입 애니메이션 */
@keyframes anchorReveal {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}
#inlineAnalysisAnchor {
  animation: anchorReveal 0.22s ease both;
  contain: layout;
}

/* 앵커 헤더 — 렌더 위치 명확화 */
.analysis-anchor-header {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-3);
  margin-bottom: var(--sp-2);
  background: rgba(45,212,192,0.06);
  border: 1px solid rgba(45,212,192,0.18);
  border-radius: var(--r-md);
  font-size: var(--fs-label);
  font-weight: 700;
  color: var(--accent-teal);
  letter-spacing: 0.03em;
}
.analysis-anchor-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent-teal);
  flex-shrink: 0;
  animation: pulse 2s ease-in-out infinite;
}
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.4; }
}
.analysis-anchor-meta {
  margin-left: auto;
  font-size: var(--fs-small);
  font-family: var(--font-mono);
  color: var(--text-muted);
  font-weight: 400;
}

/* 버튼 내부 아이콘 정렬 */
.btn-analyze {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
}
.btn-analyze-chevron {
  transition: transform 0.2s ease;
}
.btn-analyze-icon {
  flex-shrink: 0;
}

/* ════════════════════════════════════════════
   저장 UX — 저장 위치 안내 토스트 보강
════════════════════════════════════════════ */
.toast-save-detail {
  display: block;
  font-size: var(--fs-small);
  color: rgba(255,255,255,0.7);
  margin-top: 3px;
  font-family: var(--font-mono);
}

/* ════════════════════════════════════════════
   Phase B.8 — Semantic Layer
   보호조치 기여도 카드 (contribution, not causation)
   순서: L2(보호조치명) → 기여도 배지 → L3(설명, expand-on-demand)
════════════════════════════════════════════ */

/* 섹션 컨테이너 */
.cause-section {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  margin-top: var(--sp-3);
}
.cause-section.cause-empty {
  padding: var(--sp-2) var(--sp-3);
  background: rgba(138,154,184,0.04);
  border: 1px solid rgba(138,154,184,0.15);
  border-radius: var(--r-md);
}
.cause-empty-msg {
  font-size: var(--fs-small);
  color: var(--text-muted);
}

/* 섹션 헤더 */
.cause-section-header {
  font-size: var(--fs-small);
  font-weight: 700;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding-bottom: var(--sp-1);
}
.cause-section-note {
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
  opacity: 0.7;
}

/* 개별 기여도 카드 */
.cause-card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: var(--sp-2) var(--sp-3);
  border-radius: var(--r-md);
  border: 1px solid;
  border-left-width: 3px;
}

/* L2: 보호조치명 행 (주 정보) */
.cause-l2 {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
}
.cause-l2-icon {
  font-size: var(--fs-label);
  font-weight: 700;
  flex-shrink: 0;
}
.cause-l2-name {
  font-size: var(--fs-label);
  font-weight: 700;
  color: var(--text-primary);
  flex: 1;
  min-width: 0;
}

/* 기여도 배지 — "기여 N%", 인과 아님을 명확히 */
.cause-contrib-badge {
  display: inline-block;
  font-size: var(--fs-small);
  font-family: var(--font-mono);
  font-weight: 700;
  padding: 1px 6px;
  border-radius: var(--r-sm);
  border: 1px solid;
  background: rgba(255,255,255,0.06);
  white-space: nowrap;
  margin-left: auto;
}

/* L3: 설명 노트 — 기본 1줄 clamp, expand 후 전체 */
.cause-l3 {
  font-size: var(--fs-small);
  color: var(--text-muted);
  line-height: 1.5;
  word-break: keep-all;
  /* 기본: 1줄 clamp */
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  transition: all 0.18s ease;
}
.cause-l3.cause-l3-open {
  display: block;          /* clamp 해제 */
  overflow: visible;
  -webkit-line-clamp: unset;
}
/* fallback 텍스트 구분 — 약간 더 연하게 */
.cause-l3.cause-l3-fallback {
  opacity: 0.6;
  font-style: italic;
}

/* expand 토글 버튼 */
.cause-expand-btn {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  background: none;
  border: none;
  font-size: var(--fs-small);
  color: var(--text-muted);
  cursor: pointer;
  padding: 0;
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 2px;
  font-family: var(--font-body);
  transition: color 0.15s;
}
.cause-expand-btn:hover {
  color: var(--text-secondary);
}

/* fallback 배지 — 표준 설명임을 명시 (감사/법무 구분) */
.cause-fallback-badge {
  display: inline-block;
  font-size: 10px;
  font-weight: 600;
  color: var(--text-muted);
  background: rgba(138,154,184,0.10);
  border: 1px solid rgba(138,154,184,0.25);
  border-radius: var(--r-sm);
  padding: 1px 5px;
  margin-left: var(--sp-2);
  vertical-align: middle;
  white-space: nowrap;
  letter-spacing: 0.02em;
}

/* 기여도 배지 툴팁 — title 속성 보조 (CSS ::after 모바일 불가, title만 사용) */
.cause-contrib-badge {
  cursor: help; /* 툴팁 가능함을 암시 */
}

/* overflow 노트 */
.score-cause-overflow {
  font-size: var(--fs-small);
  color: var(--text-muted);
  padding: var(--sp-1) 0;
  font-style: italic;
}

/* 날짜+시간 컨테이너 */
.datetime-group {
  display: grid;
  grid-template-columns: 1fr 145px;
  gap: var(--sp-2);
  width: 100%;
}
.datetime-group .input {
  width: 100%;
  min-width: 0;
}

/* 메타 그리드 — 2컬럼 통일 */
.meta-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-3);
}
.meta-grid .field-full {
  grid-column: 1 / -1;
}

/* ════════════════════════════════════════════
   Button Overflow Fix (Issue #3)
════════════════════════════════════════════ */

/* 보호조치 버튼 그룹 */
/* ════════════════════════════════════════════
   Barrier Button — Desktop First (단일 소스)
   모바일 override는 @media(max-width:768px)에만
════════════════════════════════════════════ */
.barrier-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  flex-shrink: 0;
  width: 360px; /* Desktop: 버튼 4개 고정 폭 */
}
.barrier-btn {
  /* Desktop 기준 — 텍스트 완전 표시 */
  flex: 1 1 auto;
  min-width: 72px;        /* '정상 작동' 4글자 최소 보장 */
  max-width: none;        /* 데스크탑에서 잘림 없음 */
  padding: 6px 12px;
  font-size: var(--fs-label);
  font-family: var(--font-body);
  font-weight: 500;
  text-align: center;
  white-space: nowrap;
  cursor: pointer;
  border: 1.5px solid var(--border-medium);
  border-radius: var(--r-lg);
  background: var(--bg-card);
  color: var(--text-secondary);
  transition: all 0.15s;
  user-select: none;
  box-sizing: border-box;
}
.barrier-btn:hover { background: var(--bg-hover); border-color: var(--border-medium); }
.barrier-btn:active { transform: scale(0.97); background: var(--bg-hover); }
.barrier-btn.active.ok      { background:#edf7ed; border-color:#2a9155; color:#1a6b3a; font-weight:700; }
.barrier-btn.active.partial { background:#fef8e7; border-color:#b87d2a; color:#7a4f0a; font-weight:700; }
.barrier-btn.active.failed  { background:#fdecea; border-color:#c0392b; color:#8b1a1a; font-weight:700; }
.barrier-btn.active.na      { background:rgba(139,155,170,0.12); border-color:#6b8099; color:#3a5068; font-weight:700; }


/* ════════════════════════════════════════════
   Analysis Result Fix (Issue #4)
   검토의견 인라인 렌더 — 안정적 배치
════════════════════════════════════════════ */
#inlineAnalysisResult {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  overflow: hidden;
  /* 레이아웃 밀림 방지 */
  contain: layout;
}
#inlineAnalysisResult .card {
  margin-bottom: 0;
}

/* ════════════════════════════════════════════
   App Header Clarity (Issue #6)
════════════════════════════════════════════ */
.main-topbar {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-2) var(--sp-4);
  border-bottom: 1px solid var(--border-subtle);
  background: var(--bg-card);
  min-height: 52px;
  flex-wrap: wrap;
}
.case-id-display {
  font-size: var(--fs-title);
  font-weight: 700;
  color: var(--accent-amber);
  letter-spacing: 0.02em;
}
/* 버전 표시 최소화 — footer로 위임 */
#versionFooter {
  font-size: var(--fs-small);
  color: rgba(160,170,190,0.5);
  pointer-events: none;
  user-select: none;
}

/* ════════════════════════════════════════════
   Analysis Render Stability (Issue #4)
════════════════════════════════════════════ */
/* 결과 영역 — 나타날 때 레이아웃 밀림 없음 */
#inlineAnalysisResult[style*="block"] {
  animation: fadeIn 0.2s ease;
}
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* btn-analyze — step-2 전체 너비 */
.btn-analyze {
  width: 100%;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-2);
}

/* step-panel 선언은 L158 전역 정의에 통합됨 (중복 제거) */

/* ════════════════════════════════════════════
   Mobile Overflow Final (모든 컨테이너)
════════════════════════════════════════════ */
@media (max-width: 768px) {
  .meta-grid { grid-template-columns: 1fr !important; }
  .datetime-group { grid-template-columns: 1fr 140px !important; }
  /* barrier-btn 모바일 override는 L1027 블록에 통합됨 */
  #inlineAnalysisResult { margin-top: var(--sp-3); }
  .main-topbar { padding: var(--sp-2) var(--sp-3); }
  .case-id-display { font-size: var(--fs-body); }
}

/* 저장 버튼 글로우 */
.save-glow {
  animation: saveGlow 1.5s ease;
}
@keyframes saveGlow {
  0%   { box-shadow: 0 0 0 0 rgba(45,212,192,0); background: var(--accent-teal); }
  30%  { box-shadow: 0 0 0 8px rgba(45,212,192,0.4); background: var(--accent-teal); color: #fff; }
  100% { box-shadow: 0 0 0 0 rgba(45,212,192,0); }
}

/* step-1 날짜 입력 카드 — native datepicker 팝업을 위해 overflow 허용 */
#step-1 .card:first-child { overflow: visible; }
#step-1 .card:first-child .card-body { overflow: visible; }

/* ── CAPA 모바일 카드형 레이아웃 ── */
/* 모바일: 카드 표시, 테이블 숨김 */
@media (max-width: 768px) {
  .capa-tbl-desktop { display: none !important; }
  .capa-cards { display: flex; flex-direction: column; gap: var(--sp-3); }
}
/* 데스크탑: 테이블 표시, 카드 숨김 */
@media (min-width: 769px) {
  .capa-cards { display: none !important; }
  .capa-tbl-desktop { display: table; }
}

.capa-card {
  background: var(--surface-secondary);
  border: 1px solid var(--border-subtle);
  border-radius: 10px;
  padding: var(--sp-3) var(--sp-4);
  position: relative;
  border-left: 3px solid var(--border-medium);
}
.capa-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--sp-2);
  gap: var(--sp-2);
}
.capa-card-num {
  font-family: var(--font-mono);
  font-size: var(--fs-small);
  color: var(--text-muted);
}
.capa-card-badges {
  display: flex;
  gap: var(--sp-2);
  flex-wrap: wrap;
  align-items: center;
}
.capa-card-action {
  font-size: var(--fs-body);
  color: var(--text-primary);
  margin-bottom: var(--sp-2);
  word-break: keep-all;
  line-height: 1.5;
}
.capa-card-action input.input {
  width: 100%;
  font-size: var(--fs-body);
  padding: 6px 10px;
  margin-top: 4px;
}
.capa-card-meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2) var(--sp-4);
  font-size: var(--fs-small);
  color: var(--text-muted);
  margin-bottom: var(--sp-2);
}
.capa-card-meta-item {
  display: flex;
  align-items: center;
  gap: 4px;
}
.capa-card-meta-label {
  font-weight: 600;
  color: var(--text-muted);
}
.capa-card-footer {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sp-2);
  margin-top: var(--sp-2);
  padding-top: var(--sp-2);
  border-top: 1px solid var(--border-subtle);
}
.capa-card-approve {
  flex: 1;
}
.capa-card-approve .capa-approve-row {
  flex-direction: column;
  align-items: stretch;
  gap: var(--sp-2);
  margin-top: var(--sp-2);
}
.capa-card-approve .capa-approve-input {
  width: 100%;
}
.capa-card-approve .capa-approve-btn {
  width: 100%;
}
.capa-card-del {
  flex-shrink: 0;
  padding: 4px;
}
.capa-card-lineage {
  font-size: var(--fs-small);
  color: var(--text-muted);
  margin-bottom: var(--sp-1);
}
