/*
 * ac-home.css — /home de Agua Circular. Solo index.php.
 * Carga al final del <head> para ganar la cascada sobre el CSS heredado.
 * Los tokens de color (--ac-*) se declaran en css/ac-header.css, que también
 * carga en index.php; aquí solo se añaden los propios del home.
 *
 * Dirección: "instrumento y territorio". Agua Circular es una empresa de datos
 * sobre un territorio físico, así que la página alterna pasajes de precisión
 * (filetes, cifras tabulares, listas exactas) con pasajes de territorio
 * (fotografía de los ríos, a sangre). El ritmo claro/oscuro es estructural,
 * no decorativo: lo oscuro sostiene la prueba y el dato, lo claro la oferta.
 *
 * Las secciones nuevas NO llevan clases cid-*, así que no heredan nada del CSS
 * de Mobirise: se estilan limpias desde aquí. Las que conservan un carrusel
 * legado sí mantienen .clients + id (contrato de mbr-clients-slider.js) y se
 * corrigen por encima.
 */

/* ========================================================================
   0. Tokens propios del home y utilidades
   ======================================================================== */

:root {
  /* Ritmo vertical: tres densidades, para que las secciones no midan todas igual. */
  --ac-aire-xl: clamp(5rem, 10vw, 9rem);
  --ac-aire-l: clamp(4rem, 7vw, 6.5rem);
  --ac-aire-m: clamp(3rem, 5vw, 4.5rem);

  --ac-borde-claro: rgb(16 24 32 / 0.12);
  --ac-borde-oscuro: rgb(255 255 255 / 0.16);

  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Todo dato numérico del home va en cifras tabulares: es una página sobre
   caudales, precios y conteos, y las cifras proporcionales bailan al animarse. */
.ac-cifra,
.ac-dato {
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum' 1;
}

/* bootstrap.min.css:6 (reboot) declara
   button:focus { outline: 5px auto -webkit-focus-ring-color }
   y Chrome lo pinta como un rectángulo negro alrededor de cualquier <button>
   pulsado con el ratón. Nuestro anillo azul vive en :focus-visible, que
   deliberadamente NO coincide al hacer clic en un botón, así que el negro salía
   sin que ninguna regla propia lo pidiera.
   Se apaga solo en el caso en que el navegador considera que el foco no debe
   verse; con teclado sigue el anillo azul definido junto a cada botón. Escribirlo
   como :not(:focus-visible) además hace que un navegador sin soporte descarte la
   regla entera y conserve su indicador por defecto, en vez de quedarse sin foco
   visible. */
.ac-riel__btn:focus:not(:focus-visible),
.ac-equipo__btn:focus:not(:focus-visible),
.ac-equipo__cerrar:focus:not(:focus-visible) {
  outline: none;
}

/* ========================================================================
   1. Hero
   ======================================================================== */

.ac-hero {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  background-color: var(--ac-abismo);
  /* mbr-additional.css:1028 declara background-image: url(06-ro-rapel-v2-2000x1469.png)
     sobre esta misma cid. El hero pasó a <img> con srcset hace tiempo, pero el PNG
     legado se seguía descargando -- 498 KB medidos -- para quedar completamente
     tapado por la galería. Y no es peso inocente: al ser un fondo de CSS competía
     por ancho de banda con la foto que sí es el LCP. */
  background-image: none;
  /* mbr-fullscreen (assets/theme/css/style.css) fija min-height:100vh. Se acota:
     a pantalla completa el hero empujaba todo el contenido fuera del pliegue. */
  min-height: clamp(540px, 78vh, 720px);
}

.ac-hero__galeria {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.ac-hero__foto {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 0;
  background-size: cover;
  background-position: center;
  /* Curva simétrica y lenta: el cruce debe leerse como disolución, no como corte. */
  transition: opacity 4000ms ease-in-out;
}
.ac-hero__foto.is-activa {
  opacity: 1;
  z-index: 1;
}

.ac-hero__foto picture,
.ac-hero__foto img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.ac-hero__foto img {
  filter: blur(3px);
  transform: scale(1.06);
}
/* El acercamiento lento tiene que sobrevivir al fundido de salida.
   Antes la animación sólo se declaraba en ".is-activa img": al quitar esa
   clase la animación desaparecía y la imagen volvía de golpe a scale(1.06)
   justo mientras seguía visible durante los 4s del cruce -- se veía como si
   la foto se alejara de un tirón.

   Ahora se declara idéntica en los dos estados. Al pasar de .is-activa a
   .fue-activa el valor calculado de `animation` no cambia, así que el
   navegador NO reinicia la animación: la foto saliente sigue creciendo sin
   interrupción hasta desaparecer. La duración cubre el ciclo completo
   (7s de sostén + 4s de cruce = 11s), de modo que nunca llega al final
   estando a la vista. Reiniciarla en la reentrada es cosa de ac-hero.js. */
.ac-hero__foto.is-activa img,
.ac-hero__foto.fue-activa img {
  animation: ac-hero-respirar 11000ms linear forwards;
}
@keyframes ac-hero-respirar {
  from {
    transform: scale(1.06);
  }
  to {
    transform: scale(1.1);
  }
}

.ac-hero__velo {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: linear-gradient(to top right, rgb(4 18 27 / 0.86) 0%, rgb(4 18 27 / 0.3) 72%);
}

.ac-hero__marco {
  position: relative;
  z-index: 3;
  padding-top: clamp(2.5rem, 5vw, 4rem);
  padding-bottom: clamp(4.5rem, 8vw, 6.5rem);
}

.ac-hero__titulo {
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: clamp(2.25rem, 5.2vw, 4.25rem);
  line-height: 1.03;
  letter-spacing: -0.03em;
  color: #fff;
  text-wrap: balance;
  max-width: 16ch;
  margin: 0 0 1.35rem;
}

.ac-hero__bajada {
  font-family: 'Rubik', sans-serif;
  font-weight: 300;
  font-size: clamp(1.0625rem, 1.5vw, 1.3125rem);
  line-height: 1.6;
  color: rgb(255 255 255 / 0.92);
  max-width: 46ch;
  text-wrap: pretty;
  margin: 0 0 2rem;
}
.ac-hero__acciones {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* ---------- Botones ---------- */
.ac-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  text-align: center;
  font-family: 'Rubik', sans-serif;
  font-weight: 500;
  font-size: 0.9375rem;
  line-height: 1.25;
  letter-spacing: 0.01em;
  padding: 0.9rem 1.75rem;
  border-radius: 3px;
  border: 1.5px solid transparent;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 180ms var(--ease-out-quart), border-color 180ms var(--ease-out-quart),
    color 180ms var(--ease-out-quart), transform 180ms var(--ease-out-quart);
}
.ac-btn:hover {
  transform: translateY(-1px);
}
.ac-btn--primario {
  background-color: var(--ac-acento);
  border-color: var(--ac-acento);
  color: #fff;
}
.ac-btn--primario:hover,
.ac-btn--primario:focus-visible {
  background-color: #174d8f;
  border-color: #174d8f;
  color: #fff;
}
.ac-btn--fantasma {
  background-color: rgb(255 255 255 / 0.06);
  border-color: rgb(255 255 255 / 0.5);
  color: #fff;
}
.ac-btn--fantasma:hover,
.ac-btn--fantasma:focus-visible {
  background-color: rgb(255 255 255 / 0.16);
  border-color: #fff;
  color: #fff;
}
.ac-btn--tinta {
  background-color: transparent;
  border-color: var(--ac-borde-claro);
  color: var(--ac-tinta);
}
.ac-btn--tinta:hover,
.ac-btn--tinta:focus-visible {
  background-color: var(--ac-tinta);
  border-color: var(--ac-tinta);
  color: #fff;
}
.ac-btn:focus-visible {
  outline: 2px solid var(--ac-cian);
  outline-offset: 3px;
}

.ac-hero__pie {
  position: absolute;
  z-index: 3;
  left: clamp(1.25rem, 4vw, 4rem);
  bottom: 1.5rem;
  margin: 0;
  font-family: 'Rubik', sans-serif;
  font-size: 0.8125rem;
}
.ac-hero__pie a {
  color: rgb(255 255 255 / 0.82);
  text-decoration: none;
  border-bottom: 1px solid rgb(255 255 255 / 0.35);
  transition: color 160ms var(--ease-out-quart), border-color 160ms var(--ease-out-quart);
}
.ac-hero__pie a:hover,
.ac-hero__pie a:focus-visible {
  color: #fff;
  border-color: #fff;
}

.ac-hero .mbr-arrow {
  z-index: 3;
}
.ac-hero .mbr-arrow a {
  color: #fff;
}

/* Entrada de primera carga. El contenido es visible por defecto: sin la clase
   .ac-hero--animar no ocurre nada, así que un render sin JS nunca queda en blanco. */
@keyframes ac-hero-revelar {
  from {
    opacity: 0;
    transform: translateY(14px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.ac-hero--animar .ac-hero__titulo,
.ac-hero--animar .ac-hero__bajada,
.ac-hero--animar .ac-hero__acciones,
.ac-hero--animar .ac-hero__pie {
  animation: ac-hero-revelar 700ms var(--ease-out-quart) both;
}
.ac-hero--animar .ac-hero__bajada {
  animation-delay: 80ms;
}
.ac-hero--animar .ac-hero__acciones {
  animation-delay: 160ms;
}
.ac-hero--animar .ac-hero__pie {
  animation-delay: 240ms;
}

/* ========================================================================
   2. Dos caminos — el bifurcador de intención.
   No son tarjetas: es un panel único partido por un filete. Quien ya sabe a
   qué viene sale de aquí en un clic; el resto sigue bajando.

   Revisión (7 ago 2026): iba sobre abismo. A pedido del usuario ("no me gusta
   el color negro para algunos bloques, déjalos blancos e invierte las letras")
   pasa a fondo blanco con la tipografía invertida a tinta. Ojo con el cian:
   sobre blanco da 1.9:1 y es ilegible, así que las flechas y los hover pasan a
   --ac-azul (6.29:1), no se limitan a "aclarar" el cian.
   ======================================================================== */

.ac-caminos {
  background: #fff;
  padding: var(--ac-aire-l) 0;
}

.ac-caminos__grid {
  display: grid;
  gap: 0;
  grid-template-columns: 1fr;
}
@media (min-width: 860px) {
  .ac-caminos__grid {
    grid-template-columns: 1fr 1fr;
  }
}

.ac-camino {
  padding: clamp(1.75rem, 3.5vw, 2.75rem) 0;
  border-top: 1px solid var(--ac-borde-claro);
}
@media (min-width: 860px) {
  .ac-camino {
    border-top: 0;
    padding: 0 clamp(1.75rem, 3.5vw, 3rem);
  }
  .ac-camino:first-child {
    padding-left: 0;
  }
  .ac-camino:last-child {
    padding-right: 0;
    border-left: 1px solid var(--ac-borde-claro);
  }
  /* Las dos bajadas tienen distinto largo (dos y tres líneas), así que sin esto
     la lista de enlaces de cada columna arranca a distinta altura y las
     flechas quedan desalineadas entre "Necesito agua" y "Tengo derechos". Se
     reserva el alto de tres líneas en ambas para que siempre partan parejas. */
  .ac-camino__desc {
    min-height: 4.8em;
  }
}

.ac-camino__titulo {
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: clamp(1.5rem, 2.6vw, 2.125rem);
  line-height: 1.12;
  letter-spacing: -0.02em;
  color: var(--ac-tinta);
  margin: 0 0 0.6rem;
}
.ac-camino__desc {
  font-family: 'Rubik', sans-serif;
  font-weight: 300;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ac-tinta-2);
  max-width: 40ch;
  margin: 0 0 1.5rem;
  text-wrap: pretty;
}
.ac-camino__desc .ac-cifra {
  font-weight: 500;
  color: var(--ac-tinta);
}

.ac-camino__lista {
  list-style: none;
  margin: 0;
  padding: 0;
}
.ac-camino__lista li + li {
  border-top: 1px solid var(--ac-borde-claro);
}

.ac-camino__enlace {
  position: relative;
  display: flex;
  align-items: baseline;
  gap: 1rem;
  padding: 0.9rem 0;
  color: var(--ac-tinta);
  text-decoration: none;
  font-family: 'Rubik', sans-serif;
  font-size: 1.0625rem;
  transition: color 180ms var(--ease-out-quart);
}
.ac-camino__enlace span:first-child {
  flex: 1 1 auto;
}
.ac-camino__flecha {
  flex: 0 0 auto;
  color: var(--ac-azul);
  transition: transform 220ms var(--ease-out-quart);
}
.ac-camino__enlace:hover,
.ac-camino__enlace:focus-visible {
  color: var(--ac-azul);
}
.ac-camino__enlace:hover .ac-camino__flecha,
.ac-camino__enlace:focus-visible .ac-camino__flecha {
  transform: translateX(5px);
}
.ac-camino__enlace:focus-visible {
  outline: 2px solid var(--ac-azul);
  outline-offset: 3px;
}

/* ========================================================================
   3. Encabezado de sección — común a las secciones nuevas.
   Sin "eyebrow" en cada bloque: el peso lo lleva el titular.
   ======================================================================== */

.ac-bloque {
  padding: var(--ac-aire-xl) 0;
}
.ac-bloque--medio {
  padding: var(--ac-aire-l) 0;
}
.ac-bloque--papel {
  background: var(--ac-papel);
}
.ac-bloque--blanco {
  background: #fff;
}
.ac-bloque--petroleo {
  background: var(--ac-petroleo);
}
.ac-bloque--abismo {
  background: var(--ac-abismo);
}

.ac-enc {
  max-width: 62ch;
  margin-bottom: clamp(2rem, 4vw, 3.25rem);
}
.ac-enc--ancho {
  max-width: none;
}
/* Subencabezado dentro de una sección que ya tiene su titular: sin esto el
   segundo bloque pesa igual que el primero y la jerarquía se aplana. */
.ac-enc--sub {
  margin-top: clamp(3rem, 6vw, 4.5rem);
}
.ac-enc--sub .ac-enc__titulo {
  font-size: clamp(1.375rem, 2.4vw, 1.875rem);
  letter-spacing: -0.015em;
}
.ac-enc__titulo {
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: clamp(1.875rem, 3.6vw, 3rem);
  line-height: 1.1;
  letter-spacing: -0.025em;
  color: var(--ac-tinta);
  text-wrap: balance;
  margin: 0 0 0.85rem;
}
.ac-enc__bajada {
  font-family: 'Rubik', sans-serif;
  font-weight: 300;
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--ac-tinta-2);
  max-width: 58ch;
  text-wrap: pretty;
  margin: 0;
}
.ac-bloque--petroleo .ac-enc__titulo,
.ac-bloque--abismo .ac-enc__titulo {
  color: #fff;
}
.ac-bloque--petroleo .ac-enc__bajada,
.ac-bloque--abismo .ac-enc__bajada {
  color: rgb(255 255 255 / 0.78);
}

/* Enlace "ver todo" al pie de una sección */
.ac-mas {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: clamp(1.5rem, 3vw, 2.25rem);
  font-family: 'Rubik', sans-serif;
  font-weight: 500;
  font-size: 0.9375rem;
  letter-spacing: 0.01em;
  color: var(--ac-azul);
  text-decoration: none;
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
  transition: color 180ms var(--ease-out-quart), gap 180ms var(--ease-out-quart);
}
.ac-mas:hover,
.ac-mas:focus-visible {
  color: var(--ac-petroleo);
  gap: 0.85rem;
}
/* Sobre petróleo el enlace va en blanco, no en cian. Medido: cian sobre petróleo
   da 4,38:1 -- pasa para texto grande, falla para los 15 px de .ac-mas. (DESIGN.md
   decía ">8:1" para ese par; el cálculo real es 4,38 y quedó corregido allí.)
   El blanco da 8,91:1 y el filete inferior deja claro que es un enlace; el cian
   se reserva para el hover, donde el cambio es la señal.
   Se listan las dos familias de fondo oscuro: .ac-bloque--* son las secciones
   nuevas y .ac-seccion--* las que conservan sus clases cid-* heredadas. */
.ac-bloque--petroleo .ac-mas,
.ac-bloque--abismo .ac-mas,
.ac-seccion--petroleo .ac-mas,
.ac-seccion--abismo .ac-mas {
  color: #fff;
}
.ac-bloque--petroleo .ac-mas:hover,
.ac-bloque--petroleo .ac-mas:focus-visible,
.ac-bloque--abismo .ac-mas:hover,
.ac-bloque--abismo .ac-mas:focus-visible,
.ac-seccion--petroleo .ac-mas:hover,
.ac-seccion--petroleo .ac-mas:focus-visible,
.ac-seccion--abismo .ac-mas:hover,
.ac-seccion--abismo .ac-mas:focus-visible {
  color: var(--ac-cian);
}

/* ========================================================================
   4. Relato — por qué existe Agua Circular.
   Contraste antes/ahora, con las críticas históricas citadas literalmente
   (son de contexto.php) y las cifras vivas como desenlace.
   ======================================================================== */

.ac-relato__grid {
  display: grid;
  gap: clamp(2rem, 5vw, 4rem);
  grid-template-columns: 1fr;
  align-items: start;
}
@media (min-width: 900px) {
  .ac-relato__grid {
    /* Asimétrico a propósito: la crítica pesa menos que la respuesta. */
    grid-template-columns: 5fr 7fr;
  }
}

.ac-relato__rotulo {
  font-family: 'Rubik', sans-serif;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
  margin: 0 0 1.25rem;
  padding-bottom: 0.6rem;
  border-bottom: 1px solid var(--ac-borde-claro);
}

.ac-criticas {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}
.ac-criticas li {
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: clamp(1.0625rem, 1.9vw, 1.375rem);
  line-height: 1.3;
  letter-spacing: -0.01em;
  /* Gris sobre papel, pero al nivel de tinta-2 (6,8:1): son citas apagadas,
     no texto ilegible. */
  color: var(--ac-tinta-2);
}

.ac-respuesta {
  list-style: none;
  margin: 0;
  padding: 0;
}
.ac-respuesta li {
  padding: 1.1rem 0;
  border-top: 1px solid var(--ac-borde-claro);
  font-family: 'Rubik', sans-serif;
  font-size: 1.0625rem;
  line-height: 1.6;
  color: var(--ac-tinta);
  text-wrap: pretty;
}
/* El rótulo de arriba ya trae su propio filete: sin esto quedan dos rayas
   paralelas a un par de píxeles, que se lee como un error de maquetación. */
.ac-respuesta li:first-child {
  border-top: 0;
  padding-top: 0;
}
.ac-respuesta li:last-child {
  border-bottom: 1px solid var(--ac-borde-claro);
}

/* ---------- Cifras vivas ---------- */
.ac-cifras {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
  margin-top: clamp(2.5rem, 5vw, 4rem);
  padding-top: clamp(1.75rem, 3vw, 2.5rem);
  border-top: 1px solid var(--ac-borde-claro);
}
.ac-cifras__item {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.ac-cifras__n {
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  font-size: clamp(2.25rem, 4.5vw, 3.5rem);
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--ac-petroleo);
}
.ac-cifras__t {
  font-family: 'Rubik', sans-serif;
  font-weight: 400;
  font-size: 0.9375rem;
  line-height: 1.4;
  color: var(--ac-tinta-2);
  max-width: 22ch;
}
.ac-cifras__nota {
  margin: 1.25rem 0 0;
  font-family: 'Rubik', sans-serif;
  font-size: 0.8125rem;
  color: var(--ac-tinta-2);
}

/* ========================================================================
   5. Asesorías — lista con filetes, no un carrusel de iconos.
   Cada línea es un servicio real con su descripción, y entra al formulario
   de asesorias.php con el tipo ya preseleccionado.
   ======================================================================== */

.ac-servicios {
  list-style: none;
  margin: 0;
  padding: 0;
}
.ac-servicios li {
  border-top: 1px solid var(--ac-borde-claro);
}
.ac-servicios li:last-child {
  border-bottom: 1px solid var(--ac-borde-claro);
}

.ac-servicio {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: clamp(1rem, 2.5vw, 1.75rem);
  padding: clamp(1.15rem, 2.2vw, 1.5rem) 0.25rem;
  text-decoration: none;
  color: inherit;
}
/* Antes el hover animaba `padding-left` en el <a>: una propiedad de layout, así
   que cada fotograma reflowaba la fila. Ahora se desplaza el contenido con
   transform, que se compone sin tocar el layout. El desplazamiento va en el
   icono y el texto, no en el <a> completo: si moviera el <a>, la flecha -- que
   está pegada al borde derecho -- se saldría de la caja de la lista. El hueco
   de la rejilla (mínimo 1rem) absorbe los 0,85rem sin que nada se solape. */
.ac-servicio__icono,
.ac-servicio__texto {
  transition: transform 220ms var(--ease-out-quart);
}
.ac-servicio:hover .ac-servicio__icono,
.ac-servicio:hover .ac-servicio__texto,
.ac-servicio:focus-visible .ac-servicio__icono,
.ac-servicio:focus-visible .ac-servicio__texto {
  transform: translateX(0.85rem);
}
.ac-servicio:focus-visible {
  outline: 2px solid var(--ac-azul);
  outline-offset: 2px;
}
.ac-servicio__icono {
  flex: 0 0 auto;
  width: clamp(34px, 4vw, 44px);
  height: auto;
}
.ac-servicio__texto {
  min-width: 0;
}
.ac-servicio__nombre {
  display: block;
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: clamp(1.0625rem, 1.8vw, 1.25rem);
  line-height: 1.25;
  letter-spacing: -0.01em;
  color: var(--ac-tinta);
  margin-bottom: 0.25rem;
}
.ac-servicio__desc {
  display: block;
  font-family: 'Rubik', sans-serif;
  font-weight: 300;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--ac-tinta-2);
  max-width: 68ch;
  text-wrap: pretty;
}
.ac-servicio__flecha {
  flex: 0 0 auto;
  color: var(--ac-azul);
  font-size: 1.1rem;
  transition: transform 220ms var(--ease-out-quart);
}
.ac-servicio:hover .ac-servicio__flecha,
.ac-servicio:focus-visible .ac-servicio__flecha {
  transform: translateX(5px);
}
@media (max-width: 575px) {
  .ac-servicio {
    grid-template-columns: auto 1fr;
  }
  .ac-servicio__flecha {
    display: none;
  }
}

/* ========================================================================
   6. Herramientas abiertas — el activo de autoridad. Rejilla sin tarjetas:
   celdas separadas por filetes, como una tabla de instrumentos.
   ======================================================================== */

/* Los filetes los dibuja cada celda (borde derecho e inferior) y el contenedor
   cierra arriba y a la izquierda. La alternativa habitual -- gap:1px sobre un
   fondo del color del filete -- pinta de gris el hueco que queda cuando los
   ítems no llenan la última fila, y aquí son 7 en una rejilla de 3. */
.ac-herramientas {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
  background: #fff;
  border-top: 1px solid var(--ac-borde-claro);
  border-left: 1px solid var(--ac-borde-claro);
}
.ac-herramienta {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: clamp(1.4rem, 2.6vw, 2rem);
  background: #fff;
  border-right: 1px solid var(--ac-borde-claro);
  border-bottom: 1px solid var(--ac-borde-claro);
  text-decoration: none;
  color: inherit;
  transition: background-color 200ms var(--ease-out-quart);
}
.ac-herramienta:hover,
.ac-herramienta:focus-visible {
  background: var(--ac-papel);
}
.ac-herramienta:focus-visible {
  outline: 2px solid var(--ac-azul);
  outline-offset: -2px;
}
.ac-herramienta__nombre {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: 1.0625rem;
  line-height: 1.3;
  color: var(--ac-tinta);
}
.ac-herramienta__nombre i,
.ac-herramienta__nombre svg {
  font-size: 0.75em;
  color: var(--ac-tinta-2);
}
.ac-herramienta__desc {
  font-family: 'Rubik', sans-serif;
  font-weight: 300;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--ac-tinta-2);
  text-wrap: pretty;
}
.ac-herramienta__marca {
  margin-top: 0.35rem;
  font-family: 'Rubik', sans-serif;
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ac-azul);
}

/* ========================================================================
   7. Confianza — quiénes confían + equipo, en una sola banda.
   Antes eran dos carruseles de iconos casi idénticos.
   ======================================================================== */

.ac-sectores {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  list-style: none;
  margin: 0 0 clamp(2.5rem, 5vw, 4rem);
  padding: 0;
}
.ac-sector {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  padding: 0.5rem 0.95rem 0.5rem 0.6rem;
  border: 1px solid var(--ac-borde-claro);
  border-radius: 999px;
  background: #fff;
  font-family: 'Rubik', sans-serif;
  font-size: 0.9375rem;
  color: var(--ac-tinta);
}
.ac-sector img {
  width: 26px;
  height: 26px;
}

/* auto-fit con un mínimo chico: con 9 personas y el contenedor a 1140px, un
   mínimo de 110px dejaba una sola cara huérfana en la segunda fila. */
.ac-equipo {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(94px, 1fr));
  gap: clamp(1rem, 2.5vw, 1.75rem);
  list-style: none;
  margin: 0;
  padding: 0;
}
.ac-equipo__item {
  text-align: center;
}
.ac-equipo__foto {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 50%;
  background: var(--ac-linea);
  margin-bottom: 0.6rem;
}
.ac-equipo__nombre {
  display: block;
  font-family: 'Rubik', sans-serif;
  font-size: 0.875rem;
  color: var(--ac-tinta-2);
}

/* ========================================================================
   8. Cierre — última llamada.
   ======================================================================== */

.ac-cierre__grid {
  display: grid;
  gap: clamp(1.75rem, 4vw, 3rem);
  grid-template-columns: 1fr;
  align-items: center;
}
@media (min-width: 860px) {
  .ac-cierre__grid {
    grid-template-columns: 1.5fr 1fr;
  }
}
/* Revisión (7 ago 2026): el cierre iba sobre abismo; pasa a papel con la
   tipografía invertida a tinta, por el mismo pedido que .ac-caminos. */
.ac-cierre__titulo {
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: clamp(1.75rem, 3.4vw, 2.75rem);
  line-height: 1.1;
  letter-spacing: -0.025em;
  color: var(--ac-tinta);
  text-wrap: balance;
  margin: 0 0 0.75rem;
}
.ac-cierre__desc {
  font-family: 'Rubik', sans-serif;
  font-weight: 300;
  font-size: 1.0625rem;
  line-height: 1.6;
  color: var(--ac-tinta-2);
  max-width: 52ch;
  margin: 0;
  text-wrap: pretty;
}
.ac-cierre__acciones {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* ========================================================================
   9. Secciones de listado (.clients + cid-*).
   Se les gana por especificidad; no se edita el CSS compartido con otras
   páginas.

   Revisión mayor (12 ago 2026): las cuatro eran carruseles de UN ítem con
   auto-avance cada 5 s. Entre las cuatro escondían 76 elementos (10 avisos,
   10 sectores de precio, 33 ríos y 23 noticias) y ver los 33 ríos tomaba 165
   segundos. Además `data-pause="true"` no es un valor válido de Bootstrap --
   espera "hover" --, así que no pausaban ni al pasar el mouse ni al enfocar:
   un incumplimiento de WCAG 2.2.2 contra el AA que declara PRODUCT.md.

   Ahora son rieles con scroll: se ven tres o cuatro ítems a la vez, el resto
   está a un gesto o a una flecha, la posición se declara con un contador, y
   nada se mueve sin que el usuario lo pida. La composición pasó de
   texto-izquierda / carrusel-derecha (que dejaba una L de aire vacío junto a
   las columnas cortas) a encabezado arriba y riel a todo el ancho.
   ======================================================================== */

.ac-seccion {
  position: relative;
}
/* Los cid-* heredados fijan "background: linear-gradient(#fff,#fff)": ese
   shorthand resetea background-color, así que hay que ganarle con shorthand. */
.ac-seccion--papel {
  background: var(--ac-papel);
}
.ac-seccion--blanco {
  background: #fff;
}
.ac-seccion--petroleo {
  background: var(--ac-petroleo);
}
.ac-seccion--abismo {
  background: var(--ac-abismo);
}

#clients-33,
#clients-11 {
  padding: var(--ac-aire-xl) 0;
}
#clients-a2,
#clients-3 {
  padding: var(--ac-aire-l) 0;
}

.ac-seccion .titulo1 {
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: clamp(1.875rem, 3.6vw, 3rem);
  line-height: 1.1;
  letter-spacing: -0.025em;
  color: var(--ac-tinta);
  text-wrap: balance;
}
.ac-seccion--petroleo .titulo1,
.ac-seccion--abismo .titulo1 {
  color: #fff;
}
.ac-seccion .mbr-section-subtitle {
  font-family: 'Rubik', sans-serif;
  font-weight: 300;
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--ac-tinta-2);
  max-width: 52ch;
}
.ac-seccion--petroleo .mbr-section-subtitle,
.ac-seccion--abismo .mbr-section-subtitle {
  color: rgb(255 255 255 / 0.78);
}
.ac-seccion--petroleo .btn-black-outline,
.ac-seccion--abismo .btn-black-outline {
  border-color: rgb(255 255 255 / 0.55);
  color: #fff;
}
.ac-seccion--petroleo .btn-black-outline:hover,
.ac-seccion--petroleo .btn-black-outline:focus,
.ac-seccion--abismo .btn-black-outline:hover,
.ac-seccion--abismo .btn-black-outline:focus {
  background-color: #fff;
  border-color: #fff;
  color: var(--ac-petroleo);
}

/* ========================================================================
   9b. El riel — la plantilla que reemplazó a los cuatro carruseles.
   Un contenedor con scroll horizontal y scroll-snap, un encabezado con el
   contador y las dos flechas, y ningún temporizador: el contenido se mueve
   cuando el usuario lo mueve.
   ======================================================================== */

.ac-riel__enc {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: clamp(1rem, 3vw, 2.5rem);
  margin-bottom: clamp(1.25rem, 2.5vw, 2rem);
}
.ac-riel__texto {
  flex: 1 1 min(100%, 46ch);
}
.ac-riel__texto .mbr-section-subtitle {
  margin-bottom: 0;
  margin-top: 0.6rem;
  max-width: 62ch;
}

/* Alternancia izquierda / derecha entre secciones de riel, para que la página no
   repita cuatro veces la misma composición. Sólo desde 860px: en móvil todo se
   apila y una inversión de orden pondría los botones encima del titular. */
@media (min-width: 860px) {
  .ac-riel__enc--der {
    flex-direction: row-reverse;
  }
  /* El alineado hay que declararlo también en el h2 y en la bajada, no basta con
     heredarlo del contenedor: mbr-additional.css trae `.cid-s9UzTsB4eA h2` y
     `.cid-s9UzTsB4eA .mbr-section-subtitle` con text-align:left, y un valor
     heredado pierde siempre contra uno declarado, por poca especificidad que
     tenga la regla que lo declara. */
  .ac-riel__enc--der .ac-riel__texto,
  .ac-riel__enc--der .ac-riel__texto .titulo1,
  .ac-riel__enc--der .ac-riel__texto .mbr-section-subtitle {
    text-align: right;
  }
  .ac-riel__enc--der .ac-riel__texto .mbr-section-subtitle {
    margin-left: auto;
    margin-right: 0;
  }
  /* El "ver todo" de esas secciones acompaña al titular. Es display:inline-flex,
     así que para llevarlo al borde derecho hay que darle caja propia. */
  #clients-11 > .container > .ac-mas {
    display: flex;
    width: fit-content;
    margin-left: auto;
  }
}

.ac-riel__mando {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex: 0 0 auto;
}
/* Si todo cabe sin desplazar, las flechas no tienen nada que hacer: las esconde
   ac-home.js en vez de dejar dos botones muertos. */
.ac-riel__mando[hidden] {
  display: none;
}
.ac-riel__btn {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  background: transparent;
  border: 1px solid var(--ac-borde-claro);
  border-radius: 3px;
  color: var(--ac-tinta);
  font-size: 1.05rem;
  cursor: pointer;
  transition: background-color 180ms var(--ease-out-quart), border-color 180ms var(--ease-out-quart),
    color 180ms var(--ease-out-quart);
}
.ac-riel__btn:hover:not(:disabled),
.ac-riel__btn:focus-visible:not(:disabled) {
  background: var(--ac-tinta);
  border-color: var(--ac-tinta);
  color: #fff;
}
.ac-riel__btn:disabled {
  opacity: 0.3;
  cursor: default;
}
.ac-riel__btn:focus-visible {
  outline: 2px solid var(--ac-azul);
  outline-offset: 2px;
}

.ac-riel {
  /* Los ítems no miden un ancho fijo: se calcula el que hace que quepan
     exactamente N sin que el último quede cortado por el borde del contenedor.
     Con `min(88%, 360px)` el tercero quedaba serruchado a la derecha. En móvil el
     valor es fraccionario a propósito (1,12): ahí sí se asoma el borde del
     siguiente, que es la única señal de que el riel se desliza cuando no hay
     puntero que revele el hover. */
  --ac-riel-gap: clamp(0.75rem, 1.5vw, 1.25rem);
  --ac-riel-visibles: 1.12;

  display: flex;
  align-items: stretch;
  gap: var(--ac-riel-gap);
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  /* Aire para la barra de desplazamiento: sin esto la barra se come el borde
     inferior de las tarjetas al pasar el mouse. */
  padding-bottom: 0.9rem;
  scrollbar-width: thin;
  scrollbar-color: var(--ac-tinta-2) var(--ac-linea);
}
@media (min-width: 700px) {
  .ac-riel {
    --ac-riel-visibles: 2;
  }
}
@media (min-width: 1000px) {
  .ac-riel {
    --ac-riel-visibles: 3;
  }
  /* Los ríos son 33 y la tarjeta es sólo foto y dos líneas: caben cuatro. */
  #riel-rios {
    --ac-riel-visibles: 4;
  }
}
/* Cada hijo directo es un ítem del riel, venga de PHP, del JS del home o del
   fragmento que sirve php/ordenar/tarjetas_avisos_index.php. */
.ac-riel > * {
  flex: 0 0 calc((100% - (var(--ac-riel-visibles) - 1) * var(--ac-riel-gap)) / var(--ac-riel-visibles));
  scroll-snap-align: start;
}
/* El riel de ríos esconde su barra nativa: su barra es el mapa de Chile, que
   además de desplazar dice dónde estás en el país. Ver .ac-mapa. */
.ac-riel--sin-barra {
  padding-bottom: 0;
  scrollbar-width: none;
}
.ac-riel--sin-barra::-webkit-scrollbar {
  height: 0;
  display: none;
}
.ac-riel:focus-visible {
  outline: 2px solid var(--ac-azul);
  outline-offset: 4px;
}
/* El `display:flex` de arriba es una regla de autor y le gana a la del navegador
   para [hidden], que es de la hoja del user-agent. Sin esta línea, esconder el
   riel con el atributo no haría nada. */
.ac-riel[hidden] {
  display: none;
}
.ac-riel::-webkit-scrollbar {
  height: 6px;
}
.ac-riel::-webkit-scrollbar-track {
  background: var(--ac-linea);
  border-radius: 999px;
}
.ac-riel::-webkit-scrollbar-thumb {
  background: var(--ac-tinta-2);
  border-radius: 999px;
}

.ac-riel__nota {
  margin: 1rem 0 0;
  font-family: 'Rubik', sans-serif;
  font-size: 0.8125rem;
  color: var(--ac-tinta-2);
}
/* El JS la rellena con la fecha de la corrida del modelo cuando llegan los
   datos; hasta entonces no debe ocupar su margen. */
.ac-riel__nota:empty {
  display: none;
}
.ac-riel__vacio {
  margin: 0 0 1rem;
  padding: 1.1rem 1.25rem;
  border: 1px solid var(--ac-borde-claro);
  border-radius: 3px;
  font-family: 'Rubik', sans-serif;
  font-size: 0.9375rem;
  color: var(--ac-tinta-2);
}
.ac-riel__vacio a {
  color: var(--ac-azul);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* ---------- El riel sobre petróleo ---------- */
.ac-seccion--petroleo .ac-riel__contador {
  color: rgb(255 255 255 / 0.75);
}
.ac-seccion--petroleo .ac-riel__btn {
  border-color: var(--ac-borde-oscuro);
  color: #fff;
}
.ac-seccion--petroleo .ac-riel__btn:hover:not(:disabled),
.ac-seccion--petroleo .ac-riel__btn:focus-visible:not(:disabled) {
  background: #fff;
  border-color: #fff;
  color: var(--ac-petroleo);
}
.ac-seccion--petroleo .ac-riel__btn:focus-visible {
  outline-color: var(--ac-cian);
}
.ac-seccion--petroleo .ac-riel {
  scrollbar-color: rgb(255 255 255 / 0.55) rgb(255 255 255 / 0.16);
}
.ac-seccion--petroleo .ac-riel::-webkit-scrollbar-track {
  background: rgb(255 255 255 / 0.16);
}
.ac-seccion--petroleo .ac-riel::-webkit-scrollbar-thumb {
  background: rgb(255 255 255 / 0.55);
}
.ac-seccion--petroleo .ac-riel:focus-visible {
  outline-color: var(--ac-cian);
}
.ac-seccion--petroleo .ac-riel__nota,
.ac-seccion--petroleo .ac-riel__vacio {
  color: rgb(255 255 255 / 0.78);
}
.ac-seccion--petroleo .ac-riel__vacio {
  border-color: var(--ac-borde-oscuro);
}
.ac-seccion--petroleo .ac-riel__vacio a {
  color: var(--ac-cian);
}

/* ========================================================================
   9c. Ficha de precio de mercado (.ac-ficha), riel de #clients-11.
   La versión anterior se armaba con estilos en línea y tenía tres defectos que
   DESIGN.md prohíbe por escrito: un filete lateral de 4 px de color (el
   side-stripe), el precio en cian sobre blanco -- 2,03:1, ilegible -- y grises
   #777/#999 a 4,48:1 y 2,85:1.

   La naturaleza ya no se distingue por un color que no se puede leer, sino por
   el pictograma propio y por la palabra. El color que queda es de los dos
   azules de marca que sí pasan sobre blanco: azul #2060AD 6,29:1 para el dato
   subterráneo y petróleo #004F71 8,91:1 para el superficial. El cian se queda
   donde le corresponde, sobre fondos oscuros.
   ======================================================================== */

.ac-ficha {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--ac-linea);
  border-radius: 3px;
  padding: clamp(1rem, 2vw, 1.25rem);
  text-decoration: none;
  color: inherit;
  transition: border-color 180ms var(--ease-out-quart), box-shadow 180ms var(--ease-out-quart),
    transform 180ms var(--ease-out-quart);
}
.ac-ficha:hover,
.ac-ficha:focus-visible {
  border-color: var(--ac-azul);
  box-shadow: var(--ac-sombra-1);
  transform: translateY(-2px);
}
.ac-ficha:focus-visible {
  outline: 2px solid var(--ac-cian);
  outline-offset: 2px;
}
.ac-ficha__rotulo {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.7rem;
  font-family: 'Rubik', sans-serif;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ac-petroleo);
}
.ac-ficha--sub .ac-ficha__rotulo {
  color: var(--ac-azul);
}
.ac-ficha__rotulo img {
  flex: 0 0 auto;
}
.ac-ficha__titulo {
  display: block;
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: 1.0625rem;
  line-height: 1.3;
  letter-spacing: -0.01em;
  color: var(--ac-tinta);
  text-wrap: pretty;
}
.ac-ficha__precio {
  margin: 0.8rem 0 0;
  padding-top: 0.8rem;
  border-top: 1px solid var(--ac-linea);
  font-family: 'Rubik', sans-serif;
  font-weight: 500;
  font-size: 1.0625rem;
  line-height: 1.35;
  color: var(--ac-petroleo);
}
.ac-ficha--sub .ac-ficha__precio {
  color: var(--ac-azul);
}
.ac-ficha__margen {
  font-weight: 400;
  font-size: 0.9375rem;
  color: var(--ac-tinta-2);
  white-space: nowrap;
}
.ac-ficha__equiv {
  margin: 0.3rem 0 0;
  font-family: 'Rubik', sans-serif;
  font-size: 0.875rem;
  color: var(--ac-tinta-2);
}
.ac-ficha__lugar {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  margin: 0.8rem 0 0;
  padding-top: 0.8rem;
  border-top: 1px solid var(--ac-linea);
  font-family: 'Rubik', sans-serif;
  font-size: 0.8125rem;
  color: var(--ac-tinta-2);
}
.ac-ficha__cuenca {
  color: var(--ac-tinta-2);
}

/* ========================================================================
   9d. Tarjeta de aviso, riel de #clients-33.
   El marcado lo genera php/ordenar/tarjetas_avisos_index.php en el servidor y
   no se toca: todo esto es reestilado por CSS.

   Lo que se corrige, medido:
     · "5,00 l/s EN VENTA" en blanco sobre #EF5046  →  3,56:1, falla
     · precio en #EF5046 sobre blanco               →  3,56:1, falla
     · ubicación y eq. l/s en #848484               →  3,74:1, falla
     · cuenca y región en #999                      →  2,85:1, falla
   La banda roja a sangre con texto blanco era además lo que hacía que la
   tarjeta pareciera de otro sitio. Ahora el encabezado es una placa de papel y
   el rótulo va en Rubik sobre el azul de marca (5,81:1 sobre papel).

   Nota (12 ago 2026): el rótulo pasó por un rojo oscuro que distinguía "en
   venta" de "busca comprar" por color. A pedido del usuario los dos estados van
   ahora en el mismo azul: la distinción la llevan las palabras, que están ahí
   mismo ("EN VENTA" / "BUSCA COMPRAR"), no el color.
   ======================================================================== */

#cargar_tar_daa > .carousel-item {
  /* Bootstrap 4 declara `.carousel-item { display:none; float:left; width:100%;
     margin-right:-100% }`. Los tres últimos hay que anularlos explícitamente:
     el margen negativo del 100 % es el que apila las diapositivas una sobre
     otra, y dentro de un flex row colapsaría el riel completo. flex-basis se
     impone sobre width, pero no sobre el margen. */
  display: block;
  float: none;
  width: auto;
  margin-right: 0;
  transform: none;
  /* El ancho lo pone `.ac-riel > *`; aquí sólo se desarma lo de Bootstrap. */
}
#cargar_tar_daa .row.tar,
#cargar_tar_daa .prox {
  display: block;
  margin: 0;
  padding: 0;
  max-width: 100%;
  flex: 0 0 100%;
}
#clients-33 .card,
#clients-33 .card.tarIn {
  /* tarjetasPG_inx.css le fija a .tarIn un ancho literal por breakpoint (500px,
     448px, 328px, 508px, 385.6px, 365px) más una sombra dura. Dentro de un ítem
     de riel de 360px, ese ancho desbordaba la tarjeta sobre la siguiente. */
  width: auto;
  max-width: 100%;
  height: 100%;
  background: #fff;
  border: 1px solid var(--ac-linea);
  border-radius: 3px;
  box-shadow: none;
  transition: border-color 180ms var(--ease-out-quart), box-shadow 180ms var(--ease-out-quart);
}
#clients-33 .card:hover {
  border-color: var(--ac-azul);
  box-shadow: var(--ac-sombra-1);
}
/* El encabezado trae style="height:30px;padding:0px" en línea: hay que ganarle
   con !important, no por especificidad. El color (rojo/azul según venta o
   compra) y el centrado se dejan intactos: son los mismos que usan las
   tarjetas reales de buscador.php (.estV/.estC de css/tarjetasIndex.css), y no
   tenía sentido que la misma tarjeta se viera distinta según la página. */
#clients-33 .card-header {
  height: auto !important;
  padding: 0.6rem clamp(0.9rem, 2vw, 1.15rem) !important;
  border-radius: 0;
}
#clients-33 .card-header .row,
#clients-33 .card-body .row {
  margin: 0;
}
#clients-33 .card-header [class^='col-'],
#clients-33 .card-body [class^='col-'] {
  padding: 0;
}
#clients-33 .titulox {
  display: block;
  font-family: 'Rubik', sans-serif;
  font-weight: bold;
  font-size: 0.9375rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  text-decoration: none;
  color: #fff;
}
#clients-33 .titulox:hover {
  color: #fff;
}
#clients-33 .card-body {
  padding: clamp(0.9rem, 2vw, 1.15rem) !important;
  display: flex;
  flex-direction: column;
}
#clients-33 .card-body > .row {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  gap: 0;
}
#clients-33 .card-body > .row > .col-10,
#clients-33 .card-body > .row > .col-2 {
  flex: 0 0 auto;
  max-width: 100%;
  width: 100%;
}
#clients-33 p a.nomb,
#clients-33 a.nomb {
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: 1.0625rem;
  line-height: 1.3;
  letter-spacing: -0.01em;
  color: var(--ac-tinta);
  text-decoration: none;
}
#clients-33 .prec2 {
  margin: 0.8rem 0 0;
  padding-top: 0.8rem;
  border-top: 1px solid var(--ac-linea);
}
#clients-33 a.prec,
#clients-33 a.prec.precio1,
#clients-33 a.prec:hover {
  font-family: 'Rubik', sans-serif;
  font-weight: 500;
  font-size: 1.0625rem;
  font-variant-numeric: tabular-nums;
  color: var(--ac-tinta);
  text-decoration: none;
}
#clients-33 .precu2 {
  margin: 0.25rem 0 0;
}
#clients-33 a.precu,
#clients-33 a.precu.precio2,
#clients-33 a.nomb2,
#clients-33 a.nomb2.color-gris-texto {
  font-family: 'Rubik', sans-serif;
  font-size: 0.875rem;
  font-variant-numeric: tabular-nums;
  color: var(--ac-tinta-2);
  text-decoration: none;
}
/* .precu3 venía en position:absolute con bottom:20px: la línea de ubicación
   quedaba clavada al fondo de la tarjeta y abría un hueco en el medio. */
#clients-33 .precu3 {
  position: static;
  margin: 0.8rem 0 0;
  padding-top: 0.8rem;
  border-top: 1px solid var(--ac-linea);
}
#clients-33 a.nomb2 {
  font-size: 0.8125rem;
}
/* Los cuatro pictogramas (naturaleza, uso, ejercicio, estado del derecho)
   estaban en una columna a la derecha, como cuatro círculos de color sin
   explicación. Pasan a una fila al pie, que es donde se leen como leyenda. */
#clients-33 .card-body > .row > .col-2 {
  display: flex;
  gap: 0.6rem;
  margin-top: auto;
  padding-top: 0.85rem !important;
  border-top: 1px solid var(--ac-linea);
}
#clients-33 .col-2 > div {
  line-height: 0;
}
#clients-33 .centrarimg2 {
  width: 26px;
  height: 26px;
  margin: 0;
}
#clients-33 .col-2 br {
  display: none;
}

/* ========================================================================
   9e. Riel de ríos (#clients-a2) y su eje de latitud.
   El orden de php/datos/rios-home.php es de norte a sur, así que la posición
   en el riel ES un dato geográfico. El eje lo hace explícito.
   ======================================================================== */

.ac-rio {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
}
.ac-rio__foto {
  width: 100%;
  aspect-ratio: 3 / 2;
  height: auto;
  object-fit: cover;
  display: block;
  border-radius: 3px;
  background: var(--ac-linea);
  transition: outline-color 180ms var(--ease-out-quart);
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.ac-rio:hover .ac-rio__foto {
  outline-color: var(--ac-azul);
}
.ac-rio__nombre {
  margin-top: 0.75rem;
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: 1.0625rem;
  line-height: 1.25;
  letter-spacing: -0.01em;
  color: var(--ac-tinta);
}
.ac-rio:hover .ac-rio__nombre {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.ac-rio__region {
  margin-top: 0.1rem;
  font-family: 'Rubik', sans-serif;
  font-size: 0.8125rem;
  color: var(--ac-tinta-2);
}
.ac-rio:focus-visible {
  outline: 2px solid var(--ac-azul);
  outline-offset: 3px;
}

/* ---------- El mapa de Chile como barra de desplazamiento ----------
   El riel de ríos escondía su barra nativa y mostraba un eje recto justo
   debajo: dos barras horizontales haciendo lo mismo. Ahora hay una sola, y es
   el país. Se arrastra el tramo iluminado o se hace clic en cualquier punto.

   La silueta viene de php/datos/chile-silueta.php (las 101 cuencas DGA unidas;
   ver tools/preparar-chile.mjs). El viewBox conserva la proporción real del
   encuadre girado -- unos 5,9:1 -- y la altura de aquí lo aplasta algo menos
   del doble. Es una deformación deliberada y anotada: a proporción exacta el
   control mediría 190px de alto y dejaría de ser una barra.

   El eje horizontal es latitud REAL, no posición en la lista. La ventana no
   mide siempre lo mismo: cubre la franja de país que se está viendo, y como
   los 33 ríos no están repartidos a intervalos iguales, se estrecha en el
   norte -- cinco cuencas en grado y medio -- y se ensancha en la Patagonia.
   Eso no es un fallo del control: es el dato. */
.ac-mapa {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  /* Casi pegado a las tarjetas: el relleno vertical de la pista ya separa. */
  margin-top: 0.4rem;
  font-family: 'Rubik', sans-serif;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-mapa__rotulo {
  flex: 0 0 auto;
}
.ac-mapa__pista {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  padding: 8px 0;
  cursor: pointer;
  /* Sin esto, arrastrar en móvil desplaza la página en vez de la ventana. */
  touch-action: none;
}
/* La altura se fija por proporción y no por una medida absoluta: así el
   aplastamiento respecto de la forma real (5,9:1) es parecido en toda pantalla
   -- 1,7 veces en escritorio, 1,4 en el móvil, donde el mínimo entra a mandar --
   y el país no engorda al estrecharse la pista. */
.ac-mapa__dibujo {
  display: block;
  width: 100%;
  aspect-ratio: 10 / 1;
  height: auto;
  min-height: 44px;
  max-height: 110px;
  overflow: visible;
}
/* El relleno viaja por herencia desde el <use>: el <path> del <defs> no declara
   ninguno, y un selector de descendencia no entraría en el árbol clonado. */
.ac-mapa__tierra {
  fill: rgb(0 79 113 / 0.34);
  transition: fill 200ms var(--ease-out-quart);
}
.ac-mapa__tramo {
  fill: var(--ac-azul);
}
/* Las marcas son 33 líneas de un píxel: sirven para que el país no sea una
   mancha muda y para contar de un vistazo lo apretadas que están unas cuencas
   respecto de otras. A más contraste se leerían como un código de barras y
   taparían la silueta, que es lo que hay que reconocer primero. */
.ac-mapa__marcas {
  stroke: rgb(244 246 248 / 0.55);
  stroke-width: 1;
}
.ac-mapa__marcas--vivas {
  stroke: rgb(255 255 255 / 0.45);
}
/* La ventana marca la franja de latitud aunque el país sea ahí un hilo. Va sin
   borde: con él y con las asas se veía un doble filete en los costados, y el
   recuadro completo pesaba más que el mapa. La franja la definen el baño de
   color y las dos asas. */
.ac-mapa__ventana {
  fill: rgb(32 96 173 / 0.07);
  stroke: none;
  cursor: grab;
  transition: fill 160ms var(--ease-out-quart);
}
/* Las jambas de la ventana. Un rectángulo tenue sobre un mapa se lee como un
   adorno; dos barras verticales con la punta redondeada se leen como los bordes
   de algo que se agarra -- es el gesto de un selector de rango de toda la vida.
   Van en unidades de píxel (non-scaling-stroke) para no adelgazarse al
   aplastarse el dibujo. */
.ac-mapa__asas {
  stroke: var(--ac-azul);
  stroke-width: 2;
  stroke-linecap: round;
  transition: stroke-width 160ms var(--ease-out-quart);
}
/* `vector-effect` no se hereda -- al contrario que stroke y stroke-width --,
   así que va en las líneas y no en el grupo. Sin esto las asas se adelgazan
   con el aplastamiento del dibujo hasta desaparecer en pantallas pequeñas. */
.ac-mapa__asas line {
  vector-effect: non-scaling-stroke;
}
.ac-mapa__pista:hover .ac-mapa__tierra,
.ac-mapa.is-insinuando .ac-mapa__tierra {
  fill: rgb(0 79 113 / 0.42);
}
.ac-mapa__pista:hover .ac-mapa__ventana,
.ac-mapa.is-insinuando .ac-mapa__ventana {
  fill: rgb(32 96 173 / 0.13);
}
.ac-mapa__pista:hover .ac-mapa__asas,
.ac-mapa.is-insinuando .ac-mapa__asas,
.ac-mapa.is-arrastrando .ac-mapa__asas {
  stroke-width: 3;
}
.ac-mapa.is-arrastrando,
.ac-mapa.is-arrastrando .ac-mapa__pista,
.ac-mapa.is-arrastrando .ac-mapa__ventana {
  cursor: grabbing;
}
.ac-mapa.is-arrastrando .ac-mapa__ventana {
  fill: rgb(32 96 173 / 0.12);
  stroke: var(--ac-azul);
}
/* Las 33 marcas se esconden por debajo de 1000px, no por debajo de 700: el
   `.container` heredado de Bootstrap se estrecha a 540px ya en la franja de
   760, así que a 760px de ventana la pista mide 412 y las marcas caen a doce
   píxeles unas de otras -- y en el norte, a dos. Ahí dejan de contar cuencas y
   pasan a rayar la silueta, que a ese tamaño es lo único que hay que poder
   reconocer. Es el mismo corte en el que #riel-rios pasa a mostrar cuatro. */
@media (max-width: 999px) {
  .ac-mapa__marcas {
    display: none;
  }
}
/* En el móvil los dos rótulos se comían 100 de los 350px disponibles y dejaban
   el país en 247: se bajan a su propia línea y el mapa se queda con todo el
   ancho, que es lo único que aquí escasea. */
@media (max-width: 699px) {
  .ac-mapa {
    flex-wrap: wrap;
    gap: 0.35rem 0;
  }
  .ac-mapa__pista {
    flex: 1 0 100%;
    order: -1;
  }
  .ac-mapa__rotulo {
    flex: 1 1 0;
  }
  .ac-mapa__rotulo:last-child {
    text-align: right;
  }
}

/* Aquí NO hay bloque de prefers-reduced-motion, y es deliberado: lo único que
   este componente anima por CSS son colores y un grosor de línea, que es
   justamente el recambio recomendado para quien pide menos movimiento. Lo que
   sí se salta con esa preferencia es el deslizamiento de la insinuación, y eso
   lo decide ac-home.js, que en ese caso deja sólo el encendido de color. */

/* ========================================================================
   9f. Noticias (#clients-3) — la sección más contenida de la página.
   Es la menos actualizada del sitio, así que ocupa lo mínimo: seis titulares en
   dos columnas, sin fotografías, sin riel y sin resumen. Antes era un riel de 23
   tarjetas con miniatura, y ese peso visual prometía una frescura que la sección
   no tiene.
   ======================================================================== */

.ac-seccion--compacta {
  padding: var(--ac-aire-m) 0 !important;
}
/* El "ver todas" acompaña al titular en vez de colgar al pie de la sección. */
.ac-mas--enc {
  margin-top: 0.9rem;
}

.ac-notas {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
  gap: 0 clamp(1.5rem, 4vw, 3.5rem);
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--ac-borde-claro);
}
.ac-notas li {
  border-bottom: 1px solid var(--ac-borde-claro);
}
.ac-nota {
  display: block;
  padding: 0.85rem 0;
  text-decoration: none;
  color: inherit;
}
.ac-nota:focus-visible {
  outline: 2px solid var(--ac-azul);
  outline-offset: 2px;
}
.ac-nota__meta {
  display: block;
  font-family: 'Rubik', sans-serif;
  font-size: 0.75rem;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-nota__titulo {
  display: block;
  margin-top: 0.2rem;
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: 1rem;
  line-height: 1.3;
  letter-spacing: -0.01em;
  color: var(--ac-tinta);
  text-wrap: pretty;
}
.ac-nota:hover .ac-nota__titulo,
.ac-nota:focus-visible .ac-nota__titulo {
  color: var(--ac-azul);
}

/* ========================================================================
   9g. Equipo desplegable.
   Cada cara abre su ficha en un panel compartido justo debajo de la rejilla,
   con una flecha que apunta a la cara elegida. La altura se anima con
   grid-template-rows 0fr → 1fr, que no es una propiedad de layout como height:
   el navegador la interpola sin recalcular el flujo del resto de la página.
   ======================================================================== */

.ac-equipo__btn {
  display: block;
  width: 100%;
  padding: 0;
  background: none;
  border: 0;
  cursor: pointer;
  text-align: center;
  font: inherit;
  color: inherit;
}
.ac-equipo__btn:focus-visible {
  outline: 2px solid var(--ac-azul);
  outline-offset: 3px;
  border-radius: 4px;
}
.ac-equipo__btn .ac-equipo__foto {
  transition: box-shadow 200ms var(--ease-out-quart), transform 200ms var(--ease-out-quart);
}
.ac-equipo__btn:hover .ac-equipo__foto {
  transform: translateY(-2px);
}
.ac-equipo__btn[aria-expanded='true'] .ac-equipo__foto {
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--ac-azul);
}
.ac-equipo__btn[aria-expanded='true'] .ac-equipo__nombre {
  color: var(--ac-tinta);
  font-weight: 500;
}

.ac-equipo__panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 340ms var(--ease-out-quart);
}
.ac-equipo__panel.is-abierto {
  grid-template-rows: 1fr;
}
.ac-equipo__marco {
  overflow: hidden;
  min-height: 0;
}
.ac-equipo__cuerpo {
  --ac-ficha-aire: clamp(1.25rem, 3vw, 1.75rem);
  position: relative;
  margin-top: 1.25rem;
  padding: var(--ac-ficha-aire);
  background: var(--ac-papel);
  border: 1px solid var(--ac-borde-claro);
  border-radius: 3px;
  opacity: 0;
  transform: translateY(-6px);
  transition: opacity 260ms var(--ease-out-quart), transform 260ms var(--ease-out-quart);
}
.ac-equipo__panel.is-abierto .ac-equipo__cuerpo {
  opacity: 1;
  transform: none;
}
/* La flecha ancla el panel a la cara que se abrió: sin ella, con nueve caras en
   una fila, no se sabe de quién se está leyendo. La posición la calcula
   ac-home.js y llega como --ac-flecha-x. */
.ac-equipo__cuerpo::before {
  content: '';
  position: absolute;
  top: -7px;
  left: var(--ac-flecha-x, 50%);
  width: 12px;
  height: 12px;
  margin-left: -6px;
  background: var(--ac-papel);
  border-left: 1px solid var(--ac-borde-claro);
  border-top: 1px solid var(--ac-borde-claro);
  transform: rotate(45deg);
  transition: left 340ms var(--ease-out-quart);
}
/* Dos columnas: identidad a la izquierda, descripción ocupando el resto del
   recuadro. En una sola columna el texto tenía que elegir entre dejar medio panel
   vacío (con el tope de 68ch) o estirarse a los ~105 caracteres que caben en
   1110px, que es demasiado para volver al inicio de la línea sin perderla. Partido
   en dos, la caja se llena y la medida de lectura se queda donde debe. */
.ac-equipo__ficha {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.85rem;
}
@media (min-width: 768px) {
  .ac-equipo__ficha {
    grid-template-columns: minmax(9.5rem, 15rem) minmax(0, 1fr);
    column-gap: clamp(1.75rem, 4vw, 3rem);
    row-gap: 0;
    align-items: start;
  }
}
/* El botón de cierre flota arriba a la derecha, así que hay que apartar lo que
   comparte su fila -- y sólo eso. Reservarlo en el padding del recuadro le
   costaba 36px de ancho a la descripción también en móvil, donde la ✕ no está
   sobre ella sino sobre el nombre. */
.ac-equipo__ficha-id {
  min-width: 0;
  padding-right: 2.25rem;
}
@media (min-width: 768px) {
  .ac-equipo__ficha-id {
    padding-right: 0;
  }
  .ac-equipo__ficha-desc {
    padding-right: 2.25rem;
  }
}
.ac-equipo__ficha-nombre {
  margin: 0;
  font-family: 'Archivo', 'Rubik', sans-serif;
  font-weight: 600;
  font-size: clamp(1.125rem, 2vw, 1.375rem);
  line-height: 1.2;
  letter-spacing: -0.015em;
  color: var(--ac-tinta);
}
.ac-equipo__ficha-cargo {
  margin: 0.15rem 0 0;
  font-family: 'Rubik', sans-serif;
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ac-azul);
}
.ac-equipo__ficha-desc {
  min-width: 0;
  font-family: 'Rubik', sans-serif;
  font-weight: 300;
  font-size: 1rem;
  line-height: 1.65;
  color: var(--ac-tinta-2);
  text-wrap: pretty;
}
.ac-equipo__ficha-desc p {
  margin: 0 0 0.6rem;
}
.ac-equipo__ficha-desc p:last-child {
  margin-bottom: 0;
}
.ac-equipo__cerrar {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  background: none;
  border: 0;
  border-radius: 3px;
  color: var(--ac-tinta-2);
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
  transition: color 160ms var(--ease-out-quart), background-color 160ms var(--ease-out-quart);
}
.ac-equipo__cerrar:hover {
  background: rgb(16 24 32 / 0.06);
  color: var(--ac-tinta);
}
.ac-equipo__cerrar:focus-visible {
  outline: 2px solid var(--ac-azul);
  outline-offset: 2px;
}

/* ========================================================================
   10. Revelado al hacer scroll.
   Regla dura: el contenido es visible por defecto. La clase .ac-rev solo la
   añade el JS *si* hay soporte de IntersectionObserver y el usuario no pidió
   menos movimiento; sin ella no hay ni opacidad 0 ni desplazamiento, así que
   una pestaña oculta o un render sin JS nunca deja la sección en blanco.
   ======================================================================== */

.ac-rev {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 700ms var(--ease-out-expo), transform 700ms var(--ease-out-expo);
}
.ac-rev.is-visible {
  opacity: 1;
  transform: none;
}
/* Escalonado dentro de una misma lista: cada línea entra un poco después. */
.ac-rev--e1 {
  transition-delay: 60ms;
}
.ac-rev--e2 {
  transition-delay: 120ms;
}
.ac-rev--e3 {
  transition-delay: 180ms;
}
.ac-rev--e4 {
  transition-delay: 240ms;
}

@media (prefers-reduced-motion: reduce) {
  .ac-hero__foto {
    transition: none;
  }
  .ac-hero__foto img,
  .ac-hero__foto.is-activa img,
  .ac-hero__foto.fue-activa img {
    animation: none;
    transform: scale(1.06);
  }
  .ac-hero--animar .ac-hero__titulo,
  .ac-hero--animar .ac-hero__bajada,
  .ac-hero--animar .ac-hero__acciones,
  .ac-hero--animar .ac-hero__pie {
    animation: none;
  }
  .ac-rev,
  .ac-rev.is-visible {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .ac-btn:hover,
  .ac-ficha:hover,
  .ac-servicio:hover .ac-servicio__icono,
  .ac-servicio:hover .ac-servicio__texto {
    transform: none;
  }
  /* Los rieles siguen funcionando; sólo dejan de deslizarse. Las flechas usan
     scrollBy sin `behavior`, que resuelve al valor calculado de esta propiedad,
     así que basta con cambiarla aquí. */
  .ac-riel {
    scroll-behavior: auto;
  }
  /* La ficha del equipo sigue abriéndose y cerrándose; deja de interpolar. */
  .ac-equipo__panel,
  .ac-equipo__cuerpo,
  .ac-equipo__cuerpo::before,
  .ac-equipo__btn .ac-equipo__foto {
    transition: none;
  }
  .ac-equipo__btn:hover .ac-equipo__foto {
    transform: none;
  }
}
