/* style-06-selection-impression.css — Sélection pour impression, barre d’impression, styles @media print. Chargé après style-05 (ordre 01 → 07 : voir style-01-recherche.css). */
/* ══════════════════════════════════════════════════════════════
   SÉLECTION POUR IMPRESSION
   La case à cocher de sélection apparaît au survol de chaque carte.
   La barre d'impression remonte depuis le bas quand ≥1 morceau est sélectionné.
══════════════════════════════════════════════════════════════ */

/* Case à cocher de sélection impression — coin supérieur droit de la carte */
.card-select-wrap {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  z-index: 3;
  opacity: 0;
  transition: opacity 0.15s;
}
.morceau-card:hover .card-select-wrap,
.morceau-card.print-selected .card-select-wrap {
  opacity: 1;
}
.card-select-cb {
  width: 15px;
  height: 15px;
  accent-color: var(--navy);
  cursor: pointer;
  display: block;
}
/* Quand la case est visible, ne pas décaler le header — elle est à droite */
.morceau-card.print-selected {
  outline: 2px solid var(--navy);
  outline-offset: -1px;
}
#results-list {
  padding-left: 0;
}
/* Carte sélectionnée pour impression */
.morceau-card.print-selected {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
}

/* Barre d'impression — toujours au-dessus du footer et du back-to-top.
   Le décalage vertical quand le footer est visible est géré en JS (_updatePrintToolbar). */
.print-toolbar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  /* Fond dégradé identique à la search-zone — clairement distinct du footer navy */
  background: linear-gradient(135deg, var(--navy) 0%, var(--navy-light) 60%, var(--hero-end) 100%);
  color: var(--white);
  padding: 0.75rem 1.5rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  z-index: 390;                /* sous le footer (400) : l'ombre du footer porte visuellement sur la barre */
  transform: translateY(100%);
  transition: transform 0.25s ease, bottom 0.25s ease;
}
.print-toolbar.visible { transform: translateY(0); }
.print-toolbar-count {
  font-size: var(--fs-base);
  font-weight: 600;
  flex: 1;
}
.print-toolbar-actions { display: flex; gap: 0.5rem; }
.print-toolbar-btn {
  background: var(--white);
  color: var(--navy);
  border: none;
  border-radius: var(--radius-pill);
  padding: 0.4rem 1rem;
  font-size: var(--fs-base);
  font-family: var(--font-sans);
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s;
}
.print-toolbar-btn:hover { background: var(--lavender); }
.print-toolbar-clear {
  background: transparent;
  color: var(--white-65);
  border: 1px solid var(--white-30);
  border-radius: var(--radius-pill);
  padding: 0.4rem 0.85rem;
  font-size: var(--fs-sm);
  font-family: var(--font-sans);
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s;
}
.print-toolbar-clear:hover { color: var(--white); border-color: var(--white-65); }

/* Zone d'impression — masquée à l'écran */
#print-area { display: none; }

/* ══ STYLES D'IMPRESSION ══════════════════════════════════════ */
@media print {
  /* Neutralise toute marge par défaut de html/body (UA stylesheet, ou reset
     hors media query dans css/shared.css) : une marge sur html/body ne
     s'applique qu'UNE fois, au tout début du flux du document — donc
     seulement en haut de la PREMIÈRE page — alors que @page { margin: 1cm }
     ci-dessous se répète correctement à chaque nouvelle page. Sans ce
     correctif, la marge par défaut de body (~8px selon le navigateur)
     s'additionnait à celle de @page uniquement sur la page 1, d'où un
     en-tête plus grand que sur les pages suivantes. Sans effet à l'écran :
     #print-area est display:none en dehors de l'impression. */
  html, body { margin: 0; padding: 0; }
  body > *:not(#print-area) { display: none !important; }
  #print-area {
    display: block !important;
    font-family: 'DM Sans', sans-serif;
    font-size: 9pt;
    color: #000;
    /* Le noir & blanc est garanti par l'absence de toute couleur dans les styles
       d'impression ci-dessous (et le retrait des icônes emoji colorées de
       buildPrintFiche) — PAS par un filtre CSS `filter: grayscale(1)`, qui a été
       retiré : Chrome (et la plupart des navigateurs) rastérisent en image tout
       élément portant un filtre CSS lors de l'impression, rendant le texte du
       PDF résultant non sélectionnable/non cliquable. Ne pas réintroduire de
       filter ici sans re-tester la sélection de texte dans le PDF exporté. */
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .print-fiche {
    page-break-after: always;
    break-after: page;
    padding: 0.8cm 1.5cm 0.5cm;
  }
  .print-fiche:last-child { page-break-after: avoid; break-after: avoid; }

  /* En-tête */
  .print-fiche-header  { margin-bottom: 0.35cm; padding-bottom: 0.3cm; border-bottom: 1pt solid #ccc; }
  .print-fiche-num     { font-size: 6pt; color: #999; text-transform: uppercase; letter-spacing: 0.12em; }
  .print-fiche-titre   { font-size: 14pt; font-weight: 700; line-height: 1.2; margin-top: 0.1cm; }
  .print-fiche-sous    { font-size: 9pt; color: #555; margin-top: 0.05cm; }
  .print-fiche-incipit { font-size: 8.5pt; color: #444; font-style: italic; margin-top: 0.05cm; }

  /* Sections — bordure haute par défaut, sauf juste après l'en-tête (qui a déjà sa propre bordure basse) */
  .print-section       { margin-top: 0.3cm; padding-top: 0.2cm; border-top: 0.5pt solid #ddd; }
  .print-fiche-header + .print-section { border-top: none; margin-top: 0; padding-top: 0; }
  .print-section-title { font-size: 6pt; font-weight: 700; text-transform: uppercase;
                          letter-spacing: 0.12em; color: #777; margin-bottom: 0.15cm; }

  /* Grille info générales */
  .print-info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.15cm 0.5cm; }
  .pr      { font-size: 8pt; line-height: 1.5; }
  .pr-full { grid-column: 1 / -1; }
  .prl     { display: block; font-size: 6pt; font-weight: 700; text-transform: uppercase;
              letter-spacing: 0.1em; color: #888; margin-bottom: 0.02cm; }

  /* Présentation */
  .print-pres-body { font-size: 8pt; line-height: 1.55; }

  /* Paroles — répartition manuelle en deux colonnes (grid, pas column-count).
     column-count CSS provoque des sauts de page erratiques à l'impression
     dans la plupart des moteurs de rendu lorsqu'il est combiné à un flux
     paginé — on évite donc complètement cette propriété. Les deux colonnes
     sont deux <div> indépendants, remplis avec un nombre entier de strophes
     calculé en JS (buildPrintFiche), donc jamais de coupure au milieu d'un couplet. */
  .print-parolier-single { font-size: 8.5pt; line-height: 1.55; }
  .print-parolier-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 1cm;
  }
  .print-parolier-col { font-size: 8.5pt; line-height: 1.55; }
  .print-strophe { margin-bottom: 0.35cm; }
  .print-strophe:last-child { margin-bottom: 0; }

  /* Harmonisations */
  .print-harm      { margin-bottom: 0.18cm; padding: 0.1cm 0.3cm; background: #f5f5f5; border-left: 2pt solid #bbb; }
  .print-harm-head { font-size: 8pt; font-weight: 600; display: flex; flex-wrap: wrap; gap: 0.3em; align-items: baseline; }
  .print-harm-num  { font-family: monospace; font-size: 7pt; color: #888; flex-shrink: 0; }
  .print-harm-name { flex: 1; }
  .print-harm-voix {
    font-size: 7.5pt;
    color: #333;
    margin: 0.08cm 0;
    padding: 0.06cm 0.25cm;
    border: 0.5pt solid #999;
    border-radius: 2pt;
    display: inline-block;
  }
  .print-harm-prov { font-size: 7.5pt; color: #333; margin-top: 0.03cm; }
  .print-harm-prov-item { margin-bottom: 0.02cm; }
  .print-harm-prov-item:last-child { margin-bottom: 0; }
  .print-harm-prov strong { color: #000; }
  .print-harm-files { margin-top: 0.05cm; display: flex; flex-wrap: wrap; gap: 0.1cm; }
  .print-harm-file  { font-size: 6.5pt; color: #333; font-family: monospace;
                       background: #e0e0e0; padding: 0.01cm 0.18cm; border-radius: 2pt; }
  .print-no-file    { color: #aaa; background: transparent; }

  /* Enregistrements */
  .print-enr           { font-size: 8pt; line-height: 1.5; margin-bottom: 0.12cm;
                          padding-bottom: 0.08cm; border-bottom: 0.5pt solid #eee; }
  .print-enr:last-child { border-bottom: none; }
  .print-yt-url        { font-size: 7pt; color: #444; font-family: monospace; word-break: break-all; }

  /* Chants liés */
  .print-proche     { font-size: 8pt; line-height: 1.5; margin-bottom: 0.1cm; }
  .print-proche-num { color: #888; font-size: 7pt; }
  .print-proche-souscat { font-size: 6.5pt; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: #999; margin: 0.2cm 0 0.1cm; }
  .print-proche-texte { color: #555; }

  @page { margin: 1cm; size: A4; }
}
