@media print {
    /* Global
  /* ------------------------------------------------------------------------ */

    :root {
        --color-ink: black;
        --color-canvas: white;
        --border-dark: 1px solid var(--color-ink);
        --border-light: 1px solid color-mix(in oklch, var(--color-ink), transparent 75%);
        --font-sans: "Adwaita Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Hiragino Sans GB", "Hiragino Sans", "Apple SD Gothic Neo", "Microsoft YaHei", "Meiryo", "Malgun Gothic";
    }

    @page {
        margin: 0.5in;
    }

    html {
        font-size: 10pt;
    }

    main {
        inline-size: unset;
        margin: 0;
        orphans: 3;
        padding: 0;
        widows: 2;
    }

    /* Browsers usually disable backgrounds on print, so this ensures icons
    (which use BG masks) will show up. */
    .icon,
    .knob,
    .switch {
        -webkit-print-color-adjust: exact;
        color-adjust: exact;
        print-color-adjust: exact;
    }

    .nav__menu,
    .nav__trigger,
    .header__actions {
        display: none;
    }

    .header {
        padding: 0;
    }

    /* Cards
  /* -------------------------------------------------------------------------- */

    .card {
        --card-color: var(--color-ink) !important;

        background: var(--color-canvas);
        border: var(--border-light);
        box-shadow: none;
        break-inside: avoid;
        color: var(--color-ink);
    }

    .card {
        .card__board {
            background: var(--color-canvas);
            border-block-end: var(--border-light);
            border-inline-end: var(--border-light);
            color: var(--color-ink);
        }
    }

    .card__title {
        font-weight: bold;
    }

    /* Events
  /* ------------------------------------------------------------------------ */

    .events__columns {
        border-inline: none;
    }

    .events__column-header {
        background: none;
        margin: 0;
        padding-block: 1ch;
    }

    .events__time-block {
        padding: 0 1ch;

        .events__column:first-child & {
            padding-inline-start: 0;
        }

        .events__column:last-child & {
            padding-inline-end: 0;
        }
    }

    .events__none {
        padding-block: 2ch;
    }

    .event {
        --card-color: var(--color-ink) !important;

        background: var(--color-canvas);
        border: var(--border-light);
        box-shadow: none;
        break-inside: avoid;
        color: var(--color-ink);

        .avatar {
            --avatar-size: 2lh;
        }
    }

    /* Card perma
  /* ------------------------------------------------------------------------ */

    .card-perma__notch,
    .card-perma__actions,
    .comment--new,
    .comments__subscribers,
    .card__meta-avatars--assignees>div>div:last-child,
    .steps>.step:last-child,
    .card__board-name .icon,
    div:has(> .card__tag-picker-button),
    .delete-card {
        display: none;
    }

    .card-perma {
        display: block;
        inline-size: 100%;
        margin: 0 0 1lh;

        .card {
            aspect-ratio: unset;
        }

        .card__title {
            font-size: var(--text-x-large);
        }
    }

    .card-perma__bg {
        background: transparent;
        padding: 0;
    }

    .comments {
        --row-gap: 0;
        --comment-padding-inline: 1.4lh;

        padding-inline: 0;
    }

    .comment {
        --comment-max: none;

        border-block-end: var(--border-light);
    }

    .comment__content {
        background: none;
    }

    .comment__avatar {
        --btn-size: 2lh;

        margin-inline-start: 0;
    }

    .comment__author h3 {
        margin-inline: 0;
    }

    .comment__edit {
        display: none;
    }

    .comment__body {
        text-align: start;
    }

    .reactions {
        margin-block-start: 0;
    }

    /* Settings
  /* ------------------------------------------------------------------------ */

    .settings__user-filter .input,
    .settings__user-list-tips {
        display: none;
    }

    .settings__panel {
        border: none;
        border-radius: 0;
        box-shadow: none;
        padding: 0;
        text-align: left;

        h2 {

            &:before,
            &:after {
                display: none;
            }
        }
    }

    .settings__panel--users {
        form:has(.btn--negative) {
            display: none;
        }

        .btn {
            background-color: transparent;
            border: none;
            color: var(--color-ink);
            opacity: 1;
        }

        .btn:not(:has(input:checked)) {
            opacity: 0;
        }
    }

    .settings__panel--entropy {
        display: none;
    }

    .settings__user-filter {
        background: none;
        margin: 0;
        padding: 0;

        /* Hide the "Everyone" switch */
        >li:first-child {
            display: none;
        }
    }

    /* Routes & Execution reports
  /* ------------------------------------------------------------------------ */

    .header {
        padding-block-start: 1em;
    }

    .route__panel,
    .route-detail__execution {
        border: none;
        border-radius: 0;
        box-shadow: none;
        break-inside: avoid;
    }

    .route__panel {
        background: var(--color-canvas);
    }

    /* ------------------------------------------------------------------------ */
    /* Execution detail (datasheet report)                                      */
    /* The on-screen datasheet IS the printed report: strip screen chrome,      */
    /* keep status colour (print-color-adjust: exact), repeat the table header   */
    /* on every page, and keep zone groups + rows from breaking mid-block.       */
    /* ------------------------------------------------------------------------ */

    /* Flatten the screen hero into a plain report title block. */
    .form-hero {
        background: none;
        border: none;
        box-shadow: none;
        padding: 0 0 0.6em;
        margin: 0 0 0.8em;
        border-block-end: 1pt solid var(--color-ink);
        break-after: avoid;
    }
    .form-hero__side {
        display: none;
    }
    .form-hero__title {
        font-size: 13pt;
        font-weight: 700;
    }
    .form-hero__description {
        font-size: 9.5pt;
        color: var(--color-ink);
    }
    .form-hero__meta {
        font-size: 8.5pt;
    }

    .section-head {
        break-after: avoid;
    }

    /* Datasheet: keep borders + status colours; repeat the header per page. */
    .datasheet {
        border-collapse: collapse;
        font-size: 8.5pt;
        inline-size: 100%;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }
    .datasheet thead {
        display: table-header-group; /* repeat column headers on each page */
    }
    .datasheet thead th {
        background: var(--color-canvas);
        box-shadow: none;
        position: static; /* drop sticky for print */
    }
    .datasheet th,
    .datasheet td {
        border: 0.5pt solid var(--color-ink);
        padding: 0.3em 0.45em;
    }
    .datasheet__group-head {
        break-after: avoid;
    }
    .datasheet__group-head th {
        background: var(--color-canvas);
        border-block-end: 1pt solid var(--color-ink);
    }
    .datasheet tbody tr {
        break-inside: avoid;
    }
    .datasheet tr[data-state] td,
    .datasheet tr[data-state] th {
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    /* Media thumbnails: small, wrapped, colours kept (thermograms). */
    .datasheet__media {
        gap: 0.2em;
    }
    .datasheet__media-thumb,
    .datasheet__media-thumb img,
    .datasheet__media-thumb .attachment__thumb {
        block-size: 2cm;
        inline-size: auto;
    }
    .thermography-hotspot {
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    /* Notes line: readable on paper. */
    .datasheet__sub {
        color: var(--color-ink);
        display: block;
        font-size: 7.5pt;
    }

    /* ---- Shared screen-only chrome (suppressed on every printed page) -----
       These classes live in shared partials / controllers (_gallery_hero.html,
       thermography overlays, native <dialog> modals) and the route capture
       page — they are NOT execution-specific, so they stay in their own group
       to survive future section edits. */
    .gallery-hero--empty {
        display: none !important;
    }
    .gallery-hero__count,
    .gallery-hero__stamp {
        display: none !important;
    }
    .thermography-tooltip {
        display: none !important;
    }
    dialog,
    #lightbox-dialog {
        display: none !important;
    }
    .routes {
        padding: 0;
    }
}
