/* ==========================================================================
   FUNDACIÓN PUNTO 37 · CIERRE DE PÁGINA (sección .apoyo + pie)
   --------------------------------------------------------------------------
   El cliente vio el final del sitio "muy básico". No estaba equivocado: los dos
   bloques que cierran las cinco páginas tenían tres problemas de fondo.

     1. Todo pesaba igual. El titular, el párrafo, los dos botones, las cuatro
        columnas del pie y la barra legal ocupaban el mismo rango visual, así
        que el ojo no encontraba dónde detenerse y el cierre se leía como una
        lista de sobras en vez de como un remate.
     2. El pie era un rectángulo negro plano. La única pieza con textura era el
        bloque verde del boletín; el resto no tenía ni una sola de las formas
        con las que el arte construye TODAS las demás secciones (festón de
        nubes, grano, tarjetas de canto redondo, sombras sólidas).
     3. Había piezas muertas: el formulario del boletín apuntaba a "#", el botón
        Dona de .apoyo apuntaba a su propia sección, el teléfono y el correo del
        pie eran texto plano no accionable, y el archivo de fotos de Flickr, que
        es contenido real y bueno, no estaba enlazado desde el pie.

   Esta hoja NO inventa un lenguaje nuevo. Todo lo de aquí se arma con piezas
   que ya existen en el tema aprobado:

     · festón de nubes (#banco-nubes, .nube, .nube-arriba) para el canto del pie
     · grano (--grano) y la nube suelta (#nube-suelta) como textura de fondo
     · radios de 26px en tarjetas grandes, 22px en medianas y 14px en chips
     · sombras SÓLIDAS desplazadas (0 6px 0), nunca difuminadas
     · Oliviar Sans para todo, Goodkids sólo en el remate ya aprobado (BOLETÍN)
     · la paleta del :root de estilo.css, sin un solo hex nuevo. Los grises que
       aparecen son los que la hoja ya usaba (#2c2c2c en el filete legal y
       --gris-marquee) más veladuras de blanco, que son transparencia, no color.

   ORDEN DE CARGA
   Va SIEMPRE en último lugar, después de estilo.css y, donde exista, después de
   paginas.css:
       <link rel="stylesheet" href="estilo.css">
       <link rel="stylesheet" href="paginas.css">   (sólo eventos/contacto/legal)
       <link rel="stylesheet" href="cierre.css">
   Varias reglas de aquí ganan por ORDEN, no por especificidad; invertir la
   carga devuelve el pie al estado anterior.

   SOBRE ANIMACIONES
   Aquí no hay ni un solo estado de reposo con opacity:0. Lo único que se anima
   son transiciones de hover y foco sobre propiedades que no ocultan nada
   (transform, background, box-shadow y el ancho de un guion decorativo). El
   contenido está visible desde el primer cuadro, con y sin JavaScript, y con
   prefers-reduced-motion se apaga el movimiento sin apagar el contenido.
   ========================================================================== */


.pie>.nube,
.pie>.nube-arriba {
  display: none !important;
}

/* Corte de líneas dibujadas negras sobre el pie */
.pie-corte-lineas {
  position: absolute;
  bottom: 100%;
  margin-bottom: -2px;
  left: -2px;
  width: calc(100% + 4px);
  height: auto;
  display: block;
  pointer-events: none;
  z-index: 4;
}

/* ==========================================================================
   1. SECCIÓN "TU APOYO": DE AVISO A REMATE
   --------------------------------------------------------------------------
   El lazo verde y el personaje rojo son arte aprobado y no se tocan: siguen en
   la misma posición y con el mismo z-index. Lo que cambia es lo que los rodea.
   ========================================================================== */

/* Más aire arriba y abajo. El cierre es el último acto de la página: si respira
   igual que una sección intermedia, se lee como una sección intermedia. */
.apoyo {
  padding: 10px 0 0px
}

/* Tres niveles de jerarquía donde antes había uno solo:
   (1) los chips de datos, pequeños; (2) el titular, grande; (3) la bajada. */
.apoyo h2 {
  font-size: clamp(20px, 2.2vw, 28px);
  font-weight: 400 !important;
  line-height: 1.1;
}

.apoyo h2 .tu-word {
  font-weight: 400 !important;
  font-size: 1.25em !important;
  color: var(--negro, #141414);
  display: inline-block;
  transform: translate(6px, 5px);
  margin-right: .12em;
}

.apoyo h2 .mano {
  font-size: 2.8em !important;
  font-weight: 400 !important;
  line-height: .85;
  color: var(--coral, #FF4949);
  display: inline-block;
  vertical-align: middle;
}

/* Dos niveles de clase (.apoyo p .apoyo-bajada) porque estilo.css declara
   ".apoyo p" con dos, y con uno solo el margen de allí ganaría por
   especificidad, no por orden de carga. Lo mismo vale para .apoyo-canales. */
.apoyo p.apoyo-bajada {
  max-width: 40ch;
  margin: 12px auto 24px;
  font-size: clamp(12px, 1vw, 14px);
  font-weight: 300;
  line-height: 1.45;
}

/* El salto manual sólo existe para reproducir el corte de línea del raster
   de escritorio que reemplazó (ver @media min-width:901px más abajo, donde
   se reactiva). En tablet/móvil el párrafo seguía envolviendo solo por
   ancho (40ch arriba) antes de este cambio, así que aquí se apaga. */
.apoyo-bajada .salto-apoyo {
  display: none;
}

/* --- Chips de datos publicados ------------------------------------------
   No son un adorno ni una cifra nueva: son los dos datos que la fundación ya
   publica en el hero de Inicio y en el archivo de eventos, puestos justo antes
   de la petición para que la petición tenga de dónde sostenerse. Van en chips
   de 14px de radio, que es el radio de chip del tema, y NO con la máscara de
   nube de las cifras del hero: repetir esa forma aquí sería redundante. */
.apoyo-rotulo {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin: 0 0 20px;
  padding: 0;
  list-style: none;
}

.apoyo-rotulo li {
  --acento: var(--verde);
  display: inline-flex;
  align-items: center;
  gap: 9px;
  background: #fff;
  color: var(--negro);
  border-radius: 14px;
  padding: 9px 16px;
  font-size: 13.5px;
  font-weight: 900;
  letter-spacing: .02em;
  line-height: 1.2;
  box-shadow: inset 0 0 0 2px var(--acento);
}

.apoyo-rotulo li::before {
  content: "";
  flex: none;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--acento);
}

.apoyo-rotulo li:nth-child(2) {
  --acento: var(--azul)
}

/* --- Botones: uno manda y el otro acompaña -------------------------------
   Antes los dos tenían exactamente el mismo cuerpo, así que la fila no decía
   cuál era la acción principal. El primario crece y el secundario se queda en
   el tamaño de siempre. La sombra sigue siendo sólida, como en todo el tema. */
.apoyo .botones {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 14px;
  margin: 10px auto 0;
  transform: translateX(115px);
  width: 100%;
}

@media (max-width: 900px) {
  .apoyo .botones {
    transform: none;
  }
}

/* min-width para que el primario no quede más estrecho que el secundario sólo
   porque su palabra es más corta: "Dona" tiene cuatro letras y "Quiero ser
   voluntario" veintiuna. */
.apoyo .botones .btn-dona {
  font-size: 19px;
  padding: 18px 34px;
  border-radius: 14px;
  min-width: 184px;
}

.apoyo .botones .btn-dona svg {
  width: 21px;
  height: 21px
}

/* La clienta pidió el botón de voluntario ROJO como el de Dona, no blanco con
   borde. Se le da el mismo relleno rojo y la misma sombra sólida del primario.
   Va con tres clases para ganarle a `.btn-hueco{background:#fff}` de estilo.css. */
.apoyo .botones .btn-hueco {
  padding: 16px 26px;
  background: var(--rojo);
  color: #fff;
  box-shadow: 0 3px 0 var(--rojo-hondo);
}

.apoyo .botones .btn-hueco:hover {
  transform: translateY(-2px);
  box-shadow: 0 5px 0 var(--rojo-hondo)
}

.apoyo .botones .btn-hueco:active {
  transform: translateY(1px);
  box-shadow: 0 1px 0 var(--rojo-hondo)
}

/* --- Canales reales, debajo de los botones -------------------------------
   El bloque pedía donar y ser voluntario pero no ofrecía ninguna vía directa.
   Estos dos enlaces funcionan hoy, sin backend: WhatsApp abre el chat y el
   correo abre el programa de correo. */
.apoyo p.apoyo-canales {
  margin: 26px auto 0;
  max-width: 52ch;
  font-size: 15.5px;
  font-weight: 300;
  line-height: 1.6;
}

.apoyo-canales a {
  font-weight: 900;
  border-bottom: 1.5px solid currentColor;
  padding-bottom: 1px;
  transition: color .15s ease;
}

.apoyo-canales a:hover {
  color: var(--rojo)
}

/* El personaje rojo gana un poco de presencia, que es lo que pide un remate.
   Sigue anclado abajo a la derecha del bloque, como en el arte. */
.apoyo .personaje {
  width: min(295px, 32%);
  left: calc(50% + 205px);
  top: -277px;
  margin-bottom: 10px;
}


/* ==========================================================================
   2. PIE: ESTRUCTURA, CANTO DE NUBE Y TEXTURA
   ========================================================================== */

/* position:relative es lo que permite colgar el festón y las nubes de fondo.
   Nada de overflow:hidden aquí: recortaría el festón, que vive fuera de la caja
   por diseño (top:-62px). Las nubes de fondo se posicionan dentro de los
   límites del pie justamente para no necesitarlo. */
.pie {
  position: relative;
  padding: 45px 0 30px;
  margin-top: 0;
}

/* El pie deja de ser un rectángulo. Entra con el mismo festón de nubes que
   separa todas las demás secciones del sitio, en negro, mordiendo hacia arriba
   la sección anterior. Funciona igual en las cinco páginas porque encima del
   pie siempre hay margen libre: .apoyo cierra con 132px y los .bloque de
   contacto y legal con 80px. */
.pie>.nube-arriba {
  z-index: 4
}

/* Grano, como en todos los fondos de color del arte. Sobre negro no lleva
   mix-blend-mode: en overlay el negro se come el ruido y no se vería nada. Va
   como capa propia a muy baja opacidad, lo justo para que la superficie deje
   de ser un plano digital perfecto. */
.pie::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image: var(--grano);
  opacity: .07;
  pointer-events: none;
}

/* Nube suelta de fondo, la misma silueta que el hero usa en sus esquinas.
   Es decorativa, va con aria-hidden en el marcado y a opacidad muy baja.

   La posición no es libre: se ancla al hueco que queda debajo de la columna de
   marca, que es la más corta de las cuatro (269px frente a 467px de la del
   boletín, medido en el DOM). Ahí lee como marca de agua. Probada antes arriba
   a la derecha, caía justo detrás de las fichas de sede y, como esas fichas son
   una veladura de blanco, la nube se transparentaba a través de ellas y parecía
   una mancha de impresión, no una decisión. */
.pie-nube-fondo {
  position: absolute;
  z-index: 0;
  pointer-events: none;
  color: #fff;
  opacity: .05;
  height: auto;
  left: -26px;
  bottom: 246px;
  width: min(330px, 27vw);
}

/* Todo el contenido por encima de las capas decorativas */
.pie>.env {
  position: relative;
  z-index: 1
}

/* Rejilla: la primera columna manda (es la identidad) y la última, que lleva el
   boletín y los canales, la acompaña. Las dos del medio son de servicio. */
.pie-grid {
  grid-template-columns: 1.2fr .88fr 1fr 1.12fr;
  gap: 44px 40px
}

/* Rótulo de columna. Es la pieza que le faltaba al pie para tener jerarquía:
   antes las cuatro columnas empezaban directamente con su contenido y ninguna
   decía qué era. */
.pie-titulo {
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--gris-marquee);
  margin: 0 0 18px;
  padding-bottom: 11px;
  border-bottom: 1px solid #2c2c2c;
}


/* ==========================================================================
   3. COLUMNA DE MARCA
   ========================================================================== */
.pie img.logo {
  height: 86px;
  margin-bottom: 18px
}

/* La firma de la casa. Es la misma frase del titular de Inicio, no una nueva:
   abre el sitio en grande y lo cierra en pequeño. */
.pie-lema {
  margin: 0 0 8px;
  max-width: 20ch;
  font-size: 19px;
  font-weight: 300;
  line-height: 1.28;
}

.pie-desde {
  margin: 0 0 22px;
  font-size: 14px;
  font-weight: 300;
  color: var(--gris-marquee);
}

/* Redes: antes eran cuatro iconos sueltos de 26px sin superficie, sin estado de
   hover y con un blanco de foco muy difícil de ver. Ahora son botones de 44px,
   que es el mínimo cómodo para un dedo, con canto de 14px como los chips. */
.pie .pie-redes {
  gap: 10px;
  flex-wrap: wrap
}

.pie .pie-redes a {
  width: 44px;
  height: 44px;
  border-radius: 14px;
  background: rgba(255, 255, 255, .06);
  box-shadow: inset 0 0 0 1px #2c2c2c;
  transition: background .15s ease, transform .15s ease;
}

.pie .pie-redes a:hover {
  background: rgba(255, 255, 255, .15);
  transform: translateY(-2px)
}

.pie .pie-redes a:active {
  transform: translateY(1px)
}

.pie .pie-redes svg {
  width: 20px;
  height: 20px
}


/* ==========================================================================
   4. ENLACES DE SECCIÓN Y ARCHIVO DE FOTOS
   --------------------------------------------------------------------------
   Los selectores llevan .pie delante a propósito: estilo.css define .pie ul a
   con dos niveles y sin el prefijo estas reglas perderían por especificidad,
   no por orden.
   ========================================================================== */
.pie .pie-enlaces {
  display: grid;
  gap: 2px
}

.pie .pie-enlaces li {
  margin: 0
}

.pie .pie-enlaces a {
  display: inline-flex;
  align-items: center;
  gap: 0;
  font-size: 16.5px;
  font-weight: 300;
  line-height: 1.3;
  padding: 6px 0;
  border-radius: 6px;
  transition: color .15s ease, gap .15s ease;
}

/* Guion verde que crece al pasar por encima o al llegar con el teclado. Es
   decoración pura: nace en 0 de ancho y el texto nunca depende de él. */
.pie .pie-enlaces a::before {
  content: "";
  width: 0;
  height: 2px;
  background: var(--verde);
  border-radius: 2px;
  flex: none;
  transition: width .16s ease;
}

.pie .pie-enlaces a:hover,
.pie .pie-enlaces a:focus-visible {
  color: var(--verde);
  gap: 10px
}

.pie .pie-enlaces a:hover::before,
.pie .pie-enlaces a:focus-visible::before {
  width: 14px
}

.pie .pie-enlaces a[aria-current="page"] {
  color: #fff;
  gap: 10px
}

.pie .pie-enlaces a[aria-current="page"]::before {
  width: 14px;
  background: var(--rojo)
}

/* El archivo de fotos de Flickr ya existía en Eventos y en Contacto, pero no en
   el pie, que es donde se busca un archivo. Se le da tarjeta propia porque es
   contenido real y valioso, no un enlace más de la lista. Tarjeta mediana:
   radio 22 y sombra sólida en el azul hondo del propio tema. */
.pie-archivo {
  display: grid;
  gap: 4px;
  margin-top: 24px;
  background: rgba(255, 255, 255, .08);
  color: #fff;
  border-radius: 22px;
  padding: 16px 18px 17px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14);
  transition: transform .15s ease, background .15s ease, box-shadow .15s ease;
}

.pie-archivo:hover {
  transform: translateY(-2px);
  background: rgba(255, 255, 255, .12);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .22);
}

.pie-archivo:active {
  transform: translateY(1px);
}

.pie-archivo b {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 16px;
  font-weight: 900;
  line-height: 1.2;
}

/* La flecha del propio juego de símbolos, girada 45 grados: es la convención de
   "se abre fuera del sitio" que ya usa la ficha de Eventos. */
.pie-archivo b svg {
  width: 15px;
  height: 15px;
  flex: none;
  fill: currentColor;
  transform: rotate(-45deg);
}

.pie-archivo span {
  font-size: 13.5px;
  font-weight: 400;
  line-height: 1.35
}


/* ==========================================================================
   5. SEDES: DE LISTA SUELTA A TRES FICHAS
   --------------------------------------------------------------------------
   Son tres lugares reales, no tres renglones. Cada uno recibe superficie,
   canto de 22px y un filete de color que los distingue, con la MISMA asignación
   de color que ya usan las fichas de sede de contacto.html: verde la principal,
   rojo y amarillo los dos centros de acopio.
   ========================================================================== */
.pie .pie-sedes {
  display: grid;
  gap: 12px
}

.pie .pie-sedes li {
  margin: 0
}

.sede-pie {
  --acento: var(--verde);
  display: grid;
  gap: 3px;
  background: #0F0F0F;
  border-radius: 22px;
  padding: 14px 18px 15px 20px;
  box-shadow: inset 4px 0 0 var(--acento);
}

.sede-pie.sp-acopio {
  --acento: #DE0000;
}

.sede-pie.sp-acopio2 {
  --acento: #EEA900;
}

/* La etiqueta se llama .etiqueta y no .rotulo por una razón medida, no por
   gusto: estilo.css ya tiene un ".rotulo" SIN acotar (el "DIRECTIVOS" de
   Nosotros) que trae margin:52px 0 26px. Con ese nombre, cada ficha de sede
   crecía de 91px a 169px por un margen heredado que nadie había pedido.
   .etiqueta, en cambio, sólo existe acotada dentro de .sede-ficha en
   paginas.css, así que no se cruza. El margin:0 queda de todos modos como
   seguro. */
.sede-pie .etiqueta {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gris-marquee);
}

.sede-pie .etiqueta::before {
  content: "";
  flex: none;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--acento);
}

.sede-pie b {
  font-size: 17px;
  font-weight: 900;
  letter-spacing: .04em;
  line-height: 1.2
}

.sede-pie .lugar {
  font-size: 14px;
  font-weight: 300;
  line-height: 1.35;
  color: var(--gris-marquee)
}


/* ==========================================================================
   6. BOLETÍN HONESTO Y CANALES DE CONTACTO
   --------------------------------------------------------------------------
   El formulario tenía action="#": un enlace muerto. Se resuelve igual que los
   formularios de contacto.html, que ya tomaron esta decisión y la explicaron:
   no hay servicio de correo contratado, así que al enviar se abre el programa
   de correo del visitante con el mensaje ya redactado. El aviso lo dice con
   todas las letras, en vez de fingir una suscripción que nadie recibiría.

   El bloque verde y la palabra BOLETÍN en Goodkids son arte aprobado y se
   conservan tal cual; sólo sube el radio de 14 a 22, que es el que le
   corresponde a una tarjeta mediana en este tema.
   ========================================================================== */
.pie .boletin {
  border-radius: 22px;
  padding: 22px 24px 24px
}

/* El campo tenía outline:none al enfocarse y nada que lo reemplazara: con el
   teclado no se veía dónde estabas. Se devuelve un anillo, blanco para que se
   lea sobre el negro de la píldora, y la píldora entera responde al foco. */
.pie .boletin form {
  border-radius: 999px
}

.pie .boletin form:focus-within {
  box-shadow: 0 0 0 3px rgba(0, 0, 0, .4)
}

.pie .boletin input:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 2px;
  border-radius: 999px
}

.boletin-aviso {
  margin: 12px 0 0;
  font-size: 12.5px;
  font-weight: 400;
  line-height: 1.45;
  color: var(--negro);
}

.boletin-aviso a {
  border-bottom: 1px solid currentColor
}

/* Mensaje de estado tras enviar. Nace con el atributo hidden en el marcado, que
   es ausencia del DOM visual, no opacity:0: el script lo revela quitando hidden
   y nunca puede quedar un texto invisible ocupando espacio. */
.boletin-estado {
  margin: 10px 0 0;
  font-size: 12.5px;
  font-weight: 900;
  line-height: 1.45;
  color: var(--negro);
}

/* Teléfono y correo eran texto plano: se veían pero no se podían usar. Ahora
   son enlaces reales (tel:, wa.me y mailto:) con su rótulo encima. */
.pie .pie-contacto {
  list-style: none;
  margin: 24px 0 0;
  padding: 0;
  display: grid;
  gap: 16px
}

.pie .pie-contacto li {
  margin: 0;
  display: grid;
  gap: 3px;
  justify-items: start
}

.pie-contacto .etiqueta {
  margin: 0;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gris-marquee);
}

.pie .pie-contacto a {
  font-size: 16px;
  font-weight: 900;
  line-height: 1.3;
  overflow-wrap: anywhere;
  border-radius: 6px;
  transition: color .15s ease;
}

.pie .pie-contacto a:hover {
  color: var(--verde)
}

.pie .pie-contacto a.mini {
  font-size: 13.5px;
  font-weight: 300;
  border-bottom: 1px solid #2c2c2c;
  padding-bottom: 1px;
}

.pie .pie-contacto a.mini:hover {
  border-bottom-color: var(--verde)
}


/* ==========================================================================
   7. BARRA LEGAL ORDENADA
   --------------------------------------------------------------------------
   Antes era un párrafo largo en gris con cinco datos separados por barras
   verticales: nadie lo lee y, si lo lee, no encuentra el NIT. Son cinco datos
   distintos, así que van como cinco pares rótulo/valor en una lista de
   definición, dentro de una tarjeta de 26px, que es el radio de tarjeta grande.
   El texto legal no cambia ni una cifra: cambia cómo está ordenado.
   ========================================================================== */
.pie .pie-legal {
  display: block;
  margin-top: 58px;
  border-top: 0;
  background: rgba(255, 255, 255, .045);
  border-radius: 26px;
  padding: 26px 30px 22px;
  font-size: 13.5px;
  font-weight: 300;
}

.pie-datos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(176px, 1fr));
  gap: 18px 28px;
  margin: 0 0 22px;
}

/* Las dos filas quedan parejas: arriba razón social (doble), NIT y sigla;
   abajo inscripción y representante legal, a mitad y mitad. Con auto-fit puro
   el representante legal se quedaba solo en un renglón vacío. */
@media (min-width:900px) {
  .pie-datos {
    grid-template-columns: repeat(4, 1fr)
  }

  .pie-datos .dato-ancho {
    grid-column: span 2
  }
}

.pie-datos>div {
  display: grid;
  gap: 3px
}

.pie-datos dt {
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gris-marquee);
}

.pie-datos dd {
  margin: 0;
  font-size: 14.5px;
  font-weight: 400;
  line-height: 1.35
}

.pie-cierre {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px 26px;
  flex-wrap: wrap;
  border-top: 1px solid #2c2c2c;
  padding-top: 18px;
}

/* El selector va con el elemento (nav.pie-legal-nav) porque estilo.css declara
   ".pie-legal nav" con dos niveles: una clase suelta perdería el gap aquí y,
   en móvil, el justify-content:center que la hoja base le pone. */
.pie-legal nav.pie-legal-nav {
  display: flex;
  gap: 10px 24px;
  flex-wrap: wrap;
  justify-content: flex-start;
}

.pie-legal-nav a {
  font-size: 13.5px;
  color: var(--gris-marquee);
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
  border-radius: 3px;
  transition: color .15s ease;
}

.pie-legal-nav a:hover {
  color: #fff
}

.pie-legal-nav a[aria-current="page"] {
  color: #fff;
  border-bottom-color: var(--verde)
}

.pie-copy {
  margin: 0;
  font-size: 13px;
  color: var(--gris-marquee)
}


/* ==========================================================================
   8. FOCO Y MOVIMIENTO REDUCIDO
   ========================================================================== */
/* El anillo global es azul sobre blanco. Sobre el negro del pie se ve, pero un
   pelo apagado: se le sube el desplazamiento para que no se pegue al glifo. */
.pie a:focus-visible,
.pie button:focus-visible {
  outline: 3px solid var(--azul);
  outline-offset: 4px
}

/* Dentro del bloque verde el azul pierde contraste: allí el anillo va en negro,
   que es el color de texto de esa tarjeta. */
.pie .boletin a:focus-visible,
.pie .boletin button:focus-visible {
  outline: 3px solid var(--negro);
  outline-offset: 3px
}

@media (prefers-reduced-motion:reduce) {

  .apoyo-canales a,
  .pie .pie-redes a,
  .pie .pie-enlaces a,
  .pie .pie-enlaces a::before,
  .pie .pie-contacto a,
  .pie-archivo,
  .pie-legal-nav a {
    transition: none
  }

  .pie .pie-redes a:hover,
  .pie-archivo:hover,
  .pie-archivo:active {
    transform: none
  }
}


/* ==========================================================================
   9. RESPONSIVE
   --------------------------------------------------------------------------
   Se respetan los cortes que ya usa el sitio (1080, 900 y 600) y la decisión
   que la hoja base tomó para el móvil: el pie se centra, que es como se lee
   cómodo en una sola columna. Lo que se añade es que las piezas que son
   tarjetas (sedes, archivo, boletín, contacto y legal) mantengan su texto
   alineado a la izquierda dentro de una caja centrada, exactamente el patrón
   que estilo.css ya aplicaba al bloque del boletín.
   ========================================================================== */
@media (max-width:1080px) {
  .pie-grid {
    grid-template-columns: 1fr 1fr;
    gap: 46px 40px
  }
}

@media (max-width:900px) {
  .apoyo {
    padding: 104px 0 112px
  }

  .pie-grid {
    grid-template-columns: 1fr 1fr
  }

  .pie img.logo {
    height: 74px
  }

  .pie .pie-legal {
    padding: 24px 24px 20px
  }
}

@media (max-width:600px) {
  .apoyo {
    padding: 78px 0 88px
  }

  .apoyo h2 {
    font-size: 34px
  }

  .apoyo .apoyo-bajada {
    margin-bottom: 26px
  }

  .apoyo-rotulo li {
    font-size: 13px;
    padding: 8px 14px
  }

  .apoyo .botones .btn-dona,
  .apoyo .botones .btn-hueco {
    width: min(280px, 100%);
    justify-content: center
  }

  .apoyo .personaje {
    width: min(160px, 44vw)
  }

  .pie {
    padding-top: 64px;
    padding-bottom: 28px
  }

  .pie-grid {
    grid-template-columns: 1fr;
    gap: 38px
  }

  .pie img.logo {
    height: 66px
  }

  .pie-lema {
    max-width: 26ch;
    margin-inline: auto
  }

  /* En la pantalla de mano el pie es una sola columna y no queda hueco libre:
     la marca de agua se retira en vez de quedar detrás del texto. El grano y el
     festón siguen dando la textura. */
  .pie-nube-fondo {
    display: none
  }

  /* estilo.css centra el pie en móvil con justify-items:center. Eso hace que
     cada columna se encoja al ancho de su contenido en vez de ocupar la
     rejilla, y ahí las fichas de sede salían de 236px mientras el boletín y la
     tarjeta de archivo salían de 320: tres anchos distintos en una sola
     columna. Medido en el DOM a 375px. Las columnas vuelven a estirarse y el
     centrado lo hace cada caja con su propio margin-inline:auto, que da el
     mismo resultado visual y un solo ancho. */
  .pie-grid {
    justify-items: stretch
  }

  .pie-titulo,
  .pie .pie-enlaces,
  .pie-archivo,
  .pie .pie-sedes,
  .pie .pie-contacto {
    width: min(320px, 100%);
    margin-inline: auto
  }

  /* Sólo el bloque de identidad se queda centrado. Las listas y las tarjetas
     se alinean a la izquierda bajo su rótulo: un rótulo a la izquierda con la
     lista centrada debajo se lee como dos bloques distintos, y un nombre de
     sede centrado sobre su ciudad se lee como un poema, no como una dirección. */
  .pie-titulo,
  .pie .pie-enlaces,
  .sede-pie,
  .pie-archivo {
    text-align: left
  }

  .pie .pie-contacto {
    justify-items: start;
    text-align: left
  }

  .pie .pie-enlaces a {
    justify-content: flex-start
  }

  .pie .pie-legal {
    width: min(340px, 100%);
    margin-inline: auto;
    margin-top: 44px;
    padding: 22px 22px 18px;
    text-align: left;
  }

  .pie-datos {
    grid-template-columns: 1fr;
    gap: 14px;
    margin-bottom: 18px
  }

  .pie-cierre {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px
  }

  /* Alineados a la izquierda como los datos de arriba: la hoja base los centra
     y en una tarjeta de datos alineada a la izquierda quedaban descolgados. */
  .pie-legal nav.pie-legal-nav {
    gap: 8px 18px;
    justify-content: flex-start
  }
}


/* ==========================================================================
   3. APOYO EN ESCRITORIO — PLANTILLA APLANADA (2026-08-09)
   --------------------------------------------------------------------------
   Esta sección venía rompiéndose una y otra vez: el lazo verde y el confetti
   son piezas sueltas (imágenes + SVG) posicionadas a mano contra un título
   real, y cada ajuste de una pieza descuadraba a las otras (18 commits de
   historia "mover lazo Xpx" lo demuestran). El bug puntual de esta ronda era
   que `.apoyo .lazo-izq,.lazo-der` había perdido su `position:absolute`
   compartido (quedó sólo en la regla base, ver más arriba en este archivo el
   fix aplicado en estilo.css) y las imágenes pasaron a flujo normal,
   apilándose una debajo de otra y estirando `.apoyo` a 1691px de alto — de
   ahí "las líneas descuadradas" y "el texto está súper abajo" que reportó el
   cliente.

   La solución, pedida explícita por Isaías: en vez de seguir afinando piezas
   sueltas contra un título real, se APLANA todo lo ESTÁTICO del .ai (texto,
   líneas verdes, confetti) en una sola imagen — recortada 1:1 del .ai
   escritorio (DISENOWEB_ajustes tamanos pag inicio.ai, página 0, x:0-1440
   y:3406-3965) con el muñequito y los dos botones borrados (blanco sólido,
   difuminado verificado por diff de píxeles contra el render limpio: sólo
   cambiaron los píxeles de esas tres piezas, cero texto/líneas tocadas) — y
   ENCIMA sólo van los tres elementos que de verdad necesitan ser DOM real:
   los dos botones (llevan href) y el muñequito (tiene animación). Ya no hay
   nada que reposicionar a mano: si el título se ve mal, es la imagen la que
   está mal, no una de seis piezas sueltas.

   Por qué sólo ESCRITORIO (min-width:901px): tablet y móvil NO estaban rotos
   — el móvil tiene su propio bloque muy afinado más abajo en este mismo
   archivo... salvo que en realidad vive en estilo.css (@media max-width:600px,
   "APOYO EN MÓVIL", fechado 2026-08-01, verificado a mano en 5 anchos). Tocar
   esas piezas para meterlas en la plantilla habría sido re-romper algo que
   funcionaba. La plantilla es SÓLO del artboard de escritorio del .ai, así
   que sólo reemplaza escritorio.

   POR QUÉ cqw Y NO % NI px: la plantilla y sus tres piezas encima tienen que
   escalar juntas, en el mismo factor, a cualquier ancho entre 901px y el
   máximo del .env (1240px, ver --ancho). `container-type:inline-size` en
   `.apoyo-caja` convierte su propio ancho en la unidad `cqw` (1cqw = 1% del
   ancho del contenedor en ESE momento). Como la plantilla ocupa el 100% de
   ese mismo contenedor, un valor en cqw calculado como (px-en-el-recorte /
   1440 * 100) cae exactamente sobre el mismo punto de la imagen sin importar
   si el contenedor mide 901px o 1240px — ni un solo breakpoint intermedio
   que mantener.

   Coordenadas: medidas por ancla, no a ojo (skill §8.1). Botón Dona vía
   fitz get_drawings() filtrando fill rojo puro en la página del .ai:
   rect (421.1,3779.5)-(604.2,3846.7) en absolutas del documento; restando el
   origen del recorte (y:3406) da la posición local que se usa abajo. Mismo
   método para "Quiero ser voluntario". El hueco del muñequito se obtuvo por
   diff de píxeles (plantilla limpia vs. plantilla con muñeco borrado), no a
   ojo: bbox real del área borrada x:864–1094 y:132.5–357 (local). */
/* Oculta por defecto (tablet/móvil siguen con el lazo/confetti real, sin
   plantilla): sólo se muestra dentro del media query de escritorio. */
.apoyo-plantilla {
  display: none;
}

/* Oculto por defecto igual que .apoyo-plantilla: sólo se activa dentro del
   media query de escritorio (más abajo), donde vive el título horneado que
   viene a tapar. */
.apoyo-texto-nuevo {
  display: none;
}

/* Isaías pidió quitar las líneas verdes/confetti en TODOS los anchos, no
   sólo en escritorio: ya estaban ocultas en escritorio (≥901px, más abajo)
   y en móvil (≤600px, más abajo también) — el hueco real era tablet
   (601–900px), que nunca tuvo su propia regla de ocultamiento. Una sola
   regla sin media query cierra el hueco (las de abajo, dentro de sus
   @media, quedan redundantes pero no rompen nada). */
.apoyo>.lazo-izq,
.apoyo>.lazo-der,
.apoyo>.confetti-izq-arriba,
.apoyo>.confetti-der-abajo,
.apoyo>.adorno {
  display: none;
}

@media (min-width:901px) {

  /* Sin padding: la plantilla ya trae 198px de aire propio bajo los botones
     (medido: borde inferior de la imagen menos borde inferior de "Dona").
     Los 70px de antes se sumaban encima de eso — 268px totales antes del
     pie — y era justo lo que Isaías reportó como "la sección se creció
     mucho, hay que desplazarse de más". El top:40px venía de una regla
     vieja de mapa.css (.territorio + .apoyo), ver el fix en ese archivo. */
  .apoyo {
    padding: 0;
    overflow: visible;
  }

  /* .apoyo-caja hereda "env" del marcado (compartido con tablet/móvil, que
     sí necesitan la columna angosta de .env). En escritorio esa clase
     capaba el ancho a 1240px centrado, así que la plantilla —y las líneas
     verdes dibujadas dentro— nunca llegaban al borde real del viewport:
     quedaba un margen visible entre el borde de pantalla y el arranque de
     la línea. Isaías lo pidió explícito: "la línea verde debe salir
     completamente del borde de la pantalla". Se anula min()/margin de
     .env aquí para que .apoyo-caja sea full-bleed (100% de .apoyo, que no
     tiene padding lateral) y la imagen, a width:100%, llegue de canto a
     canto sin recorte. */
  .apoyo-caja {
    display: block;
    position: relative;
    container-type: inline-size;
    width: 100%;
    max-width: none;
    margin-inline: 0;
  }

  /* Piezas del arte viejo: quedaron dentro de la plantilla, se ocultan sin
     tocar el marcado (las 6 páginas comparten este HTML) para no afectar a
     tablet/móvil, que siguen usándolas tal cual. Son hijas directas de
     .apoyo (la <section>), no de .apoyo-caja. */
  .apoyo>.lazo-izq,
  .apoyo>.lazo-der,
  .apoyo>.confetti-izq-arriba,
  .apoyo>.confetti-der-abajo,
  .apoyo>.adorno {
    display: none;
  }

  .apoyo-plantilla {
    display: block;
    width: 100%;
    height: auto;
  }

  /* Texto nítido nuevo (2026-08-19, material del cliente) ENCIMA del título
     horneado en la plantilla, que Isaías reportó como borroso. No se toca
     apoyo-plantilla.webp (el fondo/líneas siguen igual) — sólo se tapa el
     título viejo con esta pieza nueva, medida por bbox real de píxeles no
     a ojo: título viejo en x:409–915,y:250–378 sobre el lienzo 1376×665
     ORIGINAL (29.72cqw/17.62cqw de left/top, ancho 36.77cqw). El archivo
     nuevo (2121×600, aspect 3.535) se ajusta por ancho y queda centrado en
     alto dentro de esa misma franja para no estirarlo.

     2026-08-24: Isaías pidió reducir los marcos superiores/inferiores de la
     sección. apoyo-plantilla.webp ya no tenía NINGÚN arte real (era blanco
     puro — ver commit que borró el subtítulo horneado): se recortaron 179px
     arriba y 55px abajo del lienzo 1376×665 original (v6→v7), así que TODO
     top medido contra ese lienzo se corre hacia arriba en
     179/1376*100=13.01cqw. 17.62-13.01=4.61cqw. El left/width no cambian
     (el recorte fue sólo vertical). */
  .apoyo-texto-nuevo {
    display: block;
    position: absolute;
    left: 29.72cqw;
    top: 4.61cqw;
    width: 36.77cqw;
    height: auto;
    z-index: 2;
  }

  /* El h2 sigue horneado en apoyo-texto-nuevo.webp: sólo A ÉL se le aplica la
     receta de .oculto (sr-only). La bajada YA NO está horneada en el raster —
     apoyo-plantilla.webp v6 le borró esa franja porque, a diferencia del
     título, nunca tuvo una imagen nítida que la tapara: era el PNG viejo
     pixelado (Isaías lo reportó, 2026-08-24) reescalado por el
     width:100% de .apoyo-plantilla sobre 901-1240px. Se reemplaza por el
     `<p class="apoyo-bajada">` real (misma fuente del sitio, nunca pixela). */
  .apoyo-txt {
    position: absolute;
    inset: 0;
  }

  .apoyo-txt h2 {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  /* Posición por bbox real de píxeles del texto borrado (skill §8.1, no a
     ojo): franja x:386-960,y:412-454 sobre el lienzo 1376×665 de
     apoyo-plantilla.webp → top 29.94cqw. El left se resuelve centrando
     (left:50%+translateX) en vez de calcar el x medido: el raster quedaba
     con un ligero corrimiento propio del renderizado de fuente horneada,
     mientras que el texto real ya hereda text-align:center de .apoyo —
     centrarlo de verdad es más correcto que repetir ese corrimiento.

     El raster tenía el salto de línea horneado entre "voluntario." y "Cada
     gesto..." (dos oraciones cortas, no un párrafo que se ajusta solo). Sin
     ese salto, el texto real hace wrap orgánico en un punto distinto y más
     largo, que en escritorio se metía debajo/detrás del personaje rojo
     (.apoyo .personaje, ver bug real capturado 2026-08-24). El `<br
     class="salto-apoyo">` del HTML reproduce ese mismo salto SOLO en este
     ancho (se activa aquí abajo); en tablet/móvil sigue oculto y el texto
     seguía envolviendo solo como ya lo hacía antes de este cambio. El ancho
     de la caja ya no necesita acotar el wrap (el salto ya lo hace): se deja
     generoso (55cqw) para que cada línea rinda su ancho natural sin
     re-envolver, y text-align:center (heredado de .apoyo) centra cada línea
     por separado igual que en el .ai. */
  /* Isaías pidió más tamaño ("2 aumentos") y la tipografía correcta después
     de ver la primera versión: font-weight pasa de 300 (el light que .apoyo
     p.apoyo-bajada usa para tablet/móvil, heredado sin pensar en este
     contexto) a 400, el mismo regular que usa el resto del cuerpo del sitio
     (`p{}` de estilo.css no fija weight, hereda el 400 del body) y el propio
     ".tu-word" del título — el 300 se leía más fino que el resto del cierre.
     Tamaño, dos rondas: clamp(12,1.35cqw,15) → clamp(16,1.65cqw,19) → pedido
     "un poco más grande" → clamp(18,1.85cqw,21).

     top: mismo ajuste de recorte que .apoyo-texto-nuevo arriba —
     29.94-13.01=16.93cqw (ver esa nota para el porqué del 13.01). */
  .apoyo-txt p.apoyo-bajada {
    position: absolute;
    left: 50%;
    top: 16.93cqw;
    transform: translateX(-50%);
    width: 55cqw;
    max-width: none;
    margin: 0;
    font-size: clamp(18px, 1.85cqw, 21px);
    font-weight: 400;
    line-height: 1.4;
  }

  .apoyo-bajada .salto-apoyo {
    display: inline;
  }

  /* transform:none cancela un translateX(115px) heredado de una regla vieja
     sin scope de .apoyo .botones (más arriba en este archivo, pensada para
     el diseño flex de antes) — sin esto, cualquier left en cqw calculado
     aquí queda corrido 115px de más hacia la derecha, aunque el cálculo en
     sí esté bien. */
  .apoyo .botones {
    position: absolute;
    inset: 0;
    display: block;
    gap: 0;
    transform: none;
  }

  .apoyo .botones .btn {
    position: absolute;
    margin: 0;
    min-width: 0;
    box-sizing: border-box;
    font-size: clamp(14px, 1.32cqw, 19px);
  }

  /* min-width:0 cancela el 184px fijo de la regla vieja (calibrada para un
     botón suelto sobre título real, más arriba en este archivo): aquí el
     ancho lo da el cqw para que crezca/encoja pegado a la plantilla, que
     también se escala dentro de los mismos 901–1240px de .env.

     2026-08-10 (plantilla limpia, full-bleed, sin duplicado, 1376×768 ≈
     misma proporción que la 5504×3072 de la ronda anterior — 4:1 exacto en
     ambos ejes, por eso el top del subtítulo cae en el mismo 33% medido en
     las dos). Subtítulo termina en y:453 de 768 (32.9cqw, ancho=base); fila
     de botones con margen cómodo abajo. */
  /* Centrado real: Dona(12.72cqw)+gap(1.58cqw)+Voluntario(19.72cqw)=34.02cqw
     de ancho combinado; start=(100-34.02)/2=32.99cqw para que el conjunto
     quede a centro (el commit f158e3a sólo corrió 3cqw, dejaba el bloque
     con midpoint en 41.5cqw, no en 50). */
  .apoyo .botones .btn-dona {
    left: 33cqw;
    top: 24.79cqw;
    width: 12.72cqw;
    height: 3.82cqw;
    padding: 0;
  }

  .apoyo .botones .btn-hueco {
    left: 47.3cqw;
    top: 24.79cqw;
    width: 19.72cqw;
    height: 3.82cqw;
    padding: 0;
  }

  /* 2026-08-10, recalibrado por ancla (skill §8.1), no a ojo. Medido en vivo:
     con left:58.7cqw la punta del lápiz SÍ toca la O (x:862, objetivo x:855),
     pero a ese left el CUERPO (.pr-nube, no sólo la caja completa del SVG)
     arranca en x:914 mientras "hace la diferencia" termina en x:947.6 —
     33px de solape, la "a" final quedaba tapada.

     Es un conflicto geométrico del propio dibujo, no un error de medición:
     tocar la O y no tapar "diferencia" a la vez sólo es posible si el
     muñeco mide más del doble (≥493px de ancho en vez de 299px a 21cqw) —
     demasiado grande para el layout. Este left es el máximo acercamiento
     posible sin comerse la "a": con el cuerpo apenas libre de
     "diferencia" (right≥947.6), la punta queda en x≈891 (a ~36px de la O
     en vez de tocarla, pero visiblemente apuntando hacia ella). */
  /* Isaías pidió más grande y 20px más a la derecha desde la posición de
     Antigravity (61.3cqw+5px), y luego 30px de vuelta a la izquierda desde
     ese resultado (61.3cqw+25px - 30px = 61.3cqw-5px, aún a la derecha del
     límite seguro medido por ancla en 58.7cqw donde el cuerpo empezaba a
     tapar "diferencia" — verificar con captura tras el cambio).

     2026-08-24: sólo el `top` se corre por el recorte de marcos de
     apoyo-plantilla.webp (misma cuenta que .apoyo-texto-nuevo/.apoyo-bajada
     arriba: -13.01cqw). left/width NO se tocan — el recorte fue vertical,
     y el left ya está calibrado al límite exacto contra "diferencia"
     (skill §8.1 regla 4: cambiar sólo lo que el objetivo pide). */
  .apoyo .personaje {
    position: absolute !important;
    left: calc(61.3cqw - 5px) !important;
    top: calc(4.99cqw - 75px) !important;
    width: 27cqw !important;
    margin: 0 !important;
  }
}

/* ==========================================================================
   APOYO EN MÓVIL — plantilla aplanada (2026-08-10)
   --------------------------------------------------------------------------
   Mismo patrón que escritorio (arriba en este archivo), con la plantilla
   propia que compartió Isaías para el artboard de móvil del .ai
   (img/apoyo-plantilla-movil.webp, 896×1200). PASO 1 de su pedido: sólo la
   plantilla, full-bleed, SIN botones ni muñeco todavía — los agrega una
   vez confirmada la alineación (van uno debajo del otro en móvil, pendiente
   de coordenadas).

   Mismo full-bleed que en escritorio y por la misma razón: .apoyo-caja
   hereda "env" (width:min(100% - 48px,1240px)) Y el bloque móvil de
   estilo.css le suma padding-inline:24px encima — doble margen. Se anulan
   los dos aquí para que la plantilla llegue de borde a borde real. */
.apoyo-plantilla-movil {
  display: none;
}

@media (max-width:600px) {

  /* Sin padding: la plantilla móvil ya trae 144px de aire propio bajo el
     botón "Quiero ser voluntario" (medido: borde inferior de la imagen
     menos borde inferior del botón). Los 40px de antes se sumaban encima. */
  .apoyo {
    padding: 0;
    overflow: visible;
  }

  .apoyo-caja {
    display: block;
    position: relative;
    container-type: inline-size;
    width: 100%;
    max-width: none;
    margin-inline: 0;
    padding-inline: 0;
  }

  .apoyo>.lazo-izq,
  .apoyo>.lazo-der,
  .apoyo>.confetti-izq-arriba,
  .apoyo>.confetti-der-abajo,
  .apoyo>.adorno {
    display: none;
  }

  .apoyo-plantilla-movil {
    display: block;
    width: 100%;
    height: auto;
  }

  .apoyo-txt {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  .apoyo .botones {
    position: absolute;
    inset: 0;
    display: block;
    gap: 0;
  }

  .apoyo .botones .btn {
    position: absolute;
    margin: 0;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: clamp(14px, 4cqw, 18px);
    border-radius: 14px;
    font-weight: 700;
  }

  /* top:68cqw (versión de Antigravity) quedaba montado sobre el subtítulo:
     medido sobre la plantilla real, el subtítulo (3 líneas) termina en
     y:705 de 896 de ancho = 78.7cqw, no en 68. Corrido a 84/97.5cqw con el
     mismo left/width/height (esos ya estaban bien — el bug era sólo
     vertical). */
  /* Centrados: left=(100-width)/2 para cada uno (anchos distintos porque
     "Quiero ser voluntario" es más largo que "Dona"), no un left compartido
     — Isaías pidió centrar la fila, y con el mismo left quedaban alineados
     a la izquierda, no centrados. */
  .apoyo .botones .btn-dona {
    left: 25cqw;
    top: 84cqw;
    width: 50cqw;
    height: 10.5cqw;
    padding: 0;
    /* estilo.css trae, para el diseño móvil VIEJO ("Botones apilados
       centrados"), transform:translateX(-60px)!important en .btn-dona y
       translateX(80px)!important en .btn-hueco — pensados para OTRO layout
       (flex column) que ya no se usa aquí. El transform:none de más arriba
       en .apoyo .botones (línea ~1237) sólo cancela el del CONTENEDOR, no
       el de estos dos botones en particular: sin este !important cada uno
       queda corrido 60/80px del left en cqw ya calculado, y la fila se ve
       descentrada y "Quiero ser voluntario" se sale por la derecha
       (confirmado con getBoundingClientRect: right:395px sobre un viewport
       de 375px). */
    transform: none !important;
  }

  .apoyo .botones .btn-hueco {
    left: 16cqw;
    top: 97.5cqw;
    width: 68cqw;
    height: 10.5cqw;
    padding: 0;
    transform: none !important;
  }

  /* estilo.css trae, para el diseño móvil VIEJO (sin aplanar), una regla
     con !important en cada propiedad (position/top/right/left/width) — sin
     !important aquí esa regla ganaba pese a que cierre.css carga después,
     y las coordenadas de abajo (calculadas por ancla) nunca llegaban a
     aplicarse de verdad. Confirmado con getComputedStyle: sin !important
     el navegador reportaba left:228px/top:29px/width:135px, los valores de
     la regla vieja, no los de cqw de aquí. */
  .apoyo .personaje {
    display: block !important;
    position: absolute !important;
    left: calc(60cqw - 30px) !important;
    top: calc(12cqw + 60px) !important;
    width: 32cqw !important;
    margin: 0 !important;
  }
}