/* ══════════════════════════════════════════════════════════════════════════
   IMPRESSION V2 — LE DOCUMENT PAPIER

   Socle generique. Il ne met en page AUCUNE page en particulier : il pose le
   format, la typographie du papier, et les briques d'un document imprime
   (`.pdoc-*`). Chaque surface qui veut s'imprimer proprement ajoute sa propre
   feuille a cote de celle-ci (cf. `print/programme.css`).

   ── DEUX PRINCIPES, ET ILS SONT LA RAISON D'ETRE DE CETTE FEUILLE ──

   1. ELLE NE S'APPUIE SUR AUCUN STYLE D'ECRAN.
      Les feuilles d'impression du depot corrigeaient l'affichage : masquer une
      barre, remettre une grille a plat, repeindre un aplat. Chaque refonte
      d'ecran cassait donc l'impression en silence — le programme v2 en est la
      preuve, ses regles print visaient encore `.programme__days`, un nom
      disparu. Ici rien n'est corrige : le document papier a son propre
      balisage (`.pdoc-*`), qu'aucune feuille d'ecran ne touche, et ses valeurs
      sont ecrites en clair plutot que lues dans les jetons de la charte
      d'ecran, qui n'ont pas de sens en millimetres.

   2. RIEN N'EST IMPRIME PAR DEFAUT.
      Une liste de masquages est une liste qu'on oublie de tenir : le panneau
      de consentement, teleporte au niveau du corps, se posait en travers du
      programme sur les deux premieres pages. La regle est donc inversee —
      tous les enfants du corps sont masques, et SEUL le document declare
      (`body > .pdoc`) est rendu. Ajouter un widget flottant ne peut plus
      polluer une impression.

   ── OU VIT LE DOCUMENT ──

   `{% block print_document %}` de `base.html.twig`, c'est-a-dire en enfant
   DIRECT du corps. C'est ce que la regle ci-dessus exige : rendu dans le
   contenu, ses propres ancetres le masqueraient.

   ── POURQUOI CETTE FEUILLE EST CHARGEE SUR TOUS LES MEDIAS ──

   La regle `.pdoc { display: none }` doit s'evaluer A L'ECRAN, sinon le
   document papier s'affiche dans la page. Les regles d'une feuille
   `media="print"` ne s'evaluent qu'a l'impression, y compris celles posees
   hors `@media print`. Tout le reste du fichier est donc encapsule.
   ══════════════════════════════════════════════════════════════════════════ */

.pdoc {
    display: none;
}

@media print {
    /* ══ Format ══
       Marges laterales egales, marge basse plus haute que la marge haute pour
       loger le pied de page sans qu'il touche le dernier creneau. */
    @page {
        size: A4;
        margin: 16mm 15mm 20mm;

        /* Le TEXTE de cette boite est pose par le gabarit, pas ici : Chrome
           n'implemente pas `string()`, la seule facon en CSS de faire remonter
           un texte du document vers une boite de marge. Cf.
           `templates/print/_document.html.twig`. Le socle n'en garde que la
           forme, ce qui le laisse generique. */
        @top-left {
            font-family: 'Source Sans 3', 'Helvetica Neue', Arial, sans-serif;
            font-size: 7.5pt;
            color: #5c6470;
        }

        @bottom-left {
            content: "ANCESU";
            font-family: 'Source Sans 3', 'Helvetica Neue', Arial, sans-serif;
            font-size: 7.5pt;
            color: #5c6470;
        }

        @bottom-right {
            content: counter(page) " / " counter(pages);
            font-family: 'Source Sans 3', 'Helvetica Neue', Arial, sans-serif;
            font-size: 7.5pt;
            color: #5c6470;
        }
    }

    /* Le cartouche tient lieu d'en-tete sur la premiere page : le titre
       courant y ferait doublon a deux centimetres d'ecart. */
    @page :first {
        @top-left { content: ""; }
    }

    /* ══ 1. RIEN N'EST IMPRIME PAR DEFAUT ══
       Y compris ce qu'un script a teleporte au niveau du corps apres coup
       (voile de consentement, tiroir de filtres, modale de rediffusion) : ce
       sont precisement les elements qu'aucune liste de masquages ne tient a
       jour. */
    body > * {
        display: none !important;
    }

    /* ══ 2. SEUL LE DOCUMENT DECLARE EST IMPRIME ══ */
    body > .pdoc {
        display: block !important;
    }

    /* Le fond et l'encre du papier. Aucune couleur de la charte d'ecran n'est
       lue ici : une teinte pensee pour un ecran retro-eclaire ne dit rien de
       ce que rend une imprimante. */
    html,
    body {
        background: #fff !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    .pdoc {
        /* Les jetons du document papier. Ils vivent DANS cette feuille : elle
           doit pouvoir etre lue seule, et rien ne garantit qu'une feuille
           d'ecran soit chargee sur la surface qui s'imprime. */
        --pdoc-ink: #16181d;
        --pdoc-ink-soft: #454b56;
        --pdoc-ink-mute: #6b7280;
        --pdoc-accent: #253768;
        --pdoc-rule: #c8cdd6;
        --pdoc-rule-soft: #e2e6ec;
        --pdoc-font: 'Source Sans 3', 'Helvetica Neue', Arial, sans-serif;

        font-family: var(--pdoc-font);
        font-size: 9pt;
        line-height: 1.38;
        color: var(--pdoc-ink);
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    /* ══ Cartouche ══ */
    .pdoc-head {
        margin: 0 0 4.5mm;
        break-after: avoid;
        break-inside: avoid;
    }

    .pdoc-head__poster {
        display: block;
        width: auto;
        max-width: 100%;
        max-height: 26mm;
        margin: 0 auto 3mm;
    }

    .pdoc-head__row {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 8mm;
        padding-bottom: 3mm;
        border-bottom: 0.6mm solid var(--pdoc-accent);
    }

    .pdoc-head__text {
        flex: 1;
        min-width: 0;
    }

    .pdoc-kicker {
        margin: 0 0 1mm;
        font-size: 7.5pt;
        font-weight: 700;
        letter-spacing: 0.09em;
        text-transform: uppercase;
        color: var(--pdoc-accent);
    }

    .pdoc-title {
        margin: 0 0 1.5mm;
        font-size: 19pt;
        font-weight: 700;
        line-height: 1.1;
        color: var(--pdoc-ink);
    }

    .pdoc-subtitle {
        margin: 0 0 2mm;
        font-size: 10pt;
        font-weight: 400;
        color: var(--pdoc-ink-soft);
    }

    .pdoc-meta {
        margin: 0;
        font-size: 7.5pt;
        color: var(--pdoc-ink-mute);
    }

    .pdoc-meta a {
        color: var(--pdoc-ink-mute);
        text-decoration: none;
    }

    .pdoc-qr {
        flex-shrink: 0;
        width: 22mm;
        margin: 0;
        text-align: center;
        font-size: 6pt;
        line-height: 1.2;
        color: var(--pdoc-ink-mute);
    }

    .pdoc-qr svg {
        display: block;
        width: 22mm;
        height: 22mm;
        margin: 0 auto 1mm;
    }

    /* ══ Briques communes ══ */
    .pdoc-section {
        margin: 0 0 5mm;
    }

    .pdoc-section__title {
        margin: 0 0 2mm;
        font-size: 11pt;
        font-weight: 700;
        color: var(--pdoc-accent);
        break-after: avoid;
    }

    .pdoc-note {
        margin: 0;
        font-size: 8pt;
        color: var(--pdoc-ink-mute);
    }

    /* Ce qui n'a de sens qu'a l'ecran (un lien nu, un bouton) n'a pas a etre
       repete en clair : le QR du cartouche est le retour en ligne. */
    .pdoc a {
        color: inherit;
        text-decoration: none;
    }
}
