/* Balises de page communes à tous les Tomes.
 *
 * Le moteur Homebrewery transforme n'importe quel `{{nom}}` en
 * `<span class="inline-block nom">` : définir une balise ne demande donc aucune
 * extension du moteur, seulement le CSS qui vise `.page:has(.nom)`.
 *
 * Ce fichier tient le vocabulaire PARTAGÉ. Ce qui ne vaut que pour un tome va
 * dans son `tome-NN.style.css`, chargé après celui-ci et qui peut donc le
 * surcharger — même rapport qu'entre le thème et le champ "Style" d'un brew.
 *
 * Écrit comme dans Homebrewery (sélecteurs `.page` nus) : le build le préfixe
 * par `.phb-tome` avant de le servir, pour qu'il ne fuie pas dans le site.
 *
 * Viser la PAGE QUI CONTIENT la balise (`:has`) plutôt qu'un numéro de page :
 * ajouter, retirer ou déplacer une page ne casse alors rien.
 */

/* ================================================================ {{nofooter}}
 *
 * Retire le pied de page courant : l'ornement doré que le thème dessine en
 * `::after`, ainsi que la note de bas de page et le numéro s'il y en a.
 * Sur une `frontCover`, Homebrewery réemploie toutefois `.footnote` pour le
 * titre propre à la chronique : ce bloc doit donc rester visible.
 *
 * Utile sur les pages de garde et les planches, où une illustration occupe
 * toute la surface et où ces éléments se superposent à l'image sans raison.
 *
 *     \page
 *     {{nofooter}}
 *     ![illustration](…) {position:absolute,top:0px,right:-20px,width:105%,height:100%}
 *
 * La balise ne décrit pas un type de page mais un effet : elle se combine donc
 * librement avec les autres (y compris {{darklysander}}).
 */
.phb-tome .page .nofooter {
  display: none;
}

.phb-tome .page:has(.nofooter)::after {
  background-image: unset;
}

.phb-tome .page:has(.nofooter):not(:has(.frontCover)) .footnote,
.phb-tome .page:has(.nofooter) .pageNumber {
  display: none;
}

/* ============================================================ {{darklysander}}
 *
 * Page de roast : illustration sombre en fond plein, encre claire, titre rouge.
 *
 * À poser en tête de page, avant l'illustration de fond :
 *
 *     \page
 *     {{darklysander}}
 *     ![fond](…) {position:absolute,top:0px,right:0px,width:105%}
 *     # Titre du roast
 */

/* La balise elle-même ne doit rien occuper dans le flux. */
.phb-tome .page .darklysander {
  display: none;
}

/* Le thème prévoit une encre noire sur parchemin : sans cette règle, le texte
 * est noir sur noir. Le sélecteur `*` teinte tous les descendants ; la règle
 * `h1` plus bas reprend la main grâce à sa spécificité supérieure. */
.phb-tome .page:has(.darklysander) * {
  color: #e8e6e3;
  line-height: 1.35;
}

.phb-tome .page:has(.darklysander) h1 {
  color: #6b0f1a; /* rouge sang de Strahd */
  line-height: 1.1;
  font-size: 2.3em;
  font-weight: 500;
  text-align: center;

  /* Le titre déborde de 30px de chaque côté de la colonne de texte. */
  width: calc(100% + 60px);
  margin-left: -30px;

  /* Détache le titre du fond sombre. */
  text-shadow:
    1px 1px 1px rgb(0 0 0 / 95%),
    2px 2px 4px rgb(0 0 0 / 80%),
    0 0 1px rgb(139 0 0 / 30%);
}

/* Ces pages sont denses : tout texte en trop part dans une troisième colonne,
 * hors cadre et donc perdu. Il faut gagner de la place — la question est où.
 *
 * Trois postes occupent l'espace : l'interligne (l'air de lecture), la hauteur
 * des `div.blank` que produisent les `:` du markdown, et la marge `p + *` que
 * le thème pose à 0.325cm avant chacun d'eux. Sur la page la plus longue,
 * 20 blancs représentent à eux seuls ~250px de marges.
 *
 * Mesuré sur cette page (blocs de texte partant hors cadre) :
 *   1.35 / blancs 12.5px / marge 0.325cm .. 2   (aucun resserrement)
 *   1.35 / blancs 12.5px / marge 0.05cm ... 2   la marge seule ne suffit jamais
 *   1.30 / blancs 6px    / marge 0.325cm .. 0   mais interligne comprimé
 *   1.35 / blancs 4px    / marge 0.10cm ... 0   <- retenu
 *
 * L'arbitrage porte donc sur l'interligne : c'est lui qui se voit à la lecture,
 * il reste à 1.35. La place est reprise sur les espacements entre blocs, bien
 * moins perceptibles. */
.phb-tome .page:has(.darklysander) .blank {
  height: 4px;
}

.phb-tome .page:has(.darklysander) p + * {
  margin-top: 0.1cm;
}

/* Le thème réserve 1.7cm de marge basse. La réduire rend deux lignes par
 * colonne ; les pieds de page, positionnés en absolu (`bottom: 32px`), ne
 * bougent pas. */
.phb-tome .page:has(.darklysander) {
  padding-bottom: 1.1cm;
}

/* L'ornement doré de bas de page est dessiné par le `::after` du thème. Sur ces
 * fonds sombres il détonne : on neutralise son image, la règle restant en place. */
.phb-tome .page:has(.darklysander)::after {
  background-image: unset;
}
