/* ==========================================================================
   CHASQUI — libro.css
   Dueño: módulo «libro» (§4.14 E). La vista /app/g/:slug/libro: el libro de
   gira en la pantalla (hojas de papel sobre la mesa) y en A4.
   --------------------------------------------------------------------------
   0  Tokens (alias de la paleta de papel de base.css: ningún color nuevo)
   1  La vista y la barra de herramientas
   2  El libro: hojas, encabezado de cada sección
   3  Portada e índice
   4  Tablas: la base, la caja que se desliza y el resumen por ciudad
   5  Consideraciones, ficha de cada ciudad, rooming list y vehículos
   6  La tabla DÍA · HORA · LUGAR · ACTIVIDAD
   7  El enlace para compartir
   8  Teléfono
   9  Impresión: A4, portada a página completa, saltos y tablas enteras

   Se reutiliza de app.css: .mesa (el fondo de la mesa), .segmentos,
   .boton*, .pastilla*, .campo*, .modal*, .visualmente-oculto, .no-imprimir
   y el @media print que ya esconde el cascarón (barra lateral, cabecera,
   barra inferior, franjas, guía y avisos).
   ========================================================================== */

/* ── 0 · TOKENS ─────────────────────────────────────────────────────────── */
/*  Solo alias: el libro es papel impreso en tinta, con el sodio en su
    versión para texto (la marca en tinta, también al imprimir).             */
:root{
  --libro-ancho:900px;
  --libro-acento:var(--sodio-texto);
  --libro-raya:var(--papel-2);
  --libro-borde:var(--papel-3);
  --libro-cab-fondo:var(--papel-2);
  --libro-dia-fondo:var(--sup-1);
}

/* ── 1 · LA VISTA Y LA BARRA DE HERRAMIENTAS ────────────────────────────── */
.libro-vista{display:flex;flex-direction:column;gap:1.25rem;min-width:0}

.libro-herramientas{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  justify-content:space-between;
  gap:1rem 1.5rem;
  padding:1rem 1.1rem;
  border:1px solid var(--brd);
  border-radius:var(--radio);
  background:var(--sup-1);
}
.libro-herramientas__edicion{display:flex;flex-direction:column;gap:.45rem;flex:1 1 22rem;min-width:0}
.libro-herramientas__etiqueta{
  font-family:var(--f-mono);
  font-size:.74rem;
  letter-spacing:.09em;
  text-transform:uppercase;
  color:var(--tx-3);
}
.libro-herramientas__segmentos{align-self:flex-start;max-width:100%}
.libro-herramientas__segmentos .segmentos__opcion:focus-visible{outline:2px solid var(--sodio);outline-offset:-2px}
.libro-herramientas__unica{font-weight:700}
.libro-herramientas__ayuda{max-width:62ch;font-size:.88rem;line-height:1.5;color:var(--tx-2);text-wrap:pretty}
.libro-herramientas__acciones{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}
.libro-herramientas__enlace .pastilla{font-size:.72rem}

/* ── 2 · EL LIBRO ───────────────────────────────────────────────────────── */
/*  Una hoja por sección, una debajo de otra sobre la mesa. */
.libro{display:flex;flex-direction:column;gap:clamp(1rem,3vw,2rem);min-width:0}
.libro.is-cargando{opacity:.55;transition:opacity var(--t-rapido) var(--ease)}

.libro__pagina{
  position:relative;
  width:100%;
  min-width:0;
  max-width:var(--libro-ancho);
  margin-inline:auto;
  padding:clamp(1.3rem,4vw,2.6rem) clamp(1rem,4vw,2.6rem) clamp(1.5rem,4vw,2.6rem);
  border-radius:4px;
  background:var(--papel);
  color:var(--tinta);
  box-shadow:var(--sombra-papel),var(--sombra-hojas);
  /* Un ancla del índice no deja el título bajo la cabecera pegada del teléfono. */
  scroll-margin-top:calc(var(--cabecera-alto) + env(safe-area-inset-top) + 12px);
}
@media (min-width:900px){.libro__pagina{scroll-margin-top:20px}}

.libro__cab{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  /* El número, el título y «Volver» en la misma línea de base, aunque el
     título lleve bajada («Selección cercana a los recintos»). */
  align-items:baseline;
  gap:.3rem 1rem;
  margin-bottom:1.3rem;
  padding-bottom:.8rem;
  border-bottom:2px solid var(--libro-acento);
}
.libro__numero{
  font-family:var(--f-mono);
  font-size:clamp(1.5rem,4vw,2.1rem);
  font-weight:700;
  line-height:1;
  color:var(--libro-acento);
  font-feature-settings:"tnum" 1;
}
.libro__cab-textos{min-width:0}
.libro__titulo{
  font-family:var(--f-display);
  font-weight:800;
  font-stretch:108%;
  font-size:clamp(1.12rem,3.2vw,1.6rem);
  line-height:1.1;
  letter-spacing:-.005em;
  text-transform:uppercase;
  text-wrap:balance;
  overflow-wrap:anywhere;
}
.libro__titulo:focus{outline:none}
.libro__titulo:focus-visible{outline:2px solid var(--sodio);outline-offset:4px}
.libro__bajada{margin-top:.3rem;font-size:.88rem;color:var(--tinta-2)}
/* El renglón de arriba de cada página (banda · gira · edición), como /s/. */
.libro__contexto{
  margin-bottom:.3rem;
  font-family:var(--f-mono);
  font-size:.68rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--tinta-3);
  overflow-wrap:anywhere;
}
.libro__volver{
  display:inline-flex;
  align-items:center;
  min-height:32px;
  font-size:.8rem;
  color:var(--tinta-3);
  text-decoration:underline;
  text-decoration-color:var(--libro-borde);
  text-underline-offset:3px;
  white-space:nowrap;
}
.libro__volver:hover{color:var(--libro-acento);text-decoration-color:currentColor}
@media (pointer:coarse){.libro__volver{min-height:var(--tactil)}}

.libro__nada{color:var(--tinta-3);font-size:.92rem}

/* El sello de lo que falta: el «TBC» del libro de Daniela. */
.libro__por-confirmar{
  display:inline-block;
  padding:.04rem .4rem;
  border:1px dashed var(--alerta-borde);
  border-radius:4px;
  background:var(--alerta-tinte);
  color:var(--alerta);
  font-family:var(--f-mono);
  font-size:.66rem;
  font-weight:700;
  letter-spacing:.06em;
  line-height:1.55;
  text-transform:uppercase;
  white-space:nowrap;
  /* Si no cabe, «POR / CONFIRMAR» en dos renglones, nunca a mitad de palabra. */
  overflow-wrap:normal;
}
.libro__valor{white-space:pre-line}
.libro__vacio{color:var(--tinta-3)}
.libro__detalle{display:block;margin-top:.12rem;font-size:.8rem;line-height:1.42;color:var(--tinta-2);font-weight:400}
.libro__telefono{
  color:var(--tinta);
  font-feature-settings:"tnum" 1;
  text-decoration:underline;
  text-decoration-color:var(--libro-borde);
  text-underline-offset:3px;
  white-space:nowrap;
}
.libro__telefono:hover{text-decoration-color:currentColor}
/* Si igual un teléfono inventa un enlace (iOS sin format-detection), que no se note. */
.libro a[x-apple-data-detectors]{color:inherit!important;text-decoration:none!important}

/* La pastilla de grupo, como en la hoja del día (§4.11). */
.libro__grupo{
  display:inline-block;
  margin-left:.35rem;
  padding:0 .35rem;
  border:1px dashed var(--brd-3);
  border-radius:3px;
  color:var(--tinta-2);
  font-family:var(--f-mono);
  font-size:.6rem;
  font-weight:700;
  letter-spacing:.06em;
  line-height:1.6;
  text-transform:uppercase;
  vertical-align:.12em;
  white-space:nowrap;
}
.libro__grupo--artistas{border-style:solid;border-color:var(--sodio-borde);color:var(--sodio-texto)}

/* ── 3 · PORTADA E ÍNDICE ───────────────────────────────────────────────── */
.libro__portada{
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  gap:2.4rem;
  min-height:min(82vh,60rem);
  padding-block:clamp(2rem,6vw,4.2rem);
  border-top:10px solid var(--sodio);
}
.libro__portada-arriba{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}
.libro__quipu{flex:none;color:var(--libro-acento)}
.libro__quipu-cordel,.libro__quipu-hilo{fill:none;stroke:currentColor;stroke-linecap:round}
.libro__quipu-cordel{stroke-width:4}
.libro__quipu-hilo{stroke-width:2.5}
.libro__quipu-nudo{fill:currentColor}
.libro__portada-edicion{
  font-family:var(--f-mono);
  font-size:.84rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--libro-acento);
}
.libro__portada-centro{display:flex;flex-direction:column;gap:1rem;min-width:0}
.libro__portada-banda{
  font-family:var(--f-display);
  font-weight:800;
  font-stretch:115%;
  font-size:clamp(2.3rem,8.5vw,4.6rem);
  line-height:.94;
  letter-spacing:-.035em;
  text-transform:uppercase;
  text-wrap:balance;
  overflow-wrap:anywhere;
}
.libro__portada-gira{
  font-family:var(--f-display);
  font-weight:700;
  font-stretch:106%;
  font-size:clamp(1.1rem,3.6vw,1.75rem);
  line-height:1.15;
  letter-spacing:.005em;
  text-transform:uppercase;
  color:var(--tinta-2);
  overflow-wrap:anywhere;
}
.libro__portada-ciudades{
  padding-top:1rem;
  border-top:1px solid var(--libro-borde);
  font-family:var(--f-mono);
  font-size:clamp(.78rem,2.2vw,.96rem);
  letter-spacing:.08em;
  line-height:1.75;
  text-transform:uppercase;
}
/* Cada ciudad entera en su renglón; el corte cae en el « · ». */
.libro__portada-ciudad{white-space:nowrap}
.libro__portada-punto{color:var(--libro-acento)}
.libro__portada-meses{
  font-family:var(--f-mono);
  font-size:clamp(.92rem,2.6vw,1.12rem);
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--libro-acento);
}
.libro__portada-base{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:.35rem 1.2rem;
  padding-top:1rem;
  border-top:1px dashed var(--libro-borde);
  font-size:.8rem;
  color:var(--tinta-3);
}
.libro__portada-archivada{font-family:var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--tinta-2)}
.libro__portada-chasqui{margin-left:auto}

.libro__indice-lista{list-style:none;display:flex;flex-direction:column}
.libro__indice-enlace{
  display:grid;
  grid-template-columns:2.8rem minmax(0,auto) minmax(1rem,1fr);
  align-items:baseline;
  gap:.8rem;
  min-height:var(--tactil);
  padding:.6rem 0;
  border-bottom:1px solid var(--libro-raya);
  color:var(--tinta);
}
.libro__indice-numero{
  font-family:var(--f-mono);
  font-weight:700;
  color:var(--libro-acento);
  font-feature-settings:"tnum" 1;
}
.libro__indice-texto{
  font-family:var(--f-display);
  font-weight:700;
  letter-spacing:.01em;
  text-transform:uppercase;
  overflow-wrap:anywhere;
}
.libro__indice-puntos{align-self:center;height:0;border-bottom:2px dotted var(--libro-borde)}
.libro__indice-enlace:hover .libro__indice-texto{color:var(--libro-acento)}
.libro__indice-enlace:focus-visible{outline:2px solid var(--sodio);outline-offset:2px;border-radius:2px}

/* ── 4 · TABLAS ─────────────────────────────────────────────────────────── */
.libro__tabla{
  width:100%;
  border-collapse:collapse;
  font-size:.88rem;
  line-height:1.42;
  color:var(--tinta);
}
.libro__tabla th,.libro__tabla td{
  padding:.5rem .6rem;
  border-bottom:1px solid var(--libro-raya);
  text-align:left;
  vertical-align:top;
  overflow-wrap:anywhere;
}
.libro__tabla thead th{
  border-bottom:2px solid var(--libro-acento);
  background:var(--libro-cab-fondo);
  color:var(--tinta-2);
  font-family:var(--f-mono);
  font-size:.7rem;
  font-weight:700;
  letter-spacing:.09em;
  text-transform:uppercase;
  overflow-wrap:normal;
}
.libro__tabla tbody th{font-weight:600}
.libro__tabla b{font-weight:700}

/* La caja que se desliza de lado: la tabla puede ser más ancha que la hoja
   (el resumen de 8 ciudades en el teléfono) sin mover la página. */
.libro__desliza{
  /* position:relative la hace el bloque contenedor de lo que va con
     position:absolute adentro (el texto de .visualmente-oculto del +1 o de
     «No aplica»): sin esto, ese texto de 1 px no lo recorta el overflow y,
     en una columna del resumen que queda fuera de la caja, estiraba la
     página entera de lado (11 ciudades: 1355 px de ancho en una ventana de
     1280, y el teléfono se alejaba hasta 1252 px). */
  position:relative;
  max-width:100%;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  border:1px solid var(--libro-raya);
  border-radius:3px;
}
.libro__desliza:focus-visible{outline:2px solid var(--sodio);outline-offset:2px}
.libro__desliza > .libro__tabla--lista[data-columnas="3"]{min-width:30rem}
.libro__desliza > .libro__tabla--lista[data-columnas="4"]{min-width:36rem}
.libro__tabla--lista tbody tr:last-child > *{border-bottom:0}
/* El nombre del lugar (la primera columna) se corta con guion y no en
   cualquier letra: a 375 px «Monumento Natural» salía «Monument / o». */
.libro__tabla--lista tbody th{overflow-wrap:normal;-webkit-hyphens:auto;hyphens:auto}
.libro__apartado + .libro__apartado{margin-top:1.6rem}
.libro__apartado > .libro__tabla + .libro__desliza,
.libro__apartado > .libro__desliza + .libro__desliza,
.libro__apartado > .libro__tabla + .libro__tabla,
.libro__apartado > .libro__desliza + .libro__tabla{margin-top:1rem}

.libro__solo-papel{display:none}

/* Resumen por ciudad: una columna por ciudad, las filas de Daniela. */
/* En el escritorio caben ocho ciudades en la hoja; en el teléfono la tabla
   pide su ancho y se desliza. Los nombres largos se parten con guion
   («ANTOFA-GASTA»), no en cualquier letra. */
.libro__resumen{
  /* 5 rem por ciudad: con 5,4 la gira de ocho ciudades pedía 810 px y la
     hoja del escritorio (900 px menos su margen) deja 779, así que la última
     columna quedaba cortada detrás del deslizador. */
  min-width:calc(7.4rem + var(--columnas,4) * 5rem);
  table-layout:fixed;
  font-size:.78rem;
}
.libro__resumen th,.libro__resumen td{padding:.45rem .45rem}
.libro__resumen th:first-child{width:7.4rem}
.libro__resumen td{white-space:pre-line}
/* La columna de las etiquetas queda quieta al deslizar: se sabe qué fila es. */
.libro__resumen th:first-child{position:sticky;left:0;z-index:1}
.libro__resumen tbody th{
  background:var(--papel);
  box-shadow:1px 0 0 var(--libro-raya);
  color:var(--tinta-2);
  font-family:var(--f-mono);
  font-size:.66rem;
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.libro__resumen-info{box-shadow:1px 0 0 var(--libro-raya)}
.libro__resumen-ciudad{
  display:block;
  color:var(--tinta);
  font-family:var(--f-display);
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.01em;
  line-height:1.2;
  overflow-wrap:normal;
  -webkit-hyphens:auto;
  hyphens:auto;
}
.libro__resumen-dias{display:block;margin-top:.15rem;font-weight:400;letter-spacing:.04em;color:var(--tinta-3)}
/* El sello más angosto en el resumen: con ocho ciudades en el escritorio cada
   columna mide 83 px y «CONFIRMAR» con el espaciado de siempre se salía 7 px
   de la última, que quedaba deslizable por eso. */
.libro__resumen .libro__por-confirmar{white-space:normal;padding-inline:.25rem;letter-spacing:.02em}

/* ── 5 · CONSIDERACIONES, FICHA, ROOMING Y VEHÍCULOS ────────────────────── */
.libro__subtitulo{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.4rem;
  margin-bottom:.65rem;
  font-family:var(--f-display);
  font-size:.96rem;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.libro__subtitulo .libro__grupo{margin-left:0}
.libro__subtitulo-menor{
  margin:.9rem 0 .4rem;
  color:var(--tinta-2);
  font-family:var(--f-mono);
  font-size:.74rem;
  font-weight:700;
  letter-spacing:.09em;
  text-transform:uppercase;
}
.libro__consideracion + .libro__consideracion{margin-top:1.5rem}
.libro__vinetas{list-style:none;display:flex;flex-direction:column;gap:.45rem}
.libro__vinetas li{position:relative;padding-left:1.3rem;line-height:1.52;text-wrap:pretty}
/* Un carácter y no un fondo: la viñeta sale impresa aunque la impresora
   no imprima fondos. */
.libro__vinetas li::before{
  content:"●";
  position:absolute;
  left:.1rem;
  top:.05em;
  color:var(--libro-acento);
  font-size:.72em;
}

/* La ficha de cada ciudad: Hotel, Dirección, Llegada, Check-in… */
.libro__ficha{columns:2 19rem;column-gap:2rem;margin-bottom:1.5rem}
.libro__dato{
  display:grid;
  grid-template-columns:8.4rem minmax(0,1fr);
  gap:.6rem;
  padding:.45rem 0;
  border-bottom:1px solid var(--libro-raya);
  font-size:.9rem;
  break-inside:avoid;
}
.libro__dato dt{
  padding-top:.14rem;
  color:var(--tinta-3);
  font-family:var(--f-mono);
  font-size:.68rem;
  letter-spacing:.07em;
  text-transform:uppercase;
}
.libro__dato dd{min-width:0;overflow-wrap:anywhere}

.libro__rooming{margin-bottom:1.5rem}
.libro__habitaciones{
  list-style:none;
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));
  gap:.45rem .8rem;
}
.libro__habitacion{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:.1rem .5rem;
  padding:.45rem .65rem;
  border:1px solid var(--libro-raya);
  border-radius:3px;
  font-size:.86rem;
  break-inside:avoid;
}
.libro__habitacion-tipo{
  color:var(--tinta-3);
  font-family:var(--f-mono);
  font-size:.66rem;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.libro__habitacion-quienes{flex-basis:100%;color:var(--tinta-2)}

.libro__vehiculos{margin-top:1.6rem}
.libro__lista-vehiculos{list-style:none;display:flex;flex-direction:column}
.libro__vehiculo{
  display:grid;
  grid-template-columns:4.6rem minmax(0,1fr);
  gap:.8rem;
  padding:.6rem 0;
  border-bottom:1px solid var(--libro-raya);
  font-size:.88rem;
  break-inside:avoid;
}
.libro__vehiculo:last-child{border-bottom:0}
.libro__vehiculo-dia{
  font-family:var(--f-mono);
  font-size:.8rem;
  font-weight:700;
  letter-spacing:.03em;
  white-space:nowrap;
}
.libro__vehiculo-texto{min-width:0}
.libro__vehiculo-nombre{overflow-wrap:anywhere}
.libro__vehiculo-icono{display:inline-flex;margin-right:.35rem;color:var(--tinta-3);vertical-align:-.15em}
.libro__frase{white-space:nowrap}

/* ── 6 · DÍA · HORA · LUGAR · ACTIVIDAD ─────────────────────────────────── */
.libro__programa .libro__col-dia{width:5.4rem}
.libro__programa .libro__col-hora{width:6.9rem}
.libro__programa .libro__col-lugar{width:24%}
.libro__dia > tr:first-child > *{border-top:2px solid var(--libro-borde)}
.libro__dia-celda{
  border-right:1px solid var(--libro-raya);
  background:var(--libro-dia-fondo);
}
.libro__dia-fecha{
  display:block;
  font-family:var(--f-mono);
  font-size:.86rem;
  font-weight:700;
  letter-spacing:.03em;
  white-space:nowrap;
}
.libro__dia-semana{display:block;margin-top:.1rem;color:var(--tinta-3);font-size:.74rem;font-weight:400}
.libro__dia-semana-corta{display:none}
.libro__dia-estado{
  display:inline-block;
  max-width:100%;
  margin-top:.4rem;
  padding:.02rem .25rem;
  border:1px solid var(--libro-borde);
  border-radius:3px;
  color:var(--tinta-2);
  font-family:var(--f-mono);
  font-size:.58rem;
  font-weight:700;
  letter-spacing:.02em;
  line-height:1.45;
  text-transform:uppercase;
  /* «POR / CONFIRMAR» en dos renglones, nunca «CONFIRM / AR». */
  overflow-wrap:normal;
}
.libro__dia--cancelada .libro__actividad,.libro__dia--cancelada .libro__hora{color:var(--tinta-3);text-decoration:line-through}
.libro__hora{
  font-family:var(--f-mono);
  font-size:.84rem;
  font-weight:700;
  font-feature-settings:"tnum" 1;
  overflow-wrap:normal;
}
.libro__hora .libro__por-confirmar{white-space:normal}
.libro__mas-uno{margin-left:.12rem;color:var(--libro-acento);font-size:.68em;vertical-align:super}
.libro__lugar{color:var(--tinta-2)}
.libro__actividad-titulo{font-weight:600}
.libro__actividad-titulo--show{font-weight:800;letter-spacing:.02em;text-transform:uppercase}
.libro__lugar-movil{display:none}
.libro__fila--nota .libro__actividad{padding-block:.6rem}
.libro__nota-etiqueta{
  display:block;
  color:var(--tinta-3);
  font-family:var(--f-mono);
  font-size:.64rem;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.libro__nota-texto{display:block;margin-top:.15rem;font-size:.84rem;line-height:1.5;color:var(--tinta-2);white-space:pre-line}

/* Transporte: la ciudad en una celda alta, un renglón por servicio. Sin
   guiones automáticos: en papel la columna se angostaba hasta «ANTOFAGAS-
   TA»; así mide al menos la palabra más larga y se corta entre palabras
   («SAN PEDRO / DE ATACAMA»). */
.libro__ciudad-celda{
  width:8rem;
  border-right:1px solid var(--libro-raya);
  background:var(--libro-dia-fondo);
  letter-spacing:.03em;
  text-transform:uppercase;
  overflow-wrap:normal;
}
/* Más específico que «.libro__tabla--lista tbody th», que pide guiones. */
.libro__tabla--lista tbody .libro__ciudad-celda{-webkit-hyphens:manual;hyphens:manual}
.libro__grupo-filas > tr:first-child > *{border-top:2px solid var(--libro-borde)}

/* ── 7 · EL ENLACE PARA COMPARTIR ───────────────────────────────────────── */
.libro-enlace{display:flex;flex-direction:column;gap:1rem}
.libro-enlace__estado{color:var(--tx-2)}
.libro-enlace__url{font-family:var(--f-mono);font-size:.86rem}
.libro-enlace__acciones{display:flex;flex-direction:column;gap:.5rem}

/* ── 8 · TELÉFONO ───────────────────────────────────────────────────────── */
/*  A 375 px la hoja pierde la mesa ancha y la tabla del programa queda en
    tres columnas: el lugar baja bajo la actividad. Las tablas de lista y el
    resumen se deslizan de lado dentro de su caja.                           */
@media screen and (max-width:600px){
  .libro.mesa{padding:.45rem;border-radius:var(--radio)}
  .libro__pagina{padding:1.15rem .85rem 1.35rem}
  .libro__cab{grid-template-columns:auto minmax(0,1fr);gap:.2rem .75rem}
  .libro__volver{grid-column:2;justify-self:start}
  .libro__portada{min-height:0;gap:2rem}
  .libro__ficha{columns:1}
  .libro__dato{grid-template-columns:6.6rem minmax(0,1fr);gap:.5rem;font-size:.86rem}
  .libro__habitaciones{grid-template-columns:repeat(auto-fill,minmax(min(100%,9.5rem),1fr));gap:.4rem}

  .libro__tabla th,.libro__tabla td{padding:.45rem .4rem}
  .libro__indice-enlace{grid-template-columns:2.4rem minmax(0,1fr);gap:.6rem}
  .libro__indice-puntos{display:none}
  /* El resumen se desliza igual: columnas más anchas se leen mejor. */
  .libro__resumen{min-width:calc(6.8rem + var(--columnas,4) * 6.6rem)}
  .libro__resumen th:first-child{width:6.8rem}
  .libro__programa .libro__lugar{display:none}
  .libro__programa .libro__col-dia{width:3.5rem}
  .libro__programa .libro__col-hora{width:4.5rem}
  .libro__lugar-movil{
    display:block;
    margin-top:.14rem;
    color:var(--tinta-3);
    font-family:var(--f-mono);
    font-size:.66rem;
    letter-spacing:.04em;
    text-transform:uppercase;
  }
  .libro__dia-fecha{font-size:.74rem;white-space:normal}
  .libro__dia-semana{display:none}
  .libro__dia-semana-corta{display:block;margin-top:.1rem;color:var(--tinta-3);font-size:.68rem}
  .libro__hora{font-size:.76rem}
  .libro__vehiculo{grid-template-columns:minmax(0,1fr);gap:.15rem}
  .libro-herramientas__acciones{width:100%}
  .libro-herramientas__acciones .boton{flex:1 1 auto}
}

@media (prefers-reduced-motion:reduce){
  .libro.is-cargando{transition:none}
}

/* ── 9 · IMPRESIÓN ──────────────────────────────────────────────────────── */
/*  A4 como el libro de Daniela: la portada a página completa (página con
    nombre propio, sin márgenes), cada sección grande en una hoja nueva, las
    tablas sin partir una fila y con su encabezado repetido en cada hoja, y
    el sodio en su versión de tinta. El cascarón ya lo esconde app.css; acá
    se esconde lo de la vista y se vuelven bloque los contenedores flex de
    arriba, porque un salto de página forzado dentro de un flex no siempre
    se respeta.                                                              */
@page libro{
  size:A4;
  margin:14mm 13mm 15mm;
  @bottom-right{content:counter(page);font-family:var(--f-mono);font-size:7.5pt;color:var(--tinta-3)}
}
@page libro-portada{
  size:A4;
  margin:0;
}

@media print{
  /* Los tamaños del libro van en rem, pensados para la pantalla (16 px). En
     papel el cuerpo va a 9,5 pt como el libro público de /s/: sin esto, las
     horas y los detalles salían más grandes que la tabla, cada fila ocupaba
     el doble y una ciudad corta dejaba su ficha sola en una hoja casi en
     blanco (Calama), con el resumen partido en dos hojas. */
  html:has(.libro-vista){font-size:9.5pt}
  .cascaron__columna:has(.libro-vista),
  .vista:has(> .libro-vista),
  .libro-vista{display:block}
  .libro-vista > .vista__cab,
  .libro-herramientas{display:none!important}

  .libro,
  .libro.mesa{
    display:block;
    padding:0;
    border-radius:0;
    background:none;
    font-size:9.5pt;
    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
  }
  .libro.is-cargando{opacity:1}
  .libro__pagina{
    max-width:none;
    padding:0;
    border-radius:0;
    box-shadow:none;
    break-before:page;
  }
  .libro__pagina:first-child{break-before:auto}

  /* Portada: la hoja entera, con la franja de sodio arriba. Sin páginas con
     nombre (abajo), el navegador usa sus márgenes: la portada ocupa lo que
     cabe con cualquiera de ellos, sin empujar una hoja en blanco. */
  .libro__portada{
    box-sizing:border-box;
    min-height:245mm;
    margin:0;
    padding:16mm 14mm 12mm;
    border-top:10mm solid var(--sodio);
    break-after:page;
  }
  .libro__portada-banda{font-size:42pt}
  .libro__portada-gira{font-size:17pt}
  .libro__portada-ciudades{font-size:10pt}
  .libro__portada-meses{font-size:11pt}
  .libro__portada-base{font-size:8pt}

  .libro__cab{margin-bottom:6mm;padding-bottom:3mm}
  .libro__numero{font-size:20pt}
  .libro__titulo{font-size:15pt}
  .libro__volver{font-size:7.5pt;min-height:0}
  .libro__cab,.libro__subtitulo,.libro__subtitulo-menor{break-after:avoid}
  .libro__indice-enlace{min-height:0;padding:2.2mm 0}

  .libro__tabla{font-size:8.5pt}
  /* «07:30–10:00» y el sello «Por confirmar» en un solo renglón: con la
     columna de la pantalla, el rango se partía en el «–». */
  .libro__programa .libro__col-dia{width:19mm}
  .libro__programa .libro__col-hora{width:27mm}
  /* En la pantalla el sello puede partirse («POR / CONFIRMAR») en la columna
     angosta; en papel cabe entero en los 27 mm con menos aire. Partido, cada
     línea por confirmar medía el doble (el libro de Daniela tiene muchas) y
     una ciudad dejaba sus vehículos solos en una hoja casi en blanco. */
  .libro__hora .libro__por-confirmar{white-space:nowrap;padding-inline:.25rem;letter-spacing:.02em}
  .libro__resumen th,.libro__resumen td{padding:1.2mm 1.4mm}
  .libro__tabla thead{display:table-header-group}
  .libro__tabla tr,
  .libro__dato,
  .libro__habitacion,
  .libro__vehiculo,
  .libro__vinetas li{break-inside:avoid}
  /* Un día corto va entero en una hoja y una tabla corta también: así el
     encabezado nunca queda solo al pie de una hoja. Lo largo se parte entre
     filas, nunca a mitad de una, con el encabezado repetido arriba. */
  .libro__dia--corto,
  .libro__grupo-filas,
  .libro__programa--corto,
  .libro__resumen-partes > .libro__tabla,
  .libro__tabla--lista{break-inside:avoid}
  /* La primera fila de un día largo lleva la celda alta del día (rowspan):
     con el «no partir» de las filas, Chrome la medía con todo el día y la
     pasaba a la hoja siguiente, y el encabezado de la tabla quedaba solo al
     pie de la ficha. Se parte como cualquier otra fila (nunca a mitad). */
  .libro__dia:not(.libro__dia--corto) > tr:first-child{break-inside:auto}
  .libro__desliza{overflow:visible;border:0;border-radius:0}
  .libro__desliza > .libro__tabla--lista[data-columnas]{min-width:0}
  .libro__resumen{min-width:0;font-size:7.5pt}
  .libro__resumen th:first-child{position:static;width:24mm}
  .libro__resumen-partes > .libro__tabla + .libro__tabla{margin-top:7mm}
  .libro__solo-pantalla{display:none!important}
  .libro__solo-papel{display:block}
  .libro__lugar-movil{display:none!important}

  /* En blanco y negro el sello se lee igual: sin fondo, con borde. */
  .libro__por-confirmar{background:none;border-color:var(--tinta-3);color:var(--tinta-2)}
  .libro__grupo,.libro__grupo--artistas{border-color:var(--tinta-3);color:var(--tinta)}
  .libro__telefono{text-decoration:none}
  .libro__ficha{columns:2 70mm}
}

/* Con páginas con nombre (Chrome, Edge, Firefox): el libro en su @page A4 y
   la portada en una hoja sin márgenes, a página completa. Un milímetro menos
   que el A4 para que el redondeo no empuje una hoja en blanco. */
@supports (page:libro){
  @media print{
    .libro,.libro.mesa{page:libro}
    .libro__portada{
      page:libro-portada;
      height:296mm;
      min-height:0;
      padding:24mm 20mm 16mm;
      border-top-width:14mm;
      overflow:hidden;
    }
  }
}
