/* ═══════════════════════════════════════════════════════════════
   EL8 : Feuille imprimée.

   Les outils n'impriment pas leur écran : ils fabriquent un document
   dans <div id="feuille">, et l'impression masque tout le reste. Le
   patch son, le running order, les feuilles de route et la répartition
   de phases passent tous par ici.

   Deux variables portent l'échelle, posées en JavaScript :
     --fs   le corps du tableau
     --w*   les largeurs de colonne, en pourcentage

   Le squelette : .fe__h l'en-tête (qui porte la date), .fe__t2 le tableau.
   ═══════════════════════════════════════════════════════════════ */

#feuille { display: none; }

@media print {
  /* Le thème sombre de l'outil n'a rien à faire sur du papier : sans
     cette règle, tout ce qui dépasse de la feuille sort en aplat noir. */
  body.pr-feuille { background: #fff !important; color: #000 !important; }
  body.pr-feuille::before, body.pr-feuille::after { display: none !important; }
  body.pr-feuille > *:not(#feuille) { display: none !important; }
}

/* La feuille fait exactement une page : plutôt que d'espérer que le
   contenu tienne, on lui donne la hauteur utile et le tableau s'y étire.
   Déborder devient impossible, et la page ne reste jamais à moitié vide. */
#feuille {
  --fs: 9pt; --wn: 6%; --wsrc: 38%; --wmic: 38%; --wp: 13%; --wv: 5%; --wsp: 0%;
  --px: .55em;
  color: #000; background: #fff;
  font-family: 'Barlow', system-ui, sans-serif;
}
@media print {
  body.pr-feuille #feuille { display: block !important; }
  /* Une hauteur de page en garde-fou : rien ne peut déborder sur une
     seconde feuille. Les rangs, eux, gardent une hauteur fixe, un patch
     de quatre voies ne doit pas s'étaler sur la page entière.

     Un plafond, pas une hauteur. La feuille mesurait 277 mm pile, la
     hauteur utile d'une A4 à 10 mm de marge : dès que la zone imprimable
     est un peu plus courte (Safari, marges du pilote, papier Letter), la
     boîte vide débordait, et le patch sortait suivi d'une page blanche.
     Le contenu est calculé pour tenir dans 266 mm : il n'a pas besoin
     qu'on lui réserve le reste. */
  body.pr-feuille.fe--etire #feuille {
    display: block !important; height: auto; max-height: 277mm; overflow: hidden;
  }
  /* Une liasse : plusieurs feuilles à hauteur fixe dans le même document.
     La hauteur descend alors sur chaque page, la poser sur le conteneur
     n'en laisserait passer qu'une. */
  /* Une liasse : plusieurs feuilles dans le même document, chacune sur sa
     page. On ne leur impose PAS de hauteur.

     Le premier essai leur donnait 277 mm, la hauteur utile d'une A4 à 10 mm
     de marge. C'était juste au millimètre près : dès que la zone imprimable
     est un poil plus courte, marges du pilote, en-têtes du navigateur
     laissés cochés, la feuille débordait d'un cheveu sur la page suivante,
     et chaque patch était suivi d'une page blanche. Les rangs sont déjà
     calculés pour tenir ; le saut de page suffit. */
  body.pr-feuille.fe--liasse #feuille { height: auto; overflow: visible; }
}
.fe__h { border-bottom: 1.6pt solid #c0392b; padding-bottom: 2mm; margin-bottom: 3mm; flex: 0 0 auto; }

/* La marque de celui qui édite la feuille : son logo à gauche,
   son site dessous, un filet pour séparer. Petit et rangé dans sa
   colonne : ce qu'on vient lire sur la feuille c'est le patch, pas la
   marque. Sans logo ni site, cette colonne n'existe pas du tout. */
.fe__h--sig { display: flex; align-items: stretch; gap: 4mm; }
.fe__h--sig .fe__hc { flex: 1 1 auto; min-width: 0; }
.fe__sig {
  flex: 0 0 auto; max-width: 26mm; padding-right: 4mm;
  border-right: .4pt solid #c8c8c8;
  display: flex; flex-direction: column; justify-content: center; gap: 1mm;
}
.fe__sig img { display: block; max-width: 22mm; max-height: 11mm; object-fit: contain; }
.fe__sig span {
  font-family: 'Barlow Condensed', sans-serif; font-size: 6.8pt;
  letter-spacing: .05em; color: #555; overflow-wrap: anywhere; line-height: 1.2;
}
.fe__k {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  font-size: 9pt; letter-spacing: .22em; text-transform: uppercase; color: #c0392b;
}
.fe__dt {
  margin-left: 3mm; padding-left: 3mm; border-left: .5pt solid #bbb;
  font-family: 'Barlow Condensed', sans-serif; font-size: 8pt; letter-spacing: .08em; color: #777;
}
.fe__m { float: right; display: flex; align-items: center; gap: 3mm; }
.fe__ml { text-align: center; line-height: 1; }
/* Le fill ne vaut que pour le logo : le QR porte ses propres couleurs, et les
   écraser ici le rendrait illisible. */
.fe__ml svg { display: block; height: 11mm; width: auto; fill: #111; margin: 0 auto; }
.fe__ml b {
  display: block; margin-top: 1.4mm;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  font-size: 8pt; letter-spacing: .34em; text-indent: .34em;
  color: #c0392b;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
/* 16 mm : à cette taille un module fait 0,43 mm, un téléphone le lit sans
   effort. En dessous, ça devient un pari. */
.fe__mq svg { display: block; width: 16mm; height: 16mm; }
.fe__mq { -webkit-print-color-adjust: exact; print-color-adjust: exact; }

/* La pastille d'une gélatine. Sans cet ordre, le navigateur n'imprime pas
   son fond et il ne reste qu'un carré vide à côté du numéro : la couleur
   était justement ce qu'on voulait voir. */
.fe__gel {
  display: inline-block; width: .55em; height: .55em;
  border: .4pt solid #999; margin-right: .3em;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__p {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  font-size: 19pt; line-height: 1.05; letter-spacing: .01em;
  text-transform: uppercase; margin: 1.2mm 0 .6mm; color: #000;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fe__s {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 6mm; font-size: 8.5pt; color: #444;
}
.fe__n {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  font-size: 10pt; letter-spacing: .1em; text-transform: uppercase;
  color: #000; white-space: nowrap;
}

/* Le bandeau de contacts, sous l'en-tête : deux colonnes, parce qu'une
   équipe de quatre sur une seule ligne déborde de la feuille. */
.fe__ct {
  display: grid; grid-template-columns: 1fr 1fr; gap: 0 6mm;
  margin: 0 0 2.2mm; padding-bottom: 1.6mm;
  border-bottom: .4pt solid #bbb;
  font-size: 7.4pt; line-height: 1.32; color: #333;
}
.fe__ct b { color: #000; font-weight: 500; }
/* Un intertitre dans une feuille de route : « Sur place », au-dessus de ce
   qui vaut pour tous les groupes. */
.fe__st {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  font-size: 8.5pt; letter-spacing: .18em; text-transform: uppercase;
  color: #c0392b; margin: 3mm 0 1.4mm;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__ct b::after { content: ' · '; color: #888; font-weight: 400; }

.fe__cols { display: flex; gap: 6mm; align-items: flex-start; }
.fe__cols > table { flex: 1; min-width: 0; }

/* Largeurs fixes : sans cela un tableau refuse de se réduire sous la
   largeur de son contenu, et la seconde colonne sort de la page. */
.fe__t2 { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: var(--fs); }
.fe__t2 th {
  background: #141414; color: #fff; text-align: left;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  font-size: calc(var(--fs) * .82); letter-spacing: .14em; text-transform: uppercase;
  padding: 1.1mm var(--px); border: .4pt solid #141414;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 td {
  /* La hauteur de rang se règle par le calage vertical : une hauteur de
     cellule n'est qu'un minimum, et l'impression ne l'honore pas comme
     l'écran le fait. */
  padding: var(--py, .5mm) var(--px); line-height: 1.25;
  border: .4pt solid #c8c8c8;
  vertical-align: middle; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
/* Une note, une liste de switches : du texte qui n'a pas de largeur
   prévisible. Il passe à la ligne plutôt que d'être coupé en « … ». */
.fe__t2 td.c-long { white-space: normal; text-overflow: clip; overflow-wrap: anywhere; }
.fe__t2 tbody tr:nth-child(even) td {
  background: #f1f1f1;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
/* Une coupure dans la liste : changement d'univers, de pont, de salle.
   Placée après le rayage pour le couvrir, à spécificité égale. */
.fe__t2 tbody tr.sect td {
  /* Pas un second bandeau noir : à deux rangs de l'en-tête on les
     confond, et on croit à un nouveau tableau. Un filet rouge et du
     blanc autour : c'est une coupure dans la liste, pas un début. */
  background: #fff; color: #c0392b; text-align: left;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 600;
  font-size: calc(var(--fs) * .88); letter-spacing: .16em; text-transform: uppercase;
  padding-top: 2mm; padding-bottom: .7mm;
  border: 0; border-top: 1.2pt solid #c0392b;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
/* Le filet du haut ne se justifie pas sur la première coupure : elle
   touche l'en-tête, qui fait déjà la séparation. */
.fe__t2 tbody tr.sect:first-child td { padding-top: 1mm; border-top: 0; }
.fe__t2 .c-n { width: var(--wn); text-align: center; }
.fe__t2 td.c-n {
  font-family: 'Share Tech Mono', monospace; background: #e2e2e2; color: #000;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 tbody tr:nth-child(even) td.c-n { background: #d6d6d6; }
.fe__t2 .c-src { width: var(--wsrc); font-weight: 500; }
.fe__t2 .c-mic { width: var(--wmic); }
.fe__t2 td.c-mic { font-size: calc(var(--fs) * .95); }
.fe__t2 .c-p { width: var(--wp); }
.fe__t2 td.c-p { font-size: calc(var(--fs) * .88); color: #333; }
.fe__t2 th.c-p, .fe__t2 th.c-v, .fe__t2 th.c-n, .fe__t2 th.c-sp { color: #fff; }
.fe__t2 .c-v { width: var(--wv); text-align: center; }
/* « 48V » tenait au millimètre : Safari, qui compose un peu plus large,
   le coupait en « 48\ ». */
.fe__t2 th.c-v { letter-spacing: .04em; padding-left: 0; padding-right: 0; text-overflow: clip; }
.fe__t2 .c-sp { width: var(--wsp); text-align: center; }
.fe__t2 td.c-sp { font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
                  letter-spacing: .04em; }
.fe__t2 .c-v b {
  display: inline-block; width: 1.7mm; height: 1.7mm; border-radius: 50%;
  background: #c0392b; -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 .vide td { color: #999; }

/* Ce qui est branché sur un circuit. C'est la colonne qu'on lit au pied
   des blocs, une lampe frontale sur le front : la tronquer pour tenir sur
   un rang, c'est retirer l'information pour laquelle la feuille a été
   imprimée. Elle s'étend donc sur autant de lignes qu'il faut, un
   appareil par ligne. */
.fe__t2 td.c-app { white-space: normal; line-height: 1.3; vertical-align: top; }
.fe__t2 td.c-app span { display: block; }
.fe__t2 td.c-app b {
  font-family: 'Share Tech Mono', monospace; font-weight: 400;
  color: #c0392b; margin-right: .8mm;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}

/* Patch commun : la colonne d'un groupe porte son numéro de voie, son
   micro, et son propre intitulé quand il diffère du nom commun. */
.fe__t2 td.c-g { white-space: normal; line-height: 1.2; }
.fe__t2 td.c-g b {
  font-family: 'Share Tech Mono', monospace; font-weight: 400;
  color: #c0392b; margin-right: .6mm;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 td.c-g u, .fe__av u {
  display: inline-block; width: 1.6mm; height: 1.6mm; text-decoration: none;
  background: #2e7d46; vertical-align: middle;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 td.c-g--f {
  background: #eaf4ed !important;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 tbody tr:nth-child(even) td.c-g--f { background: #e1eee6 !important; }
.fe__t2 td.c-g i {
  display: block; font-style: normal; font-size: calc(var(--fs) * .8); color: #666;
}
.fe__t2 th i {
  display: block; font-style: normal; font-weight: 400;
  font-size: calc(var(--fs) * .72); letter-spacing: .04em; color: #d9b38a;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 td.c-vide {
  background: #ededed !important;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 tbody tr:nth-child(even) td.c-vide { background: #e4e4e4 !important; }

/* Une voie qui n'arrive pas par la stagebox est teintée sur toute sa
   longueur. Sur une imprimante noir et blanc les deux teintes se
   ressemblent : c'est le libellé de la colonne qui fait foi, la couleur
   ne sert qu'à repérer l'exception d'un coup d'œil. */
.fe__t2 tr.o-loc td, .fe__t2 tbody tr.o-loc:nth-child(even) td {
  background: #fdf0dc !important;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 tr.o-usb td, .fe__t2 tbody tr.o-usb:nth-child(even) td {
  background: #e7effb !important;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 tr.o-loc td.c-n { background: #f6e2c4 !important; }
.fe__t2 tr.o-usb td.c-n { background: #d6e3f5 !important; }
.fe__t2 td.c-o { width: var(--wo, 0); text-align: center; }
.fe__t2 td.c-f { width: var(--wf, 0); text-align: center; }
.fe__t2 th.c-f { width: var(--wf, 0); }
.fe__t2 .c-f b {
  display: inline-block; width: 1.7mm; height: 1.7mm;
  background: #2e7d46; -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.fe__t2 th.c-o { width: var(--wo, 0); }

/* Une page par groupe pour les feuilles de route. */
.fe__pg + .fe__pg { break-before: page; }

/* ── Deux documents sur une même feuille ────────────────────
   Le déroulé et le matériel sont étroits et hauts. Seuls sur une A3
   paysage, ils en laissaient les trois quarts blancs. */
.fe__duo {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10mm;
  align-items: start;
}
.fe__col {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  font-size: 12pt; letter-spacing: .18em; text-transform: uppercase;
  color: #141414; margin: 0 0 2mm; padding-bottom: 1.2mm;
  border-bottom: 1pt solid #141414;
}
/* Sous un titre de colonne, les intertitres rouges n'ont plus à porter
   la hiérarchie à eux seuls : on les rapproche. */
.fe__duo .fe__day { margin-top: 3.5mm; }
.fe__duo .fe__day:first-of-type { margin-top: 0; }
.fe__day {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  font-size: 11pt; letter-spacing: .16em; text-transform: uppercase;
  color: #c0392b; margin: 5mm 0 1.5mm; border-bottom: .5pt solid #ccc; padding-bottom: 1mm;
}
.fe__day:first-of-type { margin-top: 0; }

/* ── Déroulé ─────────────────────────────────
   Le changement de plateau n'est pas un passage : il se lit en retrait,
   sans filet, pour qu'un œil qui balaie la colonne des heures ne s'y
   arrête pas. C'est pourtant lui qui dit le temps dont dispose l'équipe. */
.l-chg td {
  border: 0; padding-top: .3mm; padding-bottom: .9mm;
  font-size: 7.4pt; font-style: italic; color: #777;
}
.l-chg .c-n { font-style: normal; }
/* Ce qui n'est pas un groupe, entracte, bœuf, discours. */
.l-libre .c-src { font-style: italic; }
/* Une note posée entre deux passages. Elle occupe la même place qu'un
   changement de plateau — entre les lignes, sans heure — mais elle ne se
   lit pas pareil : le changement est un calcul, la note est quelqu'un qui
   a quelque chose à dire. Elle garde donc le rouge de la maison. */
.l-note td {
  border: 0; padding-top: .5mm; padding-bottom: .9mm;
  font-size: 7.8pt; color: #000;
}
.l-note b {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  letter-spacing: .1em; text-transform: uppercase; color: #c0392b;
  margin-right: 1.5mm;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}

.fe__note {
  margin-top: 4mm; border-left: 1.2pt solid #c0392b; padding: 1mm 0 1mm 3mm;
  break-inside: avoid;
}
.fe__note b {
  display: block; font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  font-size: 7.5pt; letter-spacing: .1em; text-transform: uppercase; color: #777;
  margin-bottom: .8mm;
}
.fe__note p { margin: 0; font-size: 9pt; line-height: 1.35; }
.fe__grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1mm 8mm; margin-bottom: 4mm; align-items: start;
}
.fe__kv {
  display: grid; grid-template-columns: 30mm 1fr; gap: 1.4mm 3mm;
  align-items: baseline; align-content: start;
}
.fe__kv dt {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  font-size: 7.5pt; letter-spacing: .1em; text-transform: uppercase; color: #777;
}
.fe__kv dd { margin: 0; font-size: 9.5pt; }
.fe__kv dd b { font-weight: 500; }


/* ── Colonnes de phase ────────────────────────────────────────
   Trois tableaux côte à côte, chacun soldé par son total : la forme
   qu'on donnerait à la main sur un tableur. */
.fe__ph { display: flex; gap: 5mm; align-items: flex-start; }
.fe__ph > div { flex: 1; min-width: 0; }
/* Trois colonnes sur une A4 : les intitulés longs passent à la ligne
   plutôt que de se faire couper. */
.fe__ph .c-src { white-space: normal; line-height: 1.25; }
.fe__pt {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 500;
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 2mm; border-bottom: 1pt solid #141414; padding-bottom: 1mm; margin-bottom: 1.5mm;
}
.fe__pt span:first-child { font-size: 13pt; letter-spacing: .12em; }
.fe__pt span:last-child { font-size: 9pt; letter-spacing: .06em; color: #444; }
.fe__t2 tfoot td {
  border-top: 1pt solid #141414 !important; font-weight: 500;
  background: #fff !important;
}
.fe__t2 tfoot .c-n { background: #fff !important; }
.fe__rs {
  display: flex; justify-content: space-between; gap: 4mm; flex-wrap: wrap;
  font-size: 9pt; color: #333; margin-bottom: 4mm;
}
.fe__rs b { font-weight: 500; color: #000; }
.fe__av { margin-top: 3mm; font-size: 8pt; color: #555; }
