/* ===== PRINT STYLESHEET - OneManVanFSM_2 ===== */
/* Professional document output for invoices, estimates, expenses */

@media print {

    /* -- Hide non-printable UI ---------------------------------------- */
    .app-sidebar,
    .app-header,
    .app-footer,
    .no-print,
    .btn,
    button,
    .form-control,
    .form-select,
    .input-group,
    .sidebar-toggle,
    .nav-tabs,
    .nav-link,
    .alert,
    .form-check,
    .spinner-border,
    #blazor-error-ui,
    .blazor-error-boundary,
    .modal,
    .dropdown-menu {
        display: none !important;
    }

    /* -- Page setup --------------------------------------------------- */
    @page {
        margin: 0.3cm 1.2cm;
        size: letter;
    }

    * {
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }

    /* -- Full-width content reset ------------------------------------- */
    body,
    .app-layout,
    .app-main,
    .app-content {
        width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
        display: block !important;
        background: #fff !important;
        color: #1a1a1a !important;
        font-family: 'Segoe UI', system-ui, -apple-system, sans-serif !important;
        font-size: 9pt !important;
        line-height: 1.35 !important;
    }

    /* -- Typography --------------------------------------------------- */
    h1, h2, h3, h4, h5, h6 {
        color: #1a1a1a !important;
        margin-top: 0;
    }

    p, span, td, th, div, li {
        color: #1a1a1a !important;
    }

    .text-muted {
        color: #555 !important;
    }

    a {
        color: #1a1a1a !important;
        text-decoration: none !important;
    }

    /* -- Reset dark theme --------------------------------------------- */
    .card,
    .card-body,
    .card-header,
    .table,
    .table th,
    .table td,
    .list-group-item {
        background: #fff !important;
        color: #1a1a1a !important;
    }

    /* -- Card / shadow cleanup ---------------------------------------- */
    .card {
        border: none !important;
        box-shadow: none !important;
        break-inside: avoid;
    }

    .shadow-sm,
    .shadow {
        box-shadow: none !important;
    }

    .card-body {
        padding: 0 !important;
    }

    .card-header {
        padding: 0 0 8pt 0 !important;
        border-bottom: none !important;
    }

    /* -- Grid layout - single column for print ------------------------ */
    .row {
        display: block !important;
    }

    .col-md-4,
    .col-md-8,
    .col-md-6,
    .col-sm-4,
    .col-sm-6,
    .col-sm-2 {
        width: 100% !important;
        max-width: 100% !important;
        flex: none !important;
    }

    /* -- Default table styles ----------------------------------------- */
    .table {
        --bs-table-bg: transparent !important;
        --bs-table-color: #1a1a1a !important;
        width: 100% !important;
        border-collapse: collapse !important;
        margin-bottom: 10pt !important;
    }

    .table-responsive {
        overflow: visible !important;
    }

    .table th {
        font-weight: 700 !important;
        font-size: 8.5pt !important;
        text-transform: uppercase !important;
        letter-spacing: 0.3pt !important;
        color: #333 !important;
        background: #f5f5f5 !important;
        border-bottom: 1.5pt solid #333 !important;
        padding: 5pt 8pt !important;
    }

    .table td {
        padding: 4pt 8pt !important;
        border-bottom: 0.5pt solid #e0e0e0 !important;
        font-size: 9.5pt !important;
        vertical-align: top !important;
    }

    .table-bordered th,
    .table-bordered td {
        border: 0.5pt solid #ccc !important;
    }

    tr {
        break-inside: avoid;
    }

    /* -- Badges - subtle print treatment ------------------------------ */
    .badge {
        border: 0.75pt solid #999 !important;
        color: #333 !important;
        background: #f0f0f0 !important;
        font-weight: 600 !important;
        font-size: 7.5pt !important;
        padding: 1pt 5pt !important;
        border-radius: 2pt !important;
    }

    /* -- Responsive columns - force visible --------------------------- */
    .d-none.d-md-table-cell,
    .d-none.d-lg-table-cell {
        display: table-cell !important;
    }


    /* =====================================================
       PROFESSIONAL PRINT DOCUMENT LAYOUT
       Navy accent (#1B2A4A) inspired by reference templates
       ===================================================== */

    /* -- Print document wrapper --------------------------------------- */
    .print-doc {
        display: block !important;
        font-family: 'Segoe UI', system-ui, -apple-system, sans-serif !important;
        min-height: calc(100vh - 0.6cm);
        position: relative;
        padding-bottom: 60pt; /* Reserve space for the fixed footer */
    }

    /* -- Header banner - navy bar with doc type + company ------------- */
    .print-doc-banner {
        display: flex !important;
        align-items: flex-start;
        justify-content: space-between;
        background: #1B2A4A !important;
        color: #fff !important;
        padding: 8pt 14pt !important;
        margin-bottom: 0;
    }

    .print-doc-banner-left {
        flex: 0 0 auto;
    }

    .print-doc-banner-left .print-doc-type {
        font-size: 16pt !important;
        font-weight: 800 !important;
        color: #fff !important;
        text-transform: uppercase;
        letter-spacing: 2pt;
        margin: 0 0 2pt 0;
    }

    .print-doc-banner-left .print-doc-number-line {
        font-size: 9pt !important;
        color: #b0c4de !important;
        margin: 0;
    }

    .print-doc-banner-left .print-doc-number-line strong {
        color: #fff !important;
    }

    .print-doc-banner-right {
        text-align: right;
        flex: 0 0 auto;
    }

    .print-doc-banner-right .print-company-name {
        font-size: 11pt !important;
        font-weight: 700 !important;
        color: #fff !important;
        margin: 0 0 1pt 0;
    }

    .print-doc-banner-right .print-company-detail {
        font-size: 7.5pt !important;
        color: #b0c4de !important;
        margin: 0;
        line-height: 1.35;
    }

    /* -- Sub-banner info bar (dates, status) -------------------------- */
    .print-doc-info-bar {
        display: flex !important;
        justify-content: flex-start;
        gap: 20pt;
        background: #f0f4f8 !important;
        padding: 4pt 14pt !important;
        border-bottom: 1pt solid #1B2A4A !important;
        margin-bottom: 8pt;
    }

    .print-doc-info-bar .print-info-item {
        display: inline-block;
    }

    .print-doc-info-bar .print-info-label {
        font-size: 7pt !important;
        font-weight: 700 !important;
        text-transform: uppercase;
        letter-spacing: 0.5pt;
        color: #1B2A4A !important;
        display: block;
        margin-bottom: 1pt;
    }

    .print-doc-info-bar .print-info-value {
        font-size: 8.5pt !important;
        font-weight: 600 !important;
        color: #1a1a1a !important;
    }

    /* -- Two-column address area (From / Bill To) --------------------- */
    .print-doc-addresses {
        display: flex !important;
        justify-content: space-between;
        margin-bottom: 8pt;
        padding: 0 4pt;
    }

    .print-addr-block {
        flex: 0 0 48%;
    }

    .print-addr-block .print-addr-label {
        font-size: 6.5pt !important;
        font-weight: 700 !important;
        text-transform: uppercase;
        letter-spacing: 0.6pt;
        color: #1B2A4A !important;
        border-bottom: 1pt solid #1B2A4A !important;
        padding-bottom: 2pt;
        margin-bottom: 3pt;
        display: block;
    }

    .print-addr-block .print-addr-name {
        font-size: 9.5pt !important;
        font-weight: 700 !important;
        color: #1a1a1a !important;
        margin: 0 0 1pt 0;
    }

    .print-addr-block .print-addr-line {
        font-size: 8pt !important;
        color: #444 !important;
        margin: 0;
        line-height: 1.35;
    }

    /* -- Line items table - navy header ------------------------------- */
    .print-doc-table {
        width: 100% !important;
        border-collapse: collapse !important;
        margin-bottom: 0;
    }

    .print-doc-table thead th {
        background: #1B2A4A !important;
        color: #fff !important;
        font-size: 7pt !important;
        font-weight: 700 !important;
        text-transform: uppercase;
        letter-spacing: 0.5pt;
        padding: 4pt 8pt !important;
        border: none !important;
    }

    .print-doc-table tbody td {
        padding: 3pt 8pt !important;
        font-size: 8.5pt !important;
        border-bottom: 0.5pt solid #e0e0e0 !important;
        color: #1a1a1a !important;
        vertical-align: top;
    }

    .print-doc-table tbody tr:nth-child(even) td {
        background: #f8f9fa !important;
    }

    .print-doc-table tbody tr:last-child td {
        border-bottom: 1.5pt solid #1B2A4A !important;
    }

    .print-doc-table .text-end {
        text-align: right !important;
    }

    .print-doc-table .text-center {
        text-align: center !important;
    }

    /* -- Section headers for Material + Labor grouping ---------------- */
    .print-section-divider td {
        background: #e8edf2 !important;
        padding: 3pt 8pt !important;
        font-size: 8pt !important;
        font-weight: 700 !important;
        text-transform: uppercase;
        letter-spacing: 0.5pt;
        color: #1B2A4A !important;
        border-bottom: 1pt solid #1B2A4A !important;
        border-top: 1pt solid #ccc !important;
    }

    /* -- Totals block - right-aligned --------------------------------- */
    .print-doc-totals {
        margin: 6pt 0 0 auto;
        width: 44%;
    }

    .print-doc-totals .print-total-row {
        display: flex !important;
        justify-content: space-between;
        padding: 2pt 8pt;
        font-size: 8.5pt !important;
    }

    .print-doc-totals .print-total-row .print-total-label {
        color: #555 !important;
    }

    .print-doc-totals .print-total-row .print-total-value {
        font-weight: 600 !important;
        color: #1a1a1a !important;
    }

    .print-doc-totals .print-total-row.print-total-subtotal {
        border-bottom: 0.5pt solid #ddd !important;
        padding-bottom: 5pt;
        margin-bottom: 3pt;
    }

    .print-doc-totals .print-total-row.print-grand-total {
        background: #1B2A4A !important;
        padding: 4pt 8pt !important;
        margin-top: 3pt;
    }

    .print-doc-totals .print-total-row.print-grand-total .print-total-label {
        font-weight: 700 !important;
        font-size: 9.5pt !important;
        color: #fff !important;
    }

    .print-doc-totals .print-total-row.print-grand-total .print-total-value {
        font-weight: 800 !important;
        font-size: 10pt !important;
        color: #fff !important;
    }

    .print-doc-totals .print-total-row.print-balance-due {
        margin-top: 3pt;
        padding-top: 3pt;
        border-top: 1pt solid #1B2A4A !important;
    }

    .print-doc-totals .print-total-row.print-balance-due .print-total-label {
        font-weight: 700 !important;
        font-size: 9pt !important;
        color: #c0392b !important;
    }

    .print-doc-totals .print-total-row.print-balance-due .print-total-value {
        font-weight: 800 !important;
        font-size: 9.5pt !important;
        color: #c0392b !important;
    }

    .print-doc-totals .print-total-row.print-balance-paid .print-total-label,
    .print-doc-totals .print-total-row.print-balance-paid .print-total-value {
        color: #27ae60 !important;
    }

    /* -- Terms & notes section ---------------------------------------- */
    .print-doc-terms {
        margin-top: 10pt;
        padding: 0 4pt;
        display: flex !important;
        gap: 12pt;
    }

    .print-doc-terms-block {
        flex: 1;
    }

    .print-doc-terms-block .print-terms-heading {
        font-size: 7pt !important;
        font-weight: 700 !important;
        text-transform: uppercase;
        letter-spacing: 0.5pt;
        color: #1B2A4A !important;
        border-bottom: 1pt solid #1B2A4A !important;
        padding-bottom: 2pt;
        margin-bottom: 3pt;
    }

    .print-doc-terms-block .print-terms-text {
        font-size: 7.5pt !important;
        color: #444 !important;
        line-height: 1.35;
        white-space: pre-wrap;
        margin: 0;
    }

    /* -- Payments table ----------------------------------------------- */
    .print-payments-block {
        margin-top: 8pt;
    }

    .print-payments-block .print-payments-heading {
        font-size: 7pt !important;
        font-weight: 700 !important;
        text-transform: uppercase;
        letter-spacing: 0.5pt;
        color: #1B2A4A !important;
        border-bottom: 1pt solid #1B2A4A !important;
        padding-bottom: 2pt;
        margin-bottom: 3pt;
    }

    /* -- Footer - company contact bar at bottom ----------------------- */
    .print-doc-footer {
        display: flex !important;
        justify-content: center;
        gap: 18pt;
        padding: 5pt 0;
        border-top: 1.5pt solid #1B2A4A !important;
        font-size: 7.5pt !important;
        color: #555 !important;
        position: fixed;
        bottom: 20pt;
        left: 1.2cm;
        right: 1.2cm;
        background: #fff !important;
    }

    .print-doc-footer .print-footer-item {
        display: inline-flex;
        align-items: center;
        gap: 4pt;
    }

    .print-doc-footer .print-footer-icon {
        font-size: 9pt !important;
        color: #1B2A4A !important;
    }

    /* -- Thank you / signoff ------------------------------------------ */
    .print-doc-thankyou {
        text-align: center;
        font-size: 9pt !important;
        font-style: italic;
        color: #666 !important;
        position: fixed;
        bottom: 4pt;
        left: 1.2cm;
        right: 1.2cm;
        background: #fff !important;
    }

    /* -- Deposit info callout ----------------------------------------- */
    .print-deposit-callout {
        border: 1pt solid #1B2A4A !important;
        background: #f0f4f8 !important;
        padding: 4pt 8pt !important;
        margin-top: 6pt;
        font-size: 8pt !important;
    }

    .print-deposit-callout .print-deposit-label {
        font-weight: 700 !important;
        color: #1B2A4A !important;
    }

    /* -- Page break controls ------------------------------------------ */
    .print-page-break {
        break-before: page;
    }

    h5, h6 {
        break-after: avoid;
    }

    .table {
        break-inside: auto;
    }

    /* -- Horizontal rules --------------------------------------------- */
    hr {
        border-color: #ddd !important;
        margin: 8pt 0 !important;
    }

    /* -- Material list 2-column layout -------------------------------- */
    .print-matlist-2col {
        display: flex !important;
        gap: 8pt;
        margin-bottom: 4pt;
    }

    .print-matlist-half {
        flex: 1 1 50%;
        min-width: 0;
    }

    .print-matlist-half th,
    .print-matlist-half td {
        font-size: 7pt !important;
        padding: 1.5pt 3pt !important;
    }

    .print-matlist-half th:first-child,
    .print-matlist-half td:first-child {
        max-width: 180pt;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    /* Material list footer/thankyou: static flow so notes appear above */
    .print-matlist-footer {
        position: static !important;
        margin-top: 12pt;
    }

    .print-matlist-thankyou {
        position: static !important;
        margin-top: 4pt;
    }

    /* -- Supply house mode - hide price columns ----------------------- */
    body.print-supply-house .print-price-col {
        display: none !important;
    }

    /* -- No-prices mode - hide cost/price columns and breakdown rows -- */
    body.print-no-prices .print-doc-table th:nth-child(4),
    body.print-no-prices .print-doc-table td:nth-child(4),
    body.print-no-prices .print-doc-table th:nth-child(5),
    body.print-no-prices .print-doc-table td:nth-child(5),
    body.print-no-prices .print-doc-totals .print-total-subtotal,
    body.print-no-prices .print-doc-totals .print-total-row:not(.print-grand-total):not(.print-balance-due):not(.print-balance-paid) {
        display: none !important;
    }

    /* -- Hide the screen-only detail content during print ------------- */
    .print-screen-only {
        display: none !important;
    }

    /* -- Compact asset / equipment info (inline rows) ----------------- */
    .print-asset-compact {
        margin: 4pt 0 2pt 0;
        font-size: 7.5pt !important;
        line-height: 1.3 !important;
    }

    .print-asset-compact .print-terms-heading {
        font-size: 7pt !important;
        margin-bottom: 2pt !important;
    }

    .print-asset-compact .print-asset-row {
        padding: 1pt 0;
        border-bottom: 0.5pt solid #ddd;
    }

    .print-asset-compact .print-asset-row:last-child {
        border-bottom: none;
    }

    .print-asset-compact .print-asset-label {
        font-weight: 600;
        color: #1B2A4A;
        display: inline;
    }

    .print-asset-compact .print-asset-detail {
        color: #555;
        display: inline;
    }

    /* =====================================================
       TEMPLATE VARIANT: CLASSIC
       Clean black & white, no colored banners, understated
       ===================================================== */

    .print-doc.print-template-classic .print-doc-banner {
        background: #fff !important;
        border-bottom: 2.5pt solid #333 !important;
        padding: 12pt 18pt !important;
    }

    .print-doc.print-template-classic .print-doc-banner-left .print-doc-type {
        color: #333 !important;
        font-size: 20pt !important;
        letter-spacing: 3pt;
    }

    .print-doc.print-template-classic .print-doc-banner-left .print-doc-number-line {
        color: #666 !important;
    }

    .print-doc.print-template-classic .print-doc-banner-left .print-doc-number-line strong {
        color: #333 !important;
    }

    .print-doc.print-template-classic .print-doc-banner-right .print-company-name {
        color: #1a1a1a !important;
        font-size: 13pt !important;
    }

    .print-doc.print-template-classic .print-doc-banner-right .print-company-detail {
        color: #555 !important;
    }

    .print-doc.print-template-classic .print-doc-info-bar {
        background: #fafafa !important;
        border-bottom: 1pt solid #ccc !important;
    }

    .print-doc.print-template-classic .print-doc-info-bar .print-info-label {
        color: #555 !important;
    }

    .print-doc.print-template-classic .print-addr-block .print-addr-label {
        color: #333 !important;
        border-bottom-color: #333 !important;
    }

    .print-doc.print-template-classic .print-doc-table thead th {
        background: #f5f5f5 !important;
        color: #333 !important;
        border-bottom: 1.5pt solid #333 !important;
    }

    .print-doc.print-template-classic .print-doc-table tbody tr:last-child td {
        border-bottom: 1.5pt solid #333 !important;
    }

    .print-doc.print-template-classic .print-section-divider td {
        background: #f0f0f0 !important;
        color: #333 !important;
        border-bottom-color: #333 !important;
        border-top-color: #ccc !important;
    }

    .print-doc.print-template-classic .print-doc-totals .print-total-row.print-grand-total {
        background: #333 !important;
    }

    .print-doc.print-template-classic .print-doc-totals .print-total-row.print-balance-due .print-total-label,
    .print-doc.print-template-classic .print-doc-totals .print-total-row.print-balance-due .print-total-value {
        color: #c0392b !important;
    }

    .print-doc.print-template-classic .print-doc-totals .print-total-row.print-balance-due {
        border-top-color: #333 !important;
    }

    .print-doc.print-template-classic .print-doc-terms-block .print-terms-heading {
        color: #333 !important;
        border-bottom-color: #333 !important;
    }

    .print-doc.print-template-classic .print-payments-block .print-payments-heading {
        color: #333 !important;
        border-bottom-color: #333 !important;
    }

    .print-doc.print-template-classic .print-doc-footer {
        border-top-color: #333 !important;
    }

    .print-doc.print-template-classic .print-doc-footer .print-footer-icon {
        color: #333 !important;
    }

    .print-doc.print-template-classic .print-deposit-callout {
        border-color: #333 !important;
        background: #fafafa !important;
    }

    .print-doc.print-template-classic .print-deposit-callout .print-deposit-label {
        color: #333 !important;
    }

    /* =====================================================
       TEMPLATE VARIANT: MODERN
       Teal accent (#0D7377), rounded feel, lighter palette
       ===================================================== */

    .print-doc.print-template-modern .print-doc-banner {
        background: linear-gradient(135deg, #0D7377 0%, #14919B 100%) !important;
        border-radius: 0 0 6pt 6pt;
    }

    .print-doc.print-template-modern .print-doc-info-bar {
        background: #e8f6f7 !important;
        border-bottom: 1.5pt solid #0D7377 !important;
    }

    .print-doc.print-template-modern .print-doc-info-bar .print-info-label {
        color: #0D7377 !important;
    }

    .print-doc.print-template-modern .print-addr-block .print-addr-label {
        color: #0D7377 !important;
        border-bottom-color: #0D7377 !important;
    }

    .print-doc.print-template-modern .print-doc-table thead th {
        background: #0D7377 !important;
        border-radius: 3pt;
    }

    .print-doc.print-template-modern .print-doc-table tbody tr:last-child td {
        border-bottom: 1.5pt solid #0D7377 !important;
    }

    .print-doc.print-template-modern .print-doc-table tbody tr:nth-child(even) td {
        background: #f0fafa !important;
    }

    .print-doc.print-template-modern .print-section-divider td {
        background: #e0f0f0 !important;
        color: #0D7377 !important;
        border-bottom-color: #0D7377 !important;
    }

    .print-doc.print-template-modern .print-doc-totals .print-total-row.print-grand-total {
        background: #0D7377 !important;
        border-radius: 3pt;
    }

    .print-doc.print-template-modern .print-doc-totals .print-total-row.print-balance-due {
        border-top-color: #0D7377 !important;
    }

    .print-doc.print-template-modern .print-doc-terms-block .print-terms-heading {
        color: #0D7377 !important;
        border-bottom-color: #0D7377 !important;
    }

    .print-doc.print-template-modern .print-payments-block .print-payments-heading {
        color: #0D7377 !important;
        border-bottom-color: #0D7377 !important;
    }

    .print-doc.print-template-modern .print-doc-footer {
        border-top: 2pt solid #0D7377 !important;
    }

    .print-doc.print-template-modern .print-doc-footer .print-footer-icon {
        color: #0D7377 !important;
    }

    .print-doc.print-template-modern .print-deposit-callout {
        border-color: #0D7377 !important;
        background: #e8f6f7 !important;
    }

    .print-doc.print-template-modern .print-deposit-callout .print-deposit-label {
        color: #0D7377 !important;
    }
}
