/* pdf-tutoriales.css — cohesión de los bloques de procedimiento en el PDF.
   Complementa manual.css, manual-fixes.css y curso-video.css; cárgalo al
   final. Solo contiene reglas de impresión. */

@media print {
  /* Flujo continuo entre capítulos: anula el salto obligatorio que
     manual-fixes.css aplica a .contenido > h2. Sin páginas casi vacías.
     La misma especificidad no basta porque el parche anterior gana por orden
     de carga; se sube la especificidad con :is() para no depender de ello. */

  .anvi-manual .contenido > :is(h2, h2:first-of-type) {
    break-before: auto;
    page-break-before: auto;
  }

  /* El h2 sigue sin quedar huérfano al pie y arrastra su primer párrafo.
     Se conservan el filete separador y la tipografía actuales. */
  .anvi-manual .contenido > h2 {
    break-after: avoid;
    page-break-after: avoid;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  .anvi-manual .contenido > h2 + * {
    break-before: avoid;
    page-break-before: avoid;
    orphans: 3;
    widows: 3;
  }

  /* Estructura de cada procedimiento:
       h3  título
       p   > a[href*="/manual/videos/"]   enlace al tutorial
       h4  Para qué sirve
       p   explicación
     El encadenado de break-after: avoid mantiene esos cuatro elementos
     juntos. La cadena termina en el primer párrafo de explicación, así que el
     resto del procedimiento puede repartirse entre páginas con normalidad y
     no se generan páginas casi vacías. */

  .anvi-manual .contenido h3 {
    break-after: avoid;
    page-break-after: avoid;
    break-inside: avoid;
    page-break-inside: avoid;
    /* Sin break-before: el h3 solo cambia de página si la cadena lo empuja. */
    break-before: auto;
    page-break-before: auto;
  }

  .anvi-manual .contenido p:has(> a[href*="/manual/videos/"]) {
    break-after: avoid;
    page-break-after: avoid;
    break-inside: avoid;
    page-break-inside: avoid;
    break-before: avoid;
    page-break-before: avoid;
  }

  .anvi-manual .contenido h4 {
    break-after: avoid;
    page-break-after: avoid;
    break-inside: avoid;
    page-break-inside: avoid;
    break-before: avoid;
    page-break-before: avoid;
  }

  /* Primer párrafo tras el h4: no puede quedar solo con una línea al pie.
     No lleva break-after, de modo que la cohesión se detiene aquí. */
  .anvi-manual .contenido h4 + p {
    break-before: avoid;
    page-break-before: avoid;
    orphans: 3;
    widows: 3;
  }

  /* Respaldo para motores sin :has() (el PDF se genera con Chromium, que sí
     lo soporta; esto cubre previsualizaciones en otros navegadores).
     El párrafo situado entre un h3 y un h4 es el del enlace. */
  .anvi-manual .contenido h3 + p {
    break-before: avoid;
    page-break-before: avoid;
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .anvi-manual .contenido h3 + p:has(+ h4) {
    break-after: avoid;
    page-break-after: avoid;
  }

  /* El enlace no se parte entre dos páginas. */
  .anvi-manual .contenido p > a[href*="/manual/videos/"] {
    break-inside: avoid;
    page-break-inside: avoid;
  }
}
