/* ==========================================================================
   Nodus Inteligencia — páginas legales
   Se carga después de styles.css y reutiliza sus variables. Una sola columna
   de lectura de unos 70 caracteres sobre papel liso, sin la retícula de fondo.
   ========================================================================== */

.legal {
  position: relative;
  z-index: 1;
  padding: var(--nav-h) var(--margen) 0;
}

.legal__hoja {
  width: 100%;
  max-width: calc(56ch + 2 * var(--s-5)); /* 56ch de esta fuente dan unos 70 caracteres reales */
  margin: 0 auto;
  padding: var(--s-5) var(--s-5) var(--s-6);
  background: var(--papel);
  border-inline: 1px solid var(--reticula);
}

/* Cabecera de la página */
.legal__titulo {
  font-size: var(--fs-h1);
  font-weight: 700;
  font-stretch: 118%;
  letter-spacing: -.02em;
  line-height: 1.05;
}
.legal__fecha {
  margin-top: var(--s-2);
  color: var(--tinta-suave);
  font-size: var(--fs-small);
}

/* Texto corrido: justificado, sin partir palabras con guion y con la última
   línea sin estirar. */
.legal p,
.legal li,
.legal dd {
  max-width: none;
  text-align: justify;
  text-justify: inter-word;
  text-align-last: left;
  -webkit-hyphens: none;
  hyphens: none;
  overflow-wrap: break-word;
}
.legal__entrada { margin-top: var(--s-4); }
.legal p + p,
.legal p + .legal__bloque,
.legal .legal__bloque + p { margin-top: var(--s-2); }
.legal a { color: var(--azul-texto); }

/* Índice de anclas */
.legal__indice {
  margin-top: var(--s-4);
  padding: var(--s-2) 0;
  border-block: 1px solid var(--reticula);
}
.legal__indice ol {
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: indice;
}
.legal__indice li {
  counter-increment: indice;
  display: grid;
  grid-template-columns: 2.5em minmax(0, 1fr);
  align-items: baseline;
  text-align: left;
}
.legal__indice li::before {
  content: counter(indice) ".";
  color: var(--tinta-suave);
  font: 500 var(--fs-small)/1.5 var(--mono);
  font-variant-numeric: tabular-nums;
}
.legal__indice a {
  display: inline-block;
  padding: 4px 0;
  text-decoration: none;
}
.legal__indice a:hover { text-decoration: underline; }

/* Apartados numerados */
.legal__cuerpo { counter-reset: apartado; }
.legal__seccion {
  counter-increment: apartado;
  margin-top: var(--s-5);
  scroll-margin-top: calc(var(--nav-h) + var(--s-3));
}
.legal__seccion > h2 {
  margin-bottom: var(--s-2);
  font-size: var(--fs-h3);
  font-weight: 700;
  font-stretch: 112%;
  letter-spacing: -.005em;
  line-height: 1.2;
}
.legal__seccion > h2::before {
  content: counter(apartado) ". ";
}
.legal h3 {
  margin: var(--s-3) 0 var(--s-1);
  font-size: var(--fs-body);
  font-weight: 600;
  line-height: 1.35;
}
.legal__seccion > h2 + h3 { margin-top: 0; }

/* Listas */
.legal ul {
  margin: var(--s-2) 0;
  padding-left: 1.25em;
  list-style: square;
}
.legal ul li + li { margin-top: var(--s-1); }
.legal ul li::marker { color: var(--azul); }
.legal ul:last-child { margin-bottom: 0; }
.legal ul + .legal__bloque { margin-top: var(--s-2); }

/* Datos identificativos */
.legal__datos {
  margin: var(--s-2) 0;
  border-top: 1px solid var(--reticula);
}
.legal__datos > div {
  display: grid;
  gap: 2px var(--s-3);
  padding: var(--s-1) 0;
  border-bottom: 1px solid var(--reticula);
}
.legal__datos dt {
  color: var(--tinta-suave);
  font-size: var(--fs-small);
}
.legal__datos dd {
  margin: 0;
  overflow-wrap: anywhere;
  text-align: left;
}
@media (min-width: 640px) {
  .legal__datos > div { grid-template-columns: 13em minmax(0, 1fr); align-items: baseline; }
}

/* Selector de idioma dentro de la cabecera fija */
.legal-cabecera .nav__acciones { position: relative; }

/* Palabras largas como «Datenschutzerklärung» deben caber sin partirse */
@media (max-width: 639px) {
  .legal__titulo {
    font-size: min(var(--fs-h1), 8.4vw);
    font-stretch: 100%;
  }
}

/* En móvil la marca a ancho completo y el nombre del idioma no caben juntos */
@media (max-width: 439px) {
  .legal-cabecera .nav__nombre { font-stretch: 100%; }
  .legal-cabecera .idioma > summary {
    gap: 4px;
    padding: 0 8px;
    letter-spacing: 0;
  }
}

/* En móvil la hoja ocupa todo el ancho útil */
@media (max-width: 639px) {
  .legal { padding-inline: 0; }
  .legal__hoja {
    padding: var(--s-4) var(--margen) var(--s-5);
    border-inline: 0;
  }
}

/* Impresión: solo el texto */
@media print {
  .legal-cabecera,
  .legal__indice,
  .marco,
  .pie { display: none; }
  body { background: none; }
  .legal { padding: 0; }
  .legal__hoja { max-width: none; padding: 0; border: 0; }
  .legal a { color: inherit; }
}
