.layout-print-layer {
    position: fixed;
    inset: 0;
    z-index: 40;
    background: rgba(15, 23, 42, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.layout-print-modal {
    width: min(1200px, 96vw);
    max-height: 92vh;
    background: #fff;
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    font-family: "Microsoft YaHei", "PingFang SC", "Segoe UI", Arial, sans-serif;
    font-size: 14px;
    color: #1e293b;
}

.layout-print-head,
.layout-print-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 18px;
    border-bottom: 1px solid #e4e9f1;
}

.layout-print-foot {
    border-bottom: 0;
    border-top: 1px solid #e4e9f1;
    justify-content: flex-end;
}

.layout-print-title {
    font-size: 16px;
    font-weight: 700;
}

.layout-print-stage {
    overflow: auto;
    padding: 16px 18px 24px;
    background: #eef1f5;
}

.layout-print-document {
    --print-margin: 10mm;
    margin: 0 auto;
}

.layout-print-page {
    display: flex;
    flex-direction: column;
    background: #fff;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
    padding: var(--print-margin);
    margin: 0 auto 16px;
    font-size: 8.5pt;
    line-height: 1.3;
    color: #111;
}

.layout-print-page > main {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.paper-a4.orientation-landscape .layout-print-page { width: 297mm; min-height: 210mm; }
.paper-a4.orientation-portrait .layout-print-page { width: 210mm; min-height: 297mm; }
.paper-a3.orientation-landscape .layout-print-page { width: 420mm; min-height: 297mm; }
.paper-a3.orientation-portrait .layout-print-page { width: 297mm; min-height: 420mm; }

.layout-print-page-header {
    min-height: 10mm;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 0 0 3mm;
    border: 0;
    color: #111;
}

.layout-print-page-header strong {
    color: #111;
    font-size: 13pt;
    font-weight: 800;
    letter-spacing: 0.01em;
}

.layout-print-page-header time {
    flex: 0 0 auto;
    color: #374151;
    font-size: 8pt;
    white-space: nowrap;
}

.layout-print-page-footer {
    min-height: 10mm;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 1mm;
    margin-top: auto;
    padding-top: 4mm;
    border: 0;
    color: #667085;
    font-size: 7.5pt;
    font-weight: 400;
    text-align: right;
}

.layout-print-page-footer span {
    display: block;
}

.print-section { margin-top: 3mm; }
.print-section:first-child { margin-top: 0; }
.print-parameter-section { margin-top: 3mm; }

.print-data-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    table-layout: auto;
    font-size: 8.2pt;
    margin: 0;
    border: 1px solid #e8ebf0;
}

.print-data-table th,
.print-data-table td {
    border: 0;
    border-right: 1px solid #e8ebf0;
    border-bottom: 1px solid #e8ebf0;
    padding: 1.7mm 1.4mm;
    vertical-align: middle;
    background-clip: padding-box;
}

.print-data-table tr > *:last-child {
    border-right: 0;
}

.print-data-table > *:last-child > tr:last-child > * {
    border-bottom: 0;
}

.print-data-table thead th {
    background: #f7f8fa;
    color: #111;
    font-weight: 700;
    text-align: center;
}

.print-data-table tbody th {
    background: #fff;
    color: #111;
    text-align: center;
    font-weight: 600;
}

.print-size-table tbody td,
.print-size-table tbody th {
    text-align: center;
}

.print-data-table .num { text-align: center; white-space: nowrap; }
.print-head-unit { display: block; font-weight: 400; color: #64748b; line-height: 1.12; }
.print-qty-error { color: #dc2626; margin-left: 2px; }
.print-qty-error-over { color: #dc2626; margin-left: 2px; }
.print-qty-error-under { color: #16a34a; margin-left: 2px; }
.print-scheme-qty { color: #dc2626; }
.print-scheme-cell i { font-style: italic; }
.print-scheme-cell {
    color: #111;
    text-align: left !important;
    white-space: normal;
    overflow-wrap: break-word;
    font-variant-numeric: tabular-nums;
}

.print-main-table { font-size: 7.2pt; }
.print-main-table th,
.print-main-table td { padding: 1.35mm 1.05mm; }
.print-main-table thead th { vertical-align: middle; line-height: 1.12; }
.print-main-table tbody th:first-child { text-align: center; }
.print-main-table .print-head-line,
.print-main-table .print-head-unit { display: block; white-space: nowrap; }

.print-main-table.scheme-mode-single .scheme-total,
.print-main-table.scheme-mode-single .scheme-separator,
.print-main-table.scheme-mode-single .scheme-ratios { display: inline; white-space: nowrap; }
.print-main-table.scheme-mode-double .scheme-total,
.print-main-table.scheme-mode-double .scheme-ratios { display: block; white-space: nowrap; }
.print-main-table.scheme-mode-double .scheme-separator { display: none; }
.print-main-table.scheme-mode-double .scheme-total { font-weight: 700; }

.print-detail-group-row > *,
.print-detail-group-row.group-start > *,
.print-total-row > *,
.print-total-row.total-start > * {
    border-right: 1px solid #e8ebf0;
    border-bottom: 1px solid #e8ebf0;
    border-top: 0;
    border-left: 0;
}
.print-total-row > * { background: #f7f8fa !important; font-weight: 400; }
.print-total-row > th,
.print-total-row > .num { font-weight: 600; }

.print-parameter-strip {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    margin: 0;
    padding: 0;
    background: #f7f8fa;
    border: 0;
    white-space: nowrap;
}

.print-parameter-strip div {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.5mm;
    min-width: 0;
    padding: 1.45mm 1.1mm;
    border: 0;
    border-right: 0.18mm solid #e0e4ea;
}

.print-parameter-strip div:last-child { border-right: 0; }
.print-parameter-strip dt {
    color: #667085;
    font-size: 7.5pt;
    font-weight: 400;
    white-space: nowrap;
}
.print-parameter-strip dd {
    margin: 0;
    color: #111;
    font-size: 8pt;
    font-weight: 600;
    white-space: nowrap;
}

@media print {
    /*
     * 主路径：printLayoutDocument 走 iframe，不依赖本段。
     * 兜底：弹层打开时直接 Ctrl+P —— 只出单据，且禁止 absolute+@page margin 裁左侧。
     */
    body.layout-print-printing .layout-print-head,
    body.layout-print-printing .layout-print-foot,
    body:has(.layout-print-layer[data-print-open="true"]) .layout-print-head,
    body:has(.layout-print-layer[data-print-open="true"]) .layout-print-foot {
        display: none !important;
    }

    body.layout-print-printing .layout-print-layer,
    body.layout-print-printing .layout-print-modal,
    body.layout-print-printing .layout-print-stage,
    body:has(.layout-print-layer[data-print-open="true"]) .layout-print-layer,
    body:has(.layout-print-layer[data-print-open="true"]) .layout-print-modal,
    body:has(.layout-print-layer[data-print-open="true"]) .layout-print-stage {
        position: static !important;
        inset: auto !important;
        display: block !important;
        background: #fff !important;
        box-shadow: none !important;
        max-height: none !important;
        overflow: visible !important;
        padding: 0 !important;
        margin: 0 !important;
        width: 100% !important;
        border-radius: 0 !important;
    }

    body.layout-print-printing .layout-print-document,
    body:has(.layout-print-layer[data-print-open="true"]) .layout-print-document {
        position: static !important;
        left: auto !important;
        top: auto !important;
        margin: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
    }

    body.layout-print-printing .layout-print-page,
    body:has(.layout-print-layer[data-print-open="true"]) .layout-print-page {
        box-shadow: none !important;
        width: 100% !important;
        max-width: 100% !important;
        min-height: 0 !important;
        height: auto !important;
        padding: 0 !important;
        margin: 0 !important;
        page-break-after: always;
        break-after: page;
        overflow: visible !important;
    }

    body.layout-print-printing .layout-print-page:last-child,
    body:has(.layout-print-layer[data-print-open="true"]) .layout-print-page:last-child {
        page-break-after: auto;
        break-after: auto;
    }
}

