/* 고객용 A4 견적서. 화면 미리보기와 PDF가 같은 치수와 표 구조를 사용한다. */
.quotation-workspace .qw-paper {
    width: 210mm; max-width: 100%; min-height: 297mm;
    margin: 0 auto; padding: 10mm; box-sizing: border-box;
    background: #fff; box-shadow: 0 0 0 1px #d9dee5;
}
.quotation-workspace .qw-document {
    --qd-ink: #20252b; --qd-muted: #59616a; --qd-line: #8b959f; --qd-accent: #293f55; --qd-fill: #f1f3f5;
    width: 100%; min-height: 277mm; margin: 0; padding: 0; border: 0;
    background: #fff; color: var(--qd-ink);
    font-family: 'Malgun Gothic', 'Noto Sans CJK KR', 'Noto Sans KR', sans-serif;
    font-size: 12px; line-height: 1.55; font-weight: 400;
    font-variant-numeric: tabular-nums;
}
.quotation-workspace .qw-document * { box-sizing: border-box; }
.quotation-workspace .qw-document h2,
.quotation-workspace .qw-document h3,
.quotation-workspace .qw-document p,
.quotation-workspace .qw-document dl,
.quotation-workspace .qw-document dt,
.quotation-workspace .qw-document dd { margin: 0; padding: 0; }
.quotation-workspace .qw-document dt { font-size: inherit; font-weight: 400; color: var(--qd-muted); }
.quotation-workspace .qw-document .qd-document-header { position: relative; padding: 9px 0 18px; margin-bottom: 18px; }
.quotation-workspace .qw-document .qd-heading { color: var(--qd-ink); font-size: 30px; font-weight: 700; letter-spacing: .22em; text-align: center; line-height: 1.4; }
.quotation-workspace .qw-document .qd-letterhead { color: var(--qd-accent); font-size: 12px; font-weight: 700; margin-bottom: 12px; overflow-wrap: anywhere; }
.quotation-workspace .qw-document .qd-parties { display: grid; grid-template-columns: minmax(0, 43fr) minmax(0, 57fr); gap: 18px; align-items: stretch; margin-bottom: 16px; }
.quotation-workspace .qw-document .qd-recipient-name { color: var(--qd-ink); font-size: 18px; font-weight: 700; line-height: 1.5; word-break: keep-all; overflow-wrap: anywhere; }
.quotation-workspace .qw-document .qd-recipient-name small { font-size: 12px; font-weight: 400; }
.quotation-workspace .qw-document .qd-meta { margin-top: 10px; }
.quotation-workspace .qw-document .qd-meta > div { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 6px; padding: 3px 0; }
.quotation-workspace .qw-document .qd-meta dd { overflow-wrap: anywhere; }
.quotation-workspace .qw-document .qd-statement { margin: 13px 0 10px; font-size: 12px; color: var(--qd-ink); }
.quotation-workspace .qw-document .qd-form-table,
.quotation-workspace .qw-document .qd-items { width: calc(100% - 1px); margin: 0; border-collapse: collapse; table-layout: fixed; border: 1px solid var(--qd-line); font-size: 12px; line-height: 1.5; color: var(--qd-ink); }
.quotation-workspace .qw-document .qd-form-table th,
.quotation-workspace .qw-document .qd-form-table td { border: 1px solid var(--qd-line); padding: 5px 8px; vertical-align: middle; overflow-wrap: anywhere; }
.quotation-workspace .qw-document .qd-form-table th { color: var(--qd-ink); font-weight: 500; text-align: center; background: var(--qd-fill); }
.quotation-workspace .qw-document .qd-role-col { width: 25px; }
.quotation-workspace .qw-document .qd-label-col { width: 53px; }
.quotation-workspace .qw-document .qd-supplier .qd-role { padding: 5px; font-weight: 600; }
.quotation-workspace .qw-document .qd-supplier th { padding: 5px 4px; font-size: 11px; }
.quotation-workspace .qw-document .qd-supplier td { padding: 5px 7px; }
.quotation-workspace .qw-document .qd-contract-total { margin-bottom: 13px; border-top: 2px solid var(--qd-accent); border-bottom: 2px solid var(--qd-accent); }
.quotation-workspace .qw-document .qd-contract-total th { width: 150px; font-size: 13px; font-weight: 600; }
.quotation-workspace .qw-document .qd-contract-total th small { display: block; font-size: 10px; font-weight: 400; }
.quotation-workspace .qw-document .qd-contract-total td { text-align: right; padding: 8px 13px; }
.quotation-workspace .qw-document .qd-contract-total strong { font-size: 23px; font-weight: 700; letter-spacing: .015em; }
.quotation-workspace .qw-document .qd-contract-total td > span { margin-left: 14px; font-size: 11px; white-space: nowrap; }
.quotation-workspace .qw-document .qd-price-basis { text-align: right; caption-side: top; font-size: 10px; color: var(--qd-muted); padding: 0 0 5px; line-height: 1.5; }
.quotation-workspace .qw-document .qd-col-index { width: 9mm; }
.quotation-workspace .qw-document .qd-col-quantity { width: 10mm; }
.quotation-workspace .qw-document .qd-col-unit { width: 26mm; }
.quotation-workspace .qw-document .qd-col-amount { width: 30mm; }
.quotation-workspace .qw-document .qd-items th,
.quotation-workspace .qw-document .qd-items td { border: 1px solid var(--qd-line); padding: 7px 8px; vertical-align: top; }
.quotation-workspace .qw-document .qd-items th { padding: 7px 4px; background: var(--qd-fill); font-size: 12px; font-weight: 600; text-align: center; vertical-align: middle; }
.quotation-workspace .qw-document .qd-items .qd-item-index { padding-inline: 3px; text-align: center; }
.quotation-workspace .qw-document .qd-items .qw-number { text-align: right; white-space: nowrap; padding-inline: 6px; }
.quotation-workspace .qw-document .qd-items td:nth-child(3) { text-align: center; }
.quotation-workspace .qw-document .qd-item-description { word-break: keep-all; overflow-wrap: anywhere; }
.quotation-workspace .qw-document .qd-item-description > strong,
.quotation-workspace .qw-document .qd-item-copy > strong { display: block; font-size: 12px; font-weight: 700; }
.quotation-workspace .qw-document .qd-item-description > small,
.quotation-workspace .qw-document .qd-item-copy > small { display: block; margin-top: 4px; font-size: 11px; line-height: 1.5; color: var(--qd-muted); }
.quotation-workspace .qw-document .qd-item-content { display: table; table-layout: fixed; width: 100%; }
.quotation-workspace .qw-document .qd-item-thumbnail { display: table-cell; width: 21mm; padding-right: 3mm; vertical-align: top; }
.quotation-workspace .qw-document .qd-item-thumbnail img { display: block; width: 18mm; height: 18mm; object-fit: contain; }
.quotation-workspace .qw-document .qd-item-copy { display: table-cell; vertical-align: top; }
.quotation-workspace .qw-document .qd-pc-specs { margin-top: 7px; font-size: 11px; line-height: 1.5; }
.quotation-workspace .qw-document .qd-pc-specs > div { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 8px; padding: 1px 0; }
.quotation-workspace .qw-document .qd-pc-specs dt { font-size: 11px; color: var(--qd-muted); }
.quotation-workspace .qw-document .qd-pc-specs dd { font-size: 11px; color: var(--qd-ink); overflow-wrap: anywhere; }
.quotation-workspace .qw-document .qd-amounts { margin: 0 0 15px; border-top: 0; break-inside: avoid; }
.quotation-workspace .qw-document .qd-amounts th { border-top: 0; font-size: 11px; font-weight: 500; }
.quotation-workspace .qw-document .qd-amounts th small { font-size: 10px; font-weight: 400; }
.quotation-workspace .qw-document .qd-amounts td { text-align: right; padding: 8px 10px; font-weight: 600; }
.quotation-workspace .qw-document .qd-amounts .qd-final-amount { font-size: 16px; font-weight: 700; }
.quotation-workspace .qw-document .qd-terms { margin-top: 15px; }
.quotation-workspace .qw-document .qd-terms-label { width: 25mm; }
.quotation-workspace .qw-document .qd-terms th { font-size: 11px; }
.quotation-workspace .qw-document .qd-notes { font-size: 11px; line-height: 1.65; }
.quotation-workspace .qw-document .qd-notes p + p { margin-top: 5px; }
.quotation-workspace .qw-document .qd-contact { margin-top: 10px; padding: 7px 0; border-top: 1px solid var(--qd-line); border-bottom: 1px solid var(--qd-line); break-inside: avoid; }
.quotation-workspace .qw-document .qd-contact h3 { margin-bottom: 4px; font-size: 11px; font-weight: 600; }
.quotation-workspace .qw-document .qd-contact-details { display: flex; flex-wrap: wrap; gap: 4px 18px; }
.quotation-workspace .qw-document .qd-contact-details > div { display: flex; gap: 7px; font-size: 11px; min-width: 0; }
.quotation-workspace .qw-document .qd-contact-details dd { overflow-wrap: anywhere; }
.quotation-workspace .qw-document .qd-signoff { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: baseline; gap: 10px 20px; padding-top: 15px; font-size: 12px; break-inside: avoid; }
.quotation-workspace .qw-document .qd-signoff strong { font-size: 14px; }
.quotation-workspace .qw-document .qd-seal-label { margin-left: 12px; }

/* ICT: 수신 정보와 공급자 등록표를 나란히 놓은 표준 기업 견적서. */
.quotation-workspace .qw-document .qd-ict-header { border-bottom: 3px double var(--qd-accent); }
.quotation-workspace .qw-document .qd-ict-header .qd-letterhead { text-align: right; font-size: 11px; }
.quotation-workspace .qw-document .qd-ict-parties .qd-recipient-name { padding: 7px 0 8px; border-bottom: 1px solid var(--qd-line); }

/* MOON: 공급자 정보를 상단에 모으고 수신·견적 내용이 이어지는 서신형 양식. */
.quotation-workspace .qw-document[data-company="MOON"] { --qd-accent: #3e4b43; --qd-line: #8b948d; --qd-fill: #f2f4f2; }
.quotation-workspace .qw-document .qd-moon-header { border-bottom: 2px solid var(--qd-accent); padding-bottom: 12px; margin-bottom: 12px; }
.quotation-workspace .qw-document .qd-moon-header .qd-letterhead { margin-bottom: 13px; font-size: 14px; }
.quotation-workspace .qw-document .qd-moon-header .qd-heading { font-family: 'Batang', 'Noto Serif CJK KR', serif; font-size: 32px; }
.quotation-workspace .qw-document .qd-header-date { margin-top: 10px; text-align: right; font-size: 11px; }
.quotation-workspace .qw-document .qd-header-date span { margin-left: 13px; }
.quotation-workspace .qw-document .qd-moon-label { width: 25mm; }
.quotation-workspace .qw-document .qd-moon-recipient { margin: 14px 0 11px; }
.quotation-workspace .qw-document .qd-recipient-prefix { margin-right: 18px; font-size: 12px; font-weight: 400; }
.quotation-workspace .qw-document .qd-moon-recipient .qd-meta { margin-top: 8px; }
.quotation-workspace .qw-document[data-company="MOON"] .qd-items { border-top: 2px solid var(--qd-accent); }
.quotation-workspace .qw-document[data-company="MOON"] .qd-signoff { justify-content: center; padding-top: 21px; }

/* TODAY: 수신·공급자 정보를 위아래 등록표로 정리한 장부형 양식. */
.quotation-workspace .qw-document[data-company="TODAY"] { --qd-accent: #373737; --qd-line: #838383; --qd-fill: #f3f3f3; }
.quotation-workspace .qw-document .qd-today-header { margin-bottom: 10px; padding-top: 8px; padding-bottom: 8px; border-block: 2px solid var(--qd-accent); }
.quotation-workspace .qw-document .qd-today-header .qd-letterhead { margin: 6px 0 0; text-align: center; font-size: 13px; font-weight: 500; }
.quotation-workspace .qw-document .qd-today-label { width: 25mm; }
.quotation-workspace .qw-document .qd-today-recipient { margin-bottom: 8px; }
.quotation-workspace .qw-document .qd-today-recipient .qd-recipient-name { font-size: 15px; }
.quotation-workspace .qw-document[data-company="TODAY"] .qd-supplier .qd-label-col { width: 25mm; }
.quotation-workspace .qw-document[data-company="TODAY"] .qd-contract-total { margin-bottom: 10px; border-width: 1px; }
.quotation-workspace .qw-document[data-company="TODAY"] .qd-contract-total strong { font-size: 20px; }
.quotation-workspace .qw-document[data-company="TODAY"] .qd-signoff { border-top: 1px solid var(--qd-line); margin-top: 10px; padding-top: 10px; }
.quotation-workspace .qw-document[data-company="TODAY"] .qd-today-header { padding-block: 6px; margin-bottom: 8px; }
.quotation-workspace .qw-document[data-company="TODAY"] .qd-today-recipient th,
.quotation-workspace .qw-document[data-company="TODAY"] .qd-today-recipient td,
.quotation-workspace .qw-document[data-company="TODAY"] .qd-supplier th,
.quotation-workspace .qw-document[data-company="TODAY"] .qd-supplier td,
.quotation-workspace .qw-document[data-company="TODAY"] .qd-terms th,
.quotation-workspace .qw-document[data-company="TODAY"] .qd-terms td { padding-block: 4px; }
.quotation-workspace .qw-document[data-company="TODAY"] .qd-statement { margin-block: 10px 8px; }
.quotation-workspace .qw-document[data-company="TODAY"] .qd-contact { margin-top: 8px; padding-block: 5px; }
.quotation-workspace .qw-document[data-company="TODAY"] .qd-signoff.qd-with-seal { margin-top: 4px; }

/* 화면에서도 문서의 표·사양을 좁은 카드로 재배열하지 않는다. */
.quotation-workspace .qw-document .qd-seal-placement {
    --qd-seal-above: max(0mm, calc((var(--qd-seal-size, 18mm) - 18mm) / 2 - var(--qd-seal-y, 0mm)));
    --qd-seal-below: max(0mm, calc((var(--qd-seal-size, 18mm) - 18mm) / 2 + var(--qd-seal-y, 0mm)));
    display: flow-root; break-inside: avoid;
    padding-top: var(--qd-seal-above); margin-top: calc(0mm - var(--qd-seal-above));
    padding-bottom: var(--qd-seal-below); margin-bottom: calc(0mm - var(--qd-seal-below));
}
/* 페이지를 넘길 때도 이동한 도장 전체를 함께 배치한다. 일반 흐름의 기준점은 유지한다. */
.quotation-workspace .qw-document .qd-signoff.qd-with-seal { padding-top: 2px; align-items: center; }
.quotation-workspace .qw-document .qd-with-seal .qd-seal-label { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 18mm; height: 18mm; flex-shrink: 0; vertical-align: middle; margin-left: 4px; }
.quotation-workspace .qw-document .qd-seal-image { position: absolute; left: 50%; top: 50%; display: block; width: var(--qd-seal-size, 18mm); height: var(--qd-seal-size, 18mm); max-width: none; object-fit: contain; transform: translate(-50%, -50%) translate(var(--qd-seal-x, 0mm), var(--qd-seal-y, 0mm)); }
.quotation-workspace .qw-document .qd-seal-image[hidden],
.quotation-workspace .qw-document .qd-seal-placeholder[hidden] { display: none; }
.quotation-workspace .qf-document-scroll { min-width: 0; overflow: auto; padding: 1px; }
@media screen and (max-width: 850px) {
    .quotation-workspace .qf-document-scroll .qw-paper { max-width: none; }
}
@page quotation-page { size: A4 portrait; margin: 10mm; }
@media print {
    .quotation-workspace .qw-paper { page: quotation-page; width: auto; max-width: none; min-height: 0; margin: 0; padding: 0; box-shadow: none; }
    .quotation-workspace .qw-document { width: 100%; min-height: 0; padding: 0; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
    .quotation-workspace .qw-document .qd-items thead { display: table-header-group; }
    .quotation-workspace .qw-document .qd-items tr,
    .quotation-workspace .qw-document .qd-form-table tr,
    .quotation-workspace .qw-document .qd-document-header,
    .quotation-workspace .qw-document .qd-parties,
    .quotation-workspace .qw-document .qd-contract-total,
    .quotation-workspace .qw-document .qd-moon-recipient { break-inside: avoid; }
    .quotation-workspace .qw-document .qd-terms tr { break-inside: avoid; }
}
