/* ==========================================
   청년안심주택 서류 제출 시스템 - 메인 스타일
   ========================================== */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --primary:       #1e40af;
  --primary-light: #3b82f6;
  --primary-dark:  #1e3a8a;
  --accent:        #0ea5e9;
  --success:       #10b981;
  --warning:       #f59e0b;
  --danger:        #ef4444;
  --orange:        #f97316;
  --gray-50:       #f8fafc;
  --gray-100:      #f1f5f9;
  --gray-200:      #e2e8f0;
  --gray-300:      #cbd5e1;
  --gray-400:      #94a3b8;
  --gray-500:      #64748b;
  --gray-600:      #475569;
  --gray-700:      #334155;
  --gray-800:      #1e293b;
  --gray-900:      #0f172a;
  --white:         #ffffff;
  --radius:        12px;
  --radius-sm:     8px;
  --radius-lg:     16px;
  --shadow-sm:     0 1px 3px rgba(0,0,0,.08);
  --shadow:        0 4px 16px rgba(0,0,0,.10);
  --shadow-lg:     0 8px 32px rgba(0,0,0,.14);
  --transition:    .2s ease;
}

html { scroll-behavior: smooth; }

body {
  font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, sans-serif;
  background: linear-gradient(135deg, #eff6ff 0%, #f8fafc 50%, #e0f2fe 100%);
  min-height: 100vh;
  color: var(--gray-800);
  line-height: 1.6;
}

/* ─── 헤더 ─── */
.app-header {
  background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary) 100%);
  color: var(--white);
  padding: 0;
  position: sticky;
  top: 0;
  z-index: 100;
  box-shadow: 0 4px 20px rgba(30,64,175,.3);
}
.header-inner {
  max-width: 820px;
  margin: 0 auto;
  padding: 14px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.logo-area {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 1.05rem;
  font-weight: 700;
}
.logo-area i { font-size: 1.3rem; color: #93c5fd; }
.header-actions { display: flex; gap: 8px; align-items: center; }

.btn-lookup {
  background: rgba(255,255,255,.15);
  border: 1px solid rgba(255,255,255,.3);
  color: var(--white);
  padding: 7px 14px;
  border-radius: 20px;
  font-size: .82rem;
  font-weight: 600;
  cursor: pointer;
  transition: var(--transition);
  font-family: inherit;
}
.btn-lookup:hover { background: rgba(255,255,255,.25); }

.btn-admin-link {
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.2);
  color: rgba(255,255,255,.7);
  width: 34px; height: 34px;
  border-radius: 50%;
  font-size: .9rem;
  cursor: pointer;
  transition: var(--transition);
  display: flex; align-items: center; justify-content: center;
  font-family: inherit;
}
.btn-admin-link:hover { background: rgba(255,255,255,.2); color: var(--white); }

/* ─── 진행 상태 바 ─── */
.progress-nav {
  background: var(--white);
  border-bottom: 2px solid var(--gray-200);
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
  position: sticky;
  top: 62px;        /* 헤더 높이 */
  z-index: 99;
}
.progress-steps {
  max-width: 820px;
  margin: 0 auto;
  padding: 16px 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
}
.step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  min-width: 72px;
}
.step-circle {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--gray-200);
  color: var(--gray-400);
  font-weight: 700;
  font-size: .9rem;
  display: flex; align-items: center; justify-content: center;
  transition: var(--transition);
  border: 2px solid var(--gray-200);
}
.step.active .step-circle {
  background: var(--primary);
  color: var(--white);
  border-color: var(--primary);
  box-shadow: 0 0 0 4px rgba(30,64,175,.15);
}
.step.done .step-circle {
  background: var(--success);
  color: var(--white);
  border-color: var(--success);
}
.step-label {
  font-size: .72rem;
  color: var(--gray-400);
  font-weight: 500;
  white-space: nowrap;
}
.step.active .step-label { color: var(--primary); font-weight: 700; }
.step.done .step-label  { color: var(--success); }
.step-line {
  flex: 1;
  height: 2px;
  background: var(--gray-200);
  margin-bottom: 22px;
  min-width: 24px;
  max-width: 60px;
}

/* ─── 메인 컨테이너 ─── */
.main-container {
  max-width: 820px;
  margin: 0 auto;
  padding: 28px 20px 60px;
}

/* ─── 페이지 전환 ─── */
.page { display: none; animation: fadeIn .35s ease; }
.page.active { display: block; }
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ─── 페이지 헤더 ─── */
.page-header { margin-bottom: 28px; }

/* ── Page 1 인트로 텍스트 ── */
.p1-intro-wrap {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 4px;
}
.p1-congrats {
  font-size: 1.3rem;
  font-weight: 800;
  color: var(--gray-900);
  line-height: 1.5;
  margin: 0;
}
.p1-desc {
  font-size: .97rem;
  color: var(--gray-600);
  line-height: 1.75;
  margin: 0;
}
.p1-email-notice {
  display: flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, #eff6ff, #dbeafe);
  border: 1.5px solid #3b82f6;
  border-left: 4px solid #1d4ed8;
  border-radius: 8px;
  padding: 11px 14px;
  font-size: .95rem;
  color: #1e3a8a;
  line-height: 1.65;
  margin: 2px 0;
}
.p1-email-notice strong {
  color: #1e3a8a;
  font-weight: 800;
}
.p1-check-guide {
  font-size: .92rem;
  font-weight: 700;
  color: var(--gray-700);
  margin: 0;
}
.page-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: #dbeafe;
  color: var(--primary);
  font-size: .8rem;
  font-weight: 700;
  padding: 5px 12px;
  border-radius: 20px;
  margin-bottom: 12px;
}
.page-badge.success { background: #d1fae5; color: var(--success); }
.page-title {
  font-size: 1.35rem;
  font-weight: 800;
  color: var(--gray-900);
  line-height: 1.5;
}
.page-subtitle {
  margin-top: 10px;
  color: var(--gray-600);
  font-size: .95rem;
  line-height: 1.7;
}

/* ─── PAGE 1: 유의사항 카드 ─── */
.notice-cards { display: flex; flex-direction: column; gap: 16px; margin-bottom: 28px; }
.notice-card {
  border-radius: var(--radius);
  padding: 20px 22px;
  display: flex;
  gap: 16px;
  align-items: flex-start;
  border-left: 5px solid;
}
.notice-card.notice-red    { background: #fff5f5; border-color: var(--danger); }
.notice-card.notice-orange { background: #fff7ed; border-color: var(--orange); }
.notice-card.notice-blue   { background: #eff6ff; border-color: var(--primary-light); }
.notice-card.notice-gray   { background: #f8fafc; border-color: var(--gray-400); }

/* ── ② 고객 DATA 미저장 강조 카드 ── */
.notice-card.notice-data-warn {
  background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);
  border-color: #f59e0b;
  border-width: 2px;
  border-left-width: 5px;
  box-shadow: 0 4px 16px rgba(245,158,11,.18);
  position: relative;
  overflow: hidden;
}
.notice-card.notice-data-warn::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, #f59e0b, #ef4444, #f59e0b);
  background-size: 200% 100%;
  animation: shimmer-warn 2.5s linear infinite;
}
@keyframes shimmer-warn {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.notice-icon-data {
  background: linear-gradient(135deg, #f59e0b, #d97706) !important;
  color: #fff !important;
  width: 46px !important;
  height: 46px !important;
  border-radius: 12px !important;
  font-size: 1.25rem !important;
  box-shadow: 0 4px 10px rgba(245,158,11,.35) !important;
}
.notice-data-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 1rem !important;
  font-weight: 800 !important;
  color: #92400e !important;
  margin-bottom: 10px !important;
}
.notice-data-badge {
  display: inline-flex;
  align-items: center;
  background: linear-gradient(135deg, #ef4444, #dc2626);
  color: #fff;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .06em;
  padding: 2px 8px;
  border-radius: 20px;
  flex-shrink: 0;
  animation: pulse-badge 1.8s ease-in-out infinite;
}
@keyframes pulse-badge {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: .85; transform: scale(1.06); }
}
.notice-data-desc {
  font-size: .92rem !important;
  color: #78350f !important;
  line-height: 1.75 !important;
  margin-bottom: 10px !important;
}
.notice-data-highlight {
  display: inline-block;
  background: rgba(239,68,68,.12);
  color: #b91c1c;
  font-weight: 700;
  border-radius: 4px;
  padding: 1px 6px;
  margin-top: 2px;
}
.notice-data-action-box {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  border: 1.5px solid #f59e0b;
  border-radius: 8px;
  padding: 10px 14px;
  margin: 10px 0;
  font-size: .9rem;
  color: #78350f;
  font-weight: 600;
  box-shadow: 0 2px 6px rgba(245,158,11,.12);
}
.notice-data-action-box i {
  color: #f59e0b;
  font-size: 1.1rem;
  flex-shrink: 0;
}
.notice-data-sub {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  font-size: .87rem !important;
  color: #92400e !important;
  margin-top: 6px !important;
  margin-bottom: 0 !important;
  font-weight: 600 !important;
}
.notice-data-sub i {
  color: #ef4444;
  margin-top: 2px;
  flex-shrink: 0;
}

.notice-icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.1rem;
  flex-shrink: 0;
}
.notice-red    .notice-icon { background: #fee2e2; color: var(--danger); }
.notice-orange .notice-icon { background: #ffedd5; color: var(--orange); }
.notice-blue   .notice-icon { background: #dbeafe; color: var(--primary); }
.notice-gray   .notice-icon { background: var(--gray-200); color: var(--gray-600); }

.notice-body h3 { font-size: .95rem; font-weight: 700; margin-bottom: 6px; color: var(--gray-800); }
.notice-body p  { font-size: .88rem; color: var(--gray-600); margin-bottom: 4px; }

.info-box {
  background: var(--white);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  margin-top: 10px;
  border: 1px solid var(--gray-200);
}
.info-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .88rem;
  padding: 4px 0;
  color: var(--gray-700);
}
.info-row i { color: var(--primary-light); width: 16px; text-align: center; }

.highlight-red    { color: var(--danger); font-weight: 700; }
.highlight-orange { color: var(--orange); font-weight: 700; }
.highlight-blue   { color: var(--primary); font-weight: 700; }
.highlight-gray   { color: var(--gray-600); font-weight: 700; }

/* ─── 공급 유형 선택 ─── */
.supply-select-wrap {
  background: var(--white);
  border: 1.5px solid var(--gray-200);
  border-radius: var(--radius-lg);
  padding: 22px 24px;
  margin-bottom: 20px;
  box-shadow: var(--shadow-sm);
}
.supply-select-label {
  font-size: .93rem;
  font-weight: 700;
  color: var(--gray-700);
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.supply-select-label i { color: var(--primary); }

.supply-select-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-bottom: 4px;
}
@keyframes shakeX {
  0%,100% { transform: translateX(0); }
  20%,60% { transform: translateX(-6px); }
  40%,80% { transform: translateX(6px); }
}
.supply-select-cards.shake { animation: shakeX .5s ease; }

.supply-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  border: 2px solid var(--gray-200);
  border-radius: var(--radius);
  background: var(--white);
  cursor: pointer;
  transition: var(--transition);
  text-align: left;
  position: relative;
  font-family: inherit;
}
.supply-card:hover {
  border-color: var(--gray-300);
  box-shadow: var(--shadow-sm);
  transform: translateY(-1px);
}
.supply-card.active {
  box-shadow: var(--shadow);
  transform: translateY(-2px);
}
.supply-card#cardGeneral.active { border-color: var(--primary); background: #eff6ff; }
.supply-card#cardSpecial.active { border-color: #7c3aed;         background: #f5f3ff; }

.supply-card-icon {
  width: 44px; height: 44px;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.15rem;
  flex-shrink: 0;
}
.supply-card-icon.general { background: #dbeafe; color: var(--primary); }
.supply-card-icon.special { background: #ede9fe; color: #7c3aed; }
.supply-card.active .supply-card-icon.general { background: var(--primary); color: var(--white); }
.supply-card.active .supply-card-icon.special { background: #7c3aed;        color: var(--white); }

.supply-card-body { flex: 1; }
.supply-card-title {
  display: block;
  font-size: 1rem;
  font-weight: 800;
  color: var(--gray-800);
  line-height: 1.3;
}
.supply-card-desc {
  display: block;
  font-size: .78rem;
  color: var(--gray-400);
  margin-top: 2px;
}
.supply-card.active .supply-card-title { color: var(--primary); }
.supply-card#cardSpecial.active .supply-card-title { color: #7c3aed; }

.supply-card-check {
  width: 22px; height: 22px;
  border-radius: 50%;
  border: 2px solid var(--gray-200);
  display: flex; align-items: center; justify-content: center;
  font-size: .65rem;
  color: transparent;
  transition: var(--transition);
  flex-shrink: 0;
}
.supply-card#cardGeneral.active .supply-card-check {
  background: var(--primary); border-color: var(--primary); color: var(--white);
}
.supply-card#cardSpecial.active .supply-card-check {
  background: #7c3aed; border-color: #7c3aed; color: var(--white);
}

.supply-select-hint {
  margin-top: 12px;
  font-size: .85rem;
  color: var(--gray-600);
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 10px 14px;
  background: var(--gray-50);
  border-radius: var(--radius-sm);
  border: 1px solid var(--gray-200);
}

/* Page 2 유형 배지 */
.supply-type-badge-wrap { margin-top: 10px; }
.supply-type-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .82rem;
  font-weight: 700;
  padding: 5px 14px;
  border-radius: 20px;
}
.supply-type-badge.general,
.supply-type-badge:not(.special) {
  background: #dbeafe;
  color: var(--primary-dark);
}
.supply-type-badge.special {
  background: #ede9fe;
  color: #5b21b6;
}

@media (max-width: 640px) {
  .supply-select-cards { grid-template-columns: 1fr; }
  .supply-card { padding: 14px; }
}

/* ─── 동의 체크박스 ─── */
.agree-area {
  background: linear-gradient(135deg, #dbeafe, #eff6ff);
  border: 2px solid var(--primary-light);
  border-radius: var(--radius);
  padding: 20px 24px;
  margin-bottom: 24px;
}
.agree-checkbox {
  display: flex;
  align-items: center;
  gap: 12px;
  cursor: pointer;
}
.agree-checkbox input[type="checkbox"] { display: none; }
.checkbox-custom {
  width: 24px; height: 24px;
  border: 2px solid var(--primary-light);
  border-radius: 6px;
  background: var(--white);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  transition: var(--transition);
}
.agree-checkbox input:checked ~ .checkbox-custom {
  background: var(--primary);
  border-color: var(--primary);
}
.agree-checkbox input:checked ~ .checkbox-custom::after {
  content: '\f00c';
  font-family: 'Font Awesome 6 Free';
  font-weight: 900;
  color: var(--white);
  font-size: .8rem;
}
.agree-text {
  font-size: .95rem;
  font-weight: 600;
  color: var(--primary-dark);
}

/* ─── 버튼 공통 ─── */
.page-actions {
  margin-top: 28px;
  display: flex;
  justify-content: flex-end;
}
.page-actions.two-btn   { justify-content: space-between; }
.page-actions.three-btn { justify-content: space-between; align-items: center; gap: 8px; }

/* ── 출력 버튼 ── */
.btn-print {
  background: var(--white);
  color: #ea580c;
  border: 2px solid #fed7aa;
  padding: 13px 22px;
  border-radius: 30px;
  font-size: .92rem;
  font-weight: 700;
  cursor: pointer;
  transition: var(--transition);
  display: flex;
  align-items: center;
  gap: 7px;
  font-family: inherit;
}
.btn-print:hover {
  background: #fff7ed;
  border-color: #ea580c;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(234,88,12,.18);
}
.btn-print i { font-size: .9rem; }

.btn-next {
  background: linear-gradient(135deg, var(--primary), var(--primary-light));
  color: var(--white);
  border: none;
  padding: 14px 32px;
  border-radius: 30px;
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
  transition: var(--transition);
  display: flex; align-items: center; gap: 8px;
  box-shadow: 0 4px 14px rgba(30,64,175,.3);
  font-family: inherit;
}
.btn-next:hover:not(:disabled) {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(30,64,175,.4);
}
.btn-next:disabled {
  background: var(--gray-300);
  color: var(--gray-500);
  cursor: not-allowed;
  box-shadow: none;
}
.btn-next.success {
  background: linear-gradient(135deg, #059669, var(--success));
  box-shadow: 0 4px 14px rgba(16,185,129,.3);
}
.btn-next.success:hover:not(:disabled) { box-shadow: 0 6px 20px rgba(16,185,129,.4); }

.btn-prev {
  background: var(--white);
  color: var(--gray-600);
  border: 2px solid var(--gray-300);
  padding: 14px 24px;
  border-radius: 30px;
  font-size: .95rem;
  font-weight: 600;
  cursor: pointer;
  transition: var(--transition);
  display: flex; align-items: center; gap: 8px;
  font-family: inherit;
}
.btn-prev:hover { border-color: var(--primary); color: var(--primary); }

/* ─── PAGE 2: 배너 ─── */
.info-banner {
  background: linear-gradient(135deg, #eff6ff, #f0f9ff);
  border: 1px solid #bfdbfe;
  border-radius: var(--radius);
  padding: 18px 22px;
  margin-bottom: 24px;
}
.banner-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 6px 0;
  font-size: .88rem;
  color: var(--gray-700);
}
.banner-item i { margin-top: 2px; flex-shrink: 0; }
.banner-link {
  color: var(--primary);
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: var(--transition);
}
.banner-link:hover { border-bottom-color: var(--primary); }

/* ─── 서류 체크리스트 ─── */
.doc-checklist-wrap, .doc-review-wrap {
  background: var(--white);
  border-radius: var(--radius);
  padding: 24px;
  margin-bottom: 24px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--gray-200);
}
.section-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--gray-800);
  margin-bottom: 6px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.section-title i { color: var(--primary); }
.section-desc {
  font-size: .85rem;
  color: var(--gray-500);
  margin-bottom: 16px;
}
.doc-list { display: flex; flex-direction: column; gap: 12px; }
.doc-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: var(--gray-50);
  border-radius: var(--radius-sm);
  border: 1px solid var(--gray-200);
  transition: var(--transition);
  cursor: pointer;
}
.doc-item:hover { border-color: var(--primary-light); background: #eff6ff; }
.doc-item input[type="checkbox"] { display: none; }
.doc-item-check {
  width: 22px; height: 22px;
  border: 2px solid var(--gray-300);
  border-radius: 6px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  transition: var(--transition);
  background: var(--white);
}
.doc-item.checked .doc-item-check {
  background: var(--success);
  border-color: var(--success);
  color: var(--white);
}
.doc-item.checked .doc-item-check::after {
  content: '\f00c';
  font-family: 'Font Awesome 6 Free';
  font-weight: 900;
  font-size: .75rem;
}
.doc-item-num {
  width: 24px; height: 24px;
  background: var(--primary);
  color: var(--white);
  border-radius: 50%;
  font-size: .75rem;
  font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.doc-item-name {
  flex: 1;
  font-size: .9rem;
  font-weight: 500;
  color: var(--gray-700);
}
.doc-item.checked .doc-item-name { color: var(--gray-500); }

/* ─── 리치 서류 카드 ─── */
.doc-rich-card {
  background: var(--white);
  border: 1.5px solid var(--gray-200);
  border-radius: var(--radius);
  padding: 16px 18px 16px 22px;
  display: flex;
  gap: 14px;
  align-items: flex-start;
  transition: var(--transition);
  position: relative;
  overflow: hidden;
  width: 100%;
}
.doc-rich-card::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
  background: var(--gray-200);
  transition: var(--transition);
}
.doc-rich-card.checkable { cursor: pointer; }
.doc-rich-card.checkable:hover {
  border-color: var(--primary-light);
  background: #f8faff;
  box-shadow: var(--shadow-sm);
}
.doc-rich-card.checkable:hover::before { background: var(--primary-light); }
.doc-rich-card.checked {
  border-color: var(--success);
  background: #f0fdf4;
}
.doc-rich-card.checked::before { background: var(--success); }

/* 체크 아이콘 */
.doc-rich-check {
  width: 26px; height: 26px;
  border: 2px solid var(--gray-300);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
  transition: var(--transition);
  background: var(--white);
}
.doc-rich-check i { font-size: .7rem; color: transparent; transition: var(--transition); }
.doc-rich-card.checked .doc-rich-check {
  background: var(--success);
  border-color: var(--success);
}
.doc-rich-card.checked .doc-rich-check i { color: var(--white); }

/* 카드 본문 */
.doc-rich-body { flex: 1; min-width: 0; }

.doc-rich-top {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 9px;
}
.doc-rich-num {
  width: 26px; height: 26px;
  background: linear-gradient(135deg, var(--primary-dark), var(--primary));
  color: var(--white);
  border-radius: 50%;
  font-size: .78rem;
  font-weight: 800;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  margin-top: 1px;
}
.doc-rich-card.checked .doc-rich-num {
  background: linear-gradient(135deg, #065f46, var(--success));
}
.doc-rich-titles {
  display: flex;
  flex-direction: column;
  gap: 3px;
  flex: 1;
}
.doc-rich-title {
  font-size: .95rem;
  font-weight: 700;
  color: var(--gray-800);
  line-height: 1.35;
}
.doc-rich-card.checked .doc-rich-title { color: var(--gray-500); }
.doc-rich-sub {
  font-size: .78rem;
  color: var(--gray-500);
  font-weight: 400;
  line-height: 1.45;
}

/* 발급처 */
.doc-rich-issuer {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  color: var(--primary);
  font-size: .76rem;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 20px;
  margin-bottom: 9px;
}
.doc-rich-issuer i { font-size: .72rem; }

/* ── 본 페이지에서 작성 후 출력 (주황색 배지) ── */
.doc-rich-issuer.issuer-print-here {
  background: linear-gradient(135deg, #fff7ed, #ffedd5);
  border-color: #fb923c;
  color: #c2410c;
  font-weight: 700;
}
.doc-rich-issuer.issuer-print-here i {
  color: #ea580c;
}

/* ── 외부 링크 발급처 (클릭 가능) ── */
.doc-rich-issuer.issuer-link {
  background: #f0fdf4;
  border-color: #86efac;
  color: #166534;
  cursor: pointer;
  transition: background .18s, box-shadow .18s;
}
.doc-rich-issuer.issuer-link:hover {
  background: #dcfce7;
  box-shadow: 0 2px 8px rgba(22,101,52,.15);
}
.doc-rich-issuer.issuer-link a {
  color: #166534;
  text-decoration: none;
  font-weight: 700;
}
.doc-rich-issuer.issuer-link a:hover {
  text-decoration: underline;
}

/* 유의사항 */
.doc-rich-notes {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 5px;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: var(--radius-sm);
  padding: 10px 12px;
  margin-top: 4px;
}
.doc-rich-notes li {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  font-size: .8rem;
  color: #78350f;
  line-height: 1.6;
}
.doc-rich-notes li i {
  color: #d97706;
  font-size: .7rem;
  margin-top: 4px;
  flex-shrink: 0;
}
.doc-rich-notes li strong { color: #92400e; font-weight: 700; }
.note-indent {
  display: block;
  padding-left: 12px;
  color: #b45309;
  font-size: .76rem;
  margin-top: 1px;
}

/* ─── 안내 메시지 ─── */
.guide-message {
  background: linear-gradient(135deg, #fefce8, #fffbeb);
  border: 1px solid #fde68a;
  border-radius: var(--radius);
  padding: 16px 20px;
  display: flex;
  gap: 12px;
  align-items: flex-start;
  margin-bottom: 8px;
}
.guide-message i { color: var(--warning); font-size: 1.1rem; flex-shrink: 0; margin-top: 2px; }
.guide-message p { font-size: .9rem; color: var(--gray-700); line-height: 1.6; }

/* ─── 정보 입력 2 - 서류 안내 배너 ─── */
.page-guide-banner {
  display: flex;
  align-items: center;
  gap: 10px;
  background: linear-gradient(135deg, #dbeafe, #eff6ff);
  border: 1.5px solid #93c5fd;
  border-radius: var(--radius);
  padding: 13px 18px;
  margin-top: 14px;
  font-size: .93rem;
  font-weight: 600;
  color: var(--primary-dark);
}
.page-guide-banner i {
  font-size: 1.1rem;
  color: var(--primary);
  flex-shrink: 0;
}

/* ─── PAGE 3: 폼 ─── */
.form-section {
  background: var(--white);
  border-radius: var(--radius);
  padding: 28px;
  margin-bottom: 24px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--gray-200);
}
.form-section-title {
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--gray-900);
  margin-bottom: 22px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding-bottom: 14px;
  border-bottom: 2px solid var(--gray-100);
}
.section-num {
  width: 32px; height: 32px;
  background: linear-gradient(135deg, var(--primary-dark), var(--primary));
  color: var(--white);
  border-radius: 8px;
  font-size: .85rem;
  font-weight: 800;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.form-group { display: flex; flex-direction: column; gap: 6px; }
.form-group.full-width   { grid-column: 1 / -1; }
.form-group-full         { grid-column: 1 / -1; }
.form-label {
  font-size: .85rem;
  font-weight: 600;
  color: var(--gray-700);
  display: flex; align-items: center; gap: 6px;
  flex-wrap: wrap;
}
.form-label.required::after {
  content: '*';
  color: var(--danger);
  margin-left: 2px;
}
/* 라벨 옆 힌트 텍스트 */
.form-label-hint {
  font-size: .78rem;
  font-weight: 400;
  color: #2563eb;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 20px;
  padding: 2px 10px;
  white-space: nowrap;
  flex-shrink: 0;
}
/* Page 4 주소 읽기 전용 표시 */
.form-address-readonly {
  padding: 11px 14px;
  border: 2px solid var(--gray-200);
  border-radius: var(--radius-sm);
  background: #f8fafc;
  color: var(--gray-700);
  font-size: .92rem;
  min-height: 44px;
  line-height: 1.5;
  word-break: break-all;
}
.form-input, .form-select, .form-textarea {
  border: 2px solid var(--gray-200);
  border-radius: var(--radius-sm);
  padding: 11px 14px;
  font-size: .92rem;
  color: var(--gray-800);
  background: var(--white);
  transition: var(--transition);
  font-family: inherit;
  outline: none;
  width: 100%;
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(30,64,175,.1);
}
.form-input.error, .form-select.error, .form-textarea.error {
  border-color: var(--danger);
  box-shadow: 0 0 0 3px rgba(239,68,68,.1);
}
.form-select { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; padding-right: 36px; }
.form-textarea { resize: vertical; min-height: 90px; }
.error-msg {
  font-size: .78rem;
  color: var(--danger);
  font-weight: 500;
  min-height: 18px;
}

/* ─── 생년월일 분리 입력 ─── */
.birth-input-wrap {
  display: flex;
  align-items: center;
  gap: 0;
  border: 2px solid var(--gray-200);
  border-radius: var(--radius-sm);
  background: var(--white);
  padding: 0 14px 0 4px;
  transition: var(--transition);
  height: 46px;
}
.birth-input-wrap.focused {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(30,64,175,.1);
}
.birth-input-wrap.error {
  border-color: var(--danger);
  box-shadow: 0 0 0 3px rgba(239,68,68,.1);
}
.birth-seg {
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  background: transparent;
  font-family: inherit;
  font-size: .95rem;
  color: var(--gray-800);
  font-weight: 500;
  padding: 0 4px;
  text-align: center;
  -moz-appearance: textfield;
}
.birth-seg::-webkit-outer-spin-button,
.birth-seg::-webkit-inner-spin-button { -webkit-appearance: none; }
.birth-seg::placeholder { color: var(--gray-300); font-weight: 400; }
/* 연도 칸은 넉넉하게, 월/일은 좁게 */
#birthYear  { width: 52px; text-align: left; padding-left: 8px; }
#birthMonth { width: 32px; }
#birthDay   { width: 32px; }
.birth-seg.error { color: var(--danger); }

.birth-sep {
  color: var(--gray-300);
  font-size: 1rem;
  font-weight: 600;
  user-select: none;
  padding: 0 1px;
  line-height: 1;
}

.birth-input-wrap.filled .birth-sep { color: var(--gray-400); }

.radio-group { display: flex; gap: 12px; flex-wrap: wrap; }
.radio-label {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  padding: 10px 18px;
  border: 2px solid var(--gray-200);
  border-radius: 24px;
  font-size: .88rem;
  font-weight: 500;
  transition: var(--transition);
  color: var(--gray-600);
}
.radio-label:hover { border-color: var(--primary-light); color: var(--primary); }
.radio-label input[type="radio"] {
  width: 16px; height: 16px;
  accent-color: var(--primary);
}
.radio-label:has(input:checked) {
  border-color: var(--primary);
  background: #eff6ff;
  color: var(--primary);
  font-weight: 700;
}

/* ─── PAGE 4 ─── */
.doc-number-card {
  background: linear-gradient(135deg, var(--primary-dark), var(--primary));
  color: var(--white);
  border-radius: var(--radius-lg);
  padding: 28px;
  text-align: center;
  margin-bottom: 24px;
  box-shadow: 0 8px 32px rgba(30,64,175,.3);
}
.doc-number-label {
  font-size: .9rem;
  font-weight: 600;
  opacity: .85;
  margin-bottom: 10px;
}
.doc-number-value {
  font-size: 1.8rem;
  font-weight: 800;
  letter-spacing: 2px;
  margin-bottom: 10px;
  font-family: 'Courier New', monospace;
}
.doc-number-guide {
  font-size: .82rem;
  opacity: .75;
  margin-bottom: 16px;
}
.btn-copy {
  background: rgba(255,255,255,.2);
  color: var(--white);
  border: 2px solid rgba(255,255,255,.4);
  padding: 9px 22px;
  border-radius: 20px;
  font-size: .88rem;
  font-weight: 600;
  cursor: pointer;
  transition: var(--transition);
  font-family: inherit;
}
.btn-copy:hover { background: rgba(255,255,255,.3); }
.btn-copy.large { padding: 12px 30px; font-size: .95rem; }

/* ─── 긴급 제출 안내 박스 ─── */
.urgent-submit-box {
  border-radius: var(--radius-lg);
  margin-bottom: 28px;
  overflow: hidden;
  border: 2.5px solid #dc2626;
  box-shadow: 0 6px 28px rgba(220,38,38,.18);
  animation: urgentPulse 2.8s ease-in-out infinite;
}
@keyframes urgentPulse {
  0%,100% { box-shadow: 0 6px 28px rgba(220,38,38,.18); }
  50%      { box-shadow: 0 6px 36px rgba(220,38,38,.34); }
}

.urgent-header {
  background: linear-gradient(135deg, #b91c1c 0%, #dc2626 60%, #ef4444 100%);
  padding: 18px 24px;
  display: flex;
  align-items: center;
  gap: 16px;
}
.urgent-icon-wrap {
  width: 48px; height: 48px;
  background: rgba(255,255,255,.2);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem;
  color: #fef08a;
  flex-shrink: 0;
  animation: shake 3s ease-in-out infinite;
}
@keyframes shake {
  0%,90%,100% { transform: rotate(0deg); }
  92%         { transform: rotate(-10deg); }
  94%         { transform: rotate(10deg); }
  96%         { transform: rotate(-8deg); }
  98%         { transform: rotate(6deg); }
}
.urgent-tag {
  display: inline-block;
  background: rgba(255,255,255,.25);
  color: #fff;
  font-size: .72rem;
  font-weight: 800;
  padding: 3px 10px;
  border-radius: 10px;
  letter-spacing: .8px;
  text-transform: uppercase;
  margin-bottom: 4px;
}
.urgent-title {
  font-size: 1rem;
  font-weight: 800;
  color: var(--white);
  line-height: 1.45;
  margin: 0;
}

.urgent-desc {
  background: #fff5f5;
  padding: 16px 24px;
  font-size: .88rem;
  color: #7f1d1d;
  line-height: 1.75;
  border-bottom: 1px dashed #fca5a5;
}
.urgent-desc strong { color: #b91c1c; }
.urgent-warning-inline {
  display: inline-block;
  background: #b91c1c;
  color: var(--white);
  font-size: .78rem;
  font-weight: 800;
  padding: 3px 10px;
  border-radius: 10px;
  margin-left: 4px;
  vertical-align: middle;
  letter-spacing: .3px;
}

.urgent-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  background: var(--white);
  border-bottom: 1px dashed #fca5a5;
}
.urgent-info-item {
  padding: 18px 24px;
  border-right: 1px dashed #fca5a5;
}
.urgent-info-item:last-child { border-right: none; }
.urgent-info-item.deadline { background: #fff7ed; }
.urgent-info-item.email    { background: #fef9f9; }

.urgent-info-label {
  font-size: .75rem;
  font-weight: 800;
  color: #92400e;
  text-transform: uppercase;
  letter-spacing: .5px;
  margin-bottom: 6px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.urgent-info-item.email .urgent-info-label { color: #9f1239; }
.urgent-info-label i { font-size: .85rem; }

.urgent-info-value {
  font-size: 1rem;
  font-weight: 800;
  color: #b45309;
  line-height: 1.4;
  word-break: break-all;
}
.urgent-info-value.email-val {
  color: #be123c;
  font-size: .95rem;
}
.urgent-info-sub {
  font-size: .72rem;
  color: #d97706;
  margin-top: 4px;
  font-weight: 600;
}
.urgent-info-item.email .urgent-info-sub { color: #e11d48; }

.urgent-checklist {
  background: #fef2f2;
  padding: 14px 24px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.urgent-check-item {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  font-size: .85rem;
  color: #7f1d1d;
  line-height: 1.55;
}
.urgent-check-item i {
  color: #dc2626;
  font-size: .9rem;
  margin-top: 2px;
  flex-shrink: 0;
}
.urgent-check-item strong { color: #b91c1c; }

/* 레거시 호환용 (혹시 남아있을 경우) */
.submit-guide-card { display: none; }

/* ─── 입력 요약 ─── */
.summary-wrap {
  background: var(--white);
  border-radius: var(--radius);
  padding: 24px;
  margin-bottom: 24px;
  border: 1px solid var(--gray-200);
  box-shadow: var(--shadow-sm);
}
.summary-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 14px;
}
.summary-item {
  padding: 12px 14px;
  background: var(--gray-50);
  border-radius: var(--radius-sm);
  border: 1px solid var(--gray-100);
}
.summary-item .s-label { font-size: .78rem; color: var(--gray-400); font-weight: 600; margin-bottom: 4px; }
.summary-item .s-value { font-size: .9rem; color: var(--gray-800); font-weight: 600; }
.summary-item.full { grid-column: 1 / -1; }

.thank-you-msg {
  text-align: center;
  font-size: 1.8rem;
  color: var(--primary);
  font-weight: 800;
  padding: 20px 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}
.thank-you-msg i { color: var(--danger); animation: heartbeat 1.2s ease infinite; }
@keyframes heartbeat {
  0%,100% { transform: scale(1); }
  50%      { transform: scale(1.2); }
}

/* ─── 제출 완료 오버레이 ─── */
.submitted-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.65);
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.submitted-card {
  background: var(--white);
  border-radius: var(--radius-lg);
  padding: 40px 36px;
  max-width: 480px;
  width: 100%;
  text-align: center;
  box-shadow: var(--shadow-lg);
  animation: popIn .4s cubic-bezier(.34,1.56,.64,1);
}
@keyframes popIn {
  from { transform: scale(.85); opacity: 0; }
  to   { transform: scale(1); opacity: 1; }
}
.submitted-icon {
  font-size: 3.5rem;
  color: var(--success);
  margin-bottom: 16px;
  animation: bounceIn .6s ease;
}
@keyframes bounceIn {
  0%   { transform: scale(0); }
  60%  { transform: scale(1.15); }
  100% { transform: scale(1); }
}
.submitted-card h2 {
  font-size: 1.4rem;
  font-weight: 800;
  color: var(--gray-900);
  margin-bottom: 16px;
}
.submitted-doc-number {
  font-size: 1.5rem;
  font-weight: 800;
  color: var(--primary);
  font-family: 'Courier New', monospace;
  letter-spacing: 2px;
  background: #eff6ff;
  padding: 14px 20px;
  border-radius: var(--radius-sm);
  margin-bottom: 16px;
  border: 2px dashed var(--primary-light);
}
.submitted-card p {
  font-size: .9rem;
  color: var(--gray-600);
  line-height: 1.7;
  margin-bottom: 16px;
}
.submit-reminder {
  background: #fff7ed;
  border-radius: var(--radius-sm);
  padding: 12px 16px;
  font-size: .85rem !important;
  color: var(--orange) !important;
  font-weight: 600;
  border: 1px solid #fed7aa;
}
.submit-reminder i { margin-right: 6px; }

/* ─── 모달 ─── */
.modal-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.55);
  z-index: 300;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.modal-overlay.open { display: flex; }
.modal-box {
  background: var(--white);
  border-radius: var(--radius-lg);
  padding: 32px;
  max-width: 500px;
  width: 100%;
  position: relative;
  box-shadow: var(--shadow-lg);
  animation: slideUp .3s ease;
}
.modal-box.large { max-width: 680px; }
@keyframes slideUp {
  from { transform: translateY(30px); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}
.modal-close {
  position: absolute;
  top: 16px; right: 16px;
  background: var(--gray-100);
  border: none;
  width: 32px; height: 32px;
  border-radius: 50%;
  color: var(--gray-500);
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: var(--transition);
  font-family: inherit;
}
.modal-close:hover { background: var(--gray-200); color: var(--gray-800); }
.modal-title {
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--gray-900);
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.modal-title i { color: var(--primary); }
.modal-desc { font-size: .88rem; color: var(--gray-500); margin-bottom: 20px; }
.modal-input-row {
  display: flex;
  gap: 10px;
}
.btn-lookup-submit {
  background: var(--primary);
  color: var(--white);
  border: none;
  padding: 11px 22px;
  border-radius: var(--radius-sm);
  font-size: .9rem;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  font-family: inherit;
  transition: var(--transition);
}
.btn-lookup-submit:hover { background: var(--primary-dark); }
.lookup-result { margin-top: 16px; }
.lookup-found {
  background: var(--gray-50);
  border-radius: var(--radius-sm);
  padding: 16px;
  border: 1px solid var(--gray-200);
  font-size: .88rem;
}
.lookup-not-found {
  color: var(--danger);
  font-size: .9rem;
  font-weight: 600;
  text-align: center;
  padding: 20px 0;
}

/* ==========================================
   현장 선택 오버레이 (Site Picker)
   ========================================== */

.site-picker-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 50%, #1e40af 100%);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  overflow-y: auto;
  padding: 32px 16px 48px;
  transition: opacity .35s ease;
}
.site-picker-overlay.fade-out {
  opacity: 0;
  pointer-events: none;
}

.site-picker-inner {
  width: 100%;
  max-width: 720px;
}

.site-picker-header {
  text-align: center;
  padding: 40px 0 36px;
}
.site-picker-logo {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 1rem;
  font-weight: 700;
  color: rgba(255,255,255,.7);
  letter-spacing: .05em;
  margin-bottom: 24px;
}
.site-picker-logo i {
  font-size: 1.4rem;
  color: #60a5fa;
}
.site-picker-title {
  font-size: clamp(1.5rem, 4vw, 2.2rem);
  font-weight: 800;
  color: #fff;
  margin-bottom: 12px;
  letter-spacing: -.02em;
}
.site-picker-subtitle {
  font-size: .95rem;
  color: rgba(255,255,255,.65);
  line-height: 1.7;
}

/* 현장 카드 그리드 */
.site-card-grid {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* 현장 카드 버튼 */
.site-card {
  display: flex;
  align-items: center;
  gap: 18px;
  background: rgba(255,255,255,.08);
  border: 1.5px solid rgba(255,255,255,.15);
  border-radius: 16px;
  padding: 20px 24px;
  text-align: left;
  cursor: pointer;
  transition: background .2s, border-color .2s, transform .15s;
  animation: siteCardIn .4s ease both;
  width: 100%;
  color: #fff;
}
.site-card:hover {
  background: rgba(255,255,255,.18);
  border-color: rgba(255,255,255,.45);
  transform: translateY(-2px);
}
.site-card:active {
  transform: translateY(0);
}

@keyframes siteCardIn {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}

.site-card-icon {
  width: 52px;
  height: 52px;
  border-radius: 14px;
  background: rgba(96, 165, 250, .25);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.4rem;
  color: #93c5fd;
  flex-shrink: 0;
}

.site-card-body {
  flex: 1;
  min-width: 0;
}
.site-card-name {
  font-size: 1.08rem;
  font-weight: 700;
  color: #fff;
  margin-bottom: 4px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.site-card-project {
  font-size: .82rem;
  color: rgba(255,255,255,.55);
  margin-bottom: 4px;
}
.site-card-deadline {
  font-size: .8rem;
  color: #fbbf24;
  display: flex;
  align-items: center;
  gap: 5px;
}

.site-card-arrow {
  font-size: 1rem;
  color: rgba(255,255,255,.4);
  flex-shrink: 0;
}

/* 로딩 */
.site-loading {
  text-align: center;
  padding: 60px 0;
  color: rgba(255,255,255,.5);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  font-size: 1rem;
}
.site-loading i { font-size: 1.5rem; }

/* 관리자 링크 (하단 고정) */
.site-admin-link-wrap {
  text-align: center;
  padding: 36px 0 8px;
  position: relative;
  z-index: 10;
  pointer-events: auto;
}
.site-admin-link-btn {
  background: none;
  border: 1px solid rgba(255,255,255,.18);
  color: rgba(255,255,255,.35);
  font-size: .78rem;
  font-family: inherit;
  padding: 7px 18px;
  border-radius: 20px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: color .2s, border-color .2s, background .2s;
  letter-spacing: .02em;
  position: relative;
  z-index: 10;
  pointer-events: auto;
  -webkit-tap-highlight-color: rgba(255,255,255,.1);
  touch-action: manipulation;
}
.site-admin-link-btn:hover {
  color: rgba(255,255,255,.7);
  border-color: rgba(255,255,255,.4);
  background: rgba(255,255,255,.07);
}
.site-admin-link-btn:active {
  transform: scale(.97);
  background: rgba(255,255,255,.1);
}

/* 관리자 로그인 모달 */
.site-admin-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 3000;
  background: rgba(0,0,0,.65);
  display: none;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
}
.site-admin-modal-overlay.open {
  display: flex;
}
.site-admin-modal-box {
  background: #1e293b;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 20px;
  padding: 40px 36px 32px;
  width: 100%;
  max-width: 360px;
  text-align: center;
  position: relative;
  box-shadow: 0 24px 64px rgba(0,0,0,.5);
  animation: adminModalIn .25s ease;
}
@keyframes adminModalIn {
  from { opacity:0; transform: scale(.94) translateY(10px); }
  to   { opacity:1; transform: scale(1)  translateY(0); }
}
.site-admin-modal-close {
  position: absolute;
  top: 14px; right: 16px;
  background: none;
  border: none;
  color: rgba(255,255,255,.35);
  font-size: 1rem;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 6px;
  transition: color .15s;
}
.site-admin-modal-close:hover { color: rgba(255,255,255,.7); }

.site-admin-modal-icon {
  width: 52px; height: 52px;
  border-radius: 14px;
  background: rgba(96,165,250,.15);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.3rem;
  color: #60a5fa;
  margin-bottom: 16px;
}
.site-admin-modal-title {
  font-size: 1.15rem;
  font-weight: 700;
  color: #fff;
  margin-bottom: 6px;
}
.site-admin-modal-desc {
  font-size: .85rem;
  color: rgba(255,255,255,.45);
  margin-bottom: 20px;
}
.site-admin-modal-input-wrap {
  display: flex;
  gap: 8px;
  align-items: center;
}
.site-admin-modal-input {
  flex: 1;
  background: rgba(255,255,255,.07);
  border: 1.5px solid rgba(255,255,255,.15);
  border-radius: 10px;
  padding: 11px 14px;
  color: #fff;
  font-size: .95rem;
  font-family: inherit;
  outline: none;
  transition: border-color .2s;
}
.site-admin-modal-input::placeholder { color: rgba(255,255,255,.3); }
.site-admin-modal-input:focus { border-color: #60a5fa; }
.site-admin-modal-input.shake {
  animation: inputShake .35s ease;
  border-color: #ef4444;
}
.site-admin-modal-submit {
  width: 42px; height: 42px;
  border-radius: 10px;
  background: #3b82f6;
  border: none;
  color: #fff;
  font-size: 1rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background .15s;
}
.site-admin-modal-submit:hover { background: #2563eb; }

.site-admin-modal-error {
  min-height: 20px;
  font-size: .82rem;
  color: #f87171;
  margin-top: 10px;
  font-weight: 500;
}
.site-admin-modal-error.shake {
  animation: inputShake .35s ease;
}
@keyframes inputShake {
  0%,100% { transform: translateX(0); }
  20%      { transform: translateX(-6px); }
  40%      { transform: translateX(6px); }
  60%      { transform: translateX(-4px); }
  80%      { transform: translateX(4px); }
}

/* 현장 없음 */
.site-empty {
  text-align: center;
  padding: 60px 0;
  color: rgba(255,255,255,.55);
  flex-direction: column;
  align-items: center;
  gap: 10px;
  font-size: .95rem;
}
.site-empty i { font-size: 2.5rem; color: rgba(255,255,255,.2); margin-bottom: 8px; }
.site-empty-sub { font-size: .85rem; color: rgba(255,255,255,.4); }
.site-empty a { color: #60a5fa; }

/* ─── 토스트 ─── */
.toast {
  position: fixed;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%) translateY(20px);
  background: var(--gray-900);
  color: var(--white);
  padding: 12px 24px;
  border-radius: 24px;
  font-size: .9rem;
  font-weight: 600;
  opacity: 0;
  transition: all .3s ease;
  z-index: 500;
  pointer-events: none;
  white-space: nowrap;
  max-width: 90vw;
}
.toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.toast.success { background: var(--success); }
.toast.error   { background: var(--danger); }

/* ═══════════════════════════════════════════════════
   공급신청서 (Page 4) 전용 스타일
   ═══════════════════════════════════════════════════ */

/* 공급유형 + 주택유형 체크박스 레이블 */
.app-chk-label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  cursor: pointer;
  font-size: .88rem;
  color: var(--gray-700);
  padding: 3px 6px;
  border-radius: 6px;
  transition: background .15s;
  user-select: none;
}
.app-chk-label:hover { background: #eff6ff; color: var(--primary); }
.app-chk {
  font-size: 1rem;
  font-weight: 700;
  color: var(--primary-dark);
  line-height: 1;
}

/* 신청문구 + 날짜 + 서명 섹션 */
.app-sign-section {
  margin: 10px 0 6px;
  padding: 12px 16px;
  border: 1px solid var(--gray-200);
  border-radius: var(--radius-sm);
  background: #f8fafc;
}
.app-sign-text {
  font-size: .85rem;
  color: var(--gray-700);
  line-height: 1.7;
  margin-bottom: 10px;
}
.app-sign-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 8px;
}
.app-sign-date {
  font-size: .9rem;
  font-weight: 600;
  color: var(--gray-800);
}
.app-sign-name-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
.app-sign-label {
  font-size: .85rem;
  font-weight: 700;
  color: var(--gray-700);
}
.app-sign-name {
  font-size: .95rem;
  font-weight: 800;
  color: var(--primary-dark);
  min-width: 80px;
  padding-bottom: 2px;
  border-bottom: 1.5px solid var(--gray-400);
}
.app-sign-stamp {
  font-size: .78rem;
  color: var(--gray-500);
}
.app-sign-dest {
  text-align: right;
  font-size: .88rem;
  font-weight: 700;
  color: var(--gray-800);
}

/* 제출서류 항목 */
.app-doc-item {
  font-size: .82rem;
  line-height: 1.7;
  padding: 6px 10px !important;
}

/* 필드 레이블 (신청서 내부) */
.form-doc-field-label {
  font-size: .82rem;
  font-weight: 700;
  color: var(--gray-600);
  white-space: nowrap;
}

/* 유의사항 박스 */
.app-notice-box {
  margin-top: 6px;
  padding: 10px 14px;
  background: #f8fafc;
  border: 1px solid var(--gray-200);
  border-radius: var(--radius-sm);
}
.app-notice-title {
  font-size: .85rem;
  font-weight: 800;
  color: var(--gray-800);
  margin-bottom: 6px;
}
.app-notice-list {
  font-size: .82rem;
  color: var(--gray-600);
  padding-left: 18px;
  margin: 0;
  line-height: 1.8;
}

/* ═══════════════════════════════════════════════════
   A4 인쇄 전용 스타일 (@media print)
   ═══════════════════════════════════════════════════ */
@media print {
  /* ── 용지 설정: A4 세로, 여백 최소화 ── */
  @page {
    size: A4 portrait;
    margin: 10mm 12mm;
  }

  /* ── 컬러 인쇄 강제 보존 ── */
  * {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    color-adjust: exact !important;
  }

  /* ── 화면 전용 UI 요소 완전 숨김 ── */
  .app-header,
  .progress-nav,
  .page-actions,
  .page-guide-banner,
  .page-badge,
  .form-doc-member-actions,
  .btn-copy,
  .btn-print,
  .btn-add-member,
  .btn-member-del,
  .btn-next,
  .btn-prev,
  .error-msg,
  .toast {
    display: none !important;
  }

  /* ── body / html 기본 재설정 ── */
  html, body {
    background: #fff !important;
    padding: 0 !important;
    margin: 0 !important;
    font-size: 9.5pt !important;
  }

  /* ── main-container: 인쇄 시 패딩 제거 (공통) ── */
  .main-container {
    padding: 0 !important;
    margin: 0 !important;
    max-width: 100% !important;
  }

  /* ── 헤더/네비/FAB 등 화면 전용 UI 완전 숨김 (공통) ── */
  .app-header,
  .progress-nav,
  .fab-checklist,
  .modal-overlay,
  .toast,
  #printChecklistOverlay {
    display: none !important;
  }

  /* ── 모든 페이지 기본 숨김 ── */
  .page {
    display: none !important;
  }

  /* ── 소득확인서 출력 (print-income) ── */
  body.print-income #page35 {
    display: block !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
  }

  /* ── 서약서 출력 (print-pledge) ── */
  body.print-pledge #page37 {
    display: block !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
  }

  /* ── 자산확인서 출력 (print-asset) ── */
  body.print-asset #page36 {
    display: block !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
  }

  /* ── 공급신청서 출력 (print-application) ── */
  body.print-application #page38 {
    display: block !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
  }
  /* 공급신청서 내부 form-section 헤더 숨김 */
  body.print-application #page38 .form-section-title {
    display: none !important;
  }
  body.print-application #page38 .form-section {
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
  }
  /* 공급신청서 서명 섹션 출력 스타일 */
  body.print-application .app-sign-section {
    background: #fff !important;
    border: none !important;
    padding: 4pt 0 !important;
    margin: 4pt 0 !important;
  }
  body.print-application .app-sign-text {
    font-size: 8pt !important;
    text-align: center !important;
  }
  body.print-application .app-sign-date { font-size: 9pt !important; }
  body.print-application .app-sign-name {
    font-size: 9pt !important;
    border-bottom: 0.5pt solid #555 !important;
  }
  body.print-application .app-sign-stamp { font-size: 7.5pt !important; }
  body.print-application .app-sign-dest {
    font-size: 9pt !important;
    text-align: right !important;
    margin-top: 3pt !important;
  }
  body.print-application .app-notice-box {
    background: #f5f5f5 !important;
    border: 0.5pt solid #ccc !important;
    padding: 3pt 6pt !important;
    margin-top: 3pt !important;
  }
  body.print-application .app-notice-title { font-size: 8pt !important; }
  body.print-application .app-notice-list  { font-size: 7.5pt !important; }
  body.print-application .app-chk          { font-size: 10pt !important; }
  body.print-application .app-chk-label    { font-size: 8pt !important; }
  body.print-application .form-doc-field-label { font-size: 8pt !important; }
  body.print-application .app-doc-item     { font-size: 7.5pt !important; }
  body.print-application #page38 .page-header {
    display: block !important;
    text-align: center;
    margin-bottom: 4pt !important;
  }
  body.print-application #page38 .page-title {
    font-size: 12pt !important;
    font-weight: 800 !important;
    margin: 0 !important;
  }
  body.print-application #page38 .page-badge { display: none !important; }

  /* ── 클래스 없이 출력 시 폴백 ── */
  body:not(.print-income):not(.print-asset):not(.print-pledge):not(.print-application):not(.print-affidavit):not(.print-zeroincome):not(.print-privacy):not(.print-page5):not(.print-parking) #page35,
  body:not(.print-income):not(.print-asset):not(.print-pledge):not(.print-application):not(.print-affidavit):not(.print-zeroincome):not(.print-privacy):not(.print-page5):not(.print-parking) #page36,
  body:not(.print-income):not(.print-asset):not(.print-pledge):not(.print-application):not(.print-affidavit):not(.print-zeroincome):not(.print-privacy):not(.print-page5):not(.print-parking) #page37,
  body:not(.print-income):not(.print-asset):not(.print-pledge):not(.print-application):not(.print-affidavit):not(.print-zeroincome):not(.print-privacy):not(.print-page5):not(.print-parking) #page38,
  body:not(.print-income):not(.print-asset):not(.print-pledge):not(.print-application):not(.print-affidavit):not(.print-zeroincome):not(.print-privacy):not(.print-page5):not(.print-parking) #page47 {
    display: block !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
  }

  /* ── page35 / page36 / page37 타이틀 출력용 표시 ── */
  #page35 .page-header,
  #page36 .page-header,
  #page37 .page-header {
    display: block !important;
    margin-bottom: 6pt !important;
    text-align: center;
  }
  #page35 .page-title,
  #page36 .page-title,
  #page37 .page-title {
    font-size: 13pt !important;
    font-weight: 800 !important;
    margin: 0 0 2pt 0 !important;
  }

  /* ── page36 자산확인서 출력 전용 ── */
  .asset-doc-title {
    font-size: 14pt !important;
    font-weight: 900 !important;
    text-align: center !important;
    letter-spacing: 4pt !important;
    margin: 4pt 0 6pt !important;
  }
  .asset-table {
    font-size: 8pt !important;
  }
  .asset-table td,
  .asset-table th {
    padding: 3pt 4pt !important;
    font-size: 8pt !important;
  }
  .asset-yn-wrap {
    display: flex !important;
    flex-direction: column !important;
    gap: 1pt !important;
    align-items: flex-start !important;
  }
  .asset-yn-label {
    font-size: 8pt !important;
    gap: 3pt !important;
  }
  .asset-chkbox {
    font-size: 9pt !important;
  }
  .asset-input {
    border: none !important;
    border-bottom: 0.5pt solid #777 !important;
    font-size: 7.5pt !important;
    padding: 1pt 2pt !important;
    background: transparent !important;
    width: 100% !important;
    color: #111 !important;
  }
  .asset-won {
    font-size: 7.5pt !important;
  }
  .asset-note-row {
    font-size: 7.5pt !important;
    padding: 3pt 4pt !important;
  }
  .asset-confirm-list {
    font-size: 7.5pt !important;
    padding-left: 12pt !important;
  }
  .asset-confirm-list li {
    margin-bottom: 2pt !important;
  }
  .asset-section-label {
    font-size: 8pt !important;
    padding: 2pt 4pt !important;
  }
  .asset-total-row { background: #e8f0fe !important; }
  .asset-total-label-cell {
    font-size: 8pt !important;
    font-weight: 900 !important;
    background: #1e3a5f !important;
    color: #fff !important;
    text-align: center !important;
  }
  .asset-total-formula { font-size: 7pt !important; }
  .asset-total-num {
    font-size: 10pt !important;
    font-weight: 900 !important;
  }
  .asset-total-num.asset-total-positive { color: #1d4ed8 !important; }
  .asset-total-num.asset-total-negative { color: #dc2626 !important; }

  /* ── 서약서 출력 전용 ── */
  .pledge-table { font-size: 8pt !important; }
  .pledge-table td, .pledge-table th { padding: 3pt 4pt !important; font-size: 8pt !important; }
  .pledge-content-table { font-size: 7.5pt !important; }
  .pledge-content-table td, .pledge-content-table th { padding: 2pt 4pt !important; font-size: 7.5pt !important; }
  .pledge-list { padding-left: 12pt !important; margin: 0 !important; }
  .pledge-list li { line-height: 1.5 !important; margin-bottom: 1pt !important; }
  .pledge-list-sub { padding-left: 0 !important; margin: 2pt 0 !important; list-style: none !important; }
  .pledge-list-sub li { font-size: 7.5pt !important; line-height: 1.5 !important; margin-bottom: 1pt !important; }
  .pledge-income-table { font-size: 7pt !important; margin-top: 2pt !important; }
  .pledge-income-row { padding: 1pt 4pt !important; }
  .pledge-confirm-box { font-size: 7.5pt !important; padding: 4pt 6pt !important; margin: 4pt 0 !important; }
  .pledge-chkbox { font-size: 10pt !important; }
  .pledge-input { border: none !important; border-bottom: 0.5pt solid #777 !important; font-size: 8pt !important; }

  /* ── 공문서 양식 본체 ── */
  .form-doc-wrap {
    padding: 0 !important;
    background: #fff !important;
    border: none !important;
    box-shadow: none !important;
  }

  /* ── 법령 출처 / 안내 행 ── */
  .form-doc-law {
    font-size: 7.5pt !important;
    padding: 2pt 0 !important;
    border-bottom: 1px solid #555 !important;
    margin-bottom: 1pt !important;
  }
  .form-doc-guide-row {
    font-size: 7.5pt !important;
    padding: 1pt 0 3pt !important;
    color: #333 !important;
  }

  /* ── 공문서 테이블 공통 ── */
  .form-doc-table {
    width: 100% !important;
    border-collapse: collapse !important;
    font-size: 8.5pt !important;
    margin-bottom: 4pt !important;
    table-layout: fixed !important;
  }
  .form-doc-table td,
  .form-doc-table th {
    border: 0.7pt solid #555 !important;
    padding: 3pt 4pt !important;
    vertical-align: middle !important;
    word-break: break-all !important;
    line-height: 1.3 !important;
  }

  /* ── 라벨 셀 (어두운 칸) ── */
  .form-doc-th.dark-cell {
    background: #d0d0d0 !important;
    font-size: 8pt !important;
    font-weight: 700 !important;
    text-align: center !important;
    color: #111 !important;
  }
  .form-doc-th.dark-cell-light {
    background: #e8e8e8 !important;
    font-size: 8pt !important;
    font-weight: 700 !important;
    text-align: center !important;
    color: #111 !important;
  }
  .form-doc-td {
    background: #fff !important;
    color: #111 !important;
  }

  /* ── 가구총계 합계 셀 ── */
  .form-doc-total-val {
    font-size: 10pt !important;
    font-weight: 800 !important;
    color: #c2410c !important;
  }
  .form-doc-total-desc {
    font-size: 7.5pt !important;
    color: #555 !important;
  }

  /* ── 월간소득 표시 span ── */
  .form-doc-calc-result {
    font-size: 9pt !important;
    font-weight: 700 !important;
    color: #c2410c !important;
  }

  /* ── 계산식 행 ── */
  .form-doc-calc-row {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 2pt !important;
    align-items: center !important;
    font-size: 7.5pt !important;
  }
  .form-doc-calc-hint {
    font-size: 7.5pt !important;
    color: #444 !important;
  }
  .income-formula {
    font-size: 7.5pt !important;
    color: #555 !important;
  }

  /* ── 입력 필드: 출력 시 테두리 제거, 값만 표시 ── */
  .form-doc-input,
  .form-doc-input-sm,
  .form-doc-input-xs {
    border: none !important;
    border-bottom: 0.5pt solid #777 !important;
    padding: 1pt 2pt !important;
    font-size: 8.5pt !important;
    background: transparent !important;
    color: #111 !important;
    min-width: 0 !important;
  }

  /* ── auto-val span (자동입력 텍스트) ── */
  .form-doc-auto-val {
    font-size: 8.5pt !important;
    color: #111 !important;
  }

  /* ── 체크박스 표시 ── */
  .form-doc-chkbox,
  .form-doc-chk-label {
    font-size: 8.5pt !important;
  }
  .form-doc-radio-row {
    display: flex !important;
    gap: 10pt !important;
    flex-wrap: wrap !important;
  }

  /* ── meta 행 (접수번호/접수일시) ── */
  .meta-readonly {
    font-size: 8pt !important;
    color: #555 !important;
  }
  .form-doc-badge-instant {
    font-size: 7.5pt !important;
    background: #e5e7eb !important;
    color: #111 !important;
    padding: 0 3pt !important;
  }

  /* ── 세대원 체크박스 래퍼 숨김 (삭제 버튼, 체크 UI 제거) ── */
  .form-doc-member-chk-wrap {
    display: none !important;
  }

  /* ── 서명 섹션 ── */
  .form-doc-sign-section {
    margin-top: 5pt !important;
    padding: 4pt 0 !important;
    page-break-inside: avoid !important;
  }
  .form-doc-sign-law {
    font-size: 7.5pt !important;
    text-align: center !important;
    color: #333 !important;
    margin-bottom: 4pt !important;
  }
  .form-doc-sign-row {
    display: flex !important;
    justify-content: center !important;
    gap: 20pt !important;
    align-items: center !important;
    margin-bottom: 3pt !important;
  }
  .form-doc-sign-date-val {
    font-size: 9pt !important;
  }
  .form-doc-sign-name {
    font-size: 9pt !important;
  }
  .form-doc-sign-seal {
    font-size: 8pt !important;
    color: #555 !important;
  }
  .form-doc-dest {
    text-align: right !important;
    font-size: 9pt !important;
    font-weight: 700 !important;
  }

  /* ── 하단 안내표 (제출서류/수수료) ── */
  .form-doc-bottom-table {
    margin-top: 4pt !important;
  }
  .form-doc-bottom-table td {
    font-size: 7.5pt !important;
    padding: 2pt 4pt !important;
  }

  /* ── 유의사항 ── */
  .form-doc-notice {
    margin-top: 4pt !important;
    padding: 4pt 6pt !important;
    background: #f5f5f5 !important;
    border: 0.5pt solid #ccc !important;
    page-break-inside: avoid !important;
  }
  .form-doc-notice-title {
    font-size: 8pt !important;
    font-weight: 700 !important;
    margin-bottom: 2pt !important;
  }
  .form-doc-notice-list {
    font-size: 7.5pt !important;
    padding-left: 12pt !important;
    margin: 0 !important;
    color: #333 !important;
  }
  .form-doc-notice-list li {
    margin-bottom: 1pt !important;
  }

  /* ── 세대원 동적 행 ── */
  .form-doc-member-row td {
    font-size: 8.5pt !important;
    padding: 3pt 4pt !important;
  }

  /* ── 개인정보 동의서 출력 (print-privacy) ── */
  /* ① body / main-container 패딩 완전 제거 */
  body.print-privacy {
    padding: 0 !important;
    margin: 0 !important;
  }
  body.print-privacy .main-container {
    padding: 0 !important;
    margin: 0 !important;
    max-width: 100% !important;
  }

  /* ② 화면 전용 UI 숨김 */
  body.print-privacy .app-header,
  body.print-privacy .progress-nav,
  body.print-privacy .toast,
  body.print-privacy .fab-checklist,
  body.print-privacy .modal-overlay,
  body.print-privacy #printChecklistOverlay {
    display: none !important;
  }

  /* ③ page47 외 모든 페이지 완전 숨김 (height:0으로 공간 점유 제거) */
  body.print-privacy .main-container > .page:not(#page47) {
    display: none !important;
    height: 0 !important;
    min-height: 0 !important;
    overflow: hidden !important;
  }

  /* ④ page47 자체: 최상단 여백 없이 표시 */
  body.print-privacy #page47 {
    display: block !important;
    position: static !important;
    padding: 0 !important;
    margin: 0 !important;
    top: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
    width: 100% !important;
    animation: none !important;
    min-height: 0 !important;
  }
  body.print-privacy #page47 .page-header {
    display: block !important;
    text-align: center;
    margin-bottom: 8pt !important;
  }
  body.print-privacy #page47 .page-title {
    font-size: 14pt !important;
    font-weight: 900 !important;
    margin: 0 0 4pt 0 !important;
    letter-spacing: 2pt !important;
  }
  /* 동의서 인쇄: 체크박스 UI 제거 → 서명으로 대체 표시 */
  body.print-privacy .privacy-agree-box {
    display: none !important;
  }
  body.print-privacy .privacy-intro-box {
    border: 0.5pt solid #aaa !important;
    padding: 6pt 8pt !important;
    border-radius: 0 !important;
    background: #fafafa !important;
    margin-bottom: 8pt !important;
  }
  body.print-privacy .privacy-intro-text {
    font-size: 8.5pt !important;
    line-height: 1.6 !important;
    color: #111 !important;
  }
  body.print-privacy .privacy-article-wrap {
    border: 0.7pt solid #555 !important;
    padding: 0 !important;
  }
  body.print-privacy .privacy-article {
    border-bottom: 0.5pt solid #bbb !important;
    padding: 4pt 8pt !important;
    page-break-inside: avoid !important;
  }
  body.print-privacy .privacy-article:last-child {
    border-bottom: none !important;
  }
  body.print-privacy .privacy-article-title {
    font-size: 8.5pt !important;
    font-weight: 800 !important;
    color: #111 !important;
    margin-bottom: 2pt !important;
  }
  body.print-privacy .privacy-article-body {
    font-size: 8pt !important;
    color: #222 !important;
    line-height: 1.55 !important;
  }
  body.print-privacy .privacy-basis {
    font-size: 7.5pt !important;
    color: #444 !important;
  }
  body.print-privacy .privacy-table {
    font-size: 8.5pt !important;
    margin-top: 8pt !important;
  }
  body.print-privacy .privacy-table td {
    padding: 3pt 5pt !important;
    font-size: 8.5pt !important;
  }

  /* ── 폴백: 클래스 없이 출력 시 ── */
  body:not(.print-income):not(.print-asset):not(.print-pledge):not(.print-application):not(.print-affidavit):not(.print-zeroincome):not(.print-privacy):not(.print-page5):not(.print-parking) #page47 {
    display: block !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
  }

  /* ══════════════════════════════════════════════════════
     워터마크 — 모든 출력물 우측 최상단
     기존 콘텐츠와 겹치지 않도록 position:fixed + 우상단 배치
     ══════════════════════════════════════════════════════ */
  .print-watermark {
    display: block !important;
    position: fixed !important;
    top: 6mm !important;
    right: 8mm !important;
    font-size: 7pt !important;
    color: #aaa !important;
    font-weight: 500 !important;
    letter-spacing: 0.02em !important;
    white-space: nowrap !important;
    z-index: 9999 !important;
    pointer-events: none !important;
    border: 0.4pt solid #ccc !important;
    padding: 1.5pt 5pt !important;
    border-radius: 2pt !important;
    background: rgba(255,255,255,0.85) !important;
  }
}

/* ─── 인쇄 워터마크: 화면에서는 숨김 ─── */
.print-watermark {
  display: none;
}

/* ─── 포커스 접근성 ─── */
.btn-next:focus-visible, .btn-prev:focus-visible, .btn-copy:focus-visible {
  outline: 3px solid var(--primary-light);
  outline-offset: 2px;
}

/* ═══════════════════════════════════════════════════
   Page 35: 월평균 소득현황 확인서 (특별공급 전용)
   ═══════════════════════════════════════════════════ */

/* 특별공급 배지 */
.special-badge {
  background: linear-gradient(135deg, #c2410c, #f97316) !important;
  color: #fff !important;
}

/* 소득 안내 배너 */
.income-banner {
  background: linear-gradient(135deg, #fff7ed, #ffedd5) !important;
  border-color: #fed7aa !important;
  color: #9a3412 !important;
}
.income-banner i { color: #ea580c !important; }

/* 신청인 정보 카드 */
.income-applicant-card {
  background: linear-gradient(135deg, #fffbf5, #fff7ed);
  border: 1.5px solid #fed7aa;
  border-radius: var(--radius);
  padding: 16px 20px;
  margin-bottom: 20px;
}
.income-app-row {
  display: flex;
  gap: 20px;
  flex-wrap: wrap;
}
.income-app-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
  min-width: 120px;
}
.income-app-label {
  font-size: .75rem;
  font-weight: 700;
  color: #b45309;
  display: flex;
  align-items: center;
  gap: 5px;
}
.income-app-label i { color: #f97316; font-size: .72rem; }
.income-app-value {
  font-size: .92rem;
  font-weight: 700;
  color: var(--gray-800);
}

/* 가구 합계 카드 */
.income-total-card {
  background: linear-gradient(135deg, #fff7ed, #ffedd5);
  border: 2px solid #fed7aa;
  border-radius: var(--radius-lg);
  padding: 22px 24px;
  text-align: center;
  margin-bottom: 24px;
  transition: var(--transition);
}
.income-total-card.has-value {
  background: linear-gradient(135deg, #ea580c, #f97316);
  border-color: transparent;
  box-shadow: 0 6px 24px rgba(249,115,22,.35);
}
.income-total-label {
  font-size: .85rem;
  font-weight: 700;
  color: #9a3412;
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
}
.income-total-card.has-value .income-total-label { color: rgba(255,255,255,.85); }
.income-total-amount {
  font-size: 2rem;
  font-weight: 900;
  color: #c2410c;
  letter-spacing: 1px;
  margin-bottom: 8px;
  transition: var(--transition);
}
.income-total-card.has-value .income-total-amount { color: #fff; font-size: 2.2rem; }
.income-total-desc {
  font-size: .82rem;
  color: #d97706;
  font-weight: 600;
}
.income-total-card.has-value .income-total-desc { color: rgba(255,255,255,.8); }

/* 섹션 제목 */
.income-section {
  margin-bottom: 24px;
}
.income-section-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 1rem;
  font-weight: 800;
  color: #9a3412;
  padding: 10px 16px;
  background: linear-gradient(135deg, #fff7ed, #ffedd5);
  border-radius: var(--radius);
  border: 1.5px solid #fed7aa;
  margin-bottom: 12px;
}
.income-section-title i { color: #ea580c; }

/* 세대주/세대원 카드 */
.income-member-card {
  background: var(--white);
  border: 1.5px solid var(--gray-200);
  border-radius: var(--radius);
  padding: 20px;
  position: relative;
  overflow: hidden;
  transition: var(--transition);
}
.income-member-card::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
}
.income-member-card.householder::before { background: linear-gradient(to bottom, #f97316, #c2410c); }
.income-member-card.member-item::before { background: linear-gradient(to bottom, #7c3aed, #a855f7); }

/* 세대원 헤더 (체크박스 + 삭제버튼) */
.income-member-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--gray-100);
}
.income-member-checkbox-label {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  user-select: none;
}
.income-member-checkbox-label input[type="checkbox"] { display: none; }
.income-chk-custom {
  width: 22px; height: 22px;
  border: 2px solid #a855f7;
  border-radius: 6px;
  background: var(--white);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  transition: var(--transition);
}
.income-chk-custom i { font-size: .68rem; color: transparent; transition: var(--transition); }
.income-member-checkbox-label input:checked ~ .income-chk-custom {
  background: #7c3aed;
  border-color: #7c3aed;
}
.income-member-checkbox-label input:checked ~ .income-chk-custom i { color: #fff; }
.income-chk-label {
  font-size: .85rem;
  font-weight: 600;
  color: var(--gray-700);
}

/* 세대원 삭제 버튼 */
.btn-remove-member {
  background: transparent;
  border: 1.5px solid #fca5a5;
  color: #ef4444;
  padding: 6px 12px;
  border-radius: var(--radius-sm);
  font-size: .8rem;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 5px;
  transition: var(--transition);
  font-family: inherit;
}
.btn-remove-member:hover { background: #fef2f2; border-color: #ef4444; }

/* 세대원 추가 버튼 */
.btn-add-member {
  background: linear-gradient(135deg, #7c3aed, #a855f7);
  color: var(--white);
  border: none;
  padding: 8px 18px;
  border-radius: 20px;
  font-size: .85rem;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 6px;
  transition: var(--transition);
  font-family: inherit;
  white-space: nowrap;
}
.btn-add-member:hover:not(:disabled) { opacity: .9; transform: translateY(-1px); }
.btn-add-member:disabled { background: var(--gray-300); cursor: not-allowed; }

/* 비활성화된 세대원 필드 */
.income-fields-disabled { opacity: .45; pointer-events: none; }

/* 입력 그리드 */
.income-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.income-field-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.income-field-group.full-col { grid-column: 1 / -1; }

/* 라벨 */
.income-label {
  font-size: .83rem;
  font-weight: 600;
  color: var(--gray-700);
  display: flex;
  align-items: center;
  gap: 6px;
}
.income-label.required::after {
  content: '*'; color: var(--danger); margin-left: 2px;
}

/* 입력 필드 */
.income-input {
  border: 2px solid var(--gray-200);
  border-radius: var(--radius-sm);
  padding: 10px 13px;
  font-size: .9rem;
  color: var(--gray-800);
  background: var(--white);
  transition: var(--transition);
  font-family: inherit;
  outline: none;
  width: 100%;
}
.income-input:focus { border-color: #f97316; box-shadow: 0 0 0 3px rgba(249,115,22,.12); }
.income-input.error { border-color: var(--danger); }

/* 자동 계산 결과 필드 */
.income-result {
  background: #fffbf5;
  border-color: #fed7aa;
  color: #c2410c;
  font-weight: 700;
  cursor: not-allowed;
}
.income-result:focus { border-color: #fed7aa; box-shadow: none; }

/* 계산식 표시 */
.income-result-wrap {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.income-formula {
  font-size: .75rem;
  color: #d97706;
  font-weight: 600;
  padding-left: 4px;
  min-height: 1em;
}

/* 세대원 없음 안내 */
.income-member-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 28px 20px;
  background: var(--gray-50);
  border: 2px dashed var(--gray-200);
  border-radius: var(--radius);
  color: var(--gray-400);
  font-size: .9rem;
  text-align: center;
}
.income-member-empty i { font-size: 1.8rem; color: var(--gray-300); }
.income-member-empty p span { color: var(--gray-400); font-size: .82rem; }

/* 유의사항 */
.income-notice {
  background: #fffbeb;
  border: 1.5px solid #fde68a;
  border-radius: var(--radius);
  padding: 16px 20px;
  margin-bottom: 24px;
}
.income-notice-title {
  font-size: .9rem;
  font-weight: 800;
  color: #92400e;
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  gap: 7px;
}
.income-notice-title i { color: #d97706; }
.income-notice-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.income-notice-list li {
  font-size: .82rem;
  color: #78350f;
  line-height: 1.6;
  padding-left: 12px;
  position: relative;
}
.income-notice-list li::before {
  content: '•';
  position: absolute;
  left: 0;
  color: #d97706;
  font-weight: 900;
}
.income-notice-list li strong { color: #92400e; }

/* 소득 다음 버튼 오렌지 */
.btn-next.income-next {
  background: linear-gradient(135deg, #c2410c, #f97316);
  box-shadow: 0 4px 14px rgba(249,115,22,.35);
}
.btn-next.income-next:hover:not(:disabled) {
  box-shadow: 0 6px 20px rgba(249,115,22,.5);
}

/* 요약 강조 항목 (가구 소득 합계) */
.summary-item.highlight {
  background: linear-gradient(135deg, #fff7ed, #ffedd5);
  border: 1.5px solid #fed7aa;
}
.summary-item.highlight .s-label { color: #c2410c; }
.summary-item.highlight .s-value { color: #9a3412; font-size: 1rem; }

/* 가구 월간소득 합계 — 주황 유지 */
.summary-item.highlight-income {
  background: linear-gradient(135deg, #fff7ed, #ffedd5);
  border: 1.5px solid #fed7aa;
}
.summary-item.highlight-income .s-label { color: #c2410c; }
.summary-item.highlight-income .s-value { color: #9a3412; font-size: 1rem; font-weight: 800; }

/* 자산 소득 합계 — 파란 계열 */
.summary-item.highlight-asset {
  background: linear-gradient(135deg, #eff6ff, #dbeafe);
  border: 1.5px solid #bfdbfe;
}
.summary-item.highlight-asset .s-label { color: #1d4ed8; }
.summary-item.highlight-asset .s-value { color: #1e3a8a; font-size: 1rem; font-weight: 800; }

/* ─── Page 5 요약 하단 출력 버튼 행 ─── */
.p5-summary-print-row {
  display: flex;
  justify-content: flex-end;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1.5px dashed #e5e7eb;
}

.btn-p5-print {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, #059669, #10b981);
  color: #fff;
  font-size: .9rem;
  font-weight: 700;
  border: none;
  border-radius: 10px;
  padding: 11px 22px;
  cursor: pointer;
  transition: all .2s;
  box-shadow: 0 3px 10px rgba(5,150,105,.3);
}
.btn-p5-print:hover {
  background: linear-gradient(135deg, #047857, #059669);
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(5,150,105,.4);
}
.btn-p5-print i { font-size: 1rem; }

/* ─── Page 5 이메일 제출 경고 박스 ─── */
.p5-submit-notice {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  background: linear-gradient(135deg, #fff1f2, #ffe4e6);
  border: 2px solid #fca5a5;
  border-radius: 14px;
  padding: 24px 20px 22px;
  margin-top: 20px;
  text-align: center;
}

.p5-notice-icon {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: linear-gradient(135deg, #ef4444, #dc2626);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 14px rgba(239,68,68,.35);
}
.p5-notice-icon i {
  color: #fff;
  font-size: 1.3rem;
}

.p5-notice-text {
  font-size: .95rem;
  line-height: 1.8;
  color: #991b1b;
  margin: 0;
}
.p5-notice-text strong {
  color: #7f1d1d;
  font-weight: 800;
}

.btn-p5-confirm {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, #dc2626, #ef4444);
  color: #fff;
  font-size: 1rem;
  font-weight: 800;
  border: none;
  border-radius: 12px;
  padding: 13px 32px;
  cursor: pointer;
  transition: all .2s;
  box-shadow: 0 4px 14px rgba(220,38,38,.35);
  letter-spacing: .02em;
}
.btn-p5-confirm:hover {
  background: linear-gradient(135deg, #b91c1c, #dc2626);
  transform: translateY(-2px);
  box-shadow: 0 7px 22px rgba(185,28,28,.45);
}
.btn-p5-confirm i { font-size: 1.1rem; }

/* ─── Page 5 확인 완료 모달 ─── */
.p5-confirm-modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(0,0,0,.55);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

.p5-confirm-box {
  background: #fff;
  border-radius: 20px;
  padding: 36px 32px 28px;
  max-width: 400px;
  width: 100%;
  text-align: center;
  box-shadow: 0 20px 60px rgba(0,0,0,.25);
  animation: confirmPop .3s cubic-bezier(.34,1.56,.64,1);
}
@keyframes confirmPop {
  from { opacity: 0; transform: scale(.85); }
  to   { opacity: 1; transform: scale(1); }
}

.p5-confirm-icon {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: linear-gradient(135deg, #059669, #10b981);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 16px;
  box-shadow: 0 6px 20px rgba(5,150,105,.35);
}
.p5-confirm-icon i {
  color: #fff;
  font-size: 1.8rem;
}

.p5-confirm-title {
  font-size: 1.3rem;
  font-weight: 800;
  color: #059669;
  margin: 0 0 10px;
}

.p5-confirm-desc {
  font-size: .9rem;
  color: #4b5563;
  line-height: 1.8;
  margin: 0 0 16px;
}

.p5-confirm-docnum {
  font-size: .85rem;
  color: #6b7280;
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  padding: 8px 14px;
  display: inline-block;
  margin-bottom: 20px;
}
.p5-confirm-docnum strong {
  color: #1e40af;
  font-weight: 700;
}

.btn-p5-confirm-close {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: linear-gradient(135deg, #059669, #10b981);
  color: #fff;
  font-size: .95rem;
  font-weight: 700;
  border: none;
  border-radius: 10px;
  padding: 12px 28px;
  cursor: pointer;
  transition: all .2s;
  box-shadow: 0 3px 10px rgba(5,150,105,.3);
}
.btn-p5-confirm-close:hover {
  background: linear-gradient(135deg, #047857, #059669);
  transform: translateY(-1px);
}

/* 모바일 대응 */
@media (max-width: 480px) {
  .p5-submit-notice { padding: 18px 14px; }
  .btn-p5-confirm { padding: 12px 24px; font-size: .92rem; }
  .p5-confirm-box { padding: 28px 20px 22px; }
  .p5-summary-print-row { justify-content: stretch; }
  .btn-p5-print { width: 100%; justify-content: center; }
}

/* ─── 스텝 특별공급 전용 표시 ─── */
.step.step-special .step-circle {
  background: linear-gradient(135deg, #c2410c, #f97316) !important;
}
.step.step-special.active .step-circle {
  background: linear-gradient(135deg, #c2410c, #f97316);
}
.step.step-special .step-label {
  color: #c2410c;
  white-space: normal;
  text-align: center;
  line-height: 1.3;
}

/* ═══════════════════════════════════════════════════
   공문서 양식 래퍼 — 월평균 소득현황 확인서
   ═══════════════════════════════════════════════════ */

.form-doc-wrap {
  background: #fff;
  border: 2px solid #374151;
  border-radius: 4px;
  overflow: hidden;
  font-family: 'Noto Sans KR', sans-serif;
  font-size: .88rem;
  color: #111;
  box-shadow: 0 4px 24px rgba(0,0,0,.12);
}

/* 법령 출처 헤더 */
.form-doc-law {
  padding: 10px 16px 4px;
  font-size: .8rem;
  font-weight: 700;
  color: #111;
  border-bottom: 1px solid #d1d5db;
  background: #f9fafb;
}
.form-doc-guide-row {
  padding: 4px 16px 8px;
  font-size: .75rem;
  color: #4b5563;
  background: #f9fafb;
  border-bottom: 2px solid #374151;
}

/* ─── 공문서 표 ─── */
.form-doc-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}
.form-doc-table td,
.form-doc-table th {
  border: 1px solid #9ca3af;
  padding: 0;
  vertical-align: middle;
}

/* 어두운 셀 (라벨) */
.form-doc-th {
  padding: 8px 10px;
  font-size: .82rem;
  font-weight: 700;
  color: #111;
  text-align: center;
  background: transparent;
  line-height: 1.5;
}
.dark-cell {
  background: #e5e7eb;
}
.dark-cell-light {
  background: #f3f4f6;
}

/* 입력 셀 */
.form-doc-td {
  padding: 7px 10px;
  background: #fff;
  font-size: .85rem;
  color: #111;
  line-height: 1.6;
}

/* 접수번호/접수일시 읽기전용 */
.meta-readonly {
  color: #6b7280;
  font-size: .82rem;
  font-style: italic;
}

/* 처리기간 즉시 배지 */
.form-doc-badge-instant {
  display: inline-block;
  background: #1e40af;
  color: #fff;
  font-size: .72rem;
  font-weight: 700;
  padding: 2px 9px;
  border-radius: 10px;
  letter-spacing: .3px;
}

/* 처리기간 행의 th 인라인 */
.form-doc-th-inline {
  font-size: .82rem;
  font-weight: 700;
  color: #374151;
  white-space: nowrap;
}

/* 자동 채워지는 값 표시 */
.form-doc-auto-val {
  font-weight: 600;
  color: #1e293b;
  font-size: .88rem;
}

/* 특별공급유형 라디오 행 */
.form-doc-radio-row {
  display: flex;
  align-items: center;
  gap: 28px;
  padding: 2px 0;
}
.form-doc-chk-label {
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: default;
  font-size: .88rem;
  font-weight: 600;
}
.form-doc-chkbox {
  font-family: monospace;
  font-size: .95rem;
  font-weight: 700;
  color: #374151;
  transition: color .15s;
}
.form-doc-chkbox.checked {
  color: #1e40af;
}

/* 가구 총계 행 */
.form-doc-total-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}
.form-doc-total-label {
  font-size: .82rem;
  font-weight: 600;
  color: #374151;
  white-space: nowrap;
}
.form-doc-total-val {
  font-size: 1.15rem;
  font-weight: 900;
  color: #c2410c;
  min-width: 80px;
  letter-spacing: .5px;
}
.form-doc-total-unit {
  font-size: .82rem;
  font-weight: 600;
  color: #374151;
}
.form-doc-total-desc {
  font-size: .75rem;
  color: #6b7280;
  margin-top: 3px;
}

/* ─── 양식 내 입력 필드 스타일 ─── */
.form-doc-input {
  border: 1.5px solid #d1d5db;
  border-radius: 4px;
  padding: 5px 9px;
  font-size: .85rem;
  font-family: 'Noto Sans KR', sans-serif;
  color: #111;
  background: #fafafa;
  outline: none;
  transition: border-color .15s, box-shadow .15s;
}
.form-doc-input:focus {
  border-color: #f97316;
  background: #fff;
  box-shadow: 0 0 0 2px rgba(249,115,22,.15);
}
.form-doc-input.error { border-color: #ef4444; }

/* 계산식 줄 내 작은 입력 */
.form-doc-input-sm {
  width: 140px;
}
.form-doc-input-xs {
  width: 70px;
}

/* 계산 결과 텍스트 (월간소득 표시) */
.form-doc-calc-result {
  font-weight: 900;
  font-size: .95rem;
  color: #c2410c;
  letter-spacing: .3px;
}

/* 계산식 행 */
.form-doc-calc-row {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.form-doc-calc-hint {
  font-size: .8rem;
  color: #4b5563;
  white-space: nowrap;
}

/* ─── 세대원 행 (tbody#incomeMembers 안) ─── */
.form-doc-member-row td {
  border: 1px solid #9ca3af;
  padding: 0;
  vertical-align: middle;
}
.form-doc-member-name-cell {
  padding: 7px 10px;
  background: #fff;
}
.form-doc-member-calc-cell {
  padding: 7px 10px;
  background: #fff;
}
.form-doc-member-header-cell {
  padding: 7px 10px;
  background: #f3f4f6;
  font-size: .82rem;
  font-weight: 700;
  color: #111;
  text-align: center;
}

/* 세대원 체크박스 라벨 */
.form-doc-member-chk-wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}
.form-doc-member-chk-label {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: .82rem;
  font-weight: 600;
  color: #374151;
  user-select: none;
}
.form-doc-member-chk-label input[type="checkbox"] { display: none; }
.form-doc-chk-box-custom {
  width: 18px; height: 18px;
  border: 2px solid #7c3aed;
  border-radius: 4px;
  background: #fff;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  transition: var(--transition);
}
.form-doc-chk-box-custom i { font-size: .6rem; color: transparent; }
.form-doc-member-chk-label input:checked ~ .form-doc-chk-box-custom {
  background: #7c3aed; border-color: #7c3aed;
}
.form-doc-member-chk-label input:checked ~ .form-doc-chk-box-custom i {
  color: #fff;
}

/* 세대원 삭제 버튼 */
.btn-member-del {
  background: transparent;
  border: 1px solid #fca5a5;
  color: #ef4444;
  padding: 3px 10px;
  border-radius: 4px;
  font-size: .75rem;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 4px;
  font-family: inherit;
  transition: var(--transition);
  white-space: nowrap;
}
.btn-member-del:hover { background: #fef2f2; }

/* 비활성화 세대원 */
.form-doc-member-disabled {
  opacity: .45;
  pointer-events: none;
}

/* ─── 세대원 추가 버튼 영역 ─── */
.form-doc-member-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  background: #fffbf5;
  border-top: 1px dashed #fed7aa;
  border-bottom: 1px dashed #fed7aa;
  gap: 10px;
  flex-wrap: wrap;
}
.form-doc-member-hint {
  font-size: .8rem;
  color: #9a3412;
  display: flex;
  align-items: center;
  gap: 7px;
  font-weight: 600;
}
.form-doc-member-hint i { color: #f97316; }
.form-doc-count-badge {
  background: #ffedd5;
  color: #c2410c;
  font-size: .72rem;
  font-weight: 800;
  padding: 2px 8px;
  border-radius: 10px;
  border: 1px solid #fed7aa;
}

/* ─── 서명 섹션 ─── */
.form-doc-sign-section {
  padding: 18px 20px;
  border-top: 2px solid #374151;
  background: #fafafa;
}
.form-doc-sign-law {
  font-size: .82rem;
  color: #374151;
  line-height: 1.75;
  text-align: center;
  margin-bottom: 16px;
}
.form-doc-sign-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 32px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.form-doc-sign-date {
  font-size: .88rem;
  font-weight: 600;
  color: #374151;
  letter-spacing: 1px;
}
.form-doc-sign-name {
  font-size: .88rem;
  font-weight: 700;
  color: #374151;
  display: flex;
  align-items: center;
  gap: 4px;
}
.form-doc-sign-seal {
  font-size: .78rem;
  color: #6b7280;
  font-weight: 400;
}
.form-doc-dest {
  text-align: center;
  font-size: .88rem;
  font-weight: 700;
  color: #374151;
}
.form-doc-dest-label {
  color: #1e40af;
}

/* ─── 하단 안내표 ─── */
.form-doc-bottom-table {
  border-top: 2px solid #374151;
}

/* ─── 유의사항 ─── */
.form-doc-notice {
  padding: 14px 20px;
  background: #fffbeb;
  border-top: 1px solid #d1d5db;
}
.form-doc-notice-title {
  font-size: .82rem;
  font-weight: 800;
  color: #92400e;
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.form-doc-notice-list {
  padding-left: 18px;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.form-doc-notice-list li {
  font-size: .78rem;
  color: #78350f;
  line-height: 1.65;
}
.form-doc-notice-list li strong { color: #92400e; }

/* ─── 반응형 ─── */
@media (max-width: 640px) {
  .form-doc-calc-row { flex-direction: column; align-items: flex-start; gap: 6px; }
  .form-doc-input-sm { width: 100%; }
  .form-doc-input-xs { width: 80px; }
  .form-doc-sign-row { flex-direction: column; gap: 10px; text-align: center; }
  .form-doc-total-val { font-size: .95rem; }
  .form-doc-member-actions { flex-direction: column; align-items: flex-start; }
}

/* ═══════════════════════════════════════════════════
   특별공급 주황색 테마 (Page 2 · special-theme)
   ═══════════════════════════════════════════════════ */

/* Page 2 전체 배경 변환 */
.page.special-theme {
  background: linear-gradient(160deg, #fff7ed 0%, #ffedd5 40%, #fff3e0 100%) !important;
}

/* 특별공급 배지 강화 */
.supply-type-badge.special {
  background: linear-gradient(135deg, #ea580c, #f97316);
  color: var(--white);
  box-shadow: 0 2px 8px rgba(249,115,22,.35);
}

/* 특별공급 페이지 타이틀 오렌지 강조 */
.special-theme .page-title {
  color: #c2410c;
}
.special-theme .page-title i {
  color: #f97316;
}

/* 특별공급 안내 배너 오렌지 변환 */
.special-theme .page-banner {
  background: linear-gradient(135deg, #ffedd5, #fff7ed);
  border-color: #fed7aa;
}
.special-theme .page-banner i { color: #ea580c; }

/* 특별공급 서류 카드 left bar 오렌지 */
.special-theme .doc-rich-card::before { background: #fed7aa; }
.special-theme .doc-rich-card.checkable:hover { border-color: #f97316; background: #fff7ed; }
.special-theme .doc-rich-card.checkable:hover::before { background: #f97316; }
.special-theme .doc-rich-card.checked { border-color: #ea580c; background: #fff7ed; }
.special-theme .doc-rich-card.checked::before { background: #ea580c; }
.special-theme .doc-rich-card.checked .doc-rich-check {
  background: #ea580c; border-color: #ea580c;
}
.special-theme .doc-rich-card.checked .doc-rich-num {
  background: linear-gradient(135deg, #9a3412, #ea580c);
}

/* 특별공급 번호 뱃지 오렌지 */
.special-theme .doc-rich-num {
  background: linear-gradient(135deg, #c2410c, #f97316);
}

/* 특별공급 발급처 배지 오렌지 */
.special-theme .doc-rich-issuer {
  background: #fff7ed;
  border-color: #fed7aa;
  color: #c2410c;
}

/* 특별공급 체크박스 버튼 오렌지 */
.special-theme .btn-next {
  background: linear-gradient(135deg, #c2410c, #f97316);
  box-shadow: 0 4px 14px rgba(249,115,22,.35);
}
.special-theme .btn-next:hover:not(:disabled) {
  box-shadow: 0 6px 20px rgba(249,115,22,.5);
}
.special-theme .doc-check-guide {
  background: linear-gradient(135deg, #fff7ed, #ffedd5);
  border-color: #fed7aa;
  color: #9a3412;
}
.special-theme .doc-check-guide i { color: #f97316; }

/* ─── 서류 그룹 헤더 (소득자료 / 자산자료) ─── */
.doc-group-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 18px;
  border-radius: var(--radius);
  font-size: .92rem;
  font-weight: 800;
  letter-spacing: .3px;
  margin: 6px 0 2px;
  position: relative;
  overflow: hidden;
}
.doc-group-header::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 5px;
  border-radius: 0 3px 3px 0;
}

/* 소득 자료 헤더 — 오렌지/앰버 계열 */
.doc-group-header.income {
  background: linear-gradient(135deg, #fff3cd, #ffedd5);
  border: 1.5px solid #fed7aa;
  color: #92400e;
}
.doc-group-header.income::before { background: #f97316; }
.doc-group-header.income i { color: #ea580c; font-size: 1rem; }

/* 자산 자료 헤더 — 퍼플/인디고 계열 */
.doc-group-header.asset {
  background: linear-gradient(135deg, #f5f3ff, #ede9fe);
  border: 1.5px solid #c4b5fd;
  color: #4c1d95;
}
.doc-group-header.asset::before { background: #7c3aed; }
.doc-group-header.asset i { color: #7c3aed; font-size: 1rem; }

/* ─── 소득 증빙 테이블 카드 (income-table) ─── */
.doc-income-block {
  background: var(--white);
  border: 1.5px solid #fed7aa;
  border-radius: var(--radius);
  overflow: hidden;
  position: relative;
  width: 100%;
}
.doc-income-block::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
  background: #f97316;
}

.doc-income-header {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 14px 18px 12px 22px;
  background: linear-gradient(135deg, #fff7ed, #fffbf5);
  border-bottom: 1px solid #fed7aa;
}
.doc-income-num {
  width: 26px; height: 26px;
  background: linear-gradient(135deg, #c2410c, #f97316);
  color: var(--white);
  border-radius: 50%;
  font-size: .78rem;
  font-weight: 800;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  margin-top: 1px;
}
.doc-income-titles {
  display: flex;
  flex-direction: column;
  gap: 3px;
  flex: 1;
}
.doc-income-title {
  font-size: .95rem;
  font-weight: 700;
  color: #9a3412;
  line-height: 1.35;
}
.doc-income-sub {
  font-size: .77rem;
  color: #b45309;
  font-weight: 500;
  line-height: 1.45;
}

/* 테이블 래퍼 */
.doc-income-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.doc-income-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .82rem;
}
.doc-income-table thead tr {
  background: linear-gradient(135deg, #ffedd5, #fff7ed);
}
.doc-income-table thead th {
  padding: 9px 14px;
  text-align: left;
  font-size: .75rem;
  font-weight: 800;
  color: #92400e;
  letter-spacing: .3px;
  border-bottom: 1.5px solid #fed7aa;
  white-space: nowrap;
}
.doc-income-table thead th:first-child { width: 90px; }
.doc-income-table thead th:last-child  { width: 160px; }

.doc-income-table tbody tr {
  border-bottom: 1px solid #fef3c7;
  transition: background var(--transition);
}
.doc-income-table tbody tr:last-child { border-bottom: none; }
.doc-income-table tbody tr:hover { background: #fff7ed; }

.income-cat {
  padding: 10px 14px;
  font-weight: 700;
  color: var(--white);
  background: linear-gradient(135deg, #c2410c, #ea580c);
  font-size: .78rem;
  white-space: nowrap;
  vertical-align: middle;
}
.income-label {
  padding: 10px 14px;
  color: var(--gray-700);
  font-weight: 500;
  line-height: 1.55;
  vertical-align: middle;
}
.income-issuer {
  padding: 10px 14px;
  color: #9a3412;
  font-weight: 600;
  font-size: .78rem;
  vertical-align: middle;
  white-space: nowrap;
}

/* 유의사항 노트 내 발급처 강조 */
.note-source {
  color: #c2410c;
  font-weight: 700;
}

/* ─── 반응형 ─── */
@media (max-width: 640px) {
  .page-title { font-size: 1.1rem; }
  .form-grid  { grid-template-columns: 1fr; }
  .summary-grid { grid-template-columns: 1fr; }
  .notice-card { flex-direction: column; }
  .doc-number-value { font-size: 1.2rem; letter-spacing: 1px; }
  .progress-steps { gap: 2px; }
  .step-line { min-width: 10px; }
  .step { min-width: 56px; }
  .step-label { font-size: .65rem; }
  .btn-next, .btn-prev { padding: 12px 20px; font-size: .9rem; }
  .form-section { padding: 20px 16px; }
  .modal-box { padding: 24px 18px; }
  .submitted-card { padding: 28px 20px; }
  .header-inner { padding: 12px 14px; }
  .urgent-info-grid { grid-template-columns: 1fr; }
  .urgent-info-item { border-right: none; border-bottom: 1px dashed #fca5a5; }
  .urgent-info-item:last-child { border-bottom: none; }
  .urgent-header { padding: 14px 16px; gap: 12px; }
  .urgent-title { font-size: .9rem; }
  .urgent-icon-wrap { width: 40px; height: 40px; font-size: 1.1rem; }
  .urgent-desc, .urgent-info-item, .urgent-checklist { padding: 14px 16px; }
  .doc-rich-card { padding: 14px 14px; gap: 10px; }
  .doc-rich-title { font-size: .88rem; }
  .doc-rich-sub   { font-size: .74rem; }
  /* 소득 테이블 모바일 */
  .doc-income-table thead th:last-child { width: auto; }
  .income-issuer { white-space: normal; }
  .doc-income-table { font-size: .76rem; }
  .income-cat { font-size: .72rem; padding: 8px 10px; }
  .income-label, .income-issuer { padding: 8px 10px; }
  /* 소득 확인서 모바일 */
  .income-grid { grid-template-columns: 1fr; }
  .income-total-amount { font-size: 1.5rem; }
  .income-total-card.has-value .income-total-amount { font-size: 1.6rem; }
  .income-app-row { flex-direction: column; gap: 10px; }
  .income-member-header { flex-direction: column; align-items: flex-start; gap: 8px; }
}

/* ═══════════════════════════════════════════════════
   Page 36: 자산 보유 사실 확인서 (특별공급 전용)
   ═══════════════════════════════════════════════════ */

/* 양식 제목 */
.asset-doc-title {
  text-align: center;
  font-size: 1.25rem;
  font-weight: 900;
  letter-spacing: .35em;
  color: #111;
  padding: 10px 0 8px;
  border-bottom: 2px solid #374151;
  margin-bottom: 0;
}

/* 자산 섹션 라벨 */
.asset-section-label {
  background: #1e3a5f;
  color: #fff;
  font-size: .82rem;
  font-weight: 700;
  padding: 6px 12px;
  letter-spacing: .05em;
}

/* 자산 항목 테이블 */
.asset-items-table .asset-cat-cell {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  text-align: center;
  letter-spacing: 3px;
  font-size: .82rem;
  padding: 8px 5px;
}
.asset-sub-cell {
  text-align: center;
  font-size: .82rem;
  line-height: 1.4;
}

/* 예/아니오 체크박스 래퍼 */
.asset-yn-cell {
  padding: 4px 6px !important;
  vertical-align: middle;
}
.asset-yn-wrap {
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: flex-start;
}
.asset-yn-label {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: .85rem;
  font-weight: 600;
  color: #374151;
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 4px;
  transition: background .15s;
  white-space: nowrap;
  user-select: none;
}
.asset-yn-label:hover { background: #f0f9ff; }

/* 체크박스 문자 */
.asset-chkbox {
  font-size: 1rem;
  font-family: 'Noto Sans KR', sans-serif;
  color: #374151;
  transition: color .15s;
  min-width: 14px;
  display: inline-block;
}
.asset-chkbox.checked-y { color: #ea580c; }
.asset-chkbox.checked-n { color: #1e40af; }

/* 자산 입력 필드 */
.asset-input {
  border: 1.5px solid #d1d5db;
  border-radius: 4px;
  padding: 5px 7px;
  font-size: .82rem;
  color: #111;
  width: 100%;
  font-family: inherit;
  background: #fff;
  transition: border-color .15s;
  box-sizing: border-box;
}
.asset-input:focus { outline: none; border-color: #3b82f6; }
.asset-input:disabled {
  background: #f3f4f6;
  color: #9ca3af;
  cursor: not-allowed;
  border-color: #e5e7eb;
}
.asset-input-amt { text-align: right; }
/* 한글 IME 기본 활성화 */
.asset-input-ko {
  ime-mode: active;
  -webkit-ime-mode: active;
}

/* 원 단위 래퍼 */
.asset-amount-wrap {
  display: flex;
  align-items: center;
  gap: 3px;
}
.asset-won {
  font-size: .78rem;
  color: #374151;
  white-space: nowrap;
  flex-shrink: 0;
}

/* 자산 헤더 행 */
.asset-header-row th {
  text-align: center !important;
  font-size: .8rem !important;
  padding: 6px 4px !important;
  line-height: 1.4 !important;
}

/* 각주 행 */
.asset-note-row {
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 4px;
  padding: 7px 12px;
  font-size: .8rem;
  color: #92400e;
  margin-top: 4px;
  font-weight: 600;
}

/* 확인 서약 목록 */
.asset-confirm-list {
  padding: 12px 20px 12px 32px;
  margin: 6px 0;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
}
.asset-confirm-list li {
  font-size: .82rem;
  color: #374151;
  line-height: 1.8;
}
.asset-confirm-list li + li { margin-top: 6px; }

/* ── 자산 합계 행 ── */
.asset-total-row {
  background: #f0f9ff;
}
.asset-total-label-cell {
  background: #1e3a5f !important;
  color: #fff !important;
  text-align: center !important;
  font-size: .88rem !important;
  font-weight: 800 !important;
  letter-spacing: .15em;
  padding: 10px 6px !important;
}
.asset-total-formula-cell {
  padding: 8px 10px !important;
  vertical-align: middle;
}
.asset-total-formula {
  font-size: .76rem;
  color: #64748b;
  line-height: 1.6;
  word-break: break-all;
}
.asset-total-formula.asset-total-formula-active {
  color: #374151;
  font-weight: 500;
}
.asset-total-val-cell {
  padding: 8px 10px !important;
  vertical-align: middle;
}
.asset-total-result {
  display: flex;
  align-items: baseline;
  gap: 4px;
  justify-content: flex-end;
}
.asset-total-num {
  font-size: 1.15rem;
  font-weight: 900;
  color: #94a3b8;          /* 기본: 미입력 회색 */
  font-family: 'Noto Sans KR', sans-serif;
  transition: color .2s;
}
.asset-total-num.asset-total-positive {
  color: #1d4ed8;          /* 양수: 파랑 */
}
.asset-total-num.asset-total-negative {
  color: #dc2626;          /* 음수: 빨강 */
}
.asset-total-unit {
  font-size: .82rem;
  font-weight: 600;
  color: #374151;
  white-space: nowrap;
}

/* 모바일 대응 */
@media (max-width: 640px) {
  .asset-items-table { font-size: .75rem; }
  .asset-yn-wrap { flex-direction: row; gap: 8px; }
  .asset-items-table .asset-cat-cell { writing-mode: horizontal-tb; letter-spacing: 0; }
  .asset-doc-title { font-size: 1rem; letter-spacing: .15em; }
  .asset-total-num { font-size: .95rem; }
  .asset-total-formula { font-size: .72rem; }
}

/* ═══════════════════════════════════════════════════
   Page 37: 서약서 (일반+특별공급 공통)
   ═══════════════════════════════════════════════════ */

/* 페이지 배지 */
.pledge-badge {
  background: linear-gradient(135deg, #1e3a5f, #2563eb) !important;
  color: #fff !important;
}
.app-form-badge {
  background: linear-gradient(135deg, #065f46, #059669) !important;
  color: #fff !important;
}
.app-section-num {
  background: linear-gradient(135deg, #065f46, #059669) !important;
}
.pledge-banner {
  background: linear-gradient(135deg, #eff6ff, #dbeafe) !important;
  border-color: #bfdbfe !important;
  color: #1e40af !important;
}
.pledge-banner i { color: #2563eb !important; }

/* 신청인 / 서약내용 테이블 */
.pledge-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .88rem;
  margin-bottom: 0;
}
.pledge-meta-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .85rem;
  margin-bottom: 0;
}

/* 서약 내용 테이블 */
.pledge-content-table { margin-top: 0; }
.pledge-cat-cell {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  text-align: center;
  letter-spacing: 3px;
  font-size: .82rem;
  padding: 8px 5px !important;
  white-space: nowrap;
}
.pledge-sub-cell {
  text-align: center;
  font-size: .82rem;
  font-weight: 700;
  padding: 6px !important;
}
.pledge-chk-cell {
  text-align: center !important;
  vertical-align: middle;
  cursor: pointer;
  padding: 4px !important;
  transition: background .15s;
}
.pledge-chk-cell:hover { background: #eff6ff; }
.pledge-chkbox {
  font-size: 1.15rem;
  font-family: 'Noto Sans KR', sans-serif;
  color: #1e40af;
  display: block;
  line-height: 1;
  transition: color .15s, transform .15s;
}
.pledge-chkbox:hover { transform: scale(1.2); }
.pledge-text-cell {
  padding: 8px 12px !important;
  vertical-align: top;
}
.pledge-list {
  margin: 0;
  padding-left: 20px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.pledge-list li {
  font-size: .85rem;
  color: #374151;
  line-height: 1.65;
}
.pledge-list li strong { color: #1e3a5f; }

/* 서약 내용 하위 목록 (가·나 항목) */
.pledge-list-sub {
  margin: 4px 0 2px 0;
  padding-left: 4px;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.pledge-list-sub li {
  font-size: .82rem;
  color: #374151;
  line-height: 1.65;
  padding-left: 4px;
}

/* 소득 기준표 (특별공급 내부) */
.pledge-income-table {
  margin-top: 6px;
  border: 1px solid #bfdbfe;
  border-radius: 6px;
  overflow: hidden;
  font-size: .78rem;
  width: fit-content;
  min-width: 260px;
}
.pledge-income-row {
  display: flex;
  justify-content: space-between;
  padding: 3px 10px;
  border-bottom: 1px solid #e0eaff;
  color: #374151;
}
.pledge-income-row:last-child { border-bottom: none; }
.pledge-income-header {
  background: #1e3a5f;
  color: #fff !important;
  font-weight: 700;
  font-size: .76rem;
}
.pledge-income-header span { color: #fff !important; }
.pledge-income-row span { flex: 1; }
.pledge-income-row span:last-child { text-align: right; font-weight: 600; color: #1e40af; }
.pledge-income-header span:last-child { color: #fff !important; }

/* 확인 문구 박스 */
.pledge-confirm-box {
  margin: 10px 0;
  padding: 10px 16px;
  background: #f0f9ff;
  border: 1.5px solid #bfdbfe;
  border-radius: 6px;
  font-size: .85rem;
  color: #1e3a5f;
  font-weight: 600;
  text-align: center;
}

/* 이메일 입력 */
.pledge-input {
  border: 1.5px solid #d1d5db;
  border-radius: 4px;
  padding: 5px 9px;
  font-size: .85rem;
  font-family: inherit;
  color: #111;
  width: 100%;
  max-width: 360px;
  box-sizing: border-box;
  transition: border-color .15s;
}
.pledge-input:focus { outline: none; border-color: #3b82f6; }

/* 모바일 */
@media (max-width: 640px) {
  .pledge-cat-cell { writing-mode: horizontal-tb; letter-spacing: 0; padding: 6px !important; }
  .pledge-income-table { min-width: 0; width: 100%; }
  .pledge-list { padding-left: 14px; }
}

/* ═══════════════════════════════════════════════════
   Page 39: 선택 사항 1 — 사업자 여부 확인 (특별공급)
   ═══════════════════════════════════════════════════ */

.option-question-card {
  background: #fff;
  border: 2px solid #e2e8f0;
  border-radius: 16px;
  padding: 36px 32px 28px;
  text-align: center;
  box-shadow: 0 4px 20px rgba(0,0,0,.07);
  margin-bottom: 20px;
}
.option-question-icon {
  width: 72px; height: 72px;
  border-radius: 50%;
  background: linear-gradient(135deg, #c2410c, #f97316);
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 20px;
  box-shadow: 0 4px 16px rgba(249,115,22,.3);
}
.option-question-icon i {
  font-size: 2rem;
  color: #fff;
}
.option-question-title {
  font-size: 1.25rem;
  font-weight: 800;
  color: #111827;
  margin: 0 0 14px;
  line-height: 1.4;
}
.option-question-desc {
  font-size: .9rem;
  color: #6b7280;
  line-height: 1.7;
  margin: 0 0 28px;
}
.option-btn-group {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
}
.option-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 22px 36px;
  border-radius: 14px;
  border: 2.5px solid #e5e7eb;
  background: #f9fafb;
  cursor: pointer;
  transition: all .2s;
  font-family: inherit;
  min-width: 160px;
}
.option-btn i {
  font-size: 2rem;
}
.option-btn-label {
  font-size: 1.2rem;
  font-weight: 800;
}
.option-btn-desc {
  font-size: .78rem;
  color: #6b7280;
  line-height: 1.5;
  text-align: center;
}
.option-btn-yes {
  border-color: #3b82f6;
  background: #eff6ff;
}
.option-btn-yes i { color: #2563eb; }
.option-btn-yes .option-btn-label { color: #1d4ed8; }
.option-btn-yes:hover {
  background: #dbeafe;
  border-color: #2563eb;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(37,99,235,.2);
}
.option-btn-no {
  border-color: #f97316;
  background: #fff7ed;
}
.option-btn-no i { color: #ea580c; }
.option-btn-no .option-btn-label { color: #c2410c; }
.option-btn-no:hover {
  background: #ffedd5;
  border-color: #ea580c;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(234,88,12,.2);
}

/* 안내 박스 */
.option-info-box {
  background: #f8fafc;
  border: 1.5px solid #e2e8f0;
  border-radius: 10px;
  padding: 20px 24px;
  margin-bottom: 8px;
}
.option-info-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: .88rem;
  color: #374151;
  line-height: 1.6;
}
.option-info-icon {
  font-size: .85rem;
  margin-top: 3px;
  flex-shrink: 0;
}
.option-info-icon.yes-icon { color: #2563eb; }
.option-info-icon.no-icon  { color: #ea580c; }

/* one-btn 버튼 레이아웃 */
.page-actions.one-btn {
  display: flex;
  justify-content: flex-start;
}

/* ═══════════════════════════════════════════════════
   Page 40: 비사업자 확인각서 (특별공급 전용)
   ═══════════════════════════════════════════════════ */

/* 양식 헤더 */
.affidavit-header {
  padding: 14px 16px 10px;
  border-bottom: 1.5px solid #374151;
  background: #fff;
}
.form-doc-law-ref {
  font-size: .82rem;
  font-weight: 700;
  color: #111;
  margin-bottom: 6px;
}
.form-doc-subtitle-row {
  text-align: center;
}
.form-doc-subtitle {
  font-size: .85rem;
  color: #374151;
}

/* 비사업자 확인서 제목 */
.affidavit-doc-title {
  text-align: center;
  font-size: 1.25rem;
  font-weight: 900;
  color: #111;
  letter-spacing: .18em;
  padding: 18px 0 14px;
  border-bottom: 1.5px solid #374151;
}

/* 각서 테이블 */
.affidavit-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .88rem;
}
.affidavit-table th,
.affidavit-table td {
  border: 1px solid #374151;
  padding: 8px 10px;
  vertical-align: middle;
}
.affidavit-table th {
  background: #f3f4f6;
  font-weight: 700;
  text-align: center;
}
.affidavit-category-cell {
  text-align: center;
  background: #f8fafc;
  font-size: .82rem;
  line-height: 1.6;
}
.affidavit-category-label {
  font-weight: 600;
  color: #374151;
}
.affidavit-note {
  display: block;
  font-size: .75rem;
  color: #6b7280;
  margin-top: 6px;
  border-top: 1px solid #e5e7eb;
  padding-top: 6px;
}
.affidavit-confirm-header {
  background: #f3f4f6;
}
.affidavit-confirm-cell {
  background: #fffbeb;
  padding: 10px 14px !important;
}
.affidavit-check-label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: .85rem;
  color: #374151;
  cursor: pointer;
}
.affidavit-check-label input[type="checkbox"] {
  accent-color: #c2410c;
  width: 16px; height: 16px;
  cursor: pointer;
  flex-shrink: 0;
}
.affidavit-input {
  border: 1.5px solid #d1d5db;
  border-radius: 4px;
  padding: 5px 9px;
  font-size: .85rem;
  font-family: inherit;
  color: #111;
  background: #fafafa;
  outline: none;
  transition: border-color .15s;
  box-sizing: border-box;
}
.affidavit-input:focus {
  border-color: #f97316;
  background: #fff;
  box-shadow: 0 0 0 2px rgba(249,115,22,.12);
}

/* 본문 확약 문구 */
.affidavit-body-text {
  padding: 18px 20px;
  border-bottom: 1px solid #e5e7eb;
  background: #fff;
}
.affidavit-body-text p {
  font-size: .9rem;
  color: #111;
  line-height: 1.9;
  text-indent: 1em;
  margin: 0;
  word-break: keep-all;
}
.affidavit-project-name {
  font-weight: 800;
  color: #1e3a5f;
}

/* 서명 섹션 */
.affidavit-sign-section {
  padding: 20px 24px 14px;
  background: #fff;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 10px;
}
.affidavit-date-text {
  font-size: .95rem;
  color: #111;
  font-weight: 500;
  letter-spacing: .05em;
}
.affidavit-sign-row {
  display: flex;
  align-items: center;
  gap: 18px;
}
.affidavit-sign-label {
  font-size: .88rem;
  font-weight: 600;
  color: #374151;
}
.affidavit-sign-name {
  font-size: 1rem;
  font-weight: 800;
  color: #111;
  border-bottom: 1.5px solid #374151;
  padding: 0 32px 2px;
  min-width: 80px;
  text-align: center;
}
.affidavit-sign-stamp {
  font-size: .82rem;
  color: #6b7280;
}
.affidavit-dest-row {
  font-size: .9rem;
  font-weight: 600;
  color: #111;
  align-self: flex-end;
}

/* ═══════════════════════════════════════════════════
   ① 체크리스트 인쇄 버튼 (Page 2 헤더 우측)
   ═══════════════════════════════════════════════════ */
.checklist-header-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 0;
}
.checklist-header-row > div { flex: 1; min-width: 0; }

.btn-print-checklist {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, #1e40af, #3b82f6);
  color: #fff;
  border: none;
  border-radius: 10px;
  padding: 10px 18px;
  font-size: .88rem;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  white-space: nowrap;
  box-shadow: 0 3px 10px rgba(30,64,175,.3);
  transition: all .2s ease;
  flex-shrink: 0;
  margin-top: 4px;
}
.btn-print-checklist:hover {
  background: linear-gradient(135deg, #1e3a8a, #2563eb);
  box-shadow: 0 5px 16px rgba(30,64,175,.45);
  transform: translateY(-1px);
}
.btn-print-checklist i { font-size: .9rem; }

/* 특별공급 테마 인쇄 버튼 */
.special-theme .btn-print-checklist {
  background: linear-gradient(135deg, #c2410c, #f97316);
  box-shadow: 0 3px 10px rgba(249,115,22,.3);
}
.special-theme .btn-print-checklist:hover {
  background: linear-gradient(135deg, #9a3412, #ea580c);
  box-shadow: 0 5px 16px rgba(249,115,22,.45);
}

/* ═══════════════════════════════════════════════════
   ② 플로팅 버튼 — 서류 준비 페이지 바로가기
   ═══════════════════════════════════════════════════ */
.fab-checklist {
  position: fixed;
  bottom: 32px;
  right: 24px;
  z-index: 300;
  display: flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, #1e40af, #3b82f6);
  color: #fff;
  border: none;
  border-radius: 50px;
  padding: 12px 20px;
  font-size: .88rem;
  font-weight: 700;
  font-family: inherit;
  cursor: pointer;
  box-shadow: 0 6px 20px rgba(30,64,175,.4);
  transition: all .25s ease;
}
.fab-checklist:hover {
  background: linear-gradient(135deg, #1e3a8a, #2563eb);
  transform: translateY(-3px);
  box-shadow: 0 10px 28px rgba(30,64,175,.5);
}
.fab-checklist i { font-size: 1rem; }
.fab-label { letter-spacing: .02em; }

/* 특별공급 테마 FAB */
.fab-checklist.fab-special {
  background: linear-gradient(135deg, #c2410c, #f97316);
  box-shadow: 0 6px 20px rgba(249,115,22,.4);
}
.fab-checklist.fab-special:hover {
  background: linear-gradient(135deg, #9a3412, #ea580c);
  box-shadow: 0 10px 28px rgba(249,115,22,.55);
}

@media (max-width: 480px) {
  .fab-checklist { bottom: 20px; right: 14px; padding: 11px 16px; font-size: .82rem; }
  .fab-label { display: none; }
  .fab-checklist { border-radius: 50%; padding: 14px; }
  .fab-checklist i { font-size: 1.1rem; }
}

/* ═══════════════════════════════════════════════════
   ③ 상단 스텝 클릭 가능 스타일
   ═══════════════════════════════════════════════════ */
.step[onclick] {
  cursor: default;
}
.step.done[onclick] {
  cursor: pointer;
}
.step.done[onclick]:hover .step-circle {
  filter: brightness(1.15);
  transform: scale(1.08);
  transition: all .18s ease;
}
.step.done[onclick]:hover .step-label {
  color: var(--primary);
  transition: color .18s ease;
}
.step.active[onclick] {
  cursor: default;
}

/* ═══════════════════════════════════════════════════
   doc-rich-title-row: 제목 + titleNote 인라인 배치
   ═══════════════════════════════════════════════════ */
.doc-rich-title-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.doc-rich-title-note {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: .76rem;
  font-weight: 600;
  color: #92400e;
  background: #fef3c7;
  border: 1px solid #fcd34d;
  border-radius: 6px;
  padding: 2px 8px;
  white-space: nowrap;
}
.doc-rich-title-note i {
  font-size: .72rem;
  color: #b45309;
}

/* ═══════════════════════════════════════════════════
   Page 47: 개인정보 활용 동의서
   ═══════════════════════════════════════════════════ */

/* 배지 */
.privacy-badge {
  background: linear-gradient(135deg, #065f46, #10b981) !important;
  color: #fff !important;
}

/* 안내 배너 */
.privacy-banner {
  background: linear-gradient(135deg, #f0fdf4, #dcfce7) !important;
  border-color: #bbf7d0 !important;
  color: #065f46 !important;
}
.privacy-banner i { color: #16a34a !important; }

/* 도입 박스 */
.privacy-intro-box {
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 10px;
  padding: 16px 20px;
  margin-bottom: 20px;
}
.privacy-intro-text {
  font-size: .88rem;
  line-height: 1.8;
  color: #374151;
  margin: 0;
}

/* 조항 목록 */
.privacy-article-wrap {
  border: 1px solid #d1d5db;
  border-radius: 10px;
  overflow: hidden;
  margin-bottom: 20px;
}
.privacy-article {
  border-bottom: 1px solid #e5e7eb;
  padding: 14px 18px;
}
.privacy-article:last-child { border-bottom: none; }
.privacy-article-title {
  font-size: .88rem;
  font-weight: 800;
  color: #065f46;
  margin-bottom: 6px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.privacy-article-title::before {
  content: '';
  display: inline-block;
  width: 4px;
  height: 14px;
  background: #10b981;
  border-radius: 2px;
  flex-shrink: 0;
}
.privacy-article-body {
  font-size: .84rem;
  color: #4b5563;
  line-height: 1.75;
}
.privacy-basis {
  display: inline-block;
  margin-top: 6px;
  font-size: .8rem;
  color: #6b7280;
  background: #f3f4f6;
  border-radius: 4px;
  padding: 2px 8px;
}

/* 동의 체크박스 */
.privacy-agree-box {
  background: #ecfdf5;
  border: 2px solid #6ee7b7;
  border-radius: 10px;
  padding: 16px 20px;
  margin-bottom: 4px;
}
.privacy-agree-label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-size: .9rem;
  color: #065f46;
  font-weight: 600;
  line-height: 1.6;
}
.privacy-chk {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: 2px;
  accent-color: #10b981;
  cursor: pointer;
}

/* step47 색상 */
#step47 .step-circle {
  background: linear-gradient(135deg, #065f46, #10b981);
}

/* ═══════════════════════════════════════════════════
   인쇄 — 체크리스트 전용 (@media print)
   ═══════════════════════════════════════════════════ */
.print-checklist-overlay {
  display: none;
}

@media print {
  /* 체크리스트 인쇄 모드 — 나머지 모두 숨기고 오버레이만 표시 */
  body.print-checklist-mode > *:not(#printChecklistOverlay) {
    display: none !important;
  }
  body.print-checklist-mode #printChecklistOverlay {
    display: block !important;
  }
  .print-checklist-overlay {
    display: block !important;
    position: static;
    width: 100%;
    background: #fff;
  }
  .print-checklist-inner {
    padding: 20mm 18mm;
    font-family: 'Noto Sans KR', sans-serif;
    font-size: 10pt;
    color: #111;
  }

  /* 인쇄용 헤더 */
  .pcl-header {
    text-align: center;
    border-bottom: 2px solid #1e40af;
    padding-bottom: 12px;
    margin-bottom: 20px;
  }
  .pcl-logo {
    font-size: 11pt;
    color: #1e40af;
    font-weight: 700;
    margin-bottom: 6px;
  }
  .pcl-title {
    font-size: 16pt;
    font-weight: 900;
    color: #111;
    margin: 4px 0;
  }
  .pcl-date {
    font-size: 9pt;
    color: #64748b;
    margin-top: 4px;
  }

  /* 그룹 헤더 */
  .pcl-group-header {
    background: #1e40af;
    color: #fff;
    font-size: 10pt;
    font-weight: 800;
    padding: 6px 12px;
    border-radius: 4px;
    margin: 14px 0 6px;
  }

  /* 소득 테이블 */
  .pcl-income-table {
    margin: 6px 0 10px;
    border: 1px solid #cbd5e1;
    border-radius: 4px;
    overflow: hidden;
  }
  .pcl-income-title {
    padding: 6px 10px;
    font-weight: 700;
    background: #f8fafc;
    border-bottom: 1px solid #cbd5e1;
  }
  .pcl-income-table table {
    width: 100%;
    border-collapse: collapse;
    font-size: 8.5pt;
  }
  .pcl-income-table th {
    background: #e2e8f0;
    padding: 4px 8px;
    text-align: left;
    border: 1px solid #cbd5e1;
    font-weight: 700;
  }
  .pcl-income-table td {
    padding: 4px 8px;
    border: 1px solid #e2e8f0;
    vertical-align: top;
  }

  /* 서류 행 */
  .pcl-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 8px 4px;
    border-bottom: 1px solid #f1f5f9;
  }
  .pcl-check-box {
    width: 16px;
    height: 16px;
    border: 1.5px solid #64748b;
    border-radius: 3px;
    flex-shrink: 0;
    margin-top: 2px;
  }
  .pcl-content { flex: 1; min-width: 0; }
  .pcl-top {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-bottom: 3px;
  }
  .pcl-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    background: #1e40af;
    color: #fff;
    border-radius: 50%;
    font-size: 8pt;
    font-weight: 800;
    flex-shrink: 0;
  }
  .pcl-item-title { font-size: 10pt; font-weight: 700; }
  .pcl-item-sub   { font-size: 8.5pt; color: #475569; }
  .pcl-issuer {
    display: inline-block;
    font-size: 8.5pt;
    color: #1e40af;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    border-radius: 10px;
    padding: 2px 8px;
    margin: 3px 0;
  }
  .pcl-sub { font-size: 8.5pt; color: #475569; }
  .pcl-notes {
    list-style: none;
    padding: 0;
    margin: 4px 0 0 28px;
  }
  .pcl-notes li {
    font-size: 8.5pt;
    color: #78350f;
    line-height: 1.6;
    padding-left: 10px;
    position: relative;
  }
  .pcl-notes li::before { content: '▸'; position: absolute; left: 0; color: #d97706; }

  /* 푸터 */
  .pcl-footer {
    margin-top: 24px;
    padding-top: 12px;
    border-top: 1px solid #e2e8f0;
    font-size: 8.5pt;
    color: #64748b;
    text-align: center;
  }
}

/* 용지 규격 */
.form-doc-paper-size {
  text-align: center;
  font-size: .72rem;
  color: #9ca3af;
  padding: 8px 0 10px;
  border-top: 1px solid #e5e7eb;
  background: #fff;
}

/* 선택사항 2 버튼 색상 (파란 계열) */
.option-btn-yes2 {
  border-color: #3b82f6;
  background: #eff6ff;
}
.option-btn-yes2 i { color: #2563eb; }
.option-btn-yes2 .option-btn-label { color: #1d4ed8; }
.option-btn-yes2:hover {
  background: #dbeafe;
  border-color: #2563eb;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(37,99,235,.2);
}
.option-btn-no2 {
  border-color: #f97316;
  background: #fff7ed;
}
.option-btn-no2 i { color: #ea580c; }
.option-btn-no2 .option-btn-label { color: #c2410c; }
.option-btn-no2:hover {
  background: #ffedd5;
  border-color: #ea580c;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(234,88,12,.2);
}

/* 모바일 대응 */
@media (max-width: 640px) {
  .option-question-card { padding: 24px 16px 20px; }
  .option-btn { padding: 16px 20px; min-width: 120px; }
  .option-btn-label { font-size: 1rem; }
  .option-question-title { font-size: 1rem; }
  .option-btn-group { gap: 10px; }
  .affidavit-sign-section { align-items: flex-start; }
  .affidavit-sign-row { flex-wrap: wrap; gap: 8px; }
}

/* ═══════════════════════════════════════════════════
   Page 42: 무소득 확인서 (특별공급 전용)
   ═══════════════════════════════════════════════════ */

/* 무소득 확인서 제목 */
.zi-doc-title {
  text-align: center;
  font-size: 1.25rem;
  font-weight: 900;
  color: #111;
  letter-spacing: .18em;
  padding: 18px 0 14px;
  border-bottom: 1.5px solid #374151;
}

/* 상단 유의사항 */
.zi-notice-header {
  padding: 10px 16px;
  font-size: .82rem;
  color: #374151;
  background: #f9fafb;
  border-bottom: 1px solid #d1d5db;
  line-height: 1.6;
}
.zi-dark-box {
  display: inline-block;
  background: #9ca3af;
  width: 28px;
  height: 14px;
  vertical-align: middle;
  border: 1px solid #6b7280;
  margin: 0 2px;
}

/* 기본 테이블 */
.zi-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .88rem;
}
.zi-table th,
.zi-table td {
  border: 1px solid #374151;
  padding: 7px 10px;
  vertical-align: middle;
}
.zi-label-cell {
  background: #f3f4f6;
  font-weight: 700;
  text-align: center;
  font-size: .85rem;
  color: #111;
}
.zi-section-cell {
  background: #e5e7eb;
  font-weight: 800;
  text-align: center;
  font-size: .85rem;
  color: #111;
  letter-spacing: .08em;
  writing-mode: vertical-rl;
  text-orientation: mixed;
  padding: 10px 6px;
}
.zi-dark-cell {
  background: #9ca3af !important;
  color: #fff;
  font-size: .8rem;
}
.zi-auto-date {
  font-size: .82rem;
  color: #fff;
}

/* 확인자 확인문 */
.zi-confirm-text {
  font-size: .9rem;
  color: #111;
  margin: 0;
  font-weight: 500;
}

/* 첨부 안내 행 */
.zi-annex-row {
  padding: 8px 16px;
  font-size: .82rem;
  color: #374151;
  border-bottom: 1px solid #e5e7eb;
  background: #fffbeb;
}

/* 유의사항 박스 */
.zi-caution-box {
  padding: 10px 16px 12px;
  background: #f8fafc;
  border-top: 1px solid #e5e7eb;
}
.zi-caution-title {
  font-size: .85rem;
  font-weight: 700;
  color: #374151;
  margin: 0 0 6px;
}
.zi-caution-list {
  margin: 0;
  padding-left: 18px;
}
.zi-caution-list li {
  font-size: .82rem;
  color: #374151;
  line-height: 1.7;
}

/* ── 무소득확인서 인쇄 스타일 ── */
@media print {
  /* ① body / main-container 완전 초기화 */
  body.print-zeroincome,
  body.print-zeroincome html {
    padding: 0 !important;
    margin: 0 !important;
    height: auto !important;
    overflow: visible !important;
  }
  body.print-zeroincome .main-container {
    padding: 0 !important;
    margin: 0 !important;
    max-width: 100% !important;
    display: block !important;
    height: auto !important;
  }

  /* ② 화면 전용 UI 완전 숨김 */
  body.print-zeroincome .app-header,
  body.print-zeroincome .progress-nav,
  body.print-zeroincome .toast,
  body.print-zeroincome .fab-checklist,
  body.print-zeroincome .modal-overlay,
  body.print-zeroincome #printChecklistOverlay,
  body.print-zeroincome .p5-confirm-modal {
    display: none !important;
  }

  /* ③ page42 외 모든 페이지 — 높이도 0으로 완전 제거 */
  body.print-zeroincome .main-container > .page:not(#page42) {
    display: none !important;
    height: 0 !important;
    min-height: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    overflow: hidden !important;
  }

  /* ④ page42: 여백 완전 제거, 최상단 고정 */
  body.print-zeroincome #page42 {
    display: block !important;
    position: static !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
    width: 100% !important;
    animation: none !important;
    min-height: 0 !important;
  }

  /* ⑤ 화면 전용 요소 숨김 */
  body.print-zeroincome #page42 .page-header  { display: none !important; }
  body.print-zeroincome #page42 .page-actions { display: none !important; }

  /* ⑥ form-doc-wrap 여백 완전 제거 */
  body.print-zeroincome #page42 .form-doc-wrap {
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    box-shadow: none !important;
    border-radius: 0 !important;
  }

  /* ⑦ 문서 제목 */
  body.print-zeroincome .zi-doc-title {
    font-size: 15pt !important;
    font-weight: 900 !important;
    letter-spacing: .2em !important;
    padding: 8pt 0 6pt !important;
    border-bottom: 1.5pt solid #374151 !important;
    text-align: center !important;
    margin: 0 !important;
  }

  /* ⑧ 유의사항 헤더 */
  body.print-zeroincome .zi-notice-header {
    font-size: 8pt !important;
    padding: 4pt 6pt !important;
    margin: 0 !important;
  }

  /* ⑨ 테이블 폰트/패딩 최적화 */
  body.print-zeroincome .zi-table th,
  body.print-zeroincome .zi-table td {
    font-size: 9pt !important;
    padding: 5pt 6pt !important;
  }

  /* ⑩ 확인 텍스트 / 유의사항 / 첨부 */
  body.print-zeroincome .zi-confirm-text { font-size: 9.5pt !important; margin: 0 !important; }
  body.print-zeroincome .zi-caution-box {
    margin-top: 4pt !important;
    padding: 5pt 12pt 6pt !important;
  }
  body.print-zeroincome .zi-caution-list { margin: 0 !important; }
  body.print-zeroincome .zi-caution-list li { font-size: 8.5pt !important; line-height: 1.5 !important; }
  body.print-zeroincome .zi-caution-title { font-size: 8.5pt !important; margin-bottom: 3pt !important; }
  body.print-zeroincome .zi-annex-row {
    font-size: 8pt !important;
    padding: 3pt 6pt !important;
    margin: 0 !important;
  }

  /* ⑪ 서명 영역 */
  body.print-zeroincome .affidavit-sign-section {
    padding: 8pt 14pt 5pt !important;
    margin: 0 !important;
  }
  body.print-zeroincome .affidavit-date-row { margin-bottom: 4pt !important; }
  body.print-zeroincome .affidavit-date-text { font-size: 10pt !important; }
  body.print-zeroincome .affidavit-sign-name { font-size: 11pt !important; }
  body.print-zeroincome .affidavit-dest-row  { font-size: 9.5pt !important; margin-top: 4pt !important; }

  /* ⑫ 입력 필드 인쇄 처리 */
  body.print-zeroincome .affidavit-input {
    border: none !important;
    border-bottom: 1px solid #555 !important;
    background: transparent !important;
    font-size: 9pt !important;
    border-radius: 0 !important;
    padding: 0 2pt !important;
  }

  /* ⑬ 라디오 버튼 숨김 */
  body.print-zeroincome input[type="radio"] { display: none !important; }

  /* ⑭ 선택된 구분 → ✓ 심볼로 표시 */
  body.print-zeroincome .affidavit-check-label:has(input:checked) span {
    font-weight: 600 !important;
    color: #000 !important;
  }
  body.print-zeroincome .affidavit-check-label:has(input:checked) span::before {
    content: '✓ ';
    font-weight: 900 !important;
    color: #000 !important;
  }

  /* ⑮ 용지 규격 */
  body.print-zeroincome .form-doc-paper-size {
    font-size: 7pt !important;
    padding: 2pt 0 0 !important;
    margin-top: 3pt !important;
  }

  /* ⑯ 워터마크 표시 */
  body.print-zeroincome .print-watermark { display: flex !important; }

  /* ⑰ 페이지 분리 방지 — 모든 요소가 1페이지 안에 */
  body.print-zeroincome #page42 * {
    page-break-inside: avoid !important;
    break-inside: avoid !important;
  }
  body.print-zeroincome #page42 .form-doc-wrap {
    page-break-before: avoid !important;
    break-before: avoid !important;
  }
}

/* ══════════════════════════════════════════════════════════
   선택사항3 (Page 43) 스타일
   ══════════════════════════════════════════════════════════ */

/* 선택사항3 버튼 — 핑크/로즈 계열 */
.option-btn-no3 {
  background: linear-gradient(135deg, #fff0f6, #ffe4f0) !important;
  border-color: #ec4899 !important;
  color: #be185d !important;
}
.option-btn-no3:hover {
  background: linear-gradient(135deg, #fce7f3, #fbcfe8) !important;
  transform: translateY(-3px) !important;
  box-shadow: 0 8px 20px rgba(236,72,153,.25) !important;
}
.option-btn-yes3 {
  background: linear-gradient(135deg, #f0fdf4, #dcfce7) !important;
  border-color: #22c55e !important;
  color: #15803d !important;
}
.option-btn-yes3:hover {
  background: linear-gradient(135deg, #dcfce7, #bbf7d0) !important;
  transform: translateY(-3px) !important;
  box-shadow: 0 8px 20px rgba(34,197,94,.25) !important;
}

/* ══════════════════════════════════════════════════════════
   예비신혼부부 세대구성 확인서 (Page 44) 스타일
   ══════════════════════════════════════════════════════════ */

/* 문서 제목 */
.pw-doc-title {
  text-align: center;
  font-size: 1.25rem;
  font-weight: 800;
  letter-spacing: .05em;
  padding: 18px 0 10px;
  border-bottom: 2px solid #1e3a5f;
  margin-bottom: 14px;
}

/* 도입 문구 */
.pw-doc-intro {
  font-size: .9rem;
  line-height: 1.8;
  color: #374151;
  margin-bottom: 14px;
  padding: 0 4px;
  word-break: keep-all;
}

/* 섹션 제목 */
.pw-section-title {
  font-size: .95rem;
  font-weight: 700;
  color: #1e3a5f;
  margin-bottom: 6px;
}

/* 주의사항 텍스트 */
.pw-notice-text {
  font-size: .82rem;
  color: #6b7280;
  line-height: 1.6;
  margin-bottom: 8px;
  word-break: keep-all;
}
.pw-notice-bottom {
  margin-top: 8px;
  margin-bottom: 0;
}

/* 세대 구성원 테이블 */
.pw-table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 4px;
}
.pw-table-header .pw-th {
  background: #1e3a5f;
  color: #fff;
  font-size: .82rem;
  font-weight: 600;
  padding: 8px 6px;
  text-align: center;
  border: 1px solid #1e3a5f;
  vertical-align: middle;
  line-height: 1.4;
}
.pw-table-row .pw-td {
  border: 1px solid #d1d5db;
  padding: 6px 6px;
  vertical-align: middle;
  font-size: .85rem;
}
.pw-rel-cell {
  text-align: center;
  font-weight: 600;
  color: #374151;
  background: #f9fafb;
}

/* 입력 필드 */
.pw-input {
  width: 100%;
  border: 1px solid #d1d5db;
  border-radius: 4px;
  padding: 4px 6px;
  font-size: .84rem;
  color: #111827;
  background: #fff;
  box-sizing: border-box;
  outline: none;
}
.pw-input:focus {
  border-color: #ec4899;
  box-shadow: 0 0 0 2px rgba(236,72,153,.15);
}
.pw-auto-name {
  font-weight: 700;
  color: #1e3a5f;
  font-size: .9rem;
}

/* 동일/분리세대 체크그룹 */
.pw-check-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.pw-check-label {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: .8rem;
  color: #374151;
  cursor: pointer;
  white-space: nowrap;
}
.pw-check-label input[type="radio"] {
  accent-color: #ec4899;
  width: 14px;
  height: 14px;
}

/* 서명 섹션 */
.pw-sign-section {
  margin-top: 18px;
}
.pw-signer-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 10px 0;
  font-size: .9rem;
  flex-wrap: wrap;
}
.pw-signer-label {
  font-weight: 600;
  color: #374151;
  white-space: nowrap;
}
.pw-signer-colon {
  color: #374151;
}
.pw-signer-name {
  font-weight: 700;
  color: #1e3a5f;
  min-width: 80px;
}
.pw-signer-input {
  width: 160px !important;
  display: inline-block !important;
}
.pw-dest-row {
  margin-top: 14px;
  font-size: .95rem;
  font-weight: 600;
}

/* ── 예비신혼부부 세대구성 확인서 인쇄 스타일 ── */
@media print {
  /* ① body / main-container 패딩 완전 제거 */
  body.print-prewedding {
    padding: 0 !important;
    margin: 0 !important;
  }
  body.print-prewedding .main-container {
    padding: 0 !important;
    margin: 0 !important;
    max-width: 100% !important;
  }

  /* ② 화면 전용 UI 숨김 */
  body.print-prewedding .app-header,
  body.print-prewedding .progress-nav,
  body.print-prewedding .toast,
  body.print-prewedding .fab-checklist,
  body.print-prewedding .modal-overlay,
  body.print-prewedding #printChecklistOverlay {
    display: none !important;
  }

  /* ③ page44 외 모든 페이지 완전 숨김 (height:0으로 공간 점유 제거) */
  body.print-prewedding .main-container > .page:not(#page44) {
    display: none !important;
    height: 0 !important;
    min-height: 0 !important;
    overflow: hidden !important;
  }

  /* ④ page44 자체: 최상단 여백 없이 표시 */
  body.print-prewedding #page44 {
    display: block !important;
    position: static !important;
    padding: 0 !important;
    margin: 0 !important;
    top: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
    width: 100% !important;
    animation: none !important;
    min-height: 0 !important;
  }

  /* ⑤ 화면 전용 요소 숨김 */
  body.print-prewedding #page44 .page-header  { display: none !important; }
  body.print-prewedding #page44 .page-actions { display: none !important; }

  /* ⑥ form-doc-wrap 여백 초기화 */
  body.print-prewedding #page44 .form-doc-wrap {
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    box-shadow: none !important;
    border-radius: 0 !important;
  }

  /* ⑦ 본문 폰트/패딩 최적화 */
  body.print-prewedding .pw-doc-title   { font-size: 14pt !important; padding: 10pt 0 6pt !important; }
  body.print-prewedding .pw-doc-intro   { font-size: 8.5pt !important; line-height: 1.6 !important; margin-bottom: 6pt !important; }
  body.print-prewedding .pw-section-title { font-size: 9.5pt !important; margin: 6pt 0 3pt !important; }
  body.print-prewedding .pw-notice-text { font-size: 8pt !important; padding: 3pt 6pt !important; }
  body.print-prewedding .pw-notice-bottom { font-size: 7.5pt !important; padding: 3pt 6pt !important; }

  /* ⑧ 테이블 */
  body.print-prewedding .pw-table-header .pw-th { font-size: 8.5pt !important; padding: 5pt 4pt !important; }
  body.print-prewedding .pw-table-row   .pw-td  { font-size: 8.5pt !important; padding: 5pt 4pt !important; }

  /* ⑨ 입력 필드 */
  body.print-prewedding .pw-input {
    border: none !important;
    border-bottom: 1px solid #666 !important;
    background: transparent !important;
    font-size: 8.5pt !important;
    border-radius: 0 !important;
    padding: 0 2pt !important;
  }
  body.print-prewedding .pw-check-label { font-size: 8pt !important; }
  body.print-prewedding input[type="radio"] { display: none !important; }

  /* ⑩ 서명 영역 */
  body.print-prewedding .pw-signer-row { font-size: 9.5pt !important; margin: 5pt 0 !important; }
  body.print-prewedding .pw-signer-input {
    border: none !important;
    border-bottom: 1px solid #666 !important;
    background: transparent !important;
    font-size: 9.5pt !important;
    border-radius: 0 !important;
    width: 120pt !important;
    padding: 0 2pt !important;
  }
  body.print-prewedding .affidavit-sign-section { padding: 8pt 14pt 6pt !important; }
  body.print-prewedding .affidavit-date-text    { font-size: 10pt !important; }
  body.print-prewedding .affidavit-dest-row     { font-size: 9.5pt !important; margin-top: 8pt !important; }
  body.print-prewedding .pw-dest-row            { font-size: 9.5pt !important; margin-top: 6pt !important; }

  /* ⑪ 선택된 라디오 → ✓ 심볼로 표시 */
  body.print-prewedding .pw-check-label:has(input:checked) span {
    font-weight: 600 !important;
    color: #000 !important;
  }
  body.print-prewedding .pw-check-label:has(input:checked) span::before {
    content: '✓ ';
    font-weight: 900 !important;
    color: #000 !important;
  }

  /* ⑫ 워터마크 표시 */
  body.print-prewedding .print-watermark { display: flex !important; }
}

/* ── 비사업자각서 인쇄 스타일 ── */
@media print {
  body.print-affidavit #page40 {
    display: block !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
  }
  body.print-affidavit #page40 .page-header { display: none !important; }
  body.print-affidavit #page40 .page-actions { display: none !important; }
  body.print-affidavit .form-doc-wrap { border: none !important; }
  body.print-affidavit .affidavit-body-text p { font-size: 9.5pt !important; line-height: 2 !important; }
  body.print-affidavit .affidavit-table th,
  body.print-affidavit .affidavit-table td { font-size: 9pt !important; padding: 5pt 6pt !important; }
  body.print-affidavit .form-doc-law-ref   { font-size: 8.5pt !important; }
  body.print-affidavit .form-doc-subtitle  { font-size: 9pt !important; }
  body.print-affidavit .affidavit-doc-title {
    font-size: 15pt !important;
    font-weight: 900 !important;
    letter-spacing: .2em !important;
    padding: 12pt 0 10pt !important;
    border-bottom: 1.5pt solid #374151 !important;
  }
  body.print-affidavit .affidavit-sign-section { padding: 14pt 16pt 10pt !important; }
  body.print-affidavit .affidavit-date-text { font-size: 10pt !important; }
  body.print-affidavit .affidavit-sign-name { font-size: 11pt !important; }
  body.print-affidavit .affidavit-confirm-cell { display: none !important; }
  body.print-affidavit .affidavit-input { border: none !important; background: transparent !important; }
  /* 클래스 없이 출력 시 폴백 */
  body:not(.print-income):not(.print-asset):not(.print-pledge):not(.print-application):not(.print-affidavit) #page40 {
    display: block !important;
    padding: 0 !important;
    margin: 0 !important;
  }
}

/* ══════════════════════════════════════════════════════════
   선택사항4·일반공급선택사항1 (Page 45) — 주차등록 Badge
   ══════════════════════════════════════════════════════════ */

/* 주차 배지 */
.parking-badge {
  background: linear-gradient(135deg, #064e3b, #059669) !important;
  color: #fff !important;
}
.parking-banner {
  background: linear-gradient(135deg, #ecfdf5, #d1fae5) !important;
  border-color: #6ee7b7 !important;
  color: #065f46 !important;
}

/* 주차 선택 버튼 — 초록/에메랄드 계열 */
.option-btn-no4 {
  background: linear-gradient(135deg, #ecfdf5, #d1fae5) !important;
  border-color: #059669 !important;
  color: #065f46 !important;
}
.option-btn-no4:hover {
  background: linear-gradient(135deg, #d1fae5, #a7f3d0) !important;
  transform: translateY(-3px) !important;
  box-shadow: 0 8px 20px rgba(5,150,105,.25) !important;
}
.option-btn-yes4 {
  background: linear-gradient(135deg, #f9fafb, #f3f4f6) !important;
  border-color: #9ca3af !important;
  color: #374151 !important;
}
.option-btn-yes4:hover {
  background: linear-gradient(135deg, #f3f4f6, #e5e7eb) !important;
  transform: translateY(-3px) !important;
  box-shadow: 0 8px 20px rgba(107,114,128,.18) !important;
}

/* step-parking 스텝바 스타일 (에메랄드 계열) */
.step.step-parking .step-circle {
  background: linear-gradient(135deg, #065f46, #059669) !important;
}
.step.step-parking .step-label {
  color: #065f46;
  white-space: normal;
  text-align: center;
  line-height: 1.3;
}
.step-line.step-parking {
  background: linear-gradient(90deg, #a7f3d0, #6ee7b7);
}

/* ══════════════════════════════════════════════════════════
   Page 46 — 주차등록 기준 심사 요청서 스타일
   ══════════════════════════════════════════════════════════ */

.park-doc-title {
  text-align: center;
  font-size: 1.2rem;
  font-weight: 800;
  letter-spacing: .05em;
  padding: 16px 0 10px;
  border-bottom: 2px solid #065f46;
  margin-bottom: 12px;
}

.park-section-title {
  font-size: .95rem;
  font-weight: 700;
  color: #065f46;
  margin: 12px 0 6px;
}

.park-table {
  width: 100%;
  border-collapse: collapse;
}

.park-table-header .park-th {
  background: #065f46;
  color: #fff;
  font-size: .82rem;
  font-weight: 600;
  padding: 7px 6px;
  text-align: center;
  border: 1px solid #065f46;
  vertical-align: middle;
  line-height: 1.4;
}

.park-table-row .park-td {
  border: 1px solid #d1d5db;
  padding: 6px 7px;
  vertical-align: middle;
  font-size: .85rem;
}

.park-label {
  background: #f0fdf4 !important;
  font-weight: 600;
  color: #065f46;
  text-align: center;
  border: 1px solid #d1d5db;
  padding: 7px 6px;
  font-size: .85rem;
  vertical-align: middle;
}

.park-auto {
  font-weight: 700;
  color: #111827;
}

.park-input {
  width: 100%;
  border: 1px solid #d1d5db;
  border-radius: 4px;
  padding: 4px 8px;
  font-size: .85rem;
  color: #111827;
  background: #fff;
  box-sizing: border-box;
  outline: none;
}
.park-input:focus {
  border-color: #059669;
  box-shadow: 0 0 0 2px rgba(5,150,105,.15);
}

/* 체크박스 셀 */
.park-check-cell {
  background: #f0fdf4;
  text-align: center;
  vertical-align: middle;
}
.park-check-label {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  cursor: pointer;
  font-size: .82rem;
  color: #065f46;
  font-weight: 600;
}
.park-check-label input[type="checkbox"] {
  accent-color: #059669;
  width: 16px;
  height: 16px;
}
.park-check-box-text {
  text-align: center;
  line-height: 1.4;
  white-space: nowrap;
}

/* 기준 목록 */
.park-criteria-list {
  margin: 0;
  padding-left: 14px;
  list-style: disc;
}
.park-criteria-list li {
  font-size: .82rem;
  line-height: 1.7;
  color: #374151;
}

/* 가구별 1대 안내 */
.park-notice-row {
  font-size: .83rem;
  color: #374151;
  margin: 8px 0 4px;
  padding: 6px 8px;
  background: #f0fdf4;
  border-left: 3px solid #059669;
}

/* 서약 본문 */
.park-oath-box {
  border: 1px solid #d1d5db;
  border-radius: 6px;
  padding: 12px 14px;
  margin: 14px 0 10px;
  background: #fafafa;
}
.park-oath-text {
  font-size: .88rem;
  line-height: 1.85;
  color: #374151;
  margin: 0;
  word-break: keep-all;
}

/* ═══════════════════════════════════════════════════
   Page 5: 체크리스트 — 화면 전용 / 인쇄 전용 클래스
   ═══════════════════════════════════════════════════ */

/* 화면에서 보이는 요소 (기본: 표시) */
.screen-only-p5 {
  display: block;
}

/* 화면에서 숨기는 인쇄 전용 요소 */
.print-only-p5 {
  display: none !important;
}

/* ── Page 5 배지 ── */
.p5-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: linear-gradient(135deg, #059669, #10b981);
  color: #fff;
  font-size: .82rem;
  font-weight: 700;
  padding: 5px 14px;
  border-radius: 20px;
  margin-bottom: 10px;
  letter-spacing: .04em;
  box-shadow: 0 2px 8px rgba(5,150,105,.25);
}

/* ── p5 체크리스트 섹션 컨테이너 ── */
.p5-checklist-section {
  background: #fff;
  border-radius: 12px;
  border: 1.5px solid #d1fae5;
  overflow: hidden;
  margin-bottom: 20px;
}

/* ── 인쇄용 헤더 (화면에서는 display:none) ── */
.p5-print-header {
  display: none;
}

.p5-print-title-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 0 0 6px;
}

.p5-print-project {
  font-size: 10pt;
  color: #059669;
  font-weight: 700;
  letter-spacing: .04em;
}

.p5-print-title {
  font-size: 16pt;
  font-weight: 900;
  color: #111;
  margin: 0;
  letter-spacing: .06em;
}

.p5-print-meta {
  display: flex;
  gap: 28px;
  justify-content: center;
  font-size: 9pt;
  color: #374151;
  padding: 6px 0;
  border-top: 1px solid #e5e7eb;
  border-bottom: 1px solid #e5e7eb;
  margin-bottom: 10px;
}

.p5-print-meta span strong {
  color: #111;
}

.p5-print-desc {
  font-size: 9pt;
  color: #4b5563;
  line-height: 1.7;
  margin: 0 0 8px;
}

/* ── 화면 체크리스트 헤더 (제목 + 출력 버튼) ── */
.p5-checklist-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 20px 12px;
  border-bottom: 1.5px solid #d1fae5;
  background: #f0fdf4;
}

.p5-checklist-header .section-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 1rem;
  font-weight: 700;
  color: #065f46;
  margin: 0;
}

.p5-checklist-header .section-title i {
  color: #059669;
  font-size: 1.1rem;
}

.p5-header-actions {
  display: flex;
  gap: 8px;
}

/* 출력 버튼 */
.btn-print-checklist {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: linear-gradient(135deg, #059669, #10b981);
  color: #fff;
  font-size: .85rem;
  font-weight: 700;
  border: none;
  border-radius: 8px;
  padding: 9px 18px;
  cursor: pointer;
  transition: all .2s;
  box-shadow: 0 2px 8px rgba(5,150,105,.3);
}
.btn-print-checklist:hover {
  background: linear-gradient(135deg, #047857, #059669);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(5,150,105,.4);
}

/* ── 인쇄 전용 체크리스트 h2 ── */
.p5-cl-title-print {
  display: none;
}

/* ── 서명 영역 ── */
.p5-sign-section {
  border-top: 2px solid #d1fae5;
  padding: 16px 20px 14px;
  background: #f8fffe;
}

.p5-sign-row {
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
}

.p5-sign-item {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  min-width: 160px;
}

.p5-sign-label {
  font-size: .88rem;
  font-weight: 700;
  color: #374151;
  white-space: nowrap;
  flex-shrink: 0;
}

.p5-sign-line {
  flex: 1;
  border-bottom: 1.5px solid #374151;
  min-width: 80px;
  font-size: .88rem;
  color: #111;
  padding: 2px 4px;
  display: inline-block;
}

.p5-sign-name-val {
  color: #065f46;
  font-weight: 700;
}

.p5-sign-blank {
  color: transparent;
  border-bottom: 1.5px solid #374151;
  min-width: 100px;
  flex: 1;
}

.p5-sign-stamp {
  font-size: .78rem;
  color: #6b7280;
  white-space: nowrap;
  flex-shrink: 0;
}

/* ── 주차등록 기준 심사 요청서 인쇄 스타일 ── */
@media print {
  /* ① body / main-container 패딩 완전 제거 */
  body.print-parking {
    padding: 0 !important;
    margin: 0 !important;
  }
  body.print-parking .main-container {
    padding: 0 !important;
    margin: 0 !important;
    max-width: 100% !important;
  }

  /* ② 화면 전용 UI 숨김 */
  body.print-parking .app-header,
  body.print-parking .progress-nav,
  body.print-parking .toast,
  body.print-parking .fab-checklist,
  body.print-parking .modal-overlay,
  body.print-parking #printChecklistOverlay {
    display: none !important;
  }

  /* ③ page46 외 모든 페이지 완전 숨김 (height:0으로 공간 점유 제거) */
  body.print-parking .main-container > .page:not(#page46) {
    display: none !important;
    height: 0 !important;
    min-height: 0 !important;
    overflow: hidden !important;
  }

  /* ④ page46 자체: 최상단 여백 없이 표시 */
  body.print-parking #page46 {
    display: block !important;
    position: static !important;
    padding: 0 !important;
    margin: 0 !important;
    top: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
    width: 100% !important;
    animation: none !important;
    min-height: 0 !important;
  }

  /* ⑤ 화면 전용 요소 숨김 */
  body.print-parking #page46 .page-header  { display: none !important; }
  body.print-parking #page46 .page-actions { display: none !important; }

  /* ⑥ form-doc-wrap 여백 초기화 */
  body.print-parking .form-doc-wrap { border: none !important; }

  /* ⑦ 본문 폰트/패딩 최적화 */
  body.print-parking .park-doc-title  { font-size: 13pt !important; padding: 10pt 0 8pt !important; }
  body.print-parking .park-section-title { font-size: 9pt !important; margin: 8pt 0 4pt !important; }
  body.print-parking .park-label { font-size: 8.5pt !important; padding: 5pt 5pt !important; }
  body.print-parking .park-table-header .park-th { font-size: 8pt !important; padding: 4pt !important; }
  body.print-parking .park-table-row .park-td { font-size: 8pt !important; padding: 4pt 5pt !important; }
  body.print-parking .park-criteria-list li { font-size: 7.5pt !important; line-height: 1.6 !important; }
  body.print-parking .park-input {
    border: none !important;
    border-bottom: 1px solid #666 !important;
    background: transparent !important;
    font-size: 8.5pt !important;
    border-radius: 0 !important;
  }
  body.print-parking .park-check-label { font-size: 8pt !important; }
  body.print-parking input[type="checkbox"] { display: none !important; }

  /* ⑧ 선택된 체크박스 → ✓ 심볼로 표시 (bold+underline 제거) */
  body.print-parking .park-check-label:has(input:checked) .park-check-box-text {
    font-weight: 600;
    color: #000;
  }
  body.print-parking .park-check-label:has(input:checked) .park-check-box-text::before {
    content: '✓ ';
    font-weight: 900;
    color: #000;
  }

  body.print-parking .park-notice-row { font-size: 8pt !important; }
  body.print-parking .park-oath-text { font-size: 9pt !important; line-height: 1.9 !important; }
  body.print-parking .affidavit-sign-section { padding: 10pt 12pt 8pt !important; }
  body.print-parking .affidavit-date-text { font-size: 10pt !important; }
  body.print-parking .affidavit-sign-name { font-size: 11pt !important; }
  body.print-parking .affidavit-dest-row { font-size: 10pt !important; }
}

/* ═══════════════════════════════════════════════════
   Page 5 체크리스트 인쇄 (@media print · print-page5)
   ═══════════════════════════════════════════════════ */
@media print {
  /* ① body / main-container 패딩 완전 제거 */
  body.print-page5 {
    padding: 0 !important;
    margin: 0 !important;
  }
  body.print-page5 .main-container {
    padding: 0 !important;
    margin: 0 !important;
    max-width: 100% !important;
  }

  /* ② 화면 전용 UI 숨김 */
  body.print-page5 .app-header,
  body.print-page5 .progress-nav,
  body.print-page5 .toast,
  body.print-page5 .fab-checklist,
  body.print-page5 .modal-overlay,
  body.print-page5 #printChecklistOverlay,
  body.print-page5 .p5-confirm-modal {
    display: none !important;
  }

  /* ③ page5 외 모든 페이지 완전 숨김 (height:0으로 공간 점유 제거) */
  body.print-page5 .main-container > .page:not(#page5) {
    display: none !important;
    height: 0 !important;
    min-height: 0 !important;
    overflow: hidden !important;
  }

  /* ④ page5 자체: 최상단 여백 없이 표시 */
  body.print-page5 #page5 {
    display: block !important;
    position: static !important;
    padding: 0 !important;
    margin: 0 !important;
    top: 0 !important;
    box-shadow: none !important;
    border: none !important;
    background: #fff !important;
    max-width: 100% !important;
    width: 100% !important;
    animation: none !important;
  }

  /* ⑤ 화면 전용 요소 숨기기 */
  body.print-page5 .screen-only-p5 {
    display: none !important;
  }

  /* ⑥ 인쇄 전용 요소 표시 */
  body.print-page5 .print-only-p5 {
    display: block !important;
  }

  /* ⑦ 체크리스트 섹션 — 테두리/배경 정리, 패딩 최소화 */
  body.print-page5 .p5-checklist-section {
    border: none !important;
    border-radius: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    font-family: 'Noto Sans KR', sans-serif !important;
  }

  /* 인쇄 전용 헤더 표시 */
  body.print-page5 .p5-print-header {
    display: block !important;
    border-bottom: 2.5px solid #059669;
    padding-bottom: 10pt;
    margin-bottom: 10pt;
    text-align: center;
  }
  body.print-page5 .p5-print-title-row {
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 14pt;
    margin-bottom: 6pt;
  }
  body.print-page5 .p5-print-project {
    font-size: 10pt;
    color: #059669;
    font-weight: 700;
  }
  body.print-page5 .p5-print-title {
    font-size: 16pt;
    font-weight: 900;
    color: #111;
    margin: 0;
  }
  body.print-page5 .p5-print-meta {
    display: flex !important;
    gap: 24pt;
    justify-content: center;
    font-size: 9pt;
    color: #374151;
    border-top: 1px solid #e5e7eb;
    border-bottom: 1px solid #e5e7eb;
    padding: 5pt 0;
    margin-bottom: 8pt;
  }
  body.print-page5 .p5-print-desc {
    font-size: 8.5pt;
    color: #4b5563;
    line-height: 1.7;
    text-align: left;
    margin: 0;
  }

  /* 인쇄용 체크리스트 제목 */
  body.print-page5 .p5-checklist-header-print {
    display: block !important;
    margin-bottom: 6pt;
  }
  body.print-page5 .p5-cl-title-print {
    display: block !important;
    font-size: 11pt;
    font-weight: 800;
    color: #065f46;
    margin: 0 0 4pt;
    padding-bottom: 4pt;
    border-bottom: 1px solid #d1fae5;
  }

  /* doc-list (docFinalList) 인쇄 스타일 */
  body.print-page5 #docFinalList .doc-list {
    margin: 0 !important;
  }

  /* 일반 서류 카드 인쇄 스타일 */
  body.print-page5 #docFinalList .doc-rich-card {
    display: flex !important;
    align-items: flex-start !important;
    padding: 5pt 4pt !important;
    border-bottom: 1px solid #f1f5f9 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    margin-bottom: 0 !important;
  }

  /* 체크박스 인쇄 표현 */
  body.print-page5 #docFinalList .doc-rich-check {
    width: 14pt !important;
    height: 14pt !important;
    border: 1.5pt solid #374151 !important;
    border-radius: 3pt !important;
    flex-shrink: 0 !important;
    margin-top: 1pt !important;
    margin-right: 6pt !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: #fff !important;
  }
  /* 체크된 항목 ✔ 표시 */
  body.print-page5 #docFinalList .doc-rich-card.checked .doc-rich-check {
    background: #059669 !important;
    border-color: #059669 !important;
  }
  body.print-page5 #docFinalList .doc-rich-card.checked .doc-rich-check i {
    color: #fff !important;
    font-size: 8pt !important;
    display: block !important;
  }
  body.print-page5 #docFinalList .doc-rich-card:not(.checked) .doc-rich-check i {
    display: none !important;
  }

  /* 체크된 항목 배경 강조 */
  body.print-page5 #docFinalList .doc-rich-card.checked {
    background: #f0fdf4 !important;
  }

  /* 서류 번호 배지 */
  body.print-page5 #docFinalList .doc-rich-num {
    font-size: 7.5pt !important;
    width: 16pt !important;
    height: 16pt !important;
  }

  /* 타이틀 */
  body.print-page5 #docFinalList .doc-rich-title {
    font-size: 9.5pt !important;
    font-weight: 700 !important;
  }

  /* 부제목 */
  body.print-page5 #docFinalList .doc-rich-sub {
    font-size: 8pt !important;
  }

  /* 발급처 배지 */
  body.print-page5 #docFinalList .doc-rich-issuer {
    font-size: 8pt !important;
    padding: 1pt 6pt !important;
    margin: 2pt 0 !important;
  }

  /* 유의사항 */
  body.print-page5 #docFinalList .doc-rich-notes {
    margin-left: 20pt !important;
  }
  body.print-page5 #docFinalList .doc-rich-notes li {
    font-size: 7.5pt !important;
    line-height: 1.5 !important;
  }

  /* 그룹 헤더 */
  body.print-page5 #docFinalList .doc-group-header {
    font-size: 8.5pt !important;
    padding: 4pt 8pt !important;
    margin: 8pt 0 3pt !important;
  }

  /* 소득 분류 테이블 블록 */
  body.print-page5 #docFinalList .doc-income-block {
    border: 1px solid #cbd5e1 !important;
    border-radius: 4pt !important;
    margin: 4pt 0 !important;
    overflow: hidden !important;
  }
  body.print-page5 #docFinalList .doc-income-table {
    font-size: 7.5pt !important;
  }
  body.print-page5 #docFinalList .doc-income-table th,
  body.print-page5 #docFinalList .doc-income-table td {
    padding: 3pt 5pt !important;
    font-size: 7.5pt !important;
  }

  /* titleNote 배지 */
  body.print-page5 #docFinalList .doc-rich-title-note {
    font-size: 7.5pt !important;
    padding: 1pt 5pt !important;
  }

  /* ── 서명 영역 인쇄 ── */
  body.print-page5 .p5-sign-section {
    border-top: 2pt solid #374151 !important;
    padding: 10pt 0 8pt !important;
    margin-top: 12pt !important;
    background: #fff !important;
  }
  body.print-page5 .p5-sign-row {
    display: flex !important;
    align-items: flex-end !important;
    gap: 20pt !important;
    flex-wrap: nowrap !important;
  }
  body.print-page5 .p5-sign-item {
    display: flex !important;
    align-items: flex-end !important;
    gap: 5pt !important;
    flex: 1 !important;
  }
  body.print-page5 .p5-sign-label {
    font-size: 9pt !important;
    font-weight: 700 !important;
    color: #111 !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }
  body.print-page5 .p5-sign-line {
    flex: 1 !important;
    border-bottom: 1pt solid #111 !important;
    font-size: 9pt !important;
    color: #111 !important;
    padding-bottom: 2pt !important;
    min-width: 60pt !important;
  }
  body.print-page5 .p5-sign-name-val {
    color: #111 !important;
    font-weight: 700 !important;
  }
  body.print-page5 .p5-sign-blank {
    flex: 1 !important;
    border-bottom: 1pt solid #111 !important;
    min-width: 70pt !important;
    color: transparent !important;
  }
  body.print-page5 .p5-sign-stamp {
    font-size: 7.5pt !important;
    color: #4b5563 !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }

  /* 워터마크 print-page5에서도 표시 */
  body.print-page5 .print-watermark {
    display: flex !important;
  }
}
