/* ------------------------------------------------------------------
   1. VARIABLES + BASE (declaradas en .esv-footer, nunca en :root)
   ------------------------------------------------------------------ */
.esv-footer{
  /* --- Marca --- */
  --esv-primario:#16ABB2;
  --esv-primario-osc:#0E8C92;

  /* --- Fondos --- */
  --esv-fondo-barra:#2B2B31;
  --esv-fondo-links:#3C3B42;
  --esv-fondo-claro:#FFFFFF;

  /* --- Texto de la banda de enlaces ---
     Claros porque la banda es oscura en cinco de las seis. Un sitio puede
     invertirla (reinservida.com la pone en teal #32B3AE) declarando 'texto',
     'texto-fuerte' y 'texto-suave' en su 'colors': ahí estos tres pasan a ser
     tinta oscura y con ellos se mueve todo lo que los lee. */
  --esv-texto:#E8E8EA;
  --esv-texto-fuerte:#FFFFFF;
  --esv-texto-suave:#A9A8B0;
  /* Blanco al 8%: se ve porque debajo hay oscuro. Sobre un fondo claro se
     queda en 1,08:1 y desaparece, así que un sitio con la banda invertida
     declara 'borde' con un rebaje oscuro. */
  --esv-borde:rgba(255,255,255,.08);

  /* --- Texto de las bandas oscuras (barra legal y copyright) ---
     Van aparte de --esv-texto* a propósito. Esos tres los puede invertir un
     sitio que ponga la banda de enlaces en claro, y la barra legal y el
     copyright siguen en oscuro en las seis: si compartieran variable, invertir
     la banda dejaría la barra con tinta oscura sobre fondo oscuro (1,07:1).
     Por eso el valor va escrito literal y no como var(--esv-texto): así la
     barra no se mueve cuando la banda cambia de esquema.
     El acento sí arranca del de la banda, que en cinco de las seis vale para
     las dos; quien lo invierta declara 'barra-acento' aparte. */
  --esv-barra-texto:#E8E8EA;
  --esv-barra-texto-suave:#A9A8B0;
  --esv-barra-acento:var(--esv-acento-texto);
  --esv-barra-borde:rgba(255,255,255,.08);

  /* --- Texto sobre la banda clara de sellos --- */
  --esv-gris-titulo:#55545E;
  --esv-gris-titulo-osc:#2B2B31;

  /* --- Roles derivados del color de marca ---
     Van aparte de --esv-primario a propósito. Hay paletas (Asturvida) donde el
     color de marca supera el 3:1 que exige un titular pero no llega al 4,5:1
     que exige un enlace. Con estas variables se sube la luminosidad solo donde
     hace falta, sin tocar el color corporativo de los títulos. */
  --esv-titulo:var(--esv-primario);
  --esv-acento-texto:var(--esv-primario);
  --esv-icono:var(--esv-acento-texto);

  /* --- Relleno de color de marca (botón Mapa web y chip social) ---
     Aquí el fondo no es el del footer sino el color de marca, así que encima
     el blanco no siempre es legible. Y cada estado lleva su propio par
     fondo/tinta porque el hover invierte el relleno (claro <-> oscuro): con
     una sola tinta para los dos estados, uno de ellos se cae del umbral. */
  --esv-sitemap-fondo:var(--esv-primario-osc);
  --esv-sitemap-fondo-hover:var(--esv-primario);
  --esv-sitemap-texto:#FFFFFF;
  --esv-sitemap-texto-hover:var(--esv-sitemap-texto);
  --esv-social-fondo:var(--esv-primario);
  --esv-social-fondo-hover:var(--esv-primario-osc);
  --esv-social-icono:#FFFFFF;
  --esv-social-icono-hover:var(--esv-social-icono);

  /* --- Bloques opcionales (contact, registro, hours, logos) --- */
  /* Rebaje oscuro, no aclarado: sobre un aclarado, --esv-texto-suave se queda
     en 3,9:1 y la etiqueta del registro no llegaría al 4,5:1. */
  --esv-registro-fondo:rgba(0,0,0,.18);
  --esv-registro-borde:var(--esv-primario);
  --esv-registro-etiqueta:var(--esv-texto-suave);
  --esv-registro-num:var(--esv-texto-fuerte);
  --esv-horario-etiqueta:var(--esv-texto-suave);
  --esv-horario-valor:var(--esv-texto);
  /* Recuadro de los logos con 'plate' (ver .esv-footer__logos-item--plate). */
  --esv-logos-fondo:#FFFFFF;

  /* --- Ajustes del panel (Ajustes › Footer Esvidas) ---
     Aquí están los valores de siempre. El panel solo cambia el valor de
     estas variables: no añade ni una regla nueva. Las dos escalas son
     multiplicadores sin unidad, y se aplican con calc() ahí donde toca, para
     que una sola variable mueva un grupo entero manteniendo la proporción.
     Nada de esto toca los breakpoints ni el área táctil mínima de móvil. */
  --esv-ancho-max:1440px;
  --esv-gap-columnas:32px;
  /* Logos institucionales en móvil (ajuste 'logos_movil'). Aquí están los
     valores de siempre —la banda y la fila de logos se ven—, y el único otro
     valor que emite el plugin es 'none' en las dos. Se leen SOLO dentro de
     @media (max-width:767px): por encima de ahí los logos no se ocultan nunca.
     El brand (logo de marca + teléfono) no entra aquí, es otro bloque.

     Se oculta con display:none a propósito. El markup se queda entero en el
     HTML, que es lo que tiene que leer un rastreador, y así no quedan enlaces
     invisibles pero enfocables con el teclado, que es lo que deja una técnica
     de ocultación visual por clip cuando los logos llevan 'url'. */
  --esv-logos-movil:flex;
  --esv-logos-band-movil:block;
  /* Ritmo vertical de la columna: lo comparten los enlaces, los datos de
     contacto, las líneas de horario y las separaciones de subtítulo y
     provincia, para que una columna no mezcle dos cadencias. Los valores de
     abajo son los de siempre; los desplazamientos fijos (los +1px y +2px de
     .esv-footer__province) están para que el valor por defecto salga
     exactamente igual que antes de existir la variable. */
  --esv-gap-enlaces:5px;
  --esv-escala-pad:1;
  --esv-escala-tipo:1;

  /* --- Tipografía ---
     Las tres se pueden sobrescribir con el filtro 'esvidas_footer_font'.
     La transformación es del TÍTULO de columna y de nadie más: el kicker, el
     subtítulo, la provincia y las etiquetas de registro y horario llevan su
     'text-transform' cableado porque forman parte de su propia jerarquía. */
  --esv-fuente-titulos:'Chau Philomene One','Montserrat',Helvetica,Arial,sans-serif;
  --esv-peso-titulos:400;
  --esv-transform-titulos:uppercase;

  font-family:'Montserrat','Helvetica Neue',Helvetica,Arial,sans-serif;
  color:var(--esv-texto);
  background-color:var(--esv-fondo-links);
  text-align:left;
  -webkit-font-smoothing:antialiased;
}
.esv-footer *,
.esv-footer *::before,
.esv-footer *::after{box-sizing:border-box}
.esv-footer ul{list-style:none;margin:0;padding:0}
.esv-footer li{margin:0;padding:0}
.esv-footer p{margin:0}
.esv-footer img{max-width:100%;height:auto;display:block}
.esv-footer address{font-style:normal}
.esv-footer a{color:inherit;text-decoration:none;transition:color .18s ease,background-color .18s ease,transform .18s ease}
.esv-footer a:focus-visible{outline:2px solid var(--esv-acento-texto);outline-offset:2px}

/* ------------------------------------------------------------------
   2. BANDA 1 — Barra legal
   ------------------------------------------------------------------ */
/* El color va aquí y no solo en cada hijo: la banda tiene su propia tinta, y
   así un texto que no declare la suya hereda la de la barra y no la de
   .esv-footer, que es la de la banda de enlaces y puede estar invertida. */
.esv-footer__legal-bar{background-color:var(--esv-fondo-barra);color:var(--esv-barra-texto)}
.esv-footer__legal-inner{
  display:flex;align-items:stretch;justify-content:space-between;gap:28px;
  max-width:var(--esv-ancho-max);margin:0 auto;padding-left:28px;min-height:66px;
}
.esv-footer__legal-text{display:flex;flex-direction:column;justify-content:center;gap:5px;padding:12px 0}
.esv-footer__kicker{font-size:14px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--esv-barra-texto-suave)}
.esv-footer__tagline{font-size:14.5px;font-weight:400;color:var(--esv-barra-texto)}
.esv-footer__legal-side{display:flex;align-items:stretch}
/* El <nav> debe estirarse para que el <ul> pueda centrarse de verdad */
.esv-footer__legal-nav{display:flex;align-items:center}
.esv-footer .esv-footer__legal-list{display:flex;align-items:center}
.esv-footer__legal-list li{display:flex;align-items:center}
.esv-footer__legal-list li + li{border-left:1px solid var(--esv-barra-borde)}
.esv-footer .esv-footer__legal-link{
  display:flex;align-items:center;padding:0 15px;
  font-size:12.5px;font-weight:500;white-space:nowrap;color:var(--esv-barra-texto-suave);
}
.esv-footer__legal-link:hover,
.esv-footer__legal-link:focus{color:var(--esv-barra-acento)}
/* Enlace legal sin URL confirmada: <span> en su hueco, sin hover (ver la nota
   de .esv-footer__link--sin-enlace). */
.esv-footer .esv-footer__legal-link--sin-enlace,
.esv-footer .esv-footer__legal-link--sin-enlace:hover{color:var(--esv-barra-texto-suave);cursor:default}
.esv-footer .esv-footer__sitemap{
  display:flex;align-items:center;justify-content:center;align-self:stretch;
  margin-left:14px;padding:0 24px;
  font-size:12px;font-weight:700;letter-spacing:.05em;white-space:nowrap;
  color:var(--esv-sitemap-texto);background-color:var(--esv-sitemap-fondo);
}
.esv-footer__sitemap:hover,
.esv-footer__sitemap:focus{color:var(--esv-sitemap-texto-hover);background-color:var(--esv-sitemap-fondo-hover)}

/* ------------------------------------------------------------------
   3. BANDA 2 — Sellos oficiales (única banda clara)
   ------------------------------------------------------------------ */
.esv-footer .esv-footer__seals{
  display:flex;flex-direction:column;align-items:center;
  background-color:var(--esv-fondo-claro);padding:28px 28px 32px;
}
.esv-footer .esv-footer__seals-title{
  width:100%;max-width:920px;margin:0 auto 22px;text-align:center;
  font-size:14px;font-weight:600;line-height:1.5;letter-spacing:.06em;
  text-transform:uppercase;color:var(--esv-gris-titulo);
}
.esv-footer__seals-title strong{font-weight:700;color:var(--esv-gris-titulo-osc)}
.esv-footer .esv-footer__seals-list{
  width:100%;max-width:1200px;margin:0 auto;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:22px clamp(20px,5vw,66px);
}
.esv-footer .esv-footer__seal{width:94px;height:94px}

/* ------------------------------------------------------------------
   4. BANDA 3 — Grid de enlaces, marca y redes sociales
   ------------------------------------------------------------------ */
.esv-footer__links{background-color:var(--esv-fondo-links);padding:calc(46px * var(--esv-escala-pad)) 28px calc(32px * var(--esv-escala-pad))}
.esv-footer__inner{max-width:var(--esv-ancho-max);margin:0 auto}
.esv-footer__grid{
  display:grid;grid-template-columns:repeat(6,minmax(0,1fr));
  align-items:start;gap:0 var(--esv-gap-columnas);
}
/* Sitios con menos de seis columnas (los satélites son centros locales y
   tienen menos contenido que la web del grupo). El renderer añade la clase
   según cuántas columnas traiga la config; con seis no añade nada. Los
   escalones de 4, 3 y 1 columna siguen mandando en sus anchos: van en las
   media queries de la sección 6, que son posteriores. */
.esv-footer__grid--cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.esv-footer__grid--cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.esv-footer__grid--cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.esv-footer__grid--cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.esv-footer__grid--cols-1{grid-template-columns:minmax(0,1fr)}
.esv-footer__col{min-width:0;padding-bottom:10px}
/* El letter-spacing está pensado para las mayúsculas, pero se queda fijo a
   propósito: .02em es tracking corto, en minúsculas apenas se nota y no
   estorba, y hacerlo variable obligaría a que el panel emitiera dos valores
   acoplados donde hoy emite uno. */
.esv-footer .esv-footer__title{
  margin:0 0 11px;font-size:calc(23px * var(--esv-escala-tipo));font-weight:var(--esv-peso-titulos);line-height:1.15;
  letter-spacing:.02em;text-transform:var(--esv-transform-titulos);color:var(--esv-titulo);
  font-family:var(--esv-fuente-titulos);
}
.esv-footer__title a:hover,
.esv-footer__title a:focus{color:var(--esv-texto-fuerte)}
.esv-footer .esv-footer__title--second{margin-top:24px}
.esv-footer .esv-footer__subtitle{
  margin:0 0 var(--esv-gap-enlaces);font-size:calc(16px * var(--esv-escala-tipo));font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:var(--esv-texto-suave);
}
.esv-footer__subtitle a:hover,
.esv-footer__subtitle a:focus{color:var(--esv-acento-texto)}
.esv-footer .esv-footer__province{
  margin-top:calc(2px + var(--esv-gap-enlaces));font-size:calc(16px * var(--esv-escala-tipo));font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:var(--esv-texto-fuerte);
}
.esv-footer .esv-footer__province--first{margin-top:calc(1px + var(--esv-gap-enlaces))}
/* Provincia con enlace: en reposo se ve igual que una sin enlace (el <a>
   hereda color y peso del <p> vía `.esv-footer a{color:inherit}`).
   Solo cambia en hover/focus, como el resto de enlaces del footer. */
.esv-footer__province a:hover,
.esv-footer__province a:focus{color:var(--esv-acento-texto)}
.esv-footer .esv-footer__link{
  display:flex;align-items:center;min-height:0;padding:var(--esv-gap-enlaces) 0;
  font-size:calc(16.5px * var(--esv-escala-tipo));line-height:1.3;color:var(--esv-texto);text-wrap:pretty;
}
.esv-footer__link:hover,
.esv-footer__link:focus{color:var(--esv-acento-texto)}
.esv-footer__link--strong{font-weight:700;letter-spacing:.03em}
/* Entrada sin URL confirmada: se pinta como <span>, no como <a>. Ocupa el
   mismo sitio y mantiene el orden de lectura, pero ni es enlace ni lo finge:
   ni hover ni cursor de mano. El gris apagado sigue por encima de 4,5:1. */
.esv-footer .esv-footer__link--sin-enlace,
.esv-footer .esv-footer__link--sin-enlace:hover{color:var(--esv-texto-suave);cursor:default}

.esv-footer .esv-footer__brand{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:44px}
.esv-footer .esv-footer__logo{padding-top: 30px;width:150px;height:auto}
/* Segundo logo (el del grupo en las webs satélite): mismo ancho, sin el
   padding superior del principal, y separado por su propio margen. */
.esv-footer__logo--2{padding-top:0;margin-top:16px}
.esv-footer__logo-link{display:block}
.esv-footer .esv-footer__phone{
  display:flex;align-items:center;min-height:44px;
  font-size:20px;font-weight:800;letter-spacing:.01em;color:var(--esv-acento-texto);
}
.esv-footer__phone:hover,
.esv-footer__phone:focus{color:var(--esv-texto-fuerte)}

.esv-footer .esv-footer__social{
  display:flex;flex-wrap:wrap;justify-content:center;gap:14px;
  margin-top:40px;padding-top:36px;padding-bottom:8px;border-top:1px solid var(--esv-borde);
}
.esv-footer .esv-footer__social-link{
  display:flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:12px;
  color:var(--esv-social-icono);background-color:var(--esv-social-fondo);
}
.esv-footer__social-link:hover,
.esv-footer__social-link:focus{color:var(--esv-social-icono-hover);background-color:var(--esv-social-fondo-hover);transform:scale(1.08)}
.esv-footer__social-link svg{width:26px;height:26px;display:block}

/* ------------------------------------------------------------------
   4b. BLOQUES OPCIONALES — contact, registro, hours, logos
       Solo aparecen si la config del sitio los declara. En esvidas.es
       no se usa ninguno y estas reglas no llegan a aplicarse.
   ------------------------------------------------------------------ */

/* Datos de contacto: una línea por dato, con icono opcional a la izquierda. */
.esv-footer .esv-footer__contact{margin-top:4px}
.esv-footer .esv-footer__contact-item{
  display:flex;align-items:flex-start;gap:10px;padding:var(--esv-gap-enlaces) 0;
  font-size:calc(16.5px * var(--esv-escala-tipo));line-height:1.3;color:var(--esv-texto);text-wrap:pretty;
}
.esv-footer__contact-icon{
  display:flex;align-items:center;justify-content:center;
  flex:0 0 20px;width:20px;height:23px;color:var(--esv-icono);
}
.esv-footer__contact-icon svg{width:19px;height:19px;display:block}
.esv-footer__contact-link:hover,
.esv-footer__contact-link:focus{color:var(--esv-acento-texto)}

/* Registro sanitario: información obligatoria, destacada dentro de la columna.
   No confundir con la banda de sellos de esvidas.es, que es otra cosa.

   Va detrás de una dirección o de una lista, y con poco margen su fondo se
   pegaba al último renglón y los dos se leían como un solo bloque: por eso el
   margen superior es holgado, y sigue al ritmo de la columna como el resto.
   El filete de la izquierda también pide su aire, o el texto parece apoyado
   en él. */
.esv-footer .esv-footer__registro{
  display:flex;flex-direction:column;gap:3px;
  margin-top:calc(29px + var(--esv-gap-enlaces));padding:13px 16px 13px 18px;
  background-color:var(--esv-registro-fondo);
  border-left:3px solid var(--esv-registro-borde);
}
.esv-footer__registro-label{
  font-size:12px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--esv-registro-etiqueta);
}
.esv-footer__registro-num{
  font-size:19px;font-weight:800;letter-spacing:.02em;color:var(--esv-registro-num);
}

/* Horario de atención: pares etiqueta/valor. */
.esv-footer .esv-footer__hours{margin-top:4px}
.esv-footer .esv-footer__hours-row{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:1px 10px;
  padding:var(--esv-gap-enlaces) 0;line-height:1.3;
}
.esv-footer__hours-label{
  flex:1 1 100%;font-size:14px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--esv-horario-etiqueta);
}
.esv-footer__hours-value{font-size:calc(16.5px * var(--esv-escala-tipo));color:var(--esv-horario-valor)}

/* Logos institucionales y de acreditación.
   Van directamente sobre el fondo del footer, SIN recuadro: los PNG del grupo
   son transparentes con el contenido en blanco, y sobre una plaquita blanca
   desaparecían. Como no hay recuadro que separe un logo del siguiente, el aire
   lo pone el gap de la fila, que por eso es bastante mayor que el margen que
   antes daba el padding de la plaquita.
   Ni un filtro, ni escala de grises, ni opacidad: las guías de identidad no
   permiten alterarlos. */
.esv-footer .esv-footer__logos{display:flex;flex-wrap:wrap;align-items:center;gap:18px 32px;margin-top:22px}
.esv-footer__logos--left{justify-content:flex-start}
.esv-footer__logos--center{justify-content:center}
.esv-footer__logos-item{display:flex;align-items:center;justify-content:center}
/* Excepción, item a item, con 'plate' => true en la config: recuadro claro
   detrás de ese logo. Es para los institucionales que llevan color y no
   admiten versión monocroma (escudo del Gobierno de España, Junta de
   Andalucía, Principado de Asturias): sus guías no permiten recolorearlos,
   así que se les da un fondo donde se lean en su color, en vez de tocarlos. */
.esv-footer .esv-footer__logos-item--plate{padding:10px 14px;border-radius:6px;background-color:var(--esv-logos-fondo)}
/* width:auto es el DEFECTO, para el logo que no declara medida en la config.
   El que sí la declara llega con style="width:Npx" inline y gana a esta regla:
   el atributo width por sí solo no, que es de presentación y pierde contra
   cualquier regla de autor. max-width:100% se aplica en los dos casos —también
   sobre el style— y es lo que impide que un logo ancho desborde su columna en
   móvil. Ni un filtro, ni escala de grises, ni opacidad. */
.esv-footer .esv-footer__logos-img{width:auto;max-width:100%;height:auto;filter:none;opacity:1}
.esv-footer__logos-link{display:block}
/* Sobre el recuadro claro, el anillo de foco necesita la variante oscura;
   fuera de él vale el de todo el footer, que es el acento sobre fondo oscuro. */
.esv-footer__logos-item--plate .esv-footer__logos-link:focus-visible{outline-color:var(--esv-primario-osc)}

/* ------------------------------------------------------------------
   4c. BANDA 3b — Logos a ancho completo (opcional)
       Va entre las columnas y el copyright, y solo existe si la config
       trae 'logos_band'. Mismo fondo que la banda de enlaces: es su
       remate, no otra banda de color; lo que las separa es el filete.
   ------------------------------------------------------------------ */
.esv-footer__logos-band{background-color:var(--esv-fondo-links);padding:0 28px calc(34px * var(--esv-escala-pad))}
/* El filete y el aire van en .esv-footer__inner, que es el mismo contenedor
   del grid de columnas: así los logos caen alineados con las columnas y el
   filete no se sale a los bordes de la pantalla. */
.esv-footer__logos-band .esv-footer__inner{border-top:1px solid var(--esv-borde);padding-top:calc(30px * var(--esv-escala-pad))}
/* En banda, la fila manda sobre el margen que el bloque lleva dentro de una
   columna, y hay sitio de sobra a lo ancho: los logos respiran más que dentro
   de una columna estrecha. */
.esv-footer .esv-footer__logos--band{margin-top:0;gap:22px 46px}

/* ------------------------------------------------------------------
   5. BANDA 4 — Copyright
   ------------------------------------------------------------------ */
.esv-footer__copyright{
  background-color:var(--esv-fondo-barra);padding:15px 20px;text-align:center;
  font-size:11.5px;font-weight:500;letter-spacing:.04em;color:var(--esv-barra-texto-suave);
}

/* ------------------------------------------------------------------
   6. MEDIA QUERIES — 6 / 4 / 3 / 1 / 1 columnas
      Flujo natural por filas: mismo orden de lectura en todos los anchos.
   ------------------------------------------------------------------ */
@media (max-width:1199px){
  .esv-footer__grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:0 28px}
  /* Un sitio de 3 o menos columnas no las estira aquí: se queda en las suyas. */
  .esv-footer__grid--cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .esv-footer__grid--cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .esv-footer__grid--cols-1{grid-template-columns:minmax(0,1fr)}
  .esv-footer__col{border-top:1px solid var(--esv-borde);padding-top:24px;padding-bottom:18px}

  /* Barra legal en columna: texto arriba centrado, enlaces debajo en fila
     que envuelve, y el boton cerrando a ancho completo. */
  .esv-footer__legal-inner{flex-direction:column;align-items:stretch;gap:0;min-height:0;padding-left:0}
  .esv-footer__legal-text{align-items:center;text-align:center;padding:16px 20px 10px}
  .esv-footer__legal-side{flex-direction:column;align-items:stretch}
  .esv-footer__legal-nav{display:flex;justify-content:center}
  .esv-footer .esv-footer__legal-list{flex-wrap:wrap;justify-content:center;padding:0 14px}
  .esv-footer .esv-footer__legal-link{min-height:40px}
  .esv-footer .esv-footer__sitemap{margin:12px 0 0;min-height:48px;font-size:13px}
}
@media (max-width:991px){
  .esv-footer__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px}
  .esv-footer__grid--cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .esv-footer__grid--cols-1{grid-template-columns:minmax(0,1fr)}
  .esv-footer__links{padding:38px 22px 28px}
  /* La banda de logos mantiene el mismo margen lateral que las columnas. */
  .esv-footer__logos-band{padding:0 22px 30px}
  .esv-footer__logos-band .esv-footer__inner{padding-top:26px}
  /* Columnas de 3 más estrechas: bajamos un pelín para que no desborden. */
  .esv-footer .esv-footer__title{font-size:calc(20px * var(--esv-escala-tipo));margin-bottom:10px}
  .esv-footer .esv-footer__subtitle{font-size:calc(15px * var(--esv-escala-tipo))}
  .esv-footer .esv-footer__province{font-size:calc(15px * var(--esv-escala-tipo))}
  .esv-footer .esv-footer__link{font-size:calc(16px * var(--esv-escala-tipo))}
  .esv-footer .esv-footer__legal-link{padding:0 11px}
}
@media (max-width:767px){
  /* La barra legal ya viene en columna desde 1199px.
     Aqui los enlaces legales pasan a bloques a ancho completo, dos por fila. */
  .esv-footer__legal-text{padding:16px 18px 12px}
  .esv-footer__kicker{font-size:11px;letter-spacing:.14em}
  .esv-footer__legal-nav{display:block}
  .esv-footer__legal-list li{flex:1 1 44%}
  .esv-footer__legal-list li + li{border-left:0}
  /* El filete de estos bloques va sobre la barra legal, no sobre la banda de
     enlaces: --esv-barra-borde, como el separador vertical de escritorio. Con
     --esv-borde, un sitio de banda clara —que lo pone oscuro— dejaba la
     retícula de enlaces legales sin filetes visibles en móvil. */
  .esv-footer .esv-footer__legal-link{
    width:100%;justify-content:center;min-height:40px;padding:0 8px;
    border-top:1px solid var(--esv-barra-borde);
    font-size:11px;text-align:center;white-space:normal;
  }
  .esv-footer .esv-footer__sitemap{margin:14px 0 0;min-height:50px;font-size:13px}
  .esv-footer .esv-footer__seals{padding:24px 18px 26px}
  .esv-footer .esv-footer__seals-title{margin-bottom:18px;font-size:11px;letter-spacing:.05em}
  .esv-footer .esv-footer__seals-list{gap:16px 20px}
  .esv-footer .esv-footer__seal{width:76px;height:76px}
  .esv-footer__links{padding:30px 18px 24px}
  .esv-footer__logos-band{padding:0 18px 26px}
  .esv-footer__logos-band .esv-footer__inner{padding-top:24px}
  /* Único sitio donde se leen las dos variables de la sección 1. Con los
     valores por defecto esto repite el display que ya tenían los dos, así que
     no cambia nada; con 'logos_movil' en 'ocultos' valen 'none' y desaparecen
     la banda entera —con su filete y su padding— y la fila de logos de dentro
     de una columna. El markup sigue en el HTML. */
  .esv-footer__logos-band{display:var(--esv-logos-band-movil)}
  .esv-footer .esv-footer__logos{display:var(--esv-logos-movil)}
  /* Móvil: una sola columna a ancho completo. Hay sitio de sobra, así que la
     tipografía no se reduce respecto a desktop. */
  .esv-footer__grid{grid-template-columns:1fr}
  .esv-footer__col{padding-top:20px;padding-bottom:14px}
  .esv-footer .esv-footer__title{font-size:calc(22px * var(--esv-escala-tipo))}
  .esv-footer .esv-footer__subtitle{font-size:calc(16px * var(--esv-escala-tipo))}
  .esv-footer .esv-footer__province{font-size:calc(16px * var(--esv-escala-tipo))}
  /* A partir de aquí (móvil) se devuelve el área táctil mínima de 40px. */
  .esv-footer .esv-footer__link{font-size:calc(16.5px * var(--esv-escala-tipo));min-height:40px;padding:9px 0}
  .esv-footer .esv-footer__contact-item{min-height:40px;padding:9px 0}
  .esv-footer .esv-footer__hours-row{padding:9px 0}
}
@media (max-width:479px){
  /* Sigue en una sola columna (heredada de 767px). */
  /* Aquí se va el LOGO de marca, y solo el logo.
     Hasta la 1.7.0 esta regla era `.esv-footer .esv-footer__brand{display:none}`
     y se llevaba por delante el bloque entero, teléfono incluido. En webs de
     tratamiento de adicciones el teléfono es el elemento de más intención de
     todo el footer, y el móvil es justo donde más se usa: quien busca ayuda
     desde el móvil se quedaba sin número. El teléfono se queda, con su tamaño
     y su color (ver .esv-footer__phone, más abajo en este mismo bloque).
     Se ocultan también los enlaces que envuelven a los logos: con el <img> en
     display:none el <a> se queda vacío pero seguiría siendo enfocable con el
     teclado, y sería una parada invisible en el recorrido de tabulación. */
  .esv-footer .esv-footer__logo,
  .esv-footer .esv-footer__logo-link{display:none}
  /* Sin el logo delante, los 44px de aire de la columna sobran: el teléfono
     queda pegado al ritmo de los enlaces de arriba. */
  .esv-footer .esv-footer__brand{margin-top:14px}
  .esv-footer__links{padding:26px 14px 22px}
  .esv-footer__logos-band{padding:0 14px 22px}
  .esv-footer__logos-band .esv-footer__inner{padding-top:22px}
  .esv-footer .esv-footer__logos--band{gap:18px 30px}
  .esv-footer .esv-footer__title{font-size:calc(20px * var(--esv-escala-tipo));letter-spacing:.01em;margin-bottom:9px;line-height:1.1}
  .esv-footer .esv-footer__link{font-size:calc(16px * var(--esv-escala-tipo));line-height:1.25;padding:8px 0}
  .esv-footer .esv-footer__province{font-size:calc(15.5px * var(--esv-escala-tipo));letter-spacing:.06em}
  .esv-footer .esv-footer__seal{width:66px;height:66px}
  .esv-footer .esv-footer__social{gap:11px;margin-top:30px;padding-top:28px}
  .esv-footer .esv-footer__social-link{width:40px;height:40px;border-radius:11px}
  .esv-footer__social-link svg{width:23px;height:23px}
  /* El `width:132px` que había aquí ya no está: era código muerto cuando la
     regla de arriba ocultaba el bloque entero, y lo sigue siendo ahora que
     oculta el logo. El tamaño del logo en móvil se toca en el escalón de
     767px, o en 'logo_w' desde la config del sitio. */
  .esv-footer .esv-footer__phone{font-size:18px}
  .esv-footer .esv-footer__contact-item{font-size:calc(16px * var(--esv-escala-tipo))}
  .esv-footer .esv-footer__registro{padding:11px 13px 11px 15px}
  .esv-footer__registro-num{font-size:18px}
  .esv-footer__hours-value{font-size:calc(16px * var(--esv-escala-tipo))}
  .esv-footer .esv-footer__logos{gap:16px 24px}
  .esv-footer .esv-footer__logos-item--plate{padding:8px 10px}
}

/* ------------------------------------------------------------------
   7. CAPA DEFENSIVA — evita que estilos del theme (Divi) se filtren
      HACIA DENTRO del footer. Todo sigue scopeado bajo .esv-footer.
      Divi aplica reglas globales como `p{padding-bottom:1em}` y
      `h1..h6{padding-bottom:10px}` que descolocarían el grid.

      OJO AL ESCRIBIR UN BLOQUE NUEVO: estas reglas, y las equivalentes
      de la sección 1, son (0,1,1) —clase + etiqueta— y le ganan a un
      `.esv-footer__loquesea` a secas, que es (0,1,0). Si tu bloque es
      un li, ul, p, nav, section, address, a o img y declara margin,
      padding, color o height, escríbelo como
      `.esv-footer .esv-footer__loquesea` (0,2,0). Sin !important.
      `docs/especificidad.py` lo detecta y lista los choques.

      Esa es también la razón de que fuera de la sección 8 no quede ni un
      `!important`: lo que antes se resolvía a golpe de `!important` se
      resuelve ahora con el prefijo `.esv-footer`. En la 8 se quedan,
      porque ahí hay que ganarle a reglas de Divi con un id delante, y
      contra (1,0,1) la especificidad de clases no llega.
   ------------------------------------------------------------------ */
.esv-footer h1,
.esv-footer h2,
.esv-footer h3,
.esv-footer h4,
.esv-footer h5,
.esv-footer h6{padding:0;font-family:inherit;text-transform:none}
.esv-footer p{padding:0}
.esv-footer ul,
.esv-footer ol{padding-bottom:0;list-style-image:none}
.esv-footer li{list-style-type:none;list-style-position:outside}
.esv-footer nav,
.esv-footer section,
.esv-footer address{margin:0;padding:0}
.esv-footer a:hover{text-decoration:none}
.esv-footer svg{max-width:none;vertical-align:middle}

/* ------------------------------------------------------------------
   8. BLINDAJE (opcional) — solo se activa si el <footer> lleva además
      la clase .esv-footer--blindaje.
      Úsalo únicamente si el footer se inserta DENTRO de #page-container
      (por ejemplo vía shortcode en un módulo Code de Divi), donde las
      reglas de Divi con especificidad de ID ganarían a nuestras clases.
      Inyectado con wp_footer NO hace falta: el footer queda fuera de
      #page-container y ninguna regla con ID llega a alcanzarlo.
   ------------------------------------------------------------------ */
.esv-footer--blindaje .esv-footer__title,
.esv-footer--blindaje .esv-footer__subtitle,
.esv-footer--blindaje .esv-footer__province,
.esv-footer--blindaje .esv-footer__seals-title,
.esv-footer--blindaje .esv-footer__registro,
.esv-footer--blindaje .esv-footer__kicker,
.esv-footer--blindaje .esv-footer__tagline{
  padding:0 !important;
  font-family:inherit !important;
}
.esv-footer--blindaje .esv-footer__registro{padding:13px 16px 13px 18px !important}
.esv-footer--blindaje .esv-footer__title{
  margin:0 0 11px !important;
  font-size:calc(23px * var(--esv-escala-tipo)) !important;
  font-weight:var(--esv-peso-titulos) !important;
  line-height:1.15 !important;
  font-family:var(--esv-fuente-titulos) !important;
  color:var(--esv-titulo) !important;
  text-transform:var(--esv-transform-titulos) !important;
}
.esv-footer--blindaje .esv-footer__link{
  font-size:16.5px !important;
  color:var(--esv-texto) !important;
}
.esv-footer--blindaje .esv-footer__link:hover{color:var(--esv-acento-texto) !important}
.esv-footer--blindaje .esv-footer__contact-item{font-size:16.5px !important;color:var(--esv-texto) !important}
.esv-footer--blindaje .esv-footer__contact-link:hover{color:var(--esv-acento-texto) !important}
