:root{
  /* 디자인 토큰 정렬: gopass.pen 변수(SSOT)의 정확한 값으로 맞춤 (2026-07-13). */
  --bg:#f4f6fb;
  --bg-soft:#eef2fb;
  --card:#ffffff;
  --card-2:#f8fafc;
  --text:#111827;
  --muted:#5b6577;
  --text-secondary:#4b5563;
  --line:#e5e7eb;
  --line-strong:#d4d8e2;
  --sidebar:#0f172a;
  --sidebar-item:#94a3b8;
  --primary:#2563eb;
  --primary-700:#1d4ed8;
  --primary-soft:#eff4ff;
  --danger:#dc2626;
  --danger-soft:#fee2e2;
  --ok:#16a34a;
  --ok-soft:#dcfce7;
  --warn:#d97706;
  --warn-soft:#fef3c7;
  --shadow:0 12px 30px rgba(12,20,40,.07);
  --shadow-soft:0 1px 2px rgba(12,20,40,.04),0 10px 26px rgba(12,20,40,.05);
  --radius:16px;
  --radius-sm:12px;
  --font-code:"Inter","Segoe UI",Arial,sans-serif;
}
.no-margin{margin:0!important}.space-top-sm{margin-top:12px!important}.space-top-md{margin-top:16px!important}.is-hidden{display:none!important}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:"Noto Sans KR",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:14px;background:var(--bg);color:var(--text);line-height:1.5}
a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}
:where(a,button,input,select,textarea,summary):focus-visible{outline:3px solid rgba(37,99,235,.42);outline-offset:3px}
button,.button{min-height:44px}
.topbar{height:68px;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);border-bottom:1px solid rgba(203,213,225,.8);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:20;box-shadow:0 4px 18px rgba(15,23,42,.04)}
.brand{display:inline-flex;align-items:center;gap:10px;color:var(--text)!important;font-size:18px;font-weight:700;margin-left:0!important;letter-spacing:-.02em}.brand:hover{text-decoration:none}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;background:var(--primary);color:#fff}.brand-text{white-space:nowrap}
.topnav{display:flex;align-items:center;gap:8px}.topnav a{color:#344054;margin-left:0;padding:9px 12px;border-radius:999px;font-weight:500;font-size:14px}.topnav a:hover{background:var(--primary-soft);color:var(--primary);text-decoration:none}.topnav .nav-logout{color:#7f1d1d;background:#fff5f5}.container{max-width:1220px;margin:30px auto;padding:0 20px}.flash-wrap{margin-bottom:18px}.flash{padding:13px 15px;border:1px solid #dbe4ff;border-radius:14px;margin-bottom:8px;background:#eef2ff;box-shadow:var(--shadow-soft)}.flash.error{background:var(--danger-soft);border-color:#ffd4d4;color:var(--danger)}.flash.success{background:var(--ok-soft);border-color:#bbf7d0;color:var(--ok)}
.card{background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:var(--radius);padding:24px;margin-bottom:24px}.soft-card{background:#fff}.surface-blue{background:var(--primary);color:#fff;border:0}.surface-blue .muted,.surface-blue p{color:rgba(255,255,255,.84)}
h1{margin:0 0 8px;font-size:31px;line-height:1.2;letter-spacing:-.04em}h2{font-size:20px;margin:0 0 12px;letter-spacing:-.025em}h3{font-size:16px;margin:0 0 10px}.muted{color:var(--muted)}
/* 스크린 리더 전용 — 시각적으로 숨기되 리더는 읽는다(라벨 시각 표기가 없는 인라인 폼용). */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.eyebrow{display:flex;width:fit-content;align-items:center;gap:6px;margin-bottom:6px;font-size:11px;line-height:16px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}.surface-blue .eyebrow{color:#dbeafe}.hint{margin-top:18px;background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:14px;font-size:14px}.compact-hint{font-size:13px}
label{display:block;font-weight:600;font-size:13px;line-height:19px;margin:0 0 8px;color:var(--text-secondary)}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff;font:inherit;line-height:18px;height:44px;color:var(--text);transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px rgba(36,107,254,.12)}textarea{font-family:inherit;resize:vertical}.form-stack{display:grid;gap:18px}.form-field{display:grid;gap:0}.button,button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:12px;padding:11px 17px;background:#fff;color:var(--text);font-family:inherit;font-size:14px;line-height:20px;font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,background .12s ease,border-color .12s ease}.button:hover,button:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(15,23,42,.08);text-decoration:none}.primary{background:var(--primary);border-color:transparent;color:#fff!important}.light-button{background:#fff;color:var(--primary)!important;border-color:rgba(255,255,255,.6)}.block-button{width:100%}.large-button{min-height:50px;padding:13px 18px;font-size:15px}.actions{display:flex;justify-content:flex-end}.actions-row{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}.compact-actions{margin:0}.small-button{padding:7px 10px;font-size:13px;white-space:nowrap}
.small-button svg{width:14px;height:14px;flex:0 0 auto}
/* 관리자 첫 화면의 이동 버튼 — 시안 Q9yxq 는 전부 아이콘 + 흰 버튼이다. */
.admin-nav-row .button svg{width:16px;height:16px;flex:0 0 auto}
/* 선택된 필터 탭 (시안 xWmEL) */
.filter-tabs .active-filter{background:var(--text);border-color:var(--text);color:#fff}
/* 표 안의 액션 버튼은 접히면 '답/변' 처럼 세로로 깨진다 */
.table-wrap td .button{white-space:nowrap}
/* 진단명 관리의 키워드·KCD (시안 D98Sy1) — 키워드는 맨 목록, KCD 는 낱개 배지 */
.keyword-list{display:flex;flex-direction:column;gap:2px;max-width:280px}
.keyword-list span{overflow-wrap:anywhere}
.kcd-list{display:flex;flex-direction:column;align-items:flex-start;gap:4px;max-width:140px}
.kcd-list .badge{margin-right:0;border:1px solid var(--line);border-radius:6px;font-family:var(--font-code);font-weight:400}
.kcd-list .badge.neutral{background:var(--card-2)}
#kcd_patterns{font-family:var(--font-code)}
/* 손해사정 진단명/문의 표는 행이 여러 줄(설명·키워드·KCD)이라 시안(D98Sy1)처럼 셀을 상단 정렬한다. 단일행 표는 전역 middle 유지. */
.rows-top td{vertical-align:top}
/* CSV 등록 버튼 + 옆 안내 (시안 v06nEh) */
.import-submit-row{justify-content:flex-start;align-items:center;gap:14px}
.import-submit-row button svg{width:16px;height:16px;flex:0 0 auto}
/* 헤더 안내는 라벨과 값이 한 줄 (시안 v06nEh) */
.info-strip>div{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.info-strip>div p{margin:0}.strong-link{font-weight:700;color:var(--primary)}small{font-size:12px}.error-text{color:var(--danger)}
.page-head,.page-hero{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}.page-hero{padding:28px;border-radius:16px;background:var(--surface,#fff);border:1px solid var(--line)}.page-hero h1{font-size:26px;line-height:38px;letter-spacing:-.02em;margin:0 0 6px}.page-hero p{max-width:none;margin:0;color:var(--text-secondary)}.section-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.section-title-row p{margin:2px 0 0}.grid-two{display:grid;grid-template-columns:1.1fr .9fr;gap:20px}.analysis-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);gap:20px;align-items:start}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px}.full{grid-column:1/-1}.mini-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
/* 버전 + 제목 2필드짜리 — 3열 기본값이면 제목이 2/3 폭에 갇힌다. 시안 d50YJW 는 1 : 2.3. */
.mini-grid.template-meta-grid{grid-template-columns:minmax(0,1fr) minmax(0,2.3fr);gap:16px}.step-heading{display:flex;gap:13px;align-items:flex-start;padding-top:4px}.step-heading h2{margin-bottom:2px}.step-badge{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:34px;height:34px;border-radius:12px;background:var(--primary-soft);color:var(--primary);font-weight:700}.upload-step,.consent-step{padding-top:18px;border-top:1px dashed var(--line)}.consent-box{background:#f8fbff;border:1px solid var(--line);border-radius:14px;padding:14px!important}.sticky-actions{padding-top:6px}
.auth-layout{display:grid;grid-template-columns:1.05fr 440px;gap:22px;align-items:stretch;max-width:1040px;margin:60px auto}.auth-hero{padding:38px;display:flex;flex-direction:column;justify-content:center;min-height:420px}.auth-hero h1{font-size:38px}.auth-hero p{font-size:16px;max-width:520px}.feature-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}.feature-list span{display:inline-flex;padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);font-weight:600;font-size:13px}.login-card{max-width:none;margin:0}.auth-card{padding:32px;align-self:center}.auth-card>p{line-height:20px;margin:18px 0 0}.auth-card form{margin-top:18px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.stats-four{grid-template-columns:repeat(4,1fr)}.stats-five{grid-template-columns:repeat(5,1fr)}.stat-card,.stats .card{background:var(--surface,#fff);border:1px solid var(--line);border-radius:16px;padding:20px}.stat-card span,.stats span{display:block;color:var(--muted);font-weight:500;font-size:13px}.stat-card strong,.stats strong{display:block;margin-top:14px;font-size:30px;letter-spacing:-.02em}.dashboard-stats{margin-top:-4px}
.customer-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:28px}.customer-hero h1{font-size:34px}/* 배지 4개(동의·PDF·분석·문의)를 한 줄에 — 동의는 라벨 길이만큼 늘고 나머지는 내용 폭(시안 NM1LR 93/50/49/49). */
.customer-quick-stats{display:flex;gap:10px}.customer-quick-stats div{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.20);border-radius:16px;padding:12px;text-align:center}.customer-quick-stats span{display:block;font-size:12px;font-weight:600;color:rgba(255,255,255,.76)}.customer-quick-stats strong{display:block;font-size:26px}.analysis-panel-card{position:sticky;top:88px}.panel-kicker{display:inline-flex;padding:5px 9px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:12px;font-weight:600;margin-bottom:8px}.profile-select-field{padding:0;border:0;background:transparent}.premium-sub-options{margin:0;padding:16px;border:1px solid #cfe0ff;border-radius:16px;background:linear-gradient(180deg,#f8fbff,#fff)}.analysis-submit-wrap{margin-top:6px}.analysis-submit-button{width:100%;min-height:50px;font-size:15px}.info-strip{display:flex;gap:14px;align-items:flex-start;margin:0 0 20px;padding:16px 18px;border:1px solid #dbeafe;border-radius:18px;background:#eef6ff;color:#1e3a8a}.info-strip p{margin:3px 0 0;color:#375985}.upload-list{display:grid;gap:12px}.upload-row{display:grid;grid-template-columns:1fr auto;align-items:center;padding:13px;border:1px dashed #cfd9e7;border-radius:14px;margin:0}.upload-row.drop-zone{grid-template-columns:auto 1fr auto;gap:13px;cursor:pointer;background:#fff;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease,transform .12s ease}.upload-row.drop-zone:hover,.upload-row.drop-zone.drag-over{border-color:var(--primary);background:#f8fbff;box-shadow:0 0 0 4px rgba(36,107,254,.09);transform:translateY(-1px)}.upload-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:14px;background:#eff6ff;color:var(--primary);font-weight:700;font-size:12px}.upload-label{display:flex;flex-direction:column;gap:4px}.upload-file-name{font-size:13px;color:var(--muted);font-weight:600;word-break:break-all}.file-input{display:none}.upload-button{white-space:nowrap}.refined-upload-list{grid-template-columns:1fr}
.checkbox{display:flex;align-items:flex-start;gap:10px;font-weight:600}.checkbox input{width:auto;height:auto;margin-top:3px}.checkbox-row{display:flex;align-items:center;gap:10px;font-weight:600;cursor:pointer}.checkbox-row input{width:auto;flex:0 0 auto;margin:0}.checkbox-row>span{flex:1 1 auto}.radio-row{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 12px}.radio-pill{display:inline-flex;align-items:center;gap:8px;margin:0;padding:10px 14px;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;font-weight:600}.radio-pill input{width:auto}.radio-pill:has(input:checked){border-color:var(--primary);background:#eef6ff;color:var(--primary)}
.table-card{padding:0;overflow:hidden}.table-card>.section-title-row,.table-card>h2,.table-card>p{padding:22px 24px 0}.table-card>.section-title-row+ .table-wrap{margin-top:6px}.table-wrap{width:100%;overflow:auto}.table-wrap table{min-width:760px}table{width:100%;border-collapse:separate;border-spacing:0}th,td{padding:13px 14px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-size:12px;letter-spacing:.02em;color:#526176;background:#f8fbff;font-weight:600;white-space:nowrap}tbody tr:hover{background:#fbfdff}.vertical th{width:260px}.empty{text-align:center;color:var(--muted);padding:34px}.badge{display:inline-flex;align-items:center;border-radius:999px;background:#eef2ff;color:#344054;padding:4px 9px;font-size:12px;font-weight:600;margin-right:4px;line-height:1.3;white-space:nowrap}.badge.neutral{background:#f3f6fb;color:#4b5563}.badge.success{background:var(--ok-soft);color:var(--ok)}.badge.failed{background:var(--danger-soft);color:var(--danger)}.badge.pending{background:var(--warn-soft);color:var(--warn)}.badge.general{background:#f3f4f6;color:#374151}.badge.customer{background:var(--primary-soft);color:var(--primary)}.badge.danger{background:#fff1f2;color:#be123c}.clickable-row:hover{background:#f8fbff}.mini-pre{white-space:pre-wrap;font-family:inherit;background:#f8fafc;border-radius:10px;padding:8px;margin:0;max-width:280px}
.warning,.notice-card{background:var(--warn-soft)}.notice-card{display:flex;gap:14px;align-items:flex-start;border-color:#fde68a}/* 연한 배경 + 진한 아이콘 (02 §9 규칙). stroke 는 시안(#d97706, 대비 2.86)보다 진하게 잡아 3:1 을 넘긴다. */
.notice-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:12px;background:var(--warn-soft);color:#9a5800;font-weight:700;flex:0 0 auto}
.notice-icon svg{width:19px;height:19px}.notice-card h2{margin-bottom:4px}.notice-card p{margin:4px 0;color:#6b4e16}.result-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:28px}.result-meta-grid{display:grid;grid-template-columns:1fr 2fr 1fr;gap:14px;margin-bottom:20px}.meta-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:var(--shadow-soft)}.meta-card span{display:block;color:var(--muted);font-weight:600;font-size:12px}.meta-card strong{display:block;margin-top:5px}.rule-card{background:linear-gradient(180deg,#fff,#f8fbff)}.rule-box{white-space:pre-wrap;background:#f8fafc;border:1px solid #e5e7eb;border-radius:14px;padding:16px;line-height:1.65;margin:0;color:#334155}
.result-list{margin:0;padding-left:18px}.result-list li{margin-bottom:12px}.result-list p{margin:6px 0 0;color:#374151}.nested{display:grid;gap:10px}.nested-row{padding:8px 0;border-bottom:1px dashed #e5e7eb}.nested-row:last-child{border-bottom:0}.disclosure-section{padding:0;overflow:hidden}.disclosure-section summary{display:flex;align-items:center;gap:10px;justify-content:space-between;list-style:none;cursor:pointer;padding:20px 22px;font-weight:700;font-size:18px}.disclosure-section summary::-webkit-details-marker{display:none}.summary-hint{margin-left:auto;font-size:13px;font-weight:700;color:var(--muted)}.summary-arrow,.group-arrow{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:18px;font-weight:700;transition:transform .15s ease}.disclosure-section[open]>summary .summary-arrow{transform:rotate(180deg)}.disclosure-table{border-top:1px solid var(--line)}.disclosure-table{table-layout:fixed}.disclosure-table tr{position:relative}.disclosure-table.vertical th{position:sticky;top:92px;z-index:4;width:260px;min-width:260px;padding:20px 18px;font-size:28px;line-height:1.2;font-weight:700;text-align:center;vertical-align:middle;color:#1f2d5c;background:linear-gradient(180deg,#f7faff,#eef4ff);border-right:1px solid var(--line);letter-spacing:-.02em}.disclosure-table.vertical td{padding:18px 22px;background:#fff}.disclosure-table.vertical th .label-inner{display:flex;align-items:center;justify-content:center;min-height:100%}.result-group{border:1px solid var(--line);border-radius:14px;background:#fbfdff;margin:6px 0 12px;overflow:hidden}.result-group>summary{list-style:none;cursor:pointer}.result-group>summary::-webkit-details-marker{display:none}.result-group-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:11px 13px;background:#f8fafc;border-bottom:1px solid var(--line)}.group-arrow{margin-left:auto;width:24px;height:24px}.result-group[open] .group-arrow{transform:rotate(180deg)}.grouped-detail{padding:10px 14px 6px 30px}.grouped-detail-wrap{padding:10px 14px 6px}.grouped-detail-wrap .grouped-detail{padding-top:6px}.badge.disease-badge,.badge.disease-code-badge{background:#f0fdf4;color:#166534}.badge.disease-badge{white-space:normal;line-height:1.5;margin-top:3px}.badge.disease-code-badge{white-space:nowrap}.disease-detail-box{margin:10px 0 8px;padding:10px 12px;border:1px solid #bbf7d0;border-radius:12px;background:#f7fff9;color:#14532d;line-height:1.55}.disease-detail-box strong{display:block;margin-bottom:6px;color:#166534}.disease-detail-box ul{margin:0;padding-left:18px}.disease-detail-box li{margin:3px 0}.disease-detail-box p{margin:0!important;color:#14532d!important}.result-group-head .disease-code-badge{margin-left:4px}
.loss-report{border-color:#fed7aa;background:#fffaf5}.section-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.claim-alert{border:1px solid #fed7aa;border-radius:14px;background:#fff;margin:12px 0;overflow:hidden}.claim-alert>summary{display:flex;align-items:center;gap:10px;padding:14px 16px;cursor:pointer;list-style:none;font-size:16px}.claim-alert>summary::-webkit-details-marker{display:none}.claim-alert[open] .summary-arrow{transform:rotate(180deg)}.claim-alert-body{border-top:1px solid #fed7aa;padding:16px}.claim-message{font-weight:700;color:#9a3412}.inquiry-form{margin-top:16px;border-top:1px dashed #fed7aa;padding-top:14px;display:grid;gap:10px}.question-box{white-space:pre-wrap;background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:14px;line-height:1.6}
/* 시안 ETilK 의 문의 본문은 연파랑 채움(테두리 없음) — 관리자 답변 화면 한정 */
.question-box.highlight{background:var(--primary-soft);border:0;margin-top:14px}
/* 문의 상세 메타 타일 (시안 ETilK·daybW — 회색 라운드 타일 가로 배열) */
.kv-tiles{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 14px}
.kv-tile{flex:1 1 160px;min-width:0;background:#f8fafc;border-radius:12px;padding:12px 14px}
.kv-tile>span{display:block;font-size:12px;color:var(--muted);font-weight:600;margin-bottom:2px}
.kv-tile>strong{display:block;overflow-wrap:anywhere}.general-inquiry-box{border:1px solid var(--line);border-radius:16px;background:#fbfdff;overflow:hidden}.general-inquiry-box>summary,.loss-report-toggle>summary{display:flex;align-items:center;gap:12px;justify-content:space-between;list-style:none;cursor:pointer;font-weight:600;font-size:15px}.general-inquiry-box>summary{padding:0}.general-inquiry-box>summary::-webkit-details-marker,.loss-report-toggle>summary::-webkit-details-marker{display:none}.general-inquiry-box[open] .summary-arrow,.loss-report-toggle[open]>.summary-arrow,.loss-report-toggle[open]>summary .summary-arrow{transform:rotate(180deg)}.plain-inquiry-form{padding:16px;border-top:1px solid var(--line);margin-top:0}.loss-report-toggle{padding:0;overflow:hidden}.loss-report-toggle>summary{padding:20px 22px}.loss-report-body{border-top:1px solid #fed7aa;padding:18px 22px}.always-inquiry-form{background:#fff;border:1px dashed #fdba74;border-radius:14px;padding:14px;margin-top:16px}.customer-inquiry-card .inquiry-form{border-top:0}.compact-box{margin-top:0}.large-box{font-size:15px;line-height:1.65;white-space:pre-wrap}.answer-box{background:#ecfdf3;border:1px solid #bbf7d0;border-radius:12px;padding:14px}.reply-waiting{border-color:#fde68a;background:#fffbeb}.reply-done{border-color:#bbf7d0;background:#f7fffb}
.result-tabs{margin-top:20px}.tablist{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto}.tab{flex:0 0 auto;padding:12px 16px;border:0;border-bottom:3px solid transparent;background:transparent;color:var(--muted);font:inherit;font-weight:600;cursor:pointer}.tab[aria-selected="true"]{border-bottom-color:var(--primary);color:var(--primary)}.tab:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.tabpanel{padding-top:20px}.tabpanel>.card:first-child{margin-top:0}
.inline-form{display:flex;gap:10px;align-items:center}.inline-form input,.inline-form select{width:auto;min-width:180px}
/* 보험사 등록(관리자 홈)은 시안(생성 폼)처럼 입력이 카드 폭 전체로 늘어난다. */
.insurer-form input{flex:1 1 auto}
/* 상품 관리 툴바: 좌측 [전체 보험사][필터] · 우측 [CSV 일괄등록] (design N0Xzj Toolbar space-between) */
.product-toolbar{justify-content:space-between;flex-wrap:wrap;gap:12px}.toolbar-left{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.product-toolbar .button svg,.product-toolbar button svg{width:15px;height:15px}.sub-options{margin:14px 0;padding:14px;border:1px solid #d7e2f3;border-radius:12px;background:#f8fbff}.sub-options h3{margin-top:0;font-size:1rem}

/* 2026-07-19 Pencil 재대조(#18): 관리자 생성·필터 폼은 카드 가용 폭을 사용한다. */
.account-create-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;margin-top:16px}
.account-create-form input{width:100%;min-width:0}
.audit-filter-form{display:grid;grid-template-columns:minmax(150px,1fr) auto minmax(150px,1fr) minmax(220px,1.5fr) auto auto}
.audit-filter-form input{width:100%;min-width:0}
@media(max-width:1050px){.auth-layout,.analysis-layout{grid-template-columns:1fr}.analysis-panel-card{position:static}.stats-five{grid-template-columns:repeat(2,1fr)}.result-meta-grid{grid-template-columns:1fr}.customer-quick-stats{display:grid;grid-template-columns:repeat(4,1fr);width:100%}.customer-hero,.result-hero{align-items:flex-start;flex-direction:column}.mini-grid{grid-template-columns:1fr}.auth-hero{min-height:auto}.auth-hero h1{font-size:32px}}
@media(max-width:800px){.container{margin:20px auto;padding:0 14px}.topbar{height:auto;min-height:64px;padding:10px 14px;gap:10px;align-items:flex-start;flex-direction:column}.topnav{width:100%;overflow-x:auto;padding-bottom:2px}.topnav a{white-space:nowrap;font-size:13px;padding:8px 10px}.brand-text{font-size:16px}.grid-two,.form-grid,.stats,.stats-four,.stats-five{grid-template-columns:1fr}.page-head,.page-hero{display:block}.page-hero{padding:22px}.page-hero .actions-row{margin-top:14px}.upload-row.drop-zone{grid-template-columns:auto 1fr}.upload-button{grid-column:1/-1;width:100%}.vertical th{width:auto;display:block}.vertical td{display:block}.disclosure-table.vertical th{position:static;top:auto;width:auto;min-width:0;font-size:20px;padding:16px 14px;text-align:center}.table-card>.section-title-row{padding:18px 18px 0}.disclosure-section summary,.loss-report-toggle>summary{align-items:flex-start;flex-direction:column}.summary-hint{margin-left:0}.compact-actions{margin-top:12px}.auth-layout{margin:20px auto}.auth-hero,.auth-card{padding:24px}.result-hero{padding:24px}.customer-hero{padding:24px}.surface-blue h1{font-size:28px}.small-button{width:100%}.section-head{display:block}}
@media(max-width:520px){h1{font-size:26px}h2{font-size:18px}.customer-quick-stats{grid-template-columns:1fr 1fr 1fr}.customer-quick-stats div{padding:10px}.customer-quick-stats strong{font-size:22px}.badge{margin-bottom:4px}.upload-row.drop-zone{grid-template-columns:1fr}.upload-icon{display:none}}

@media(max-width:800px){.sidenav a{min-width:44px;min-height:44px;justify-content:center}.table-wrap td{overflow-wrap:anywhere}.page-head .actions-row{width:100%}
  /* 필터·생성 폼: min-width:180px 입력이 나란히 서면 390px 에서 페이지가 가로로 밀린다 — 접고 폭을 풀어준다. */
  .inline-form{flex-wrap:wrap}
  .inline-form input,.inline-form select{min-width:0;flex:1 1 150px}
}

/* 설계사 목록의 모바일 카드 전환 — Pencil wlns0/pFr0F. 관리자 표는 기존 가로 스크롤 유지. */
@media(max-width:800px){
  .table-wrap:has(.responsive-data-table){overflow:visible;padding:12px}
  .table-wrap .responsive-data-table{display:block;min-width:0}
  .responsive-data-table thead{display:none}
  .responsive-data-table tbody{display:grid;gap:12px}
  .responsive-data-table tr{display:grid;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 4px 12px rgba(15,23,42,.04)}
  .responsive-data-table td{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:7px 0;border:0;text-align:right}
  .responsive-data-table td::before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:600;text-align:left}
  .responsive-data-table td[data-label="고객"]{padding:0 0 10px;border-bottom:1px solid var(--line);text-align:left}
  .responsive-data-table td[data-label="고객"]::before{display:none}
  .responsive-data-table .mobile-row-action{padding-top:12px;justify-content:flex-end;border-top:1px dashed var(--line)}
  .responsive-data-table .mobile-row-action::before{display:none}
  .responsive-data-table .row-actions{width:100%;display:grid;grid-template-columns:repeat(3,1fr)}
  .responsive-data-table .row-actions .button{width:100%;padding-inline:6px}
}

.danger-button{background:var(--danger);border-color:transparent;color:#fff!important;box-shadow:0 10px 18px rgba(220,38,38,.16)}
.error-page{min-height:calc(100vh - 124px);display:flex;align-items:center;justify-content:center;padding:32px 0}
.error-card{width:min(560px,100%);display:flex;flex-direction:column;align-items:center;text-align:center;padding:48px}
.error-card h1{font-size:24px;margin-top:4px}.error-card .actions-row{justify-content:center;margin-bottom:0}
.error-icon{display:flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:18px;margin-bottom:4px}
.error-icon svg{width:36px;height:36px}.error-icon.danger{background:var(--danger-soft);color:var(--danger)}.error-icon.warning{background:var(--warn-soft);color:var(--warn)}
.error-code{font-size:13px;font-weight:700;letter-spacing:.1em}.error-code.danger{color:var(--danger)}.error-code.warning{color:var(--warn)}
@media(max-width:760px){.error-page{min-height:auto;padding:20px 0}.error-card{padding:32px 22px}}

/* Dashboard card-list layout */
.list-section{padding:24px;overflow:hidden}.list-section-head{padding:0!important;margin-bottom:18px}.customer-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.customer-tile{display:flex;flex-direction:column;gap:16px;min-height:196px;padding:18px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,#fff,#f8fbff);box-shadow:0 8px 18px rgba(15,23,42,.04);color:var(--text);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.customer-tile:hover{border-color:#aac6ff;box-shadow:0 16px 30px rgba(36,107,254,.11);transform:translateY(-2px);text-decoration:none}.customer-tile-head{display:flex;align-items:center;gap:12px}.customer-avatar{display:flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:16px;background:linear-gradient(135deg,var(--primary),#64a7ff);color:#fff;font-weight:700;font-size:18px;box-shadow:0 10px 20px rgba(36,107,254,.18)}.customer-name{display:block;font-size:19px;letter-spacing:-.02em;color:var(--text)}.customer-sub{display:block;margin-top:2px;color:var(--muted);font-size:13px;font-weight:500}.tile-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.tile-metrics div{padding:12px;border:1px solid #e4ebf5;border-radius:14px;background:#fff}.tile-metrics span{display:block;color:var(--muted);font-size:12px;font-weight:600}.tile-metrics strong{display:block;margin-top:3px;font-size:18px;color:#1f2a44}.tile-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:13px;border-top:1px dashed #d9e3f0;color:var(--muted);font-size:13px;font-weight:500}.tile-footer strong{color:var(--primary);white-space:nowrap}.inquiry-card-list{display:grid;gap:14px}.inquiry-tile{padding:18px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 8px 18px rgba(15,23,42,.04);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.inquiry-tile:hover{border-color:#c5d7f6;box-shadow:0 14px 28px rgba(15,23,42,.07);transform:translateY(-1px)}.inquiry-tile-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.badge-row{display:flex;flex-wrap:wrap;gap:6px}.inquiry-tile-top time{color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}.inquiry-tile-body h3{font-size:17px;margin-bottom:8px}.inquiry-meta-line{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;font-weight:600}.inquiry-meta-line span{display:inline-flex;align-items:center;border-radius:999px;background:#f3f6fb;color:#526176;padding:3px 8px;font-size:12px}.inquiry-question{margin:12px 0 0;color:#344054;line-height:1.65}.answer-preview{margin-top:12px;padding:12px 13px;border-radius:14px;border:1px solid var(--line);background:#f8fafc}.answer-preview span{display:block;font-size:12px;font-weight:700;margin-bottom:4px}.answer-preview p{margin:0;color:#344054}.success-preview{background:#f7fffb;border-color:#bbf7d0}.success-preview span{color:var(--ok)}.waiting-preview{background:#fffbeb;border-color:#fde68a}.waiting-preview span{color:var(--warn)}.inquiry-tile-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:14px;padding-top:14px;border-top:1px dashed #e0e7f1}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;padding:36px 18px;border:1px dashed #cbd6e4;border-radius:18px;background:#fbfdff;color:var(--muted)}.empty-state[hidden]{display:none}.empty-state strong{color:var(--text);font-size:16px}.empty-state p{margin:0 0 8px}.empty-icon{display:flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:16px;background:var(--primary-soft);color:var(--primary);font-weight:700;font-size:22px}.wide-empty{grid-column:1/-1}@media(max-width:800px){.list-section{padding:18px}.customer-card-grid{grid-template-columns:1fr}.inquiry-tile-top{flex-direction:column}.inquiry-tile-top time{white-space:normal}.inquiry-tile-actions{justify-content:stretch}.inquiry-tile-actions .button{width:100%}}

/* 관리자 표는 Pencil처럼 카드 좌우·하단까지 이어진다. 제목/폼 패딩은 유지한다. */
.list-section>.table-wrap{width:calc(100% + 48px);margin:18px -24px -24px}
.list-section>.table-wrap:first-child{margin-top:-24px}
.table-card .wide-empty,.dashboard-accordion .wide-empty{border-style:solid;background:#f8fafc}
.analysis-history-hero .eyebrow{color:var(--primary)}

@media(max-width:900px){
  .account-create-form,.audit-filter-form{display:flex;flex-wrap:wrap}
  .account-create-form input,.audit-filter-form input{flex:1 1 220px}
}
@media(max-width:800px){
  .list-section>.table-wrap{width:calc(100% + 36px);margin-right:-18px;margin-bottom:-18px;margin-left:-18px}
  .list-section>.table-wrap:first-child{margin-top:-18px}
}

/* Dashboard accordion + list layout refinement */
.dashboard-accordion{padding:0;overflow:hidden}.dashboard-accordion>summary{list-style:none;cursor:pointer}.dashboard-accordion>summary::-webkit-details-marker{display:none}.dashboard-accordion-summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 24px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fff,#f8fbff)}.dashboard-accordion-summary h2{margin:0 0 6px}.dashboard-accordion-summary p{margin:0}.dashboard-accordion[open]>.dashboard-accordion-summary .summary-arrow{transform:rotate(180deg)}.dashboard-accordion-body{padding:18px 20px 20px}.customer-list-wrap,.inquiry-list-wrap{display:grid;gap:12px}.customer-list-row{display:grid;grid-template-columns:minmax(200px,1fr) minmax(390px,1.5fr) minmax(120px,.55fr) auto;align-items:center;gap:18px;padding:16px 18px;border:1px solid var(--line);border-radius:16px;background:#fff;color:var(--text);box-shadow:0 6px 16px rgba(15,23,42,.035);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.customer-list-row:hover{border-color:#aac6ff;box-shadow:0 14px 26px rgba(36,107,254,.09);transform:translateY(-1px);text-decoration:none}.customer-list-main{display:flex;align-items:center;gap:12px}.small-avatar{width:42px;height:42px;border-radius:14px;flex:0 0 auto}.customer-list-metrics{display:flex;flex-wrap:wrap;gap:8px}.customer-list-metrics span{display:inline-flex;align-items:center;gap:5px;padding:7px 10px;border:1px solid #e4ebf5;border-radius:999px;background:#f8fbff;color:#526176;font-size:13px;font-weight:600}.customer-list-metrics b{color:var(--text)}.customer-list-date{display:grid;gap:2px;color:var(--muted);font-size:12px;font-weight:600}.customer-list-date strong{color:var(--text);font-size:14px}.row-action{justify-self:end;color:var(--primary);font-size:13px;font-weight:700;white-space:nowrap}.inquiry-list-row{padding:16px 18px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 6px 16px rgba(15,23,42,.035)}.inquiry-list-topline{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.inquiry-list-topline time{color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}.inquiry-list-content{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(260px,1fr) minmax(260px,1fr);gap:12px;align-items:stretch}.inquiry-list-title h3{margin:0 0 8px;font-size:17px}.inquiry-list-preview{padding:12px 13px;border:1px solid #e4ebf5;border-radius:14px;background:#f8fafc}.inquiry-list-preview span{display:block;margin-bottom:5px;color:#526176;font-size:12px;font-weight:700}.inquiry-list-preview p{margin:0;color:#344054;line-height:1.55}.reply-done-preview{background:#f7fffb;border-color:#bbf7d0}.reply-done-preview span{color:#0c7a37}.reply-waiting-preview{background:#fffbeb;border-color:#fde68a}.reply-waiting-preview span{color:#9a5800}.inquiry-list-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;padding-top:12px;border-top:1px dashed #e0e7f1}@media(max-width:980px){.customer-list-row{grid-template-columns:1fr;gap:12px}.row-action{justify-self:start}.customer-list-date{grid-template-columns:auto auto;justify-content:start;gap:8px}.inquiry-list-content{grid-template-columns:1fr}.inquiry-list-topline{flex-direction:column}.inquiry-list-topline time{white-space:normal}.dashboard-accordion-summary{padding:18px}.dashboard-accordion-body{padding:14px}.inquiry-list-actions{justify-content:stretch;flex-direction:column}.inquiry-list-actions .button{width:100%}}


/* Consent workflow */
.consent-flow-preview{display:flex;align-items:center;gap:10px}.flow-step{display:flex;align-items:center;gap:8px;color:#697386;font-weight:700}.flow-step span{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:999px;background:#e8eef8;color:#526176}.flow-step.active span{background:var(--primary);color:#fff}.flow-step.active strong{color:var(--primary)}.flow-line{height:2px;flex:1;background:#dbe6f5}.consent-notice-box{background:var(--primary-soft);color:var(--primary);border-radius:16px;padding:14px 16px;font-weight:600;margin-bottom:20px}.consent-status-card{display:flex;align-items:center;justify-content:space-between;gap:18px}.consent-status-card.waiting{border-color:#fde68a;background:#fffbeb}.consent-status-card.consented{border-color:#bbf7d0;background:#f7fffb}.consent-status-main{display:flex;align-items:center;gap:14px}/* 시안 NM1LR/Eye0H — 아이콘은 CONSENT 라벨 옆 인라인 소형(원형 배지 아님). 색은 a11y 보정값(§9). */
.consent-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;background:transparent;color:#9a5800;font-weight:700;font-size:14px}.consent-status-card.consented .consent-icon{color:#0c7a37}.consent-timeline{margin:4px 0 0;color:#526176;font-weight:500}.consent-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.stat-text{font-size:15px!important;line-height:1.25!important}/* 시안 NM1LR/Eye0H — 잠금 안내는 점선 박스 없이 일반 안내 문장 */
.locked-box{padding:2px 0;border:0;background:transparent;color:#526176;font-weight:500;text-align:left}.disabled-panel{opacity:.82}.disabled-panel button[disabled],.disabled-panel select[disabled],.disabled-panel input[disabled]{cursor:not-allowed}/* 시안 Eye0H — 업로드 폼은 카드 위 직접 배치(내부 박스·행 테두리 없음), 라벨 위/파일 입력 아래 세로 구성 */
.pdf-upload-mini-form{display:grid;gap:14px;padding:0;margin-bottom:18px;border:0;background:transparent}.compact-upload-list{display:grid;gap:12px}.upload-guidance{margin:0;color:var(--text-secondary);font-size:13px;line-height:1.6}.password-input>input{padding-left:13px}.pdf-upload-mini-form .drop-zone:focus-visible{outline:3px solid rgba(36,107,254,.28);outline-offset:2px}.upload-validation-message{min-height:20px;margin:0;color:var(--danger);font-size:13px;font-weight:600}.upload-validation-message:empty{min-height:0}.pdf-upload-submit{width:100%}.pdf-upload-submit svg{width:16px;height:16px}.upload-submit-idle,.upload-submit-progress{display:inline-flex;align-items:center;justify-content:center;gap:8px}.upload-submit-progress[hidden]{display:none}.upload-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:upload-spin .8s linear infinite}@keyframes upload-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.upload-spinner{animation:none;border-color:#fff}}.upload-table-wrap{margin-top:10px}
/* 좁은 2열 레이아웃 안의 표라 전역 min-width:760px(0,1,1)를 특정도로 눌러 카드 폭에 맞춘다(시안 zakI1). */
.table-wrap.upload-table-wrap table{min-width:0}
/* PDF 0건이면 표(머리글 포함) 대신 빈 박스만 — 시안 NM1LR/Eye0H. */
.upload-empty{margin:10px 24px 24px;padding:26px;background:#f8fafc;border:1px solid var(--line);border-radius:12px}.public-consent-body{background:var(--bg)}.public-consent-container{max-width:760px;margin:0 auto;padding:28px 16px}.consent-mobile-card{padding:26px;border-radius:24px}/* 시안 WxP8i 은 테두리 없는 통짜 --primary-soft 박스다(필드마다 나누지 않는다). */
.consent-customer-box{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 10px;margin:18px 0;padding:18px;border-radius:18px;background:var(--primary-soft)}.consent-customer-box div{padding:0}.consent-customer-box span{display:block;color:var(--muted);font-size:12px;font-weight:700}.consent-customer-box strong{display:block;margin-top:2px}/* 시안 WxP8i — 동의문은 회색 채움 박스, 제목·버전 한 줄, 본문은 고정 높이 스크롤 */
.consent-document{margin:18px 0;padding:18px;border:0;border-radius:18px;background:#f8fafc}.consent-doc-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}.consent-document h2{margin-bottom:4px}.version-label{margin:0;color:var(--muted);font-size:13px;font-weight:600}.consent-document pre{white-space:pre-wrap;font-family:inherit;line-height:1.7;color:#344054;margin:8px 0 0;max-height:300px;overflow:auto}.consent-confirm-form{display:grid;gap:12px}.consent-check{padding:2px 0;border:0;background:transparent}.complete-card{text-align:center;max-width:640px;width:100%;margin-inline:auto}.complete-card h1{font-size:24px}.complete-icon{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:22px;background:var(--ok-soft);color:var(--ok);font-size:30px;font-weight:700;margin-bottom:12px}.complete-icon svg{width:28px;height:28px}.complete-icon.warning{background:var(--warn-soft);color:var(--warn)}.consent-customer-box.single{grid-template-columns:1fr}.complete-card .consent-customer-box{background:#f8fafc}.small-note{font-size:13px}
/* 결과형 화면(완료·철회완료·링크무효)은 시안대로 뷰포트 수직 중앙 */
.public-consent-container:has(.complete-card){display:flex;flex-direction:column;justify-content:center;min-height:100vh;box-sizing:border-box}@media(max-width:760px){.consent-flow-preview{align-items:flex-start;flex-direction:column}.flow-line{width:2px;height:16px;flex:0;margin-left:14px}.consent-status-card{align-items:flex-start;flex-direction:column}.consent-actions,.consent-actions form,.consent-actions button{width:100%}.compact-upload-row{grid-template-columns:1fr}.consent-customer-box{grid-template-columns:1fr}.public-consent-container{padding:16px 12px}.consent-mobile-card{padding:20px}.customer-quick-stats{grid-template-columns:repeat(2,1fr)}}

.consent-actions-column{flex-direction:column;align-items:stretch}.phone-update-form{display:flex;gap:8px}.phone-update-form input{min-width:190px}@media(max-width:760px){.phone-update-form{flex-direction:column}.phone-update-form input,.phone-update-form button{width:100%}}


/* Result disclosure drilldown: question → dynamic subtype → candidate records. */
.disclosure-section{overflow:hidden}
.disclosure-section>summary,.disclosure-subsection>summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none}
.disclosure-section>summary::-webkit-details-marker,.disclosure-subsection>summary::-webkit-details-marker{display:none}
.disclosure-section>summary>span:first-child,.disclosure-subsection>summary>span:first-child{min-width:0;flex:1}
.disclosure-submenu{display:grid;gap:10px;padding:14px 18px 18px;border-top:1px solid var(--line);background:#f8fafc}
.disclosure-subsection{overflow:hidden;border:1px solid var(--line);border-radius:12px;background:#fff}
.disclosure-subsection>summary{padding:14px 16px;font-weight:700;color:var(--text)}
.disclosure-subsection[open]>summary{border-bottom:1px solid var(--line);background:#f8fbff}
.disclosure-section[open]>summary .summary-arrow,.disclosure-subsection[open]>summary .summary-arrow{transform:rotate(180deg)}
.disclosure-subcontent{min-width:0;padding:16px 18px}
.count-badge{flex:0 0 auto;min-width:48px;text-align:center;background:#e8f0ff;color:#174ea6}
.count-badge.is-empty{background:#eef1f5;color:#526176}

/* Keep old vertical table styles harmless when older saved pages still render as tables. */
.disclosure-table.vertical th{
  font-size: 20px;
}

@media(max-width:800px){.disclosure-submenu{padding:10px}.disclosure-subsection>summary,.disclosure-subcontent{padding:14px}}


/* Analysis is locked until consent + at least one successfully extracted PDF. */
.analysis-panel-card.disabled-panel{
  opacity: 1;
}
.analysis-panel-card.disabled-panel form{
  opacity: .58;
}
.analysis-panel-card.disabled-panel .analysis-submit-button,
.analysis-panel-card.disabled-panel input,
.analysis-panel-card.disabled-panel select{
  cursor: not-allowed;
}
.ready-box{
  margin: 14px 0 16px;
  padding: 13px 14px;
  border: 1px solid #bbf7d0;
  border-radius: 14px;
  background: #f0fdf4;
  color: #166534;
  font-weight:700;
}


/* ============================================================
   App shell — left sidebar navigation (design-system reskin).
   Replaces the horizontal topbar for authenticated pages.
   layout.html toggles .has-sidebar (showNav) vs public pages.
   ============================================================ */
.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}
.app-main{min-width:0;display:flex;flex-direction:column}
.app-main>.container{flex:1;width:100%;margin:0;max-width:1180px;padding:32px}

.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:6px;
  padding:22px 14px 18px;background:var(--sidebar);
  border-right:1px solid rgba(255,255,255,.05);color:#fff;z-index:30}
.sidebar .brand{color:#fff!important;margin:0;padding:10px 8px 22px;font-size:18px}
.sidebar .brand-mark{background:var(--primary)}
.sidenav{display:flex;flex-direction:column;gap:4px;margin-top:0}
.sidenav a{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:12px;
  color:var(--sidebar-item);font-weight:500;font-size:14px;letter-spacing:-.01em;transition:background .15s ease,color .15s ease}
.sidenav a:hover{background:rgba(255,255,255,.07);color:#fff;text-decoration:none}
.sidenav a.active{background:var(--primary);color:#fff}
.sidenav a svg{width:18px;height:18px;flex:0 0 auto;stroke:currentColor}

.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:10px;padding-top:14px;
  border-top:1px solid rgba(255,255,255,.07)}
.user-card{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:14px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)}
.user-avatar{width:38px;height:38px;flex:0 0 auto;border-radius:12px;display:flex;align-items:center;
  justify-content:center;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--primary),#64a7ff)}
.user-meta{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.user-meta strong{font-size:13px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}
.user-meta span{font-size:12px;color:#8aa0bf}
.sidebar .nav-logout-side{width:100%;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.10);
  color:#cdd9ec;font-weight:600}
.sidebar .nav-logout-side:hover{background:rgba(239,68,68,.16);border-color:rgba(239,68,68,.35);color:#fecaca}

@media(max-width:900px){
  .app-shell{grid-template-columns:1fr}
  .sidebar{position:sticky;top:0;height:auto;flex-direction:row;align-items:center;gap:10px;
    padding:10px 12px;border-right:0;border-bottom:1px solid rgba(255,255,255,.08);overflow-x:auto}
  .sidebar .brand{margin:0 8px 0 4px}
  .sidenav{flex-direction:row;margin-top:0;gap:4px}
  .sidenav a{padding:9px 11px;white-space:nowrap;font-size:13px}
  .sidenav a span.nav-label{display:none}
  .sidebar-footer{margin-top:0;margin-left:auto;flex-direction:row;align-items:center;gap:8px;
    padding-top:0;border-top:0;border-left:1px solid rgba(255,255,255,.08);padding-left:10px}
  .user-card{padding:7px 9px}
  .user-meta{display:none}
  .app-main>.container{margin:18px auto}
}


/* ============================================================
   Mockup fidelity layer — flatten blue-tinted surfaces to the
   clean, neutral look of the design PDF (flat white cards,
   neutral borders, softer shadows, rounded-rect badges).
   Overrides earlier rules on purpose; remove this block to
   revert to the previous "premium gradient" treatment.
   ============================================================ */
.card,.stat-card,.stats .card,.soft-card,.customer-tile,.meta-card,.rule-card,
.page-hero,.inquiry-tile,.inquiry-list-row,.customer-list-row,.table-card{
  background:var(--card);
  border:1px solid var(--line);
  /* 시안(gopass.pen)은 카드에 그림자가 없다 — 1px $border 만. 디자인 PDF 계열의 soft shadow 제거(2026-07-17). */
  box-shadow:none;
}
/* 단, 시안의 행 아이템(CustomerRow VRSft·InquiryItem rxraU)에는 그림자가 있다: blur16 #0F172A09 y+6. */
.customer-list-row,.inquiry-list-row,.inquiry-tile,.customer-tile{
  box-shadow:0 6px 16px rgba(15,23,42,.035);
}
.page-hero{border-radius:var(--radius)}

/* Stat cards: bigger neutral number, label above (mockup style) */
.stat-card,.stats .card{border-radius:var(--radius);padding:20px 22px}
.stat-card span,.stats span{color:var(--muted);font-weight:500;font-size:13px}
.stat-card strong,.stats strong{color:var(--text);font-size:30px;line-height:43px;font-weight:700;letter-spacing:-.02em}
.surface-blue .stat-card strong{color:var(--text)}

/* Tables: neutral header, roomier rows (mockup) */
th{background:#f7f8fb;color:#526176;border-bottom:1px solid var(--line);font-weight:600}
td{border-bottom:1px solid var(--line)}
tbody tr:hover{background:#f9fafc}

/* Badges: rounded-rect chips like the mockup (not full pills) */
.badge{border-radius:8px;padding:5px 10px;font-weight:600}
.badge.success{background:var(--ok-soft);color:#0c7a37}
.badge.failed,.badge.danger{background:var(--danger-soft);color:#b51f1f}
.badge.pending{background:var(--warn-soft);color:#9a5800}
.badge.neutral,.badge.general{background:#eef0f4;color:#5b6678}
.badge.customer{background:var(--primary-soft);color:var(--primary)}

/* Segmented / option pills: solid blue when selected (mockup) */
.radio-pill{border-radius:10px}
.radio-pill:has(input:checked){background:var(--primary);border-color:var(--primary);color:#fff}

/* Inputs/buttons: align radius + primary to mockup */
input,select,textarea{border:1px solid var(--line-strong);border-radius:11px}
.button,button{border-radius:11px;border-color:var(--line-strong)}
/* gopass.pen 은 플랫 — 버튼·활성 메뉴 glow 는 07-17 장식 걷어내기의 잔존분이라 제거 */
.primary{background:var(--primary)}
.primary:hover{background:var(--primary-700)}
/* 비활성 primary — 시안 NM1LR 은 연회색+회색 글자(연파랑 아님). disabled 는 WCAG 대비 예외. */
.primary:disabled{background:#f8fafc!important;color:var(--muted)!important;border:1px solid var(--line)!important;cursor:not-allowed}
.primary:disabled:hover{transform:none;box-shadow:none}
/* 카드 제목 인라인 아이콘 (시안 Eye0H/zakI1 카드 헤더) */
.h2-icon{width:18px;height:18px;vertical-align:-3px;margin-right:7px}
/* 네이티브 select 화살표 대신 시안의 얇은 회색 chevron (전 화면 공통) */
select{appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235b6577' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:38px}
/* 네이티브 체크박스 대신 시안의 라운드 파란 체크박스 (전 화면 공통, 20px·radius 6).
   .checkbox input 류의 width/height:auto 리셋(같은 특정도·후순위)이 이기지 못하게 복합 선택자로 고정. */
input[type="checkbox"],.checkbox input[type="checkbox"],.checkbox-row input[type="checkbox"],
.agreement-item input[type="checkbox"],.consent-check input[type="checkbox"]{appearance:none;width:20px;height:20px;min-width:20px;border:1.5px solid var(--line-strong);border-radius:6px;background:#fff;padding:0;margin:0;display:inline-grid;place-content:center;cursor:pointer;vertical-align:middle;flex:0 0 auto}
input[type="checkbox"]:checked{background:var(--primary);border-color:var(--primary)}
input[type="checkbox"]:checked::before{content:"";width:12px;height:12px;background:#fff;clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%)}

/* Brand mark + sidebar active use the mockup blue */
.brand-mark{background:var(--primary)!important}
.sidenav a.active{background:var(--primary)}
.customer-avatar,.user-avatar,.small-avatar{background:var(--primary)!important}

/* Info / consent strips: neutral-blue surfaces */
.info-strip{background:var(--primary-soft);border-color:#cfe0fb;color:#1a3a7a}
.info-strip p{color:#365a96}

/* Re-assert branded colored surfaces AFTER the flatten above, so heroes
   and banners keep their blue background (otherwise the white card override
   blanks them and white text becomes invisible). Mockup blue token.
   gopass.pen 시안 히어로는 단색 #2563EB·그림자 없음(그라디언트·glow 는 잔존 장식이라 제거). */
.surface-blue{
  background:var(--primary)!important;
  border:0!important;color:#fff!important;
}
.surface-blue h1,.surface-blue h2,.surface-blue strong{color:#fff}
.surface-blue .muted,.surface-blue p{color:rgba(255,255,255,.86)}
.surface-blue .eyebrow,.surface-blue .panel-kicker{color:#dbeafe;background:transparent;padding:0}
.surface-blue .light-button{background:#fff;color:var(--primary)!important;border-color:#fff}


/* ============================================================
   Login screen — design PDF p02: full-bleed two-pane split
   (left deep-navy hero edge-to-edge, right light pane with card).
   Login-only (auth-split / auth-pane); the shared .auth-layout
   used by password-change / kakao-link is left untouched.
   ============================================================ */
.auth-split{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
.auth-pane{display:flex;align-items:center;justify-content:center;background:var(--bg);padding:40px 32px}
.auth-pane .auth-card{width:100%;max-width:460px;margin:0;align-self:center;padding:40px}
.auth-hero{background:var(--sidebar);color:#fff;border:0;border-radius:0;overflow:hidden;position:relative;
  display:flex;flex-direction:column;
  padding:56px;min-height:100vh}

.auth-brand{color:#fff!important;font-size:18px;position:relative;z-index:1}
.auth-hero-body{position:relative;z-index:1;margin-top:26px}
.auth-hero h1{color:#fff;font-size:40px;line-height:1.25;letter-spacing:0;margin:26px 0}
.auth-hero p{color:#94a3b8;font-size:15px;line-height:1.5;max-width:608px;margin:0}
.auth-eyebrow{display:block;font-size:12px;line-height:17px;margin-bottom:0;color:#6ea0ff!important;background:transparent!important;padding:0!important;letter-spacing:.5px}
.auth-feature-list{list-style:none;margin:26px 0 0;padding:0;display:flex;flex-direction:column;gap:14px}
.auth-feature-list li{display:flex;align-items:center;gap:10px;color:#fff;font-weight:500;font-size:14px}
.feat-check{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:0 0 auto;
  border-radius:6px;background:var(--primary);color:#fff;font-weight:700;font-size:13px}
.auth-footer{position:relative;z-index:1;margin-top:auto}
.auth-footer .biz-info{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0 0 8px}
.auth-footer .biz-info>div{display:flex;gap:5px;font-size:12px;line-height:17px}
.auth-footer .biz-info dt{color:rgba(255,255,255,.62);margin:0;flex:0 0 auto}
.auth-footer .biz-info dd{color:#cbd5e1;margin:0;font-weight:600}
.auth-footer .biz-copy{color:rgba(255,255,255,.62);font-size:12px;line-height:17px;margin:0}
.auth-card h1{font-size:24px;line-height:35px;color:var(--primary);margin:0}

/* Inputs with leading icon + password visibility toggle */
.input-icon{position:relative;display:flex;align-items:center}
.input-icon>svg{position:absolute;left:13px;width:18px;height:18px;color:var(--muted);pointer-events:none}
.input-icon input{padding-left:42px}
.input-icon input[type="password"],.input-icon input[type="text"]{padding-right:44px}
.input-icon .pw-toggle{position:absolute;right:7px;width:32px;height:32px;padding:0;border:0;
  background:transparent;color:var(--muted);box-shadow:none}
.input-icon .pw-toggle:hover{transform:none;box-shadow:none;color:var(--text);background:transparent}
.input-icon .pw-toggle svg{width:18px;height:18px}
@media(max-width:860px){
  .auth-split{grid-template-columns:1fr;min-height:auto}
  .auth-hero{min-height:auto;padding:36px 28px;gap:20px}
  .auth-hero-body{margin-top:0}
  .auth-hero h1{font-size:30px}
  .auth-pane{padding:28px 18px}
  .auth-pane .auth-card{padding:28px 24px}
  .auth-footer{margin-top:8px}
}

/* Single-card auth pages (password change, kakao link): centered narrow card,
   not a 2-col grid (which left the right column empty). */
.auth-layout.single-auth{display:flex;align-items:center;width:min(460px,calc(100% - 36px));min-height:100vh;margin:0 auto;padding:0}
/* 로그인 후 단독 카드(비밀번호 변경)의 제목은 시안 dj0rv 처럼 본문색(파랑 아님) */
.auth-layout.single-auth .auth-card h1{color:var(--text)}
.auth-layout.single-auth .auth-card{margin:0;width:100%;padding:40px}
@media(max-width:520px){.auth-layout.single-auth{min-height:auto;margin:28px auto}.auth-layout.single-auth .auth-card{padding:28px 24px}}


/* ============================================================
   Dashboard KPI cards — icon chip in a colored rounded square
   (design PDF p01). Number/label stay; trend deltas are omitted
   (no historical data — no fabricated figures).
   ============================================================ */
.stat-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.stat-card .stat-card-top span:first-child{margin:0}
.stat-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  flex:0 0 auto;border-radius:10px}
.stat-icon svg{width:18px;height:18px}
/* stroke 색은 시안보다 진하다 — 시안값(#d97706·#16a34a)은 soft 배경 위 대비가 3:1 미만이다. */
.stat-icon-blue{background:var(--primary-soft);color:var(--primary)}
.stat-icon-green{background:var(--ok-soft);color:#0c7a37}
.stat-icon-amber{background:var(--warn-soft);color:#9a5800}
.stat-card strong{margin-top:14px}


/* ============================================================
   Top header bar (design PDF p09, reduced) — sticky page-title
   + functional customer search. No notification bell (no backend).
   Only inside the authenticated shell (.app-main).
   ============================================================ */
.topbar-page{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;
  gap:16px;height:64px;padding:0 32px;background:var(--card);
  border-bottom:1px solid var(--line)}
.topbar-title{font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-search{position:relative;display:flex;align-items:center;width:min(300px,42vw)}
.topbar-search svg{position:absolute;left:12px;width:17px;height:17px;color:var(--muted);pointer-events:none}
.topbar-search input{width:100%;padding:9px 12px 9px 36px;border:1px solid var(--line);border-radius:10px;
  background:var(--bg);font:inherit;color:var(--text)}
.topbar-search input:focus{outline:none;border-color:var(--primary);background:#fff}

/* Table toolbar — search + status filter pills (list/history pages) */
.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:16px 20px;border-bottom:1px solid var(--line)}
.table-search{position:relative;display:flex;align-items:center;min-width:240px;flex:1 1 240px;max-width:360px}
.table-search svg{position:absolute;left:12px;width:17px;height:17px;color:var(--muted);pointer-events:none}
.table-search input{width:100%;padding:9px 12px 9px 36px;border:1px solid var(--line-strong);border-radius:10px;
  background:#fff;font:inherit;color:var(--text)}
.table-search input:focus{outline:none;border-color:var(--primary)}
.toolbar-count{font-size:13px;font-weight:700;white-space:nowrap}
.filter-pills{display:flex;flex-wrap:wrap;gap:6px}
.filter-pill{padding:7px 13px;border:1px solid var(--line-strong);border-radius:999px;background:#fff;
  color:var(--muted);font-weight:600;font-size:13px;cursor:pointer;transition:all .12s ease}
.filter-pill:hover{border-color:var(--primary);color:var(--primary)}
.filter-pill.active{background:var(--primary);border-color:var(--primary);color:#fff}

/* Table cells — customer identity cell + row action group */
.cell-customer{display:inline-flex;align-items:center;gap:10px;color:var(--text)}
.cell-customer:hover{text-decoration:none}
.cell-customer:hover strong{color:var(--primary)}
.cell-customer-text{display:flex;flex-direction:column;line-height:1.25}
.cell-customer-text .muted{font-size:12px;font-weight:400}
.small-avatar{width:34px;height:34px;flex:0 0 auto;font-size:14px;border-radius:10px}
.row-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
tr[hidden]{display:none}

@media(max-width:900px){
  .topbar-page{padding:10px 16px;height:auto;min-height:56px;flex-wrap:wrap;gap:10px}
  .topbar-search{width:100%}
  .table-toolbar{padding:14px}
}

/* 좌측 하단 계정 메뉴 (카드 클릭 → 비밀번호 변경·로그아웃 팝오버) */
.account-menu{position:relative}
.account-menu .user-card{width:100%;cursor:pointer;font:inherit;color:inherit;text-align:left}
.account-caret{width:16px;height:16px;flex:0 0 auto;margin-left:auto;color:#8aa0bf;transition:transform .18s ease}
.account-menu.open .account-caret{transform:rotate(180deg)}
.user-menu{position:absolute;left:0;right:0;bottom:calc(100% + 8px);z-index:40;
  display:none;flex-direction:column;gap:2px;padding:6px;
  background:#12213b;border:1px solid rgba(255,255,255,.12);border-radius:14px;
  box-shadow:0 18px 40px rgba(0,0,0,.45)}
.account-menu.open .user-menu{display:flex}
.user-menu-item{display:flex;align-items:center;justify-content:flex-start;gap:10px;width:100%;
  padding:10px 12px;border-radius:10px;border:0;background:transparent;
  color:#cdd9ec;font-size:13px;font-weight:600;cursor:pointer;text-align:left}
.user-menu-item svg{width:17px;height:17px;flex:0 0 auto;stroke:currentColor}
.user-menu-item:hover{background:rgba(255,255,255,.07);color:#fff}
.user-menu-item.danger:hover{background:rgba(239,68,68,.16);color:#fecaca}
@media(max-width:900px){
  .user-menu{left:auto;right:0;bottom:auto;top:calc(100% + 8px);min-width:190px}
}

/* 대시보드 정렬 보정: 구독 배너(버튼 우측) · 통계 아이콘(뱃지 정중앙) · 아코디언 화살표(정중앙) */
.subscription-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
/* 구독/결제 요약 카드: 현재 상태·(만료일)·월 이용료를 좌우 열로 나란히 (design LwDbX). 카드 2~3개 가변 → auto-fit로 반응형 */
.subscription-status{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;align-items:stretch}
/* 시안 L2aTN5 — 뷰어 컨테이너는 흰 카드(짙은 프레임 장식 제거). iframe 내용은 브라우저 PDF 렌더러 몫. */
.pdf-viewer-frame-wrap{padding:14px;background:#fff}.pdf-viewer-frame{display:block;width:100%;height:80vh;border:0;border-radius:8px;background:#f8fafc}
@media(max-width:800px){.pdf-viewer-bar .actions-row{display:grid;grid-template-columns:1fr 1fr}.pdf-viewer-frame-wrap{padding:8px;margin-inline:-2px}.pdf-viewer-frame{height:calc(100vh - 260px);min-height:520px}}
.stat-card .stat-icon{display:inline-flex;align-items:center;justify-content:center}
.summary-arrow svg,.group-arrow svg{width:16px;height:16px}

/* 동의 상태 색상 반영 (design.md §2.1 상태 3색) — 고객 목록 '동의' metric 칩 */
.consent-metric[data-consent='동의완료']{background:var(--ok-soft);border-color:#bbf7d0;color:#0c7a37}
.consent-metric[data-consent='동의완료'] b{color:#0c7a37}
.consent-metric[data-consent='동의요청중']{background:var(--warn-soft);border-color:#fde68a;color:#9a5800}
.consent-metric[data-consent='동의요청중'] b{color:#9a5800}
.consent-metric[data-consent='동의만료'],.consent-metric[data-consent='동의철회']{background:#fff1f2;border-color:#fecdd3;color:#be123c}
.consent-metric[data-consent='동의만료'] b,.consent-metric[data-consent='동의철회'] b{color:#be123c}

/* 고객 등록(p23) 정밀 대조 보정: 스텝 배지 솔리드 + 안내박스 아이콘 정렬 */
.step-badge{background:var(--primary);color:#fff}
.consent-notice-box{display:flex;align-items:flex-start;gap:10px}
.consent-notice-box svg{width:20px;height:20px;flex:0 0 auto;margin-top:1px;stroke:currentColor}

/* 고객 상세 — 동의 링크 공유 행(pen 디자인 정합): 링크+버튼 한 줄, 카카오 브랜드 컬러 */
.consent-share-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px}
.consent-share-row input{flex:1 1 260px;min-width:0;width:auto}
.kakao-button{background:#FEE500;color:#111111;border-color:#FEE500}
.kakao-button:hover{background:#FDD800;border-color:#FDD800;color:#111111}
.kakao-channel-cta{display:flex;align-items:center;justify-content:space-between;gap:20px}
.kakao-channel-cta .kakao-button{flex:0 0 auto}
@media(max-width:800px){.kakao-channel-cta{align-items:stretch;flex-direction:column}.kakao-channel-cta .kakao-button{width:100%}}

/* 상품 CSV 일괄등록 — 파일 선택 커스텀 버튼(pen 디자인 정합) */
.file-picker-field{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#f8fafc}
.file-picker-button{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;font-size:13px;white-space:nowrap;cursor:pointer;margin:0}
.file-picker-name{color:var(--muted);font-size:13px}
.info-strip svg{width:18px;height:18px;flex:0 0 auto;margin-top:1px;stroke:currentColor}

/* 구독/결제 — 입금 계좌 안내 콜아웃 박스(pen 디자인 정합) */
.callout{display:flex;align-items:center;gap:10px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#f8fafc;color:var(--text)}
.callout svg{width:16px;height:16px;flex:0 0 auto;color:var(--muted)}
.callout strong{margin-right:4px}

/* 대시보드 — 일반 보상 문의: 좌측 아이콘 배지, 우측은 단순 chevron (pen xfHji) */
.summary-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:36px;height:36px;border-radius:9px;background:var(--primary-soft);color:var(--primary)}
.summary-icon svg{width:18px;height:18px}
.general-inquiry-box>summary .summary-arrow{width:auto;height:auto;border-radius:0;background:none;color:var(--muted)}
.general-inquiry-box>summary .summary-arrow svg{width:18px;height:18px}

/* 시안 InquiryRow(wkvm7): padding 20 (일반 .card 24 아님). */
.inquiry-card{padding:20px}

/* 시안 Hero(hMGbY): Left(s4SoL) 는 fill_container — w942, 버튼은 hug. */
.page-hero > div:first-child{flex:1;min-width:0}

/* 시안 고객등록 FormCard(C6bCgE): padding 28 (일반 .card 24 아님). */
.card.form-grid{padding:28px}
/* 시안 Stepper(cFtU4): h70 = padding 20 + 30. */
.consent-flow-preview{padding:20px}
/* textarea 는 여러 줄 — 고정 높이 예외. */
textarea{height:auto;min-height:44px}

/* ── 시안 FormHead(S6iJNk) 정합: 행 gap12 = Num칩 28 + Titles(T 17/700 + gap2 + H 12), h=44. */
.step-heading{gap:12px;align-items:center}
.step-badge{width:28px;height:28px;min-width:28px;border-radius:8px;font-size:14px;font-weight:700}
.step-heading h2{font-size:17px;line-height:25px;font-weight:700;letter-spacing:-.01em;margin:0}
.step-heading p,.step-heading p.muted{font-size:12px;line-height:17px;margin:2px 0 0;color:var(--muted)}
/* 시안 Row1/Row2(do3OB·FCG6C): 세로 22 · 가로 20. */
.form-grid{gap:22px 20px}
/* 시안 Field 도움말(ERr2R): 12px, 위 간격 8. */
.form-grid .hint,.form-grid small{font-size:12px;line-height:17px;margin-top:8px;display:block;color:var(--muted)}

/* 시안 Actions(cQDbQ): 버튼만 — 상단 여백 없음. */
.sticky-actions{padding:0}

/* ── 시안 표(상품관리 fecoq 등) 정합 — 관리자 표 화면 공통.
   헤더 행 h48(텍스트 h17 y15.5) · 데이터 행 h60(텍스트 h20 y20, 셀 세로중앙)
   첫/끝 열 좌우 padding 24 · 셀 안 액션 버튼 h33(시안 fFI8g). */
table th{padding:15px 14px;line-height:17px}
table td{padding:13px 14px;vertical-align:middle}
table th:first-child,table td:first-child{padding-left:24px}
table th:last-child,table td:last-child{padding-right:24px}
table td .button,table td button{padding:6px 12px;font-size:13px;line-height:19px}
/* 시안 제목블록(bwQ5h): 제목 26/700 h38 + gap6 + 부제 13 h19 = 63 (카드 아님). */
.page-head h1{font-size:26px;line-height:38px;letter-spacing:-.02em;margin:0 0 6px}
.page-head p{font-size:13px;line-height:19px;margin:0}
.page-head>.button svg{width:16px;height:16px;flex:0 0 auto}

/* 표 안 액션 버튼: 시안 fFI8g 는 h33 이지만 button,.button{min-height:44px} 는
   접근성 하드닝(WCAG 2.5.5 AAA 44x44)이다. WCAG 2.2 AA 최소치는 24x24 이므로
   데스크톱 표에서만 시안 33 을 따르고, 터치가 실제 쓰이는 좁은 화면에서는 44 로 되돌린다. */
table td .button,table td button{min-height:33px}
@media(max-width:760px){
  table td .button,table td button{min-height:44px}
}

/* ── 시안 고객 상세 히어로(Z4r9at h144) 정합.
   Left(tpWOu h88, gap6): Kicker 11/600 · Name 28/700 h41 · Meta 13/normal h19
   Chips(B5Xsa h59, gap10): 칩 padding[10,14] radius10 #FFFFFF26, K 11/500 + gap3 + V 14/700 */
.customer-hero h1{font-size:28px;line-height:41px;letter-spacing:-.02em;margin:0 0 6px}
.customer-hero > div:first-child > p{font-size:13px;line-height:19px;margin:0}
.customer-quick-stats{gap:10px}
.customer-quick-stats > *{padding:10px 14px;border-radius:10px;background:rgba(255,255,255,.15)}
.customer-quick-stats span{font-size:11px;line-height:16px;font-weight:500}
.customer-quick-stats strong{font-size:14px;line-height:20px;font-weight:700;margin-top:3px}
/* 시안 동의 카드(rxLgT h120) — Left(tKmJL h72, gap6): CONSENT 11/600 · 상태 17/700 h25 · 완료 13/normal h19 */
.consent-status-card h2,.consent-status-main h2{font-size:17px;line-height:25px;font-weight:700;margin:6px 0 0}
.consent-status-main p{font-size:13px;line-height:19px;margin:6px 0 0}

/* 시안 칩(B5Xsa/DMGCA h59): padding[10,14] radius10 #FFFFFF26, 테두리 없음.
   .customer-quick-stats div 가 특정도로 이기므로 같은 형태로 지정하고,
   .stat-text 의 !important 는 같은 수준으로 덮는다. */
.customer-quick-stats div{padding:10px 14px;border:0;border-radius:10px;background:rgba(255,255,255,.15)}
.customer-quick-stats .stat-text{font-size:14px!important;line-height:20px!important}

/* ── 시안 접힌 섹션(fYVqH h58): radius14 · padding[18,22] · 제목 15/700 · 힌트 12.
   대시보드의 일반 보상 문의(i5sR4i)는 15/600 이라 별도로 둔다. */
.disclosure-section,.loss-report-toggle{padding:18px 22px;border-radius:14px}
.disclosure-section>summary,.loss-report-toggle>summary{font-size:15px;line-height:22px;font-weight:700;padding:0}
.disclosure-section>summary .muted,.loss-report-toggle>summary .muted{font-size:12px;line-height:17px}

/* 시안 fYVqH: 우측은 힌트 12/normal + chevron 18x18 뿐 — 배경 원 없음(h22 유지). */
.disclosure-section>summary .summary-arrow,.loss-report-toggle>summary .summary-arrow{
  width:18px;height:18px;padding:0;border-radius:0;background:none;color:var(--muted);font-size:18px}
.disclosure-section>summary .summary-arrow svg,.loss-report-toggle>summary .summary-arrow svg{width:18px;height:18px}
.disclosure-section>summary .summary-hint,.loss-report-toggle>summary .summary-hint{font-size:12px;line-height:17px;font-weight:400}
/* 구독/결제 상태 카드 — 시안(LwDbX) 실측: 파란 그라디언트 채움이 아니라 흰 배경 + 8px #2563EB 테두리 +
   동일 8px 세로 구분선(단일 컨테이너·셀 2개). surface-blue 그라디언트/그림자(장식)를 이 카드에 한해
   걷어낸다(시안대로, 2026-07-18, #18). .subscription-status 는 구독/결제 화면 전용이라 히어로에 영향 없음. */
.subscription-status.surface-blue,.subscription-status.surface-warn{
  background:#fff!important;border:8px solid var(--primary)!important;box-shadow:none!important;
  gap:0;padding:0;overflow:hidden}
.subscription-status.surface-warn{border-color:#d97706!important}
.subscription-status .stat-card{background:transparent!important;border:0;border-radius:0;box-shadow:none!important;
  padding:22px 20px;margin:0}
.subscription-status .stat-card+.stat-card{border-left:8px solid var(--primary)}
.subscription-status.surface-warn .stat-card+.stat-card{border-left-color:#d97706}
/* 라벨색은 시안(#A5AAB1, 대비 ~2.5 AA 미달) 대신 --muted 유지(a11y 우선). 값은 진한색. */
.subscription-status .stat-card span{color:var(--muted)!important}
.subscription-status .stat-card strong{color:var(--text)!important}

/* 대시보드 행 — Pencil(2026-07-19)처럼 칩 내부 값·등록일·문의/답변을 한 흐름으로 표시한다. */
.customer-list-metrics>span{display:inline-flex;align-items:center;gap:5px;padding:7px 10px;
  border:1px solid #e4ebf5;border-radius:999px;background:#f8fbff;color:#526176;font-size:13px;font-weight:600}
.customer-list-metrics>span>span{display:inline;padding:0;border:0;border-radius:0;background:transparent;color:inherit;font:inherit}
.customer-list-date{display:flex;align-items:center;gap:4px;white-space:nowrap}
.customer-list-date strong{font-size:12px}
.inquiry-list-content{grid-template-columns:1fr;gap:10px}
.inquiry-list-title{margin-bottom:2px}
.inquiry-list-preview{width:100%}

/* 고객 상세 동의 상태와 404 간격 — 07-19 Pencil 잔여 차이. */
.consent-status-card.consented{background:#f0fdf4}
.consent-icon{width:18px;height:18px;border-radius:999px;background:#fef3c7;font-size:12px}
.consent-status-card.consented .consent-icon{background:#dcfce7}
.error-icon.warning{margin-bottom:12px}
.error-code.warning+h1{margin-top:14px}

/* 상품·CSV·손해 규칙의 화면별 잔여 실측 차이. */
.product-status::before{content:"";width:6px;height:6px;border-radius:999px;background:currentColor;flex:0 0 auto}
.product-status.neutral{background:var(--line)}
.products-import-page .info-strip{border-color:transparent;background:#eef4ff}
.products-import-page .info-strip p,.products-import-page #csv_text{font-family:var(--font-code)}
.products-import-page #csv_text{min-height:282px}
.rows-top tbody tr:nth-child(even){background:#fbfdff}
.rows-top th:nth-child(3),.rows-top td:nth-child(3){width:24%}
.complete-card p a{font-weight:700}
.invalid-consent-card{padding-block:56px}
label[for="depositor_name"]{font-weight:500}
.product-editor-page>h1{margin-bottom:24px}
.product-editor-page>form{padding:28px}
.auth-pane .reset-password-card{width:480px;max-width:calc(100% - 32px);padding:36px}
.reset-password-card #reset-form{gap:16px}
.reset-password-card .inline-form{gap:8px}
.reset-password-card .inline-form .input-icon input,.reset-password-card .code-input-wrap input{width:100%;min-width:0}
.reset-password-card .code-msg:empty{display:none}
.surface-blue .eyebrow{color:#fff}
.customer-hero>div:first-child>p,.result-hero>div:first-child>p{color:#fff}
.customer-quick-stats span{color:#fff}
.customer-quick-stats div{background:rgba(15,23,42,.22)}
.account-list-title{margin:28px 0 12px}
.account-list-card{margin-bottom:24px}
.customer-table{table-layout:fixed}
.customer-table th:nth-child(1){width:34%}.customer-table th:nth-child(2){width:14%}
.customer-table th:nth-child(3){width:13%}.customer-table th:nth-child(4),.customer-table th:nth-child(5),.customer-table th:nth-child(6){width:6%}
.customer-table th:nth-child(7){width:12%}.customer-table th:nth-child(8){width:9%}
.password-change-card>.eyebrow{margin-bottom:18px}
.password-change-card>p{margin-top:20px}
.password-change-card>form:first-of-type{margin-top:24px}
.password-change-card>form+form{margin-top:18px!important}

/* --- 회원가입·비밀번호 찾기 (FR-A07·A09, 42 §4) --- */
.forgot-link{text-align:right;margin:-4px 0 4px;font-size:13px}
/* 시안 KYqLD 는 구분선 없이 간격만, 회원가입 버튼은 파란 글자 아웃라인 */
.signup-cta{margin-top:16px;padding-top:16px;text-align:center}
.signup-cta .muted{margin:0 0 8px}
.signup-cta .button{color:var(--primary)}
.auth-alt{text-align:center;margin-top:16px;font-size:13px}
.code-msg{margin:6px 0 0;font-size:12.5px;min-height:1em}
.code-msg.is-error{color:var(--danger)}
/* 인증요청 — 시안 g01Ux·orCj2 는 연파랑 배경 + 파란 글자 칩형 버튼 */
.code-send-btn{background:var(--primary-soft);color:var(--primary);border-color:transparent;flex:0 0 auto}
.code-send-btn:hover{background:#e3ecff;box-shadow:none;transform:none}
/* 인증코드 — 입력 안 우측 카운트다운(빨강) + 우측 primary 확인 버튼 */
.inline-form .input-icon{flex:1}
.code-input-wrap{position:relative;flex:1;display:flex;align-items:center}
.code-input-wrap input{padding-right:56px}
.code-timer{position:absolute;right:14px;color:var(--danger);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;pointer-events:none}
.code-verify-btn{flex:0 0 auto}
.resend-line{margin:8px 0 0;font-size:12.5px;color:var(--muted)}
.link-button{background:none;border:0;min-height:0;padding:0;font:inherit;color:var(--muted);text-decoration:underline;cursor:pointer}
.link-button:hover{transform:none;box-shadow:none;background:none;color:var(--text)}
.agreement-group{border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin:4px 0 4px;display:flex;flex-direction:column;gap:10px}
.agreement-group legend{font-size:13px;font-weight:600;padding:0 6px;color:var(--text)}
.agreement-item{display:flex;align-items:center;gap:8px;font-size:13.5px;cursor:pointer}
.agreement-item input{height:auto;width:auto;margin:0}
/* 전체 동의 마스터 행 — 시안은 굵은 라벨 + 아래 구분선 */
.agreement-master{font-weight:600;padding-bottom:12px;border-bottom:1px solid var(--line)}
.agreement-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.req-tag{color:var(--danger);font-weight:600}
.req-tag.optional{color:var(--muted)}
.agreement-view{background:none;border:0;min-height:0;padding:2px 4px;font-size:13px;font-weight:500;color:var(--muted);cursor:pointer;flex:0 0 auto}
.agreement-view:hover{transform:none;box-shadow:none;background:none;color:var(--text);text-decoration:underline}
.agreement-text{margin:0 0 2px 4px}
.agreement-text summary{font-size:12.5px;color:var(--muted);cursor:pointer}
.agreement-text pre{white-space:pre-wrap;font-family:inherit;font-size:12px;color:var(--muted);
  background:var(--surface-2,#f6f7f9);border-radius:8px;padding:10px 12px;margin:6px 0 0;max-height:180px;overflow:auto}
