/* 문서(A4 세로) — 화면 미리보기와 인쇄가 같은 규칙을 쓴다 */
.doc { --dk: #14285A; --dt: #0F1623; --ds: #485266; --dl: #C7CEDA; --dl2: #E3E7EE;
  font-family: 'Pretendard', 'Malgun Gothic', sans-serif; color: var(--dt); font-size: 9.6pt; line-height: 1.5;
  display: flex; flex-direction: column; min-height: 268mm; font-variant-numeric: tabular-nums; letter-spacing: -0.005em;
  -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.doc .num { font-variant-numeric: tabular-nums; }
.doc .r { text-align: right; }
.doc .c { text-align: center; }
.doc table { border-collapse: collapse; width: 100%; }
.doc th, .doc td { vertical-align: top; }
.d-empty { color: #9AA3B2; }
.d-pending { display: inline-block; font-size: 7.5pt; font-weight: 600; color: #fff; background: #9AA3B2; border-radius: 3px; padding: 0 4px; margin-left: 3px; vertical-align: 1px; }

/* 머리 */
.d-head { display: flex; justify-content: space-between; align-items: flex-end; border-bottom: 3pt solid var(--dk); padding-bottom: 4mm; }
.d-title { margin: 0; font-size: 30pt; line-height: 1; font-weight: 700; color: var(--dk); letter-spacing: 0.32em; margin-right: -0.32em; }
.doc-contract .d-title { letter-spacing: 0.16em; }
.d-meta { width: auto !important; font-size: 9pt; }
.d-meta th { text-align: left; font-weight: 600; color: var(--ds); padding: 1px 12px 1px 0; white-space: nowrap; }
.d-meta td { text-align: right; font-weight: 600; white-space: nowrap; padding: 1px 0; }
.d-lead { margin: 5mm 0 4mm; font-size: 10.5pt; }

/* 당사자 */
.d-parties { display: grid; grid-template-columns: 1fr 1fr; gap: 6mm; margin-bottom: 5mm; }
.d-party-h { font-size: 8.5pt; font-weight: 700; color: var(--dk); border-bottom: 1.2pt solid var(--dt); padding-bottom: 1mm; margin-bottom: 1mm; letter-spacing: 0.04em; }
.d-party table { font-size: 8.8pt; }
.d-party th { width: 25mm; text-align: left; font-weight: 600; color: var(--ds); padding: 1.1mm 0; border-bottom: 0.5pt solid var(--dl2); white-space: nowrap; }
.d-party td { padding: 1.1mm 0; border-bottom: 0.5pt solid var(--dl2); word-break: keep-all; overflow-wrap: anywhere; }

/* 금액 띠 */
.d-band { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: 7mm; align-items: center; background: var(--dk); color: #fff; padding: 4.5mm 6mm; margin-bottom: 5mm; }
.d-band-l { grid-row: 1 / 3; font-size: 10pt; font-weight: 700; letter-spacing: 0.04em; border-right: 0.8pt solid rgba(255,255,255,.35); padding-right: 7mm; align-self: stretch; display: flex; align-items: center; }
.d-band-v { display: flex; justify-content: space-between; align-items: baseline; gap: 6mm; flex-wrap: wrap; }
.d-band-k { font-size: 12.5pt; font-weight: 700; word-break: keep-all; }
.d-band-n { font-size: 19pt; font-weight: 700; letter-spacing: -0.01em; }
.d-band-s { font-size: 8.3pt; color: #C9D3EA; text-align: right; }
.d-band-bad { display: block; background: #F3F5F9; color: var(--ds); text-align: center; font-weight: 600; }

/* 품목 표 */
.d-items { font-size: 9pt; margin-bottom: 4mm; }
.d-items thead { display: table-header-group; }
.d-items th { font-size: 8.3pt; font-weight: 700; color: var(--ds); text-align: left; padding: 1.6mm 1.6mm; border-top: 1.2pt solid var(--dt); border-bottom: 0.8pt solid var(--dt); background: #F4F6FA; }
.d-items th.r { text-align: right; }
.d-items td { padding: 1.9mm 1.6mm; border-bottom: 0.5pt solid var(--dl); }
.d-items tr { break-inside: avoid; }
.d-items td.nm { font-weight: 600; }
.d-tag { display: inline-block; font-size: 7.2pt; font-weight: 700; color: var(--dk); border: 0.7pt solid var(--dk); border-radius: 2px; padding: 0 3px; margin-left: 2px; vertical-align: 1px; }

/* 아래: 조건 + 합계 */
.d-bottom { display: grid; grid-template-columns: 1.15fr 1fr; gap: 8mm; align-items: start; break-inside: avoid; }
.d-terms { font-size: 8.8pt; }
.d-terms th { width: 21mm; text-align: left; font-weight: 600; color: var(--ds); padding: 1.3mm 0; border-bottom: 0.5pt solid var(--dl2); white-space: nowrap; }
.d-terms td { padding: 1.3mm 0; border-bottom: 0.5pt solid var(--dl2); word-break: keep-all; }
.d-totals { font-size: 9.2pt; }
.d-totals th { text-align: left; font-weight: 600; color: var(--ds); padding: 1.3mm 0; border-bottom: 0.5pt solid var(--dl2); }
.d-totals td { padding: 1.3mm 0; border-bottom: 0.5pt solid var(--dl2); font-weight: 600; }
.d-totals tr.sum th, .d-totals tr.sum td { border-top: 1.5pt solid var(--dt); border-bottom: 0; padding-top: 2mm; color: var(--dk); font-size: 12pt; font-weight: 700; }
.d-rule { margin: 4mm 0 0; font-size: 7.6pt; color: var(--ds); }

/* 청구서 */
.d-bank { border: 1.2pt solid var(--dk); padding: 3.5mm 4.5mm; }
.d-bank-h { font-size: 8.3pt; font-weight: 700; color: var(--dk); letter-spacing: 0.04em; }
.d-bank-v { font-size: 12.5pt; font-weight: 700; margin: 1mm 0; }
.d-bank-s { font-size: 8.5pt; color: var(--ds); }
.d-check { color: #B42318; font-weight: 700; }
.d-taxnote { margin: 5mm 0 0; padding: 2.6mm 4mm; background: #F4F6FA; border-left: 3pt solid var(--dk); font-size: 8.8pt; }

/* 계약서 */
.doc-contract .d-band { margin-bottom: 4mm; }
.d-arts { }
.d-art { margin: 0 0 3.2mm; break-inside: avoid; }
.d-art h3 { margin: 0 0 0.8mm; font-size: 10.2pt; font-weight: 700; color: var(--dk); }
.d-art p { margin: 0; font-size: 9.6pt; line-height: 1.62; word-break: keep-all; }
.d-signblock { break-inside: avoid; }
.d-sign-ref { margin: 4mm 0 0; padding-top: 2mm; border-top: 0.5pt solid var(--dl2); font-size: 8pt; color: var(--ds); }
.d-pay { font-size: 9.2pt; margin: 1mm 0 1.5mm; width: 75% !important; }
.d-pay th, .d-pay td { padding: 1.1mm 1.2mm; white-space: nowrap; border-bottom: 0.5pt solid var(--dl); text-align: left; }
.d-pay thead th { background: #F4F6FA; font-weight: 700; color: var(--ds); border-top: 1pt solid var(--dt); }
.d-pay .r { text-align: right; }
.d-pay tbody th { font-weight: 700; }
.d-sign-lead { margin: 3mm 0 0.5mm; font-size: 9.2pt; break-before: auto; }
.d-sign-date { margin: 0 0 3mm; font-size: 10.5pt; font-weight: 700; text-align: center; letter-spacing: 0.04em; }
.d-signs { display: grid; grid-template-columns: 1fr 1fr; gap: 8mm; break-inside: avoid; }
.d-sign { border-top: 1.2pt solid var(--dt); }
.d-sign-h { font-size: 11pt; font-weight: 700; color: var(--dk); padding: 1.5mm 0; }
.d-sign table { font-size: 9pt; }
.d-sign th { width: 16mm; text-align: left; color: var(--ds); font-weight: 600; padding: 1.7mm 0; border-bottom: 0.5pt solid var(--dl2); }
.d-sign td { padding: 2mm 0; border-bottom: 0.5pt solid var(--dl2); word-break: keep-all; }
.d-seal { float: right; color: #9AA3B2; font-size: 8.5pt; }
.d-legal { margin: 3.5mm 0 0; padding: 2.4mm 4mm; border: 0.8pt solid var(--dl); font-size: 8.2pt; color: var(--ds); }

/* 바닥 */
.d-foot { margin-top: auto; padding-top: 3mm; border-top: 0.6pt solid var(--dl); display: flex; justify-content: space-between; font-size: 7.6pt; color: var(--ds); }
.d-mark { font-weight: 700; color: var(--dk); letter-spacing: 0.06em; }
.d-rule + .d-foot, .d-legal + .d-foot, .d-taxnote + .d-foot { margin-top: auto; }
.doc > .d-foot { margin-top: auto; }
.doc > :nth-last-child(2) { margin-bottom: 4mm; }
.nw { white-space: nowrap; }

/* ── 인쇄: 문서만, A4 세로 */
#print-root { display: none; }
@page { size: A4 portrait; margin: 14mm 15mm 14mm; }
@media print {
  html, body { background: #fff !important; }
  .app, dialog { display: none !important; }
  #print-root { display: block !important; }
  #print-root .doc { min-height: 268mm; }
  #print-root .doc + .doc { break-before: page; }
}
