/* ─── Print — A4 portrait, clean B&W laser layout ───────────────────────── */

@page {
    size: A4 portrait;
    /* margin:0 removes the browser-injected header/footer chrome (page URL,
       date, "1/1" page numbers) which can only live inside the @page margin box.
       The safe laser/inkjet printable margins are re-applied as per-sheet padding
       below so each page still prints with generous, even margins. */
    margin: 0;
}

@media print {

    .no-print,
    nav,
    aside,
    header.app-header,
    .front-header,
    .admin-topbar,
    .admin-sidebar,
    .admin-workflow,
    dialog,
    .app-dialog,
    .day-print-dialog,
    .dp-preprint-dialog,
    .no-print-editing input,
    .no-print-editing button,
    #break-alert,
    #toast,
    #loading-overlay,
    #import-draft-banner,
    #publish-sync-banner,
    #admin-security-banner,
    #intel-strip,
    #optimizer-hint,
    #dept-manager-panel,
    .roster-toolbar,
    #btn-roster-mobile-actions,
    #roster-mobile-actions,
    .roster-mobile-actions,
    .roster-workspace-header,
    [data-admin-panel]:not([data-admin-panel="roster"]),
    .admin-shell > .admin-body > main > section:not([data-admin-panel="roster"]) {
        display: none !important;
    }

    /* Beat later/mobile ID rules that force Day Print workspace visible when
     * print paper width is ≤767px (Recovery/Tasks editor was printing as a strip). */
    body.printing-day-plan #day-print-dialog,
    body.printing-day-plan #day-print-dialog.day-print-dialog--fullscreen,
    body.printing-day-plan #day-print-dialog.day-print-dialog--mobile,
    body.printing-day-plan #day-print-dialog.day-print-workspace,
    body.printing-day-plan #day-print-topbar-tools,
    body.printing-day-plan #week-print-dialog,
    #day-print-dialog.no-print,
    #day-print-dialog.day-print-dialog--fullscreen.no-print {
        display: none !important;
        visibility: hidden !important;
        height: 0 !important;
        max-height: 0 !important;
        overflow: hidden !important;
    }

    /* Density chrome locks overflow/height — clear so #print-area can paginate. */
    body.printing-day-plan,
    body.printing-day-plan.admin-section-day-print,
    body.printing-day-plan.admin-theme.admin-section-day-print,
    body.printing-day-plan .admin-shell,
    body.printing-day-plan .admin-body,
    body.printing-day-plan .admin-main,
    body.printing-day-plan .admin-main > [data-admin-panel],
    body.printing-day-plan .roster-main-surface {
        overflow: visible !important;
        height: auto !important;
        max-height: none !important;
        min-height: 0 !important;
    }

    body.printing-day-plan.admin-theme .admin-main,
    body.printing-day-plan.admin-theme.admin-section-day-print .admin-main {
        padding: 0 !important;
        display: block !important;
    }

    body.printing-day-plan .day-print-preview,
    body.printing-day-plan .dp-a4-frame,
    body.printing-day-plan .dp-a4-page,
    body.printing-day-plan .day-print-preview-col,
    body.printing-day-plan .day-print-body,
    body.printing-day-plan .day-print-editor {
        overflow: visible !important;
        max-height: none !important;
        height: auto !important;
        display: none !important;
    }

    body.printing-day-plan #print-area,
    body.printing-day-plan #print-area .print-sheet {
        display: block !important;
        visibility: visible !important;
        width: 100% !important;
        max-width: none !important;
        overflow: visible !important;
        zoom: 1 !important;
        transform: none !important;
    }

    .print-only { display: block !important; }
    #roster-board, .kanban-board { display: none !important; }

    section[data-admin-panel="roster"],
    section[data-admin-panel="roster"].hidden {
        display: block !important;
        visibility: visible !important;
    }

    #print-area {
        display: block !important;
        box-sizing: border-box !important;
        width: 100% !important;
        margin: 0 auto !important;
        padding: 0 !important;
        background: #fff !important;
        visibility: visible !important;
    }

    body.printing-day-plan section[data-admin-panel="roster"],
    body.printing-day-plan section[data-admin-panel="roster"].hidden {
        display: block !important;
        visibility: visible !important;
    }

    body.printing-day-plan #roster-board {
        display: none !important;
    }

    /* Day/week print: only #print-area content — hide all roster admin chrome. */
    body.printing-day-plan section[data-admin-panel="roster"] > *:not(.roster-main-surface) {
        display: none !important;
    }

    body.printing-day-plan .roster-main-surface > *:not(#print-area) {
        display: none !important;
    }

    /* Each sheet carries its own safe printable margin as padding, so with
       @page margin:0 every page still prints with even 11mm/10mm gutters and
       no stray browser header/footer. box-sizing keeps the sheet inside A4. */
    .print-sheet {
        width: 100%;
        box-sizing: border-box;
        padding: 11mm 10mm;
    }

    .print-sheet.day-sheet {
        page-break-inside: avoid;
    }

    /* Subsequent sheets start a fresh page; their own padding gives the margin. */
    .print-sheet + .print-sheet {
        break-before: page;
        page-break-before: always;
    }

    /* Guard against a stray trailing blank page from a hair of overflow. */
    .print-sheet:last-child {
        page-break-after: avoid;
    }

    html,
    body,
    .admin-shell,
    .admin-body,
    .admin-main,
    .front-shell,
    .front-main,
    section[data-admin-panel="roster"] {
        min-height: 0 !important;
        height: auto !important;
        margin: 0 !important;
        padding: 0 !important;
        background: #fff !important;
        background-image: none !important;
        box-shadow: none !important;
    }

    * {
        box-shadow: none !important;
        text-shadow: none !important;
        filter: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        animation: none !important;
        transition: none !important;
    }

    body {
        color: #111 !important;
        font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif !important;
        font-size: 9pt;
        line-height: 1.3;
    }

    /* ── Header ─────────────────────────────────────────────────────────── */
    .print-sheet-header {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 12pt;
        margin: 0 0 10pt;
        padding: 0 0 8pt;
        border-bottom: 1pt solid #000;
    }

    .print-sheet-header-main {
        flex: 1;
        min-width: 0;
    }

    .print-sheet-printed {
        flex-shrink: 0;
        font-size: 7pt;
        font-weight: 500;
        color: #666 !important;
        text-align: right;
        white-space: nowrap;
        padding-top: 2pt;
    }

    .print-sheet--week .print-sheet-header {
        margin-bottom: 7pt;
        padding-bottom: 5pt;
    }

    .print-sheet-title {
        margin: 0;
        font-size: 14pt;
        font-weight: 700;
        letter-spacing: -0.01em;
        line-height: 1.2;
        color: #000 !important;
    }

    .print-sheet--week .print-sheet-title { font-size: 12.5pt; }

    .print-sheet-sub {
        margin: 3pt 0 0;
        font-size: 8.5pt;
        font-weight: 500;
        color: #444 !important;
    }

    .print-sheet--week .print-sheet-sub {
        font-size: 8pt;
    }

    /* ── Single-day block ───────────────────────────────────────────────── */
    .print-day-section { margin-top: 10pt; page-break-inside: avoid; }
    .print-day-section:first-of-type { margin-top: 0; }

    .print-day-title {
        margin: 0 0 0;
        padding: 0 0 4pt;
        font-size: 10pt;
        font-weight: 700;
        color: #000 !important;
        background: none !important;
        border: none;
        border-bottom: 0.75pt solid #bbb;
        text-transform: none;
        letter-spacing: 0;
    }

    .print-day-date {
        font-weight: 500;
        font-size: 9pt;
        color: #555 !important;
    }

    /* ── Table ────────────────────────────────────────────────────────── */
    .print-week-table,
    .print-only table {
        width: 100%;
        border-collapse: collapse;
        table-layout: fixed;
        margin: 0 0 8pt;
        font-size: 9pt;
        border: 1pt solid #000;
    }

    .print-week-table--week { margin-bottom: 0; }

    .print-week-table th,
    .print-week-table td,
    .print-only table th,
    .print-only table td {
        border: 0.5pt solid #888 !important;
        padding: 4pt 5pt !important;
        vertical-align: middle;
        text-align: center;
        color: #111 !important;
        line-height: 1.25;
    }

    /* Columns — start times only, so breaks need less width */
    .print-col-name {
        width: 26%;
        text-align: left !important;
    }

    .print-col-shift {
        width: 14%;
        font-variant-numeric: tabular-nums;
    }

    .print-col-break {
        width: 10%;
        font-variant-numeric: tabular-nums;
    }

    .print-week-table--dept .print-col-name { width: 22%; }
    .print-week-table--dept .print-col-dept { width: 8%; }
    .print-week-table--dept .print-col-shift { width: 12%; }
    .print-week-table--dept .print-col-break { width: 9%; }

    .print-week-table thead th,
    .print-only table thead th {
        background: #ebebeb !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
        font-size: 7.5pt;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.06em;
        color: #222 !important;
        padding: 5pt 4pt !important;
        border-bottom: 1pt solid #000 !important;
    }

    .print-week-table thead .print-col-break {
        font-size: 7.5pt;
        letter-spacing: 0.04em;
    }

    .print-week-table tbody tr:nth-child(even):not(.print-day-divider) td {
        background: #f7f7f7 !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    .print-week-table tbody .print-col-name {
        font-weight: 600;
        font-size: 9.5pt;
        text-align: left !important;
        padding-left: 6pt !important;
    }

    .print-week-table--week tbody .print-col-name {
        font-size: 9pt;
        padding: 3pt 4pt 3pt 5pt !important;
    }

    .print-week-table tbody .print-col-shift {
        font-size: 9pt;
        font-weight: 500;
        color: #222 !important;
    }

    .print-week-table--week tbody .print-col-shift {
        font-size: 8.5pt;
        padding: 3pt 3pt !important;
    }

    .print-week-table tbody .print-col-break {
        font-size: 10pt;
        font-weight: 700;
        color: #000 !important;
        letter-spacing: 0.02em;
    }

    .print-week-table--week tbody .print-col-break {
        font-size: 10pt;
        font-weight: 700;
        padding: 3pt 2pt !important;
    }

    .print-week-table tbody .print-col-dept {
        font-size: 8pt;
        font-weight: 600;
        letter-spacing: 0.03em;
    }

    /* Keep each day's header attached to its rows when paginating */
    .print-day-group {
        break-inside: avoid;
        page-break-inside: avoid;
    }

    .print-day-divider {
        break-after: avoid;
        page-break-after: avoid;
    }

    .print-day-divider + tr {
        break-before: avoid;
        page-break-before: avoid;
    }

    /* Week: day band rows */
    .print-day-divider td {
        background: #f0f0f0 !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
        text-align: left !important;
        font-size: 8.5pt;
        font-weight: 700;
        color: #000 !important;
        text-transform: none;
        letter-spacing: 0.02em;
        padding: 4pt 6pt !important;
        border-top: 1pt solid #000 !important;
        border-bottom: 0.5pt solid #999 !important;
    }

    .print-day-divider:first-child td {
        border-top: none !important;
    }

    .print-day-divider-date {
        font-weight: 500;
        color: #666 !important;
        font-size: 8pt;
    }

    .print-cover-note {
        display: inline;
        font-size: 7pt;
        font-weight: 500;
        font-style: italic;
        color: #555 !important;
        margin-left: 0.35em;
        white-space: nowrap;
    }

    .print-sheet--week {
        page-break-inside: avoid;
    }

    .print-week-table--week tr {
        page-break-inside: avoid;
    }

    .print-day-section.page-break-before { page-break-before: always; }

    /* ── Single-day "day sheet" template (compact — fit one A4 page) ───── */
    .day-sheet {
        font-size: 7.5pt;
        line-height: 1.25;
    }

    .day-sheet--briscoes {
        font-size: 7pt;
    }

    /* Each brand's day sheet prints on its own A4 page, keeping the same safe
       top margin (since @page margin is 0, the margin lives in the sheet padding). */
    .print-sheet.day-sheet + .print-sheet.day-sheet {
        page-break-before: always;
        padding-top: 11mm;
    }

    .ds-topline {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-bottom: 6pt;
        padding-bottom: 4pt;
        border-bottom: 1.5pt solid #000;
    }

    .ds-brand {
        font-size: 13pt;
        font-weight: 800;
        letter-spacing: -0.01em;
    }

    .day-sheet--briscoes .ds-brand { font-size: 12pt; }

    .ds-date {
        font-size: 9pt;
        font-weight: 600;
        border: 0.75pt solid #000;
        padding: 1.5pt 6pt;
        border-radius: 2pt;
    }

    .ds-grid-top,
    .ds-grid-mid {
        display: flex;
        gap: 5pt;
        margin-bottom: 5pt;
        align-items: stretch;
    }

    .ds-grid-top > .ds-box,
    .ds-grid-mid > .ds-box,
    .ds-grid-mid > .ds-col { flex: 1; min-width: 0; }

    .ds-col { display: flex; flex-direction: column; gap: 5pt; }
    .ds-col > .ds-box { flex: 1; }
    .ds-col > .ds-box.ds-recovery-box { flex: 1.55; min-height: 0; }
    .ds-col > .ds-box.ds-phones { flex: 0 0 auto; }
    .ds-phones .ds-free-space { display: none; min-height: 0; }

    .ds-box {
        border: 0.75pt solid #000;
        border-radius: 2.5pt;
        padding: 0 0 3pt;
        background: #fff !important;
        overflow: hidden;
    }

    .ds-box-title {
        font-weight: 700;
        font-size: 7.75pt;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        margin: 0 0 3pt;
        padding: 2.5pt 5pt;
        background: #ececec !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
        border-bottom: 0.5pt solid #bbb;
    }

    /* Box body padding (title bar already spans full width) */
    .ds-box > :not(.ds-box-title) { margin-left: 5pt; margin-right: 5pt; }
    .ds-box > table { width: calc(100% - 10pt); }
    /* Boxes without a title bar need a little top breathing room. */
    .ds-box > :first-child:not(.ds-box-title) { margin-top: 4pt; }

    .ds-recovery-name { text-decoration: underline; }

    .ds-line {
        border-bottom: 0.5pt solid #999;
        padding: 1.5pt 0 1pt;
        min-height: 8pt;
    }

    .ds-yesterday-label { font-weight: 600; }
    .ds-yesterday-val { font-weight: 700; }

    .ds-line.ds-small { font-size: 7pt; line-height: 1.25; }

    .ds-p { margin: 1.5pt 0; line-height: 1.3; }
    .ds-indent { padding-left: 8pt; }
    .ds-free-space { min-height: 22pt; }
    .ds-phones .ds-free-space { min-height: 14pt; }
    .day-sheet--briscoes .ds-free-space { min-height: 16pt; }

    .ds-kv, .ds-signup {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 4pt;
    }

    .ds-kv td, .ds-signup td {
        border: 0.5pt solid #888;
        padding: 2pt 3pt;
        font-size: 7pt;
        min-height: 9pt;
        height: 10pt;
    }

    .ds-kv-label { font-weight: 600; width: 42%; }

    .ds-break-table,
    .ds-counter-table,
    .ds-warden-table {
        width: 100%;
        border-collapse: collapse;
        border: 1pt solid #000;
    }

    .ds-break-table { margin-bottom: 3pt; }

    .ds-break-table th, .ds-break-table td,
    .ds-counter-table th, .ds-counter-table td,
    .ds-warden-table th, .ds-warden-table td {
        border: 0.5pt solid #888;
        padding: 2pt 3pt;
        text-align: center;
        font-size: 7pt;
    }

    .ds-break-table thead th,
    .ds-counter-table thead th,
    .ds-warden-table thead th {
        background: #ebebeb !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
        font-weight: 700;
        font-size: 6.75pt;
    }

    .ds-break-table .ds-name { text-align: left; font-weight: 600; }
    .ds-break-table .ds-shift { width: 16%; font-variant-numeric: tabular-nums; }
    .ds-break-table tbody td { font-weight: 700; font-variant-numeric: tabular-nums; }
    .ds-break-table tbody .ds-name, .ds-break-table tbody .ds-shift { font-weight: 600; }

    /* Zebra striping for easier row scanning on the floor. */
    .ds-break-table tbody tr:nth-child(even) td {
        background: #f5f5f5 !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    .ds-covering { font-size: 7pt; font-style: italic; font-weight: 500; color: #555 !important; }

    .ds-grid-bottom {
        display: flex;
        gap: 5pt;
        align-items: stretch;
    }

    .ds-grid-bottom--stacked {
        flex-direction: column;
        gap: 4pt;
    }

    .ds-grid-bottom--stacked > .ds-box { flex: none; width: 100%; }

    .ds-grid-bottom > .ds-box { flex: 1; min-width: 0; }
    .ds-grid-bottom--rebel > .ds-box:first-child { flex: 1.35; }

    .ds-ct-time { width: 32%; font-variant-numeric: tabular-nums; }
    .ds-ct-name { width: 22%; font-weight: 600; }
    .ds-ct-reliever { width: 46%; font-weight: 600; font-size: 6.75pt; text-align: left !important; }
    .ds-ct-caption { font-size: 6.5pt; color: #555 !important; margin-top: 2pt; text-align: right; }
    .ds-web-assignment { margin-bottom: 2pt; }
    .ds-phone-web { margin-top: 3pt; }
    .ds-phone-web-label { font-weight: 700; margin-right: 4pt; }
    .ds-wd-label { text-align: left !important; font-weight: 600; width: 28%; }
    .ds-wd-name { font-weight: 700; width: 22%; }
    .ds-wd-reliever { font-weight: 600; font-size: 6.75pt; text-align: left !important; width: 50%; }
    .ds-wd-row--apparel td { background: #fff8e6 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    .ds-wd-row--apparel .ds-wd-label { font-weight: 800; }

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

    .ds-web-table td {
        border: 0.5pt solid #888;
        padding: 2pt 3pt;
        font-size: 7pt;
        min-height: 9pt;
        vertical-align: middle;
    }

    .ds-web-label {
        font-weight: 700;
        width: 28%;
        text-align: left !important;
    }

    .ds-web-cell { font-weight: 600; }

    .ds-web-time { font-size: 7.5pt; font-weight: 500; color: #444 !important; }
}

@media screen {
    #print-area:empty { display: none; }
}
