.elementor-kit-7{--e-global-color-primary:#0694A2;--e-global-color-secondary:#08222A;--e-global-color-text:#0B2027;--e-global-color-accent:#31CBD1;--e-global-color-avdeep:#04555E;--e-global-color-avwash:#DFF3F4;--e-global-color-avwash2:#EEF9FA;--e-global-color-avsand:#D9EAF1;--e-global-color-avpaper:#F4F8F8;--e-global-color-avwhite:#FFFFFF;--e-global-color-avmuted:#4C666F;--e-global-color-avline:#DCE7E8;--e-global-color-avondark:#E7F3F4;--e-global-typography-primary-font-family:"Familjen Grotesk";--e-global-typography-primary-font-weight:600;--e-global-typography-primary-line-height:1.14em;--e-global-typography-primary-letter-spacing:-0.6px;--e-global-typography-secondary-font-family:"Familjen Grotesk";--e-global-typography-secondary-font-weight:500;--e-global-typography-text-font-family:"IBM Plex Sans";--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.65em;--e-global-typography-accent-font-family:"IBM Plex Mono";--e-global-typography-accent-font-weight:500;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-accent-letter-spacing:2px;background-color:#F4F8F8;color:#0B2027;font-family:"IBM Plex Sans", Sans-serif;font-size:17px;font-weight:400;line-height:1.65em;}.elementor-kit-7 e-page-transition{background-color:#FFBC7D;}.elementor-kit-7 a{color:#04555E;}.elementor-kit-7 h1{font-family:"Familjen Grotesk", Sans-serif;font-weight:700;letter-spacing:-1.6px;}.elementor-kit-7 h2{font-family:"Familjen Grotesk", Sans-serif;font-weight:600;letter-spacing:-1px;}.elementor-kit-7 h3{font-family:"Familjen Grotesk", Sans-serif;font-weight:600;}.elementor-kit-7 h4{font-family:"Familjen Grotesk", Sans-serif;font-weight:600;}.elementor-kit-7 button,.elementor-kit-7 input[type="button"],.elementor-kit-7 input[type="submit"],.elementor-kit-7 .elementor-button{font-family:"Familjen Grotesk", Sans-serif;font-weight:600;border-radius:999px 999px 999px 999px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1240px;}.e-con{--container-max-width:1240px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* ============================================================
   SISTEMA «MAREA» — Alonso Ventura Abogados
   Hoja global. Se carga desde el kit de Elementor (post 7).
   Convención: todo lo propio va con prefijo .av-
   ============================================================ */

  /* Degradado exclusivo de botones: el de marca llega a #31CBD1 y el blanco
     encima solo daría 1,98:1. Este se detiene en #0B7F8A → 4,75:1. */
:root{
  /* Color */
  --av-ink:#08222A;
  --av-ink-2:#0E313B;
  --av-teal:#0694A2;
  --av-lift:#31CBD1;
  --av-deep:#04555E;
  --av-wash:#DFF3F4;
  --av-wash-2:#EEF9FA;
  --av-banda:#D9EAF1;   /* el azul muy claro de las bandas */
  --av-paper:#F4F8F8;
  --av-paper-2:#FFFFFF;
  --av-text:#0B2027;
  --av-muted:#4C666F;
  --av-line:#DCE7E8;
  --av-on-dark:#E7F3F4;
  --av-on-dark-muted:#93B3B9;
  --av-alert:#B4472F;

  /* Tipografía */
  --av-disp:"Familjen Grotesk","Helvetica Neue",Arial,sans-serif;
  --av-body:"IBM Plex Sans","Segoe UI",Helvetica,Arial,sans-serif;
  --av-mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;

  /* Redondez */
  --av-btn-solid:#076B76;
  --av-btn-grad:linear-gradient(100deg,#03444C,#076B76 45%,#0B7F8A);
  --av-pill:999px;
  --av-xl:34px;
  --av-lg:26px;
  --av-md:18px;
  --av-sm:12px;

  /* Sombras */
  --av-sh1:0 1px 2px rgba(8,34,42,.05),0 8px 24px -12px rgba(8,34,42,.18);
  --av-sh2:0 2px 4px rgba(8,34,42,.05),0 18px 44px -18px rgba(8,34,42,.28);
  --av-shglass:0 8px 32px -8px rgba(8,34,42,.16),0 2px 8px rgba(8,34,42,.05);

  /* Ritmo */
  --av-gutter:clamp(1.15rem,4vw,4rem);
  --av-wrap:1240px;
}

/* ------------------------- Base ------------------------- */
body{background:var(--av-paper);color:var(--av-text);
  font-family:var(--av-body);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased}
body.elementor-page{overflow-x:hidden}
h1,h2,h3,h4,h5,h6,
.elementor-widget-heading .elementor-heading-title{
  font-family:var(--av-disp);font-weight:600;text-wrap:balance;line-height:1.14;letter-spacing:-.024em}
a{color:inherit}
:focus-visible{outline:2px solid var(--av-teal);outline-offset:3px;border-radius:var(--av-sm)}
img{max-width:100%}

/* Contenedores de Elementor: sin desbordes laterales */
/* MARGEN LATERAL EN MÓVIL.
   El hueco de los lados venía sólo del «max-width» del interior del contenedor
   (1240 px). Por encima de esa anchura sobra sitio y se ve bien, pero por debajo
   ese límite no reserva nada: en el móvil el interior ocupa el 100 % y el texto,
   los botones y las tarjetas quedaban pegados al borde.

   Se le pone relleno al INTERIOR, no al contenedor, para que los fondos de sección
   sigan yendo a sangre. Y se sube el «max-width» exactamente lo que mide el relleno,
   de modo que en escritorio el contenido acabe en el mismo sitio que antes:
   1240 px de contenido, centrados igual. Sin saltos ni anchuras nuevas. */
.e-con,.e-con-inner{--container-max-width:var(--av-wrap)}

/* MARGEN LATERAL: siempre queda aire, y sólo el que haga falta.

   El hueco de los lados venía únicamente del «max-width» del interior (1240 px).
   Por encima de esa anchura sobra sitio, pero por debajo ese límite no reserva nada
   y en el móvil el texto, los botones y las tarjetas quedaban pegados al borde.

   La fórmula calcula lo que le falta al margen natural para llegar al gutter:
     · si la ventana es ancha, sale negativo y el clamp lo deja en 0 → escritorio
       no cambia ni un píxel;
     · si es estrecha, va creciendo hasta el gutter, sin escalones al redimensionar.

   Se mide con «100%» y no con «100vw» a propósito: 100vw incluye la barra de
   desplazamiento y el diseño no, y esos ~15 px de diferencia dejaban el contenido
   a 13 px del borde justo en la franja de los 1280.

   El relleno va en el INTERIOR, no en el contenedor, para que los fondos de sección
   sigan yendo a sangre. */
.e-con>.e-con-inner{
  padding-inline:clamp(0px, (var(--av-wrap) + 2 * var(--av-gutter) - 100%) / 2, var(--av-gutter))}

/* Un contenedor dentro de otro no vuelve a separarse: el margen ya lo puso el padre */
.e-con-inner .e-con>.e-con-inner{padding-inline:0}

/* Un botón no parte su texto («white-space:nowrap»), y una etiqueta larga —un correo
   entero, por ejemplo— fijaba un ancho mínimo de 325 px que en el móvil desbordaba
   su tarjeta. En pantallas estrechas se le deja partir. */
@media(max-width:560px){
  .av-btn{white-space:normal;text-align:center;overflow-wrap:anywhere}
}

/* Y las rejillas dejan encoger a sus hijos. Por defecto («min-width:auto») una columna
   nunca baja del ancho mínimo de su contenido, y por ahí se colaba el desbordamiento
   aunque el contenedor sí tuviera su margen correcto. */
.av-contact-grid>*,.av-form-cta>*,.av-benes>*,.av-hero-grid>*{min-width:0}

/* --------------------- Piezas comunes --------------------- */
.av-label{font-family:var(--av-mono);font-size:.72rem;font-weight:500;letter-spacing:.18em;
  text-transform:uppercase;color:var(--av-deep);display:block}
.av-label--dark{color:var(--av-lift)}
.av-cap{display:inline-block;width:1.15rem;height:5px;border-radius:var(--av-pill);
  background:var(--av-teal);vertical-align:middle}
.av-muted{color:var(--av-muted)}
.av-narrow{max-width:70ch}
.av-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* El relleno no es simétrico a propósito: la caja de la fuente tiene 15 px de ascendente
   y 3 de descendente, así que centrarla deja la tinta 1 px baja. Se le devuelve ese píxel
   sin cambiar la altura del botón. */
.av-btn{display:inline-flex;align-items:center;gap:.55rem;white-space:nowrap;font-family:var(--av-disp);
  font-weight:600;font-size:.94rem;padding:calc(.82rem - 1px) 1.55rem calc(.82rem + 1px);
  text-decoration:none;border:0;cursor:pointer;
  border-radius:var(--av-pill);background:var(--av-ink);color:var(--av-paper);
  transition:transform .25s cubic-bezier(.2,.8,.3,1),box-shadow .25s,background-position .5s}
.av-btn:focus,.av-btn:active{background:var(--av-ink);color:var(--av-paper);border-color:transparent}
.av-btn.av-btn--teal:focus,.av-btn.av-btn--teal:active{background:var(--av-btn-solid) var(--av-btn-grad);color:#fff}
.av-btn:hover{transform:translateY(-2px);box-shadow:var(--av-sh2);color:var(--av-paper)}
.av-btn .ar{transition:transform .28s}
.av-btn:hover .ar{transform:translateX(4px)}
.av-btn--teal{background:var(--av-btn-solid) var(--av-btn-grad);background-size:210% 100%}
.av-btn--teal:hover{background-position:100% 0;color:#022B30}
.av-btn--soft{background:var(--av-paper-2);color:var(--av-text);box-shadow:var(--av-sh1)}
.av-btn--soft:hover{background:var(--av-wash-2);color:var(--av-text)}
.av-btn--ghost{background:rgba(255,255,255,.1);color:var(--av-on-dark);border:1px solid rgba(255,255,255,.2)}
.av-btn--ghost:hover{color:var(--av-on-dark)}

/* Botón nativo de Elementor con nuestra forma */
.elementor-button{border-radius:var(--av-pill);font-family:var(--av-disp);font-weight:600}

/* ==================== CABECERA GLASS ==================== */
.av-nav{position:fixed;top:0;left:0;right:0;z-index:9990;padding:.85rem var(--av-gutter)}
.av-bar{max-width:var(--av-wrap);margin:0 auto;display:flex;align-items:center;gap:1.5rem;min-height:62px;
  padding:.55rem .6rem .55rem 1.4rem;border-radius:var(--av-pill);background:rgba(255,255,255,.62);
  -webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);
  border:1px solid rgba(255,255,255,.7);box-shadow:var(--av-shglass);transition:background .35s}
.av-nav.is-stuck .av-bar{background:rgba(255,255,255,.85)}
/* El widget que envuelve al logotipo va en bloque y con interlineado: el enlace, que es
   inline-flex, se apoyaba en la línea base y quedaba 4 px alto dentro de la píldora.
   Con la caja en flex e interlineado cero, el widget mide lo que la imagen y la barra
   lo centra sin más. */
.av-logo-caja{display:flex;align-items:center;line-height:0}
.av-logo{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;white-space:nowrap;flex:none}
/* El logotipo es el original del despacho, no una reconstrucción tipográfica:
   la de antes usaba otra letra y además se comía la palabra «Abogados». */
.av-logo img{display:block;width:auto;height:34px}
.av-logo--pie img{height:42px}
@media(max-width:1080px){.av-logo img{height:30px}}
@media(max-width:400px){.av-logo img{height:26px}}
.av-logo b{font-family:var(--av-disp);font-weight:500;font-size:.9rem;letter-spacing:.17em;color:var(--av-text)}
.av-menu{display:flex;flex-wrap:nowrap;gap:.15rem;margin-left:auto;list-style:none;padding:0;margin-block:0}
.av-menu li{margin:0}
.av-menu a{display:block;white-space:nowrap;text-decoration:none;font-size:.92rem;color:var(--av-text);
  padding:.5rem .8rem;border-radius:var(--av-pill);transition:background .25s,color .25s}
.av-menu a:hover,.av-menu .current-menu-item>a{background:rgba(6,148,162,.11);color:var(--av-deep)}
.av-burger{display:none;width:42px;height:42px;border-radius:var(--av-pill);border:1px solid var(--av-line);
  background:var(--av-paper-2);color:var(--av-text);
  cursor:pointer;padding:0;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.av-burger:focus,.av-burger:hover,.av-burger:active{background:var(--av-paper-2);color:var(--av-text);
  border-color:var(--av-line)}
.av-burger i{display:block;width:16px;height:2px;border-radius:2px;background:var(--av-text);
  transition:transform .3s,opacity .2s}
.av-burger[aria-expanded="true"] i:nth-child(1){transform:translateY(6px) rotate(45deg)}
.av-burger[aria-expanded="true"] i:nth-child(2){opacity:0}
.av-burger[aria-expanded="true"] i:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
.av-drawer{display:none;max-width:var(--av-wrap);margin:.6rem auto 0;padding:1rem 1.25rem 1.25rem;
  border-radius:var(--av-lg);background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);
  border:1px solid rgba(255,255,255,.7);box-shadow:var(--av-shglass)}
.av-drawer.is-open{display:block}
.av-drawer ul{list-style:none;margin:0;padding:0}
.av-drawer a{display:block;padding:.8rem .2rem;text-decoration:none;font-family:var(--av-disp);
  font-size:1.1rem;color:var(--av-text);border-bottom:1px solid var(--av-line)}
.av-drawer .av-btn{margin-top:1rem;width:100%;justify-content:center}
@media(max-width:1080px){
  .av-menu{display:none}
  .av-bar .av-btn--teal{display:none}
  /* El «margin-left:auto» tiene que ir en el contenedor de Elementor, que es la celda
     real de la fila. Puesto en el botón no empujaba nada y quedaba a media barra. */
  .av-bar > .elementor-element:last-child{margin-left:auto}
  /* La barra es una píldora: sin relleno propio, el logo y el botón quedaban a 1 px
     de su borde curvo. No es distancia a la pantalla, es distancia a la píldora. */
  .av-bar{padding-inline:clamp(.8rem,3.5vw,1.25rem)}
  .av-burger{display:flex}
}

/* ===================== DECORACIÓN ===================== */
.av-dots{position:absolute;inset:0;z-index:0;pointer-events:none;
  background-image:radial-gradient(circle,rgba(6,148,162,.18) 1.15px,transparent 1.15px);background-size:26px 26px;
  -webkit-mask-image:radial-gradient(105% 90% at 78% 20%,#000 18%,transparent 72%);
  mask-image:radial-gradient(105% 90% at 78% 20%,#000 18%,transparent 72%)}
.av-dots--home{-webkit-mask-image:radial-gradient(115% 85% at 62% 42%,#000 25%,transparent 76%);
  mask-image:radial-gradient(115% 85% at 62% 42%,#000 25%,transparent 76%);
  background-image:radial-gradient(circle,rgba(6,148,162,.20) 1.15px,transparent 1.15px)}
.av-rings{position:absolute;z-index:0;pointer-events:none;right:-6rem;top:-9rem;width:min(30rem,60vw);aspect-ratio:1}
.av-rings--home{right:-2rem;top:-4.5rem;bottom:auto;width:min(38rem,54vw)}
@media(max-width:960px){.av-rings--home{top:2rem;right:-6rem;width:min(34rem,92vw)}}
.av-rings i{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(6,148,162,.24)}
/* Trayectorias de los electrones: no se ven, sólo llevan el recorrido */
.av-rings s{position:absolute;inset:0;border-radius:50%}
.av-rings i:nth-child(2){inset:8%;border-color:rgba(6,148,162,.18)}
.av-rings i:nth-child(3){inset:-8%;border-style:dashed;border-color:rgba(6,148,162,.30);
  animation:av-spin 68s linear infinite}
.av-rings b{position:absolute;inset:20%;border-radius:50%;opacity:.16;
  background:radial-gradient(circle at 34% 28%,var(--av-lift),var(--av-teal) 55%,var(--av-deep))}
.av-rings--home b{inset:24%;opacity:.94;overflow:hidden;
  animation:av-nucleo 9s ease-in-out infinite, av-tinte 19s ease-in-out infinite}
/* El núcleo: un barrido cónico que gira despacio y un brillo que respira. Van en dos
   capas para que el giro y el latido no compitan por la misma propiedad. */
.av-rings--home b::before{content:"";position:absolute;inset:0;border-radius:50%;
  background:
    radial-gradient(circle at 72% 28%,rgba(255,255,255,.36),rgba(255,255,255,0) 54%),
    radial-gradient(circle at 26% 74%,rgba(49,203,209,.55),rgba(49,203,209,0) 58%);
  animation:av-spin 16s linear infinite;will-change:transform}
.av-rings--home b::after{content:"";position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle at 32% 26%,rgba(255,255,255,.55),rgba(255,255,255,0) 48%);
  animation:av-brillo 11s ease-in-out infinite}

/* ── La molécula de la portada ──
   El primer anillo se queda circular: es el que sostiene la silueta. Los otros dos se
   inclinan y se aplanan como órbitas, cada uno con un electrón que las recorre. */
.av-rings--home{--orbita:rgba(6,148,162,.34);
  /* Núcleo sólido y halo claro: sobre el fondo casi blanco del hero, un núcleo blanco
     desaparece y el punto se ve como una rosquilla. */
  --av-electron:
    radial-gradient(circle 4.5px at 50% 50%,var(--av-deep) 0 58%,rgba(4,85,94,0) 100%),
    radial-gradient(circle 9px   at 50% 50%,rgba(6,148,162,.55) 0 52%,rgba(6,148,162,0) 100%),
    radial-gradient(circle 20px  at 50% 50%,rgba(49,203,209,.26),rgba(49,203,209,0) 72%);
  --av-electron-2:
    radial-gradient(circle 3.5px at 50% 50%,var(--av-teal) 0 60%,rgba(6,148,162,0) 100%),
    radial-gradient(circle 7px   at 50% 50%,rgba(49,203,209,.5) 0 54%,rgba(49,203,209,0) 100%),
    radial-gradient(circle 16px  at 50% 50%,rgba(49,203,209,.2),rgba(49,203,209,0) 74%)}
.av-rings--home i:nth-child(1){inset:-6%;border-color:rgba(6,148,162,.26);animation:none}
.av-rings--home i:nth-child(2),.av-rings--home i:nth-child(3){
  border:1px solid var(--orbita);transform:rotate(var(--a)) scaleY(.46);animation:none}
.av-rings--home i:nth-child(2){inset:-14%;--a:58deg;  --t:23s}
.av-rings--home i:nth-child(3){inset:-20%;--a:-54deg; --t:31s;border-style:dashed}
/* ── Los electrones ──
   Van en elementos propios (`<s>`) y no sobre la capa del aro: así no heredan el
   `scaleY` que aplasta la elipse y se quedan redondos. `offset-path` los lleva por la
   misma elipse que dibuja el aro —la mitad del ancho por la mitad del alto multiplicada
   por el aplastamiento: 50% x .46 = 23%—. */
.av-rings--home s{transform:rotate(var(--a,0deg))}
.av-rings--home s:nth-of-type(1){inset:-6%;  --p:50%; --t:41s}
.av-rings--home s:nth-of-type(2){inset:-14%; --p:23%; --a:58deg;  --t:23s}
.av-rings--home s:nth-of-type(3){inset:-20%; --p:23%; --a:-54deg; --t:31s}
.av-rings--home s::before,.av-rings--home s::after{
  content:"";position:absolute;width:22px;height:22px;border-radius:50%;
  offset-path:ellipse(50% var(--p) at 50% 50%);offset-rotate:0deg;offset-anchor:center;
  animation:av-orbita var(--t) linear infinite;will-change:offset-distance}
.av-rings--home s::before{background:var(--av-electron)}
.av-rings--home s::after{background:var(--av-electron-2);
  animation-direction:reverse;animation-duration:calc(var(--t) * 1.27)}

/* Red de seguridad: si el navegador no entiende `offset-path` con formas básicas, los
   puntos no se pintarían y la molécula quedaría muda. Ahí vuelve el truco de la capa
   que gira, pero sólo en el aro exterior, que no está aplastado y da puntos redondos. */
@supports not (offset-path: ellipse(50% 23% at 50% 50%)){
  .av-rings--home s{display:none}
  .av-rings--home i:nth-child(1)::before,.av-rings--home i:nth-child(1)::after{
    content:"";position:absolute;inset:0;border-radius:50%;
    background:radial-gradient(circle 9px at 50% 0,var(--av-lift) 50%,rgba(49,203,209,0) 100%);
    animation:av-spin 41s linear infinite}
  .av-rings--home i:nth-child(1)::after{animation-duration:29s;animation-direction:reverse;
    background:radial-gradient(circle 7px at 50% 100%,var(--av-teal) 52%,rgba(6,148,162,0) 100%)}
}

/* En el móvil el hero se queda sin sitio debajo del texto —sólo 107 px—, así que la
   molécula va detrás. Colocada para que la esfera caiga sobre el TITULAR, que es
   texto grande y le basta con 3:1 (saca 7,8), y no sobre la entradilla, que es texto
   normal y necesita 4,5. Por eso puede ir al 60 % y verse. */
@media(max-width:720px){
  .av-rings--home{top:-2.5rem;right:-4rem;width:min(26rem,86vw)}
  .av-rings--home b{opacity:.6}
}

@keyframes av-nucleo{0%,100%{transform:scale(1)}50%{transform:scale(1.035)}}
@keyframes av-tinte{0%,100%{filter:hue-rotate(0deg) saturate(1)}
  50%{filter:hue-rotate(-11deg) saturate(1.14)}}
@keyframes av-brillo{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}
@keyframes av-spin{to{transform:rotate(360deg)}}
@keyframes av-orbita{to{offset-distance:100%}}

/* ==================== HERO DE PORTADA ==================== */
.av-fig{position:relative;width:min(100%,430px);margin-inline:auto;z-index:2}
.av-fig>img{width:100%;display:block;filter:drop-shadow(0 26px 44px rgba(8,34,42,.24))}
.av-float{position:absolute;display:flex;align-items:center;gap:.65rem;padding:.62rem 1rem .62rem .62rem;
  border-radius:var(--av-pill);background:rgba(255,255,255,.84);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,.9);box-shadow:var(--av-sh2);white-space:nowrap;z-index:3}
.av-float u{font-family:var(--av-disp);font-size:.84rem;font-weight:600;display:block;line-height:1.25;text-decoration:none}
.av-float s{font-family:var(--av-mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--av-muted);text-decoration:none;display:block}
.av-float em{width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:var(--av-wash);color:var(--av-deep);font-style:normal}
.av-float em svg{width:19px;height:19px}
.av-f1{left:-2%;top:8%;animation:av-bob 6.5s ease-in-out infinite}
.av-f2{right:-14%;top:36%;animation:av-bob 7.8s ease-in-out infinite .8s}
.av-f3{left:-10%;bottom:14%;animation:av-bob 8.6s ease-in-out infinite 1.6s}
@keyframes av-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-11px)}}
@media(max-width:1000px){.av-f2{right:-6%}.av-f3{left:-6%}}
@media(max-width:560px){.av-float{transform:scale(.86)}.av-f1{left:-6%}.av-f2{right:-8%}.av-f3{left:-8%}}

.av-tag{display:inline-flex;align-items:center;gap:.55rem;padding:.42rem .95rem .42rem .55rem;
  border-radius:var(--av-pill);background:var(--av-paper-2);box-shadow:var(--av-sh1)}
.av-tag i{width:8px;height:8px;border-radius:50%;background:var(--av-teal);animation:av-ping 2.4s ease-out infinite}
.av-tag span{font-family:var(--av-mono);font-size:.7rem;letter-spacing:.13em;text-transform:uppercase;color:var(--av-deep)}
@keyframes av-ping{0%{box-shadow:0 0 0 0 rgba(6,148,162,.5)}70%{box-shadow:0 0 0 9px rgba(6,148,162,0)}100%{box-shadow:0 0 0 0 rgba(6,148,162,0)}}
.av-rot{color:var(--av-deep);position:relative;display:inline-block}
.av-rot::after{content:"";position:absolute;left:-.06em;right:-.06em;bottom:.02em;height:.44em;
  border-radius:var(--av-pill);background:var(--av-teal);opacity:.16;z-index:-1}

.av-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.av-stat{background:var(--av-paper-2);border-radius:var(--av-lg);padding:1.5rem 1.6rem;box-shadow:var(--av-sh1);
  transition:transform .3s cubic-bezier(.2,.8,.3,1),box-shadow .3s}
.av-stat:hover{transform:translateY(-4px);box-shadow:var(--av-sh2)}
.av-stat b{display:block;font-family:var(--av-disp);font-size:clamp(1.6rem,2.1vw,2.15rem);font-weight:700;
  letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--av-deep)}
.av-stat span{font-family:var(--av-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--av-muted)}
@media(max-width:1000px){.av-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.av-stats{grid-template-columns:1fr}}

/* ================== TARJETAS E ICONOS ================== */
.av-grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(285px,1fr));gap:1.15rem}
.av-card{position:relative;display:flex;flex-direction:column;gap:.9rem;text-decoration:none;color:inherit;
  background:var(--av-paper-2);border-radius:var(--av-xl);padding:1.9rem 1.75rem 1.7rem;
  box-shadow:var(--av-sh1);overflow:hidden;
  transition:transform .34s cubic-bezier(.2,.8,.3,1),box-shadow .34s}
.av-card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;
  background:radial-gradient(85% 70% at 88% -8%,rgba(6,148,162,.13),transparent 62%);transition:opacity .34s}
.av-card:hover{transform:translateY(-6px);box-shadow:var(--av-sh2)}
.av-card:hover::after{opacity:1}
.av-card:hover .av-ico{background:var(--av-teal);color:#fff;transform:rotate(-6deg) scale(1.06)}
.av-card h2,.av-card h3{font-size:1.12rem;margin:0}
.av-card p{margin:0;font-size:.95rem;color:var(--av-muted);line-height:1.65}
.av-card--dark{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);
  color:var(--av-on-dark);box-shadow:none}
.av-card--dark h2,.av-card--dark h3{color:var(--av-on-dark)}
.av-card--dark p{color:var(--av-on-dark-muted)}
.av-card--dark:hover{background:rgba(255,255,255,.11)}
.av-go{margin-top:auto;padding-top:.5rem;font-family:var(--av-mono);font-size:.66rem;letter-spacing:.15em;
  text-transform:uppercase;color:var(--av-deep);display:inline-flex;align-items:center;gap:.45rem}
.av-go .ar{transition:transform .3s}
.av-card:hover .av-go .ar{transform:translateX(5px)}

.av-ico{width:56px;height:56px;flex:none;border-radius:var(--av-md);display:grid;place-items:center;
  background:var(--av-wash);color:var(--av-deep);
  transition:background .34s,transform .34s cubic-bezier(.2,.8,.3,1)}
.av-ico svg{width:27px;height:27px;overflow:visible}
.av-ico--sm{width:44px;height:44px;border-radius:14px}
.av-ico--sm svg{width:21px;height:21px}
.av-ico--dark{background:rgba(49,203,209,.16);color:var(--av-lift)}

/* Animaciones de la iconografía */
.av-draw{stroke-dasharray:34;stroke-dashoffset:34;animation:av-draw 3.6s ease-in-out infinite}
@keyframes av-draw{0%{stroke-dashoffset:34}45%,72%{stroke-dashoffset:0}100%{stroke-dashoffset:-34}}
.av-pulse{transform-origin:center;animation:av-pulse 2.8s ease-in-out infinite}
@keyframes av-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.12);opacity:.55}}
.av-b1,.av-b2,.av-b3{animation:av-bounce 1.5s ease-in-out infinite}
.av-b2{animation-delay:.18s}
.av-b3{animation-delay:.36s}
@keyframes av-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.av-g1,.av-g2,.av-g3{transform-origin:bottom;animation:av-grow 2.6s ease-in-out infinite}
.av-g2{animation-delay:.22s}
.av-g3{animation-delay:.44s}
@keyframes av-grow{0%,100%{transform:scaleY(.55)}50%{transform:scaleY(1)}}
.av-link{stroke-dasharray:12;stroke-dashoffset:12;animation:av-link 2.8s ease-in-out infinite}
@keyframes av-link{0%,15%{stroke-dashoffset:12}55%,85%{stroke-dashoffset:0}100%{stroke-dashoffset:12}}
.av-scan{animation:av-scan 3.4s ease-in-out infinite}
@keyframes av-scan{0%,100%{transform:translate(0,0)}50%{transform:translate(4px,-3px)}}
.av-rot-slow{transform-origin:center;animation:av-spin 9s linear infinite}
.av-wave{transform-origin:left center;animation:av-wave 2.4s ease-out infinite}
.av-wave2{transform-origin:left center;animation:av-wave 2.4s ease-out infinite .5s}
@keyframes av-wave{0%{transform:scale(.55);opacity:0}30%{opacity:.9}100%{transform:scale(1.18);opacity:0}}

/* ====================== MARQUESINA ====================== */
.av-marq{overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.av-marq-track{display:flex;gap:.9rem;width:max-content;animation:av-slide 46s linear infinite}
.av-marq-track span{font-family:var(--av-disp);font-weight:500;font-size:.94rem;letter-spacing:.06em;
  color:var(--av-muted);white-space:nowrap;background:var(--av-paper-2);padding:.62rem 1.3rem;
  border-radius:var(--av-pill);box-shadow:var(--av-sh1)}
@keyframes av-slide{to{transform:translateX(-50%)}}

/* ======================= MIGAS ======================= */
.av-crumbs{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;font-family:var(--av-mono);font-size:.7rem;
  letter-spacing:.1em;text-transform:uppercase;color:var(--av-muted);list-style:none;padding:0;margin:0 0 1.4rem}
.av-crumbs a{text-decoration:none}
.av-crumbs a:hover{color:var(--av-deep)}
.av-crumbs li{display:flex;align-items:center}
.av-crumbs li+li::before{content:"/";margin-right:.45rem;color:var(--av-line)}

/* ======================= BANDA CTA ======================= */
.av-cta{display:flex;flex-wrap:wrap;align-items:center;gap:1.5rem 2rem;
  background:var(--av-ink) linear-gradient(120deg,var(--av-ink),var(--av-deep));border-radius:var(--av-xl);
  padding:clamp(1.75rem,4vw,2.75rem);color:var(--av-on-dark)}
.av-cta h2{font-size:1.6rem;color:var(--av-on-dark);margin:0 0 .5rem}
.av-cta p{color:var(--av-on-dark-muted);font-size:.95rem;max-width:46ch;margin:0}
.av-cta .acts{margin-left:auto;display:flex;gap:.75rem;flex-wrap:wrap}
@media(max-width:620px){.av-cta .acts{margin-left:0}}

/* ================== ÍNDICE PEGAJOSO ================== */
.av-toc{position:sticky;top:7rem}
.av-toc .tl{font-family:var(--av-mono);font-size:.68rem;letter-spacing:.17em;text-transform:uppercase;
  color:var(--av-muted);margin:0 0 1rem}
.av-toc ol{list-style:none;margin:0;padding:0;counter-reset:avt;display:flex;flex-direction:column;gap:.1rem}
.av-toc a{display:flex;gap:.7rem;text-decoration:none;font-size:.89rem;padding:.48rem .75rem;
  border-radius:var(--av-pill);color:var(--av-muted);transition:background .25s,color .25s;line-height:1.4}
.av-toc a::before{counter-increment:avt;content:counter(avt,decimal-leading-zero);
  font-family:var(--av-mono);font-size:.68rem;color:var(--av-teal);padding-top:.15rem}
.av-toc a:hover,.av-toc a.is-on{background:var(--av-wash-2);color:var(--av-deep)}
@media(max-width:960px){.av-toc{position:static;display:none}}

/* ==================== FORMULARIOS ==================== */
.av-field{display:flex;flex-direction:column;gap:.4rem}
.av-field label{font-family:var(--av-mono);font-size:.66rem;letter-spacing:.13em;text-transform:uppercase;color:var(--av-muted)}
.av-field input,.av-field select,.av-field textarea{font:inherit;font-size:.97rem;color:var(--av-text);
  background:var(--av-paper);border:1px solid var(--av-line);border-radius:var(--av-md);
  padding:.8rem 1.05rem;width:100%;transition:border-color .25s,background .25s}
.av-field textarea{border-radius:var(--av-lg);resize:vertical;min-height:130px}
.av-field input:focus,.av-field select:focus,.av-field textarea:focus{
  outline:none;border-color:var(--av-teal);background:var(--av-paper-2)}
.av-formcard{background:var(--av-paper-2);border-radius:var(--av-xl);
  padding:clamp(1.6rem,3.5vw,2.5rem);box-shadow:var(--av-sh1)}

/* ==================== ACORDEÓN FAQ ==================== */
.av-faq{background:var(--av-paper-2);border-radius:var(--av-lg);box-shadow:var(--av-sh1);overflow:hidden}
.av-faq+.av-faq{margin-top:.75rem}
.av-faq summary{list-style:none;cursor:pointer;display:flex;gap:1rem;align-items:flex-start;
  padding:1.3rem 1.5rem;font-family:var(--av-disp);font-weight:600;font-size:1.02rem;line-height:1.4}
.av-faq summary::-webkit-details-marker{display:none}
.av-faq summary h2,.av-faq summary h3{font:inherit;letter-spacing:inherit;margin:0;color:inherit}
.av-faq summary::after{content:"";flex:none;margin-left:auto;width:26px;height:26px;border-radius:50%;
  background:var(--av-wash) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2304555E' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/14px no-repeat;
  transition:transform .3s cubic-bezier(.2,.8,.3,1),background-color .3s}
.av-faq[open] summary::after{transform:rotate(135deg);background-color:var(--av-teal)}
.av-faq summary:hover{color:var(--av-deep)}
.av-faq .a{padding:0 1.5rem 1.45rem;color:var(--av-muted);font-size:.98rem;max-width:66ch}
.av-faq .a p+p{margin-top:.8rem}
.av-faq .a ul{margin:.8rem 0 0;padding-left:1.15rem}
.av-faq .a strong{color:var(--av-text)}

/* ==================== ARTÍCULO ==================== */
.av-article{max-width:68ch;font-size:1.08rem}
.av-article h2{font-size:1.5rem;margin:2.5rem 0 .9rem;scroll-margin-top:7rem}
.av-article h2:first-child{margin-top:0}
.av-article h3{font-size:1.2rem;margin:2rem 0 .7rem;scroll-margin-top:7rem}
.av-article p{margin-bottom:1.05rem;color:#20363E}
.av-article ul,.av-article ol{margin:0 0 1.15rem;padding-left:1.35rem;color:#20363E}
.av-article li{margin-bottom:.4rem}
.av-article li::marker{color:var(--av-teal)}
.av-article strong{color:var(--av-text);font-weight:600}
.av-article img{border-radius:var(--av-lg)}
.av-article a{color:var(--av-deep);text-decoration:underline;text-underline-offset:3px}
.av-pull{background:var(--av-wash-2);border-radius:var(--av-lg);padding:1.3rem 1.5rem;margin:1.6rem 0;
  border-left:3px solid var(--av-teal);font-size:1rem}
.av-progress{position:fixed;top:0;left:0;height:3px;z-index:9995;width:0;
  background:var(--av-teal) linear-gradient(90deg,var(--av-teal),var(--av-lift));border-radius:0 var(--av-pill) var(--av-pill) 0}

/* ====================== TEXTO LEGAL ====================== */
.av-legal{max-width:70ch;font-size:1rem}
.av-legal h2{font-size:1.3rem;margin:2.5rem 0 .9rem;scroll-margin-top:7rem}
.av-legal h2:first-child{margin-top:0}
.av-legal h3{font-size:1.05rem;margin:1.75rem 0 .6rem;color:var(--av-deep)}
.av-legal p{margin-bottom:.95rem;color:#20363E}
.av-legal ul{margin:0 0 1.05rem;padding-left:1.3rem;color:#20363E}
.av-legal li{margin-bottom:.4rem}
.av-legal li::marker{color:var(--av-teal)}
.av-legal a{color:var(--av-deep)}
.av-datos{background:var(--av-paper-2);border-radius:var(--av-xl);padding:1.6rem 1.75rem;
  box-shadow:var(--av-sh1);margin-bottom:2rem}
.av-datos dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:.6rem 1.5rem;font-size:.94rem}
.av-datos dt{font-family:var(--av-mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--av-muted);padding-top:.22rem}
.av-datos dd{margin:0;color:var(--av-text)}
@media(max-width:620px){.av-datos dl{grid-template-columns:1fr;gap:.15rem 0}.av-datos dt{padding-top:.5rem}}
.av-upd{font-family:var(--av-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--av-muted);background:var(--av-wash-2);border-radius:var(--av-pill);
  padding:.5rem 1rem;display:inline-block;margin-bottom:1.75rem}

/* ======================= PIE ======================= */
.av-foot{background:var(--av-ink);color:var(--av-on-dark-muted);
  border-radius:var(--av-xl) var(--av-xl) 0 0;padding:clamp(3rem,6vw,4.5rem) 0 0}
.av-foot .wrapf{max-width:var(--av-wrap);margin-inline:auto;padding-inline:var(--av-gutter)}
.av-foot h2{font-size:clamp(1.8rem,4.5vw,3rem);color:var(--av-on-dark);letter-spacing:-.035em;margin:0}
.av-foot h2 em{font-style:normal;color:var(--av-lift)}
.av-foot-top{padding-bottom:2.5rem;border-bottom:1px solid rgba(255,255,255,.1)}
.av-foot-cols{display:grid;grid-template-columns:1.3fr repeat(3,1fr);gap:2.5rem;padding-block:2.5rem}
.av-foot-cols h3{font-family:var(--av-mono);font-size:.66rem;letter-spacing:.17em;text-transform:uppercase;
  color:var(--av-lift);font-weight:500;margin:0 0 1rem}
.av-foot-cols ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}
.av-foot-cols a{text-decoration:none;font-size:.92rem;color:var(--av-on-dark-muted)}
.av-foot-cols a:hover{color:var(--av-lift)}
/* «Concertar cita» es un <button> porque abre una ventana, no una URL, pero en el pie
   tiene que leerse como un enlace más de la columna. */
.av-pie-cita{background:none;border:0;padding:0;cursor:pointer;text-align:left;
  font-family:var(--av-body);font-size:.92rem;color:var(--av-on-dark-muted)}
.av-pie-cita:hover,.av-pie-cita:focus,.av-pie-cita:active{background:none;color:var(--av-lift)}
.av-pie-cita:focus-visible{outline:2px solid var(--av-lift);outline-offset:3px;border-radius:4px}
.av-foot .av-logo b{color:var(--av-on-dark)}
.av-foot-bot{display:flex;flex-wrap:wrap;gap:.7rem 2rem;padding-block:1.4rem;
  border-top:1px solid rgba(255,255,255,.1);font-size:.78rem}
.av-foot-bot .sp{margin-left:auto;display:flex;gap:.5rem}
.av-foot-bot .sp a{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.07);text-decoration:none;transition:background .25s}
.av-foot-bot .sp a:hover{background:var(--av-teal)}
.av-foot-bot .sp svg{width:16px;height:16px}
@media(max-width:960px){.av-foot-cols{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.av-foot-cols{grid-template-columns:1fr}.av-foot-bot .sp{margin-left:0}}

/* ====================== REVELADO ====================== */
/* Revelado al hacer scroll: RETIRADO a propósito.
   Ocultar contenido con opacity:0 a la espera de un IntersectionObserver dejaba
   secciones enteras en blanco cuando el observador no llegaba a disparar. El sitio
   conserva el resto del movimiento (iconos, píldoras, marquesina, anillos, hovers),
   que es aditivo y no puede esconder nada. */
.av-rv{opacity:1;transform:none}
.av-d1{transition-delay:.07s}
.av-d2{transition-delay:.14s}
.av-d3{transition-delay:.21s}

/* ================= MOVIMIENTO REDUCIDO ================= */
@media (prefers-reduced-motion:reduce){
  .av-rings--home i::before,.av-rings--home b{animation:none}
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  .av-rv{opacity:1;transform:none}
  .av-draw,.av-link{stroke-dashoffset:0}
}


/* ============================================================
   Menús nativos de Elementor Pro con la piel del sistema.
   Especificidad alta a propósito: hay que ganarle al CSS del widget.
   ============================================================ */

/* — Cabecera — */
.av-menu-wrap{margin-left:auto}
.av-menu-wrap .elementor-nav-menu{display:flex;flex-wrap:nowrap;gap:.15rem;list-style:none;margin:0;padding:0}
.av-menu-wrap .elementor-nav-menu li{margin:0}
.av-menu-wrap .elementor-nav-menu a.elementor-item{
  display:block;white-space:nowrap;text-decoration:none;font-family:var(--av-body);
  font-size:.92rem;font-weight:400;color:var(--av-text);padding:.5rem .8rem;
  border-radius:var(--av-pill);transition:background .25s,color .25s}
.av-menu-wrap .elementor-nav-menu a.elementor-item:hover,
.av-menu-wrap .elementor-nav-menu a.elementor-item:focus,
.av-menu-wrap .elementor-nav-menu a.elementor-item.elementor-item-active{
  background:rgba(6,148,162,.11);color:var(--av-deep)}
.av-menu-wrap .elementor-nav-menu a.elementor-item:before,
.av-menu-wrap .elementor-nav-menu a.elementor-item:after{display:none}
@media(max-width:1080px){.av-menu-wrap{display:none}}

/* — Cajón móvil — */
.av-drawer-menu .elementor-nav-menu{list-style:none;margin:0;padding:0}
.av-drawer-menu .elementor-nav-menu a.elementor-item{
  display:block;padding:.8rem .2rem;text-decoration:none;font-family:var(--av-disp);
  font-size:1.1rem;color:var(--av-text);border-bottom:1px solid var(--av-line)}
.av-drawer-menu .elementor-nav-menu a.elementor-item:hover{color:var(--av-deep)}

/* — Pie — */
.av-foot-menu .elementor-nav-menu{list-style:none;margin:0;padding:0;
  display:flex;flex-direction:column;gap:.55rem}
.av-foot-menu .elementor-nav-menu li{margin:0}
.av-foot-menu .elementor-nav-menu a.elementor-item{
  padding:0;font-family:var(--av-body);font-size:.92rem;font-weight:400;
  color:var(--av-on-dark-muted);text-decoration:none;background:transparent}
.av-foot-menu .elementor-nav-menu a.elementor-item:hover{color:var(--av-lift);background:transparent}

/* La copia móvil que genera Elementor sobra en el pie y dentro del cajón.
   Ojo con el «:not(.sub-menu)»: los submenús llevan ESA MISMA clase, y sin acotarlo
   este «!important» también los ocultaba, de modo que la flecha de «Servicios» no
   desplegaba nada. */
.av-foot-menu .elementor-nav-menu--dropdown:not(.sub-menu),
.av-foot-menu .elementor-menu-toggle,
.av-drawer-menu .elementor-nav-menu--dropdown:not(.sub-menu),
.av-drawer-menu .elementor-menu-toggle,
.av-menu-wrap .elementor-menu-toggle{display:none !important}
.av-foot-menu .elementor-nav-menu--main,
.av-drawer-menu .elementor-nav-menu--main{display:block !important}


/* ============================================================
   Páginas interiores: hero, área de práctica, índice de servicios
   ============================================================ */
.av-ihero{position:relative;overflow:hidden}
.av-lede{color:var(--av-muted);max-width:62ch;font-size:1.075rem;margin:0}
.av-ihero .elementor-heading-title{font-size:inherit}
.av-ihero>.e-con-inner,.av-ihero>*{position:relative;z-index:2}
.av-ihero .av-dots,.av-ihero .av-rings{z-index:0}

/* — Página de área de práctica — */
.av-svc-layout{display:grid;grid-template-columns:250px 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:start}
@media(max-width:960px){.av-svc-layout{grid-template-columns:1fr}}
.av-svc-intro{font-size:1.15rem;color:var(--av-text);max-width:64ch;margin:0 0 2.75rem;
  padding-left:1.35rem;border-left:3px solid var(--av-teal)}
.av-svc{display:flex;gap:1.4rem;padding:1.75rem;background:var(--av-paper-2);border-radius:var(--av-xl);
  box-shadow:var(--av-sh1);margin-bottom:1.15rem;scroll-margin-top:7rem;
  transition:transform .34s cubic-bezier(.2,.8,.3,1),box-shadow .34s}
.av-svc:hover{transform:translateY(-4px);box-shadow:var(--av-sh2)}
.av-svc:hover .av-ico{background:var(--av-teal);color:#fff;transform:rotate(-6deg) scale(1.06)}
.av-svc h2{font-size:1.2rem;margin:0 0 .55rem}
.av-svc p{color:var(--av-muted);font-size:.97rem;margin:0}
@media(max-width:620px){.av-svc{flex-direction:column;gap:1rem}}
.av-svc-solo{max-width:74ch}

/* — Rejilla de «otras áreas» — */
.av-otras{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.75rem}
.av-otra{display:flex;align-items:center;gap:.85rem;text-decoration:none;background:var(--av-paper-2);
  border-radius:var(--av-pill);padding:.7rem 1.2rem .7rem .7rem;box-shadow:var(--av-sh1);
  font-family:var(--av-disp);font-weight:600;font-size:.94rem;color:var(--av-text);
  transition:transform .28s cubic-bezier(.2,.8,.3,1),box-shadow .28s,color .28s}
.av-otra:hover{transform:translateY(-3px);box-shadow:var(--av-sh2);color:var(--av-deep)}
.av-otra .d{width:34px;height:34px;flex:none;border-radius:50%;background:var(--av-wash);
  display:grid;place-items:center;color:var(--av-deep);font-family:var(--av-mono);font-size:.68rem}

/* — Paquetes cerrados — */
.av-packs{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:1.15rem;align-items:start}
.av-pack{background:var(--av-paper-2);border-radius:var(--av-xl);padding:2rem 1.85rem;box-shadow:var(--av-sh1);
  display:flex;flex-direction:column;gap:1rem;position:relative;
  transition:transform .34s cubic-bezier(.2,.8,.3,1),box-shadow .34s}
.av-pack:hover{transform:translateY(-6px);box-shadow:var(--av-sh2)}
.av-pack h3{font-size:1.12rem;margin:0}
.av-pack ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.7rem;
  font-size:.94rem;color:var(--av-muted)}
.av-pack li{display:flex;gap:.65rem;align-items:flex-start;line-height:1.5;margin:0}
.av-pack li svg{width:17px;height:17px;flex:none;margin-top:.25rem;color:var(--av-teal)}
.av-pack .av-btn{margin-top:auto;justify-content:center}
.av-pack--star{background:var(--av-ink) linear-gradient(150deg,var(--av-ink),var(--av-deep));color:var(--av-on-dark)}
.av-pack--star h3{color:var(--av-on-dark)}
.av-pack--star li{color:var(--av-on-dark-muted)}
.av-pack--star li svg{color:var(--av-lift)}
.av-pack--star .av-ico{background:rgba(49,203,209,.18);color:var(--av-lift)}
.av-pack .flag{position:absolute;top:1.35rem;right:1.35rem;font-family:var(--av-mono);font-size:.58rem;
  letter-spacing:.14em;text-transform:uppercase;background:var(--av-lift);color:#022B30;
  padding:.35rem .7rem;border-radius:var(--av-pill)}

/* — Tarifas — */
.av-tarifas{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem}
.av-tarifa{background:var(--av-paper-2);border-radius:var(--av-lg);padding:1.6rem;box-shadow:var(--av-sh1);
  display:flex;flex-direction:column;gap:.75rem;transition:transform .3s cubic-bezier(.2,.8,.3,1)}
.av-tarifa:hover{transform:translateY(-4px)}
.av-tarifa:hover .av-ico{background:var(--av-teal);color:#fff}
.av-tarifa h3{font-size:1.05rem;margin:0}
.av-tarifa p{font-size:.92rem;color:var(--av-muted);margin:0}

/* ============================================================
   Portada
   ============================================================ */
/* Sin la foto, la fila ya no tiene quien le marque el alto: la molécula es un elemento
   absoluto y no cuenta. Se lo fija la sección, con sitio para que la órbita quepa entera. */
.av-home-hero{padding-bottom:0;min-height:min(86vh,760px);display:flex;align-items:center}
.av-home-hero>.e-con-inner{width:100%}
/* Una sola columna con tope de ancho: la derecha se la queda la molécula, que antes
   iba detrás del retrato y ahora es el elemento visual del hero. */
.av-hero-grid{display:grid;grid-template-columns:minmax(0,1fr);
  gap:clamp(1.5rem,4vw,3.5rem);align-items:center}
.av-home-hero .av-hero-copy{max-width:min(100%,640px)}
@media(max-width:1000px){.av-home-hero .av-hero-copy{max-width:100%}}
@media(max-width:1000px){.av-hero-grid{grid-template-columns:1fr}
  .av-fig{width:min(100%,360px);margin-inline:auto}}
.av-hero-copy{padding-bottom:0}
@media(max-width:1000px){.av-hero-copy{padding-bottom:1rem}}
/* El titular del hero es un H2 (el H1 de la home es «Abogado mercantil en Gran Canaria»).
   La regla cubre ambas etiquetas para que el aspecto no dependa del nivel. */
.av-hero-copy h1,.av-hero-copy h2{font-size:clamp(2.6rem,6vw,5rem);font-weight:700;
  letter-spacing:-.035em;margin:1.5rem 0 1.35rem;line-height:1.1}
/* Sin foto al lado hay aire de sobra, así que el titular y la entradilla crecen. */
.av-home-hero .av-hero-copy h2{font-size:clamp(2.6rem,5.4vw,4.4rem)}
.av-home-hero .av-hero-copy .av-lede{font-size:clamp(1.05rem,1.6vw,1.3rem);max-width:46ch}
.av-hero-copy .av-lede{margin-bottom:2rem}
.av-acts{display:flex;flex-wrap:wrap;gap:.85rem 1.2rem;align-items:center}
.av-tel{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--av-mono);font-size:.9rem;
  text-decoration:none;color:var(--av-text);padding:.7rem 1.1rem;border-radius:var(--av-pill);
  border:1px solid var(--av-line);background:var(--av-paper-2);transition:border-color .25s,color .25s}
.av-tel:hover{border-color:var(--av-teal);color:var(--av-deep)}
.av-tel svg{width:16px;height:16px}

/* Bloque oscuro reutilizable */
.av-dark{position:relative;overflow:hidden;color:var(--av-on-dark);
  background:var(--av-ink) linear-gradient(155deg,var(--av-ink) 8%,var(--av-deep) 62%,#063E47 100%)}
.av-dark::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(58% 46% at 84% 8%,rgba(49,203,209,.28),transparent 64%)}
.av-dark>*{position:relative;z-index:1}
/* La banda de Lanzarote llevaba sólo el degradado. Ahora comparte el lenguaje del
   hero —trama de puntos y órbitas— en su versión clara sobre fondo oscuro. */
.av-rings--dark{left:auto;right:-10rem;top:-4.5rem;bottom:auto;transform:none;
  width:min(30rem,58vw);opacity:.9}
@media(max-width:820px){.av-rings--dark{right:-13rem;top:-2rem;width:min(24rem,80vw);opacity:.75}}
.av-rings--dark i{border-color:rgba(160,231,235,.26)}
.av-rings--dark i:nth-child(1){inset:-6%;--t:47s}
.av-rings--dark i:nth-child(2),.av-rings--dark i:nth-child(3){
  transform:rotate(var(--a)) scaleY(.44)}
.av-rings--dark i:nth-child(2){inset:-14%;--a:54deg;  --t:27s}
.av-rings--dark i:nth-child(3){inset:-20%;--a:-50deg; --t:36s;border-style:dashed;
  border-color:rgba(160,231,235,.34)}
/* Los electrones, igual que en el hero: en sus propios elementos para no heredar el
   aplastamiento del aro. Aquí la elipse es 50% x .44 = 22%. */
.av-rings--dark{--av-electron:
    radial-gradient(circle 4px  at 50% 50%,#F4FEFF 44%,rgba(244,254,255,0) 100%),
    radial-gradient(circle 16px at 50% 50%,rgba(49,203,209,.34),rgba(49,203,209,0) 72%);
  --av-electron-2:
    radial-gradient(circle 3.5px at 50% 50%,#DDF9FC 46%,rgba(221,249,252,0) 100%),
    radial-gradient(circle 13px  at 50% 50%,rgba(49,203,209,.24),rgba(49,203,209,0) 74%)}
.av-rings--dark s{transform:rotate(var(--a,0deg))}
.av-rings--dark s:nth-of-type(1){inset:-6%;  --p:50%; --t:47s}
.av-rings--dark s:nth-of-type(2){inset:-14%; --p:22%; --a:54deg;  --t:27s}
.av-rings--dark s:nth-of-type(3){inset:-20%; --p:22%; --a:-50deg; --t:36s}
.av-rings--dark s::before,.av-rings--dark s::after{
  content:"";position:absolute;width:18px;height:18px;border-radius:50%;
  offset-path:ellipse(50% var(--p) at 50% 50%);offset-rotate:0deg;offset-anchor:center;
  animation:av-orbita var(--t) linear infinite;will-change:offset-distance}
.av-rings--dark s::before{background:var(--av-electron)}
.av-rings--dark s::after{background:var(--av-electron-2);
  animation-direction:reverse;animation-duration:calc(var(--t) * 1.31)}
@supports not (offset-path: ellipse(50% 22% at 50% 50%)){.av-rings--dark s{display:none}}
.av-rings--dark b{inset:22%;opacity:.5;
  background:radial-gradient(circle at 36% 28%,rgba(160,231,235,.85),rgba(6,148,162,.55) 52%,rgba(4,62,71,.9));
  animation:av-nucleo 12s ease-in-out infinite}
.av-dots--dark{-webkit-mask-image:radial-gradient(80% 90% at 88% 50%,#000 8%,transparent 68%);
  mask-image:radial-gradient(80% 90% at 88% 50%,#000 8%,transparent 68%);
  background-image:radial-gradient(circle,rgba(160,231,235,.22) 1.15px,transparent 1.15px)}
.av-dark .av-label{color:var(--av-lift)}

/* Reseñas */
.av-rev-top{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.75rem;margin-bottom:2rem;
  background:var(--av-paper-2);border-radius:var(--av-xl);padding:1.4rem 1.75rem;box-shadow:var(--av-sh1)}
.av-rev-top .score{display:flex;align-items:baseline;gap:.6rem}
.av-rev-top .score b{font-family:var(--av-disp);font-size:2.4rem;font-weight:700;letter-spacing:-.03em}
.av-rev-top .n{font-family:var(--av-mono);font-size:.76rem;color:var(--av-muted)}
.av-stars{color:var(--av-teal);letter-spacing:.1em}
.av-revs{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1.15rem}
.av-rev{background:var(--av-paper-2);border-radius:var(--av-lg);padding:1.5rem;box-shadow:var(--av-sh1);
  transition:transform .3s cubic-bezier(.2,.8,.3,1)}
.av-rev:hover{transform:translateY(-4px)}
.av-rev .who{display:flex;align-items:center;gap:.75rem;margin-top:1rem}
.av-rev .who b{display:block;font-size:.88rem;font-weight:600}
.av-rev .who time{font-family:var(--av-mono);font-size:.68rem;color:var(--av-muted)}
.av-avatar{width:38px;height:38px;flex:none;border-radius:50%;display:grid;place-items:center;color:#fff;
  background:var(--av-deep) linear-gradient(135deg,var(--av-lift),var(--av-deep));
  font-family:var(--av-disp);font-weight:600;font-size:.9rem}

/* Newsletter */
.av-news{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center}
@media(max-width:1000px){.av-news{grid-template-columns:1fr}}
.av-news h2{font-size:clamp(1.8rem,3.4vw,2.6rem);color:var(--av-on-dark);margin:.9rem 0 0}

/* Kit digital */
.av-kit{display:flex;flex-wrap:wrap;align-items:center;gap:1.2rem 2.5rem;background:var(--av-paper-2);
  border-radius:var(--av-xl);padding:1.8rem 2rem;box-shadow:var(--av-sh1)}
.av-kit p{font-size:.86rem;color:var(--av-muted);max-width:56ch;margin:0}
.av-kit .seals{display:flex;gap:.6rem;margin-left:auto;flex-wrap:wrap}
.av-kit .seal{font-family:var(--av-mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;
  border-radius:var(--av-pill);border:1px solid var(--av-line);padding:.55rem .95rem;color:var(--av-muted)}
@media(max-width:620px){.av-kit .seals{margin-left:0}}

/* Widget de entradas de Elementor Pro con la piel del sistema */
.av-posts .elementor-post{background:transparent}
.av-posts .elementor-post__card{background:var(--av-paper-2);border:0;border-radius:var(--av-lg);
  box-shadow:var(--av-sh1);overflow:hidden;transition:transform .34s cubic-bezier(.2,.8,.3,1),box-shadow .34s}
.av-posts .elementor-post__card:hover{transform:translateY(-5px);box-shadow:var(--av-sh2)}
.av-posts .elementor-post__title,.av-posts .elementor-post__title a{
  font-family:var(--av-disp);font-weight:600;font-size:1.02rem;line-height:1.32;
  letter-spacing:-.024em;color:var(--av-text)}
.av-posts .elementor-post__card:hover .elementor-post__title a{color:var(--av-deep)}
.av-posts .elementor-post__excerpt p{font-size:.92rem;color:var(--av-muted)}
.av-posts .elementor-post__meta-data{font-family:var(--av-mono);font-size:.68rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--av-muted);border:0}
.av-posts .elementor-post__read-more{font-family:var(--av-mono);font-size:.66rem;letter-spacing:.15em;
  text-transform:uppercase;color:var(--av-deep)}

/* ============================================================
   Nosotros · Rafael · Contacto · FAQ · Auditoría · Mapa · Legal
   ============================================================ */
.av-persona{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(1.5rem,4vw,3.5rem);align-items:center}
/* Centrado, no «end»: con la foto midiendo casi el doble que la columna de texto,
   alinear al fondo empujaba el titular 355 px hacia abajo. */
.av-persona--rev{grid-template-columns:1.15fr .85fr;align-items:center}
@media(max-width:960px){.av-persona,.av-persona--rev{grid-template-columns:1fr}}
.av-persona h2{font-size:clamp(1.6rem,3vw,2.2rem);margin:.9rem 0 1rem}
.av-persona h1{font-size:clamp(2.3rem,4.8vw,3.6rem);font-weight:700;letter-spacing:-.035em;margin:.8rem 0 1.15rem}
.av-foto{position:relative;border-radius:var(--av-xl);overflow:hidden;box-shadow:var(--av-sh2);margin:0}
.av-foto img{width:100%;display:block}
.av-foto .badge{position:absolute;left:1.1rem;bottom:1.1rem;background:rgba(255,255,255,.9);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--av-pill);
  padding:.55rem 1rem;font-family:var(--av-mono);font-size:.62rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--av-deep)}
/* ── Rejilla de equipo ──
   El despacho es, por ahora, una persona, pero el cliente quiere que crezca. Con
   `auto-fill` y un mínimo de 300 px la tarjeta ocupa media columna cuando está sola
   —no una fila entera con un hueco al lado— y se coloca sin tocar nada al añadir a
   la segunda, la tercera o la cuarta. */
.av-equipo{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,340px));
  gap:1.4rem;justify-content:start;max-width:1100px}
.av-miembro{display:flex;flex-direction:column;background:var(--av-paper-2);
  border-radius:var(--av-xl);overflow:hidden;box-shadow:var(--av-sh1);
  transition:transform .34s cubic-bezier(.2,.8,.3,1),box-shadow .34s}
.av-miembro:hover{transform:translateY(-5px);box-shadow:var(--av-sh2)}
.av-miembro figure{position:relative;margin:0;aspect-ratio:4/5;overflow:hidden;background:var(--av-wash)}
.av-miembro figure img{width:100%;height:100%;object-fit:cover;object-position:50% 22%;display:block;
  transition:transform .5s cubic-bezier(.2,.8,.3,1)}
.av-miembro:hover figure img{transform:scale(1.04)}
.av-miembro figcaption{position:absolute;left:1rem;bottom:1rem;background:rgba(255,255,255,.9);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--av-pill);
  padding:.5rem 1rem;font-family:var(--av-mono);font-size:.6rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--av-deep)}
.av-miembro .cuerpo{padding:1.5rem 1.6rem 1.75rem;display:flex;flex-direction:column;flex:1}
.av-miembro h3{font-size:1.28rem;margin:0 0 .6rem}
.av-miembro p{margin:0;font-size:.94rem;color:var(--av-muted);line-height:1.65}
.av-miembro .av-chips{margin:1.1rem 0 0}
.av-miembro .av-chip{font-size:.62rem;padding:.42rem .8rem}
.av-persona-mas{margin-top:1.15rem;align-self:flex-start;font-family:var(--av-disp);font-weight:600;
  font-size:.9rem;color:var(--av-deep);text-decoration:none;display:inline-flex;align-items:center;gap:.45rem}
.av-persona-mas .ar{transition:transform .3s}
.av-miembro:hover .av-persona-mas .ar{transform:translateX(5px)}
.av-equipo-tl{font-size:clamp(1.7rem,3.2vw,2.3rem);margin:.6rem 0 0}
@media(max-width:400px){.av-equipo{grid-template-columns:1fr}}

.av-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.25rem 0}
.av-chip{font-family:var(--av-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;
  background:var(--av-paper-2);border-radius:var(--av-pill);padding:.5rem 1rem;
  box-shadow:var(--av-sh1);color:var(--av-muted)}
.av-chip--lg{font-size:.82rem;padding:.7rem 1.3rem;letter-spacing:.06em;text-transform:none;
  font-family:var(--av-disp);font-weight:500}
.av-chip--dark{background:rgba(255,255,255,.08);color:var(--av-on-dark-muted);box-shadow:none}

.av-dos-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:clamp(2rem,5vw,4rem)}
.av-dos-cols h2{font-size:clamp(1.6rem,2.6vw,2.15rem);margin:0 0 1.5rem}
.av-hito{display:flex;gap:1.25rem;padding-bottom:1.75rem;position:relative}
.av-hito::before{content:"";position:absolute;left:23px;top:52px;bottom:0;width:1px;background:var(--av-line)}
.av-hito:last-child{padding-bottom:0}
.av-hito:last-child::before{display:none}
.av-hito .yr{width:48px;height:48px;flex:none;border-radius:50%;background:var(--av-wash);color:var(--av-deep);
  display:grid;place-items:center;font-family:var(--av-mono);font-size:.72rem;font-weight:500;z-index:1}
.av-hito h3{font-size:1.02rem;margin:0 0 .25rem}
.av-hito p{font-size:.94rem;color:var(--av-muted);margin:0}

/* Contacto */
.av-contact-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(1.5rem,4vw,3rem);align-items:start}
@media(max-width:960px){.av-contact-grid{grid-template-columns:1fr}}
.av-ccards{display:flex;flex-direction:column;gap:.85rem}
.av-ccard{display:flex;gap:1rem;align-items:flex-start;background:var(--av-paper-2);border-radius:var(--av-lg);
  padding:1.3rem 1.4rem;box-shadow:var(--av-sh1);text-decoration:none;color:inherit;
  transition:transform .28s cubic-bezier(.2,.8,.3,1),box-shadow .28s}
.av-ccard:hover{transform:translateY(-3px);box-shadow:var(--av-sh2)}
.av-ccard:hover .av-ico{background:var(--av-teal);color:#fff}
.av-ccard h2{font-size:.95rem;margin:0 0 .2rem}
.av-ccard p{font-size:.95rem;color:var(--av-muted);margin:0}
.av-ccard .big{font-family:var(--av-disp);font-weight:600;font-size:1.05rem;color:var(--av-text)}
.av-map{position:relative;border-radius:var(--av-xl);overflow:hidden;height:230px;box-shadow:var(--av-sh1);
  background:#0E313B linear-gradient(150deg,#0E313B,#04555E);display:grid;place-items:center}
.av-map .lines{position:absolute;inset:0;opacity:.3;
  background-image:linear-gradient(rgba(49,203,209,.5) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(49,203,209,.5) 1px,transparent 1px);
  background-size:34px 34px}
.av-map .pin{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:.6rem;color:#fff}
.av-map .pin .dot{width:16px;height:16px;border-radius:50%;background:var(--av-lift);
  animation:av-ping2 2.4s ease-out infinite}
@keyframes av-ping2{0%{box-shadow:0 0 0 0 rgba(49,203,209,.55)}70%{box-shadow:0 0 0 22px rgba(49,203,209,0)}
  100%{box-shadow:0 0 0 0 rgba(49,203,209,0)}}
.av-map .pin span:last-child{font-family:var(--av-mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase}
.av-btn--full{width:100%;justify-content:center}
.av-hsform{border-radius:var(--av-lg);background:var(--av-paper);min-height:620px}
.av-formcard h2{font-size:1.3rem}

/* Preguntas frecuentes */
.av-faqtabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem}
.av-faqtab{font-family:var(--av-disp);font-weight:600;font-size:.9rem;padding:.62rem 1.25rem;
  border-radius:var(--av-pill);border:1px solid var(--av-line);background:var(--av-paper-2);
  cursor:pointer;color:var(--av-muted);transition:background .25s,color .25s,border-color .25s}
.av-faqtab:hover{border-color:var(--av-teal)}
.av-faqtab[aria-selected="true"]{background:var(--av-ink);border-color:var(--av-ink);color:var(--av-paper)}
.av-faqlist{display:flex;flex-direction:column;gap:.75rem;max-width:860px;margin-bottom:2.5rem}
.av-faqlist .av-faq+.av-faq{margin-top:0}

/* Auditoría legal web */
.av-qbig{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.15rem;margin-bottom:2.5rem}
.av-q{background:var(--av-paper-2);border-radius:var(--av-xl);padding:1.9rem 1.75rem;box-shadow:var(--av-sh1);
  display:flex;flex-direction:column;gap:1rem}
.av-q h2{font-size:1.08rem;line-height:1.35;margin:0}
.av-riesgos{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}
.av-riesgo{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);
  border-radius:var(--av-lg);padding:1.4rem}
.av-riesgo .n{font-family:var(--av-disp);font-weight:700;font-size:1.85rem;letter-spacing:-.03em;
  color:var(--av-lift);display:block;font-variant-numeric:tabular-nums}
.av-riesgo p{font-size:.88rem;color:var(--av-on-dark-muted);margin:.4rem 0 0}
.av-fases{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;counter-reset:avf}
.av-fase{background:var(--av-paper-2);border-radius:var(--av-xl);padding:1.75rem;box-shadow:var(--av-sh1);position:relative}
.av-fase::before{counter-increment:avf;content:counter(avf,decimal-leading-zero);position:absolute;
  top:1.4rem;right:1.5rem;font-family:var(--av-mono);font-size:2rem;color:var(--av-wash);font-weight:500;line-height:1}
.av-fase h3{font-size:1.02rem;margin:.9rem 0 .7rem;max-width:15ch}
.av-fase ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem;
  font-size:.9rem;color:var(--av-muted)}
.av-fase li{display:flex;gap:.55rem;margin:0}
.av-fase li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--av-teal);flex:none;margin-top:.6rem}
.av-benes{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:.7rem}
.av-bene{display:flex;gap:.7rem;align-items:center;background:var(--av-paper-2);border-radius:var(--av-pill);
  padding:.75rem 1.2rem;box-shadow:var(--av-sh1);font-size:.92rem}
.av-bene svg{width:17px;height:17px;flex:none;color:var(--av-teal)}

/* Mapa del sitio */
.av-mapa-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.15rem;align-items:start}
.av-mapa-col{background:var(--av-paper-2);border-radius:var(--av-xl);padding:1.75rem;box-shadow:var(--av-sh1)}
.av-mapa-col h2{font-size:1.02rem;margin:0 0 1rem;display:flex;align-items:center;gap:.6rem}
.av-mapa-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}
.av-mapa-col li{margin:0}
.av-mapa-col a{display:flex;gap:.55rem;align-items:baseline;text-decoration:none;font-size:.94rem;
  color:var(--av-muted);transition:color .25s,transform .25s}
.av-mapa-col a:hover{color:var(--av-deep);transform:translateX(3px)}
.av-mapa-col a::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--av-teal);flex:none}
.av-mapa-col code{font-family:var(--av-mono);font-size:.72rem;color:#9BB0B6}

/* Textos legales */
.av-legal-layout{display:grid;grid-template-columns:250px 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:start}
@media(max-width:960px){.av-legal-layout{grid-template-columns:1fr}}
.av-legal-solo{max-width:74ch}

/* ============================================================
   Blog: plantilla de entrada y de archivo
   ============================================================ */
.av-post-hero{background:var(--av-paper)}
.av-post-title .elementor-heading-title{letter-spacing:-.035em;max-width:22ch}
.av-post-meta .elementor-post-info{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;padding:0;margin:0;list-style:none}
.av-post-meta .elementor-post-info__item{font-family:var(--av-mono);font-size:.7rem;letter-spacing:.11em;
  text-transform:uppercase;color:var(--av-muted);padding:0}
.av-post-meta .elementor-post-info__terms-list-item{color:var(--av-deep)}
.av-post-fig img{border-radius:var(--av-xl);box-shadow:var(--av-sh2);width:100%;height:auto;display:block}

/* Cuerpo del artículo */
.av-article{max-width:68ch;font-size:1.08rem}
.av-article > .elementor-widget-container{max-width:68ch}
.av-article h2{font-size:1.5rem;margin:2.5rem 0 .9rem;scroll-margin-top:7rem}
.av-article h3{font-size:1.2rem;margin:2rem 0 .7rem;scroll-margin-top:7rem}
.av-article p{margin-bottom:1.05rem;color:#20363E}
.av-article ul,.av-article ol{margin:0 0 1.15rem;padding-left:1.35rem;color:#20363E}
.av-article li{margin-bottom:.4rem}
.av-article li::marker{color:var(--av-teal)}
.av-article strong{color:var(--av-text);font-weight:600}
.av-article img{border-radius:var(--av-lg);height:auto}
.av-article a:not(.av-btn){color:var(--av-deep);text-decoration:underline;text-underline-offset:3px}
.av-article .av-btn{margin-top:.5rem}

/* Compartir */
.av-share{display:flex;gap:.5rem;align-items:center;margin:2rem 0 0;max-width:68ch}
.av-share span{font-family:var(--av-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--av-muted);margin-right:.35rem}
.av-share a{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;
  background:var(--av-paper-2);box-shadow:var(--av-sh1);text-decoration:none;color:var(--av-text);
  transition:background .25s,color .25s,transform .25s}
.av-share a:hover{background:var(--av-teal);color:#fff;transform:translateY(-2px)}
.av-share svg{width:16px;height:16px}

/* Caja de autor */
.av-autor{display:flex;gap:1.25rem;align-items:center;background:var(--av-paper-2);
  border-radius:var(--av-xl);padding:1.5rem;box-shadow:var(--av-sh1);margin-top:2.5rem;max-width:68ch}
.av-autor img{width:74px;height:74px;border-radius:50%;flex:none;object-fit:cover}
.av-autor .nm{font-family:var(--av-disp);font-weight:600;font-size:1.1rem;margin:.25rem 0 .35rem;
  letter-spacing:-.024em}
.av-autor p{font-size:.92rem;color:var(--av-muted);margin:0}
@media(max-width:560px){.av-autor{flex-direction:column;align-items:flex-start}}

/* Archivo: tarjetas y paginación */
.av-archivo .elementor-posts{gap:1.75rem}
.av-posts .elementor-post__thumbnail__link{border-radius:var(--av-lg) var(--av-lg) 0 0;overflow:hidden}
.av-posts .elementor-post__card .elementor-post__text{padding-top:1rem}
.av-posts .elementor-post__card .elementor-post__badge{background:var(--av-teal);color:#022B30;
  border-radius:var(--av-pill);font-family:var(--av-mono);font-size:.6rem;letter-spacing:.12em}
.av-posts .elementor-pagination{margin-top:3rem;display:flex;justify-content:center;gap:.4rem}
.av-posts .elementor-pagination .page-numbers{min-width:42px;height:42px;border-radius:var(--av-pill);
  display:grid;place-items:center;text-decoration:none;font-family:var(--av-mono);font-size:.82rem;
  background:var(--av-paper-2);box-shadow:var(--av-sh1);padding-inline:.9rem;color:var(--av-text)}
.av-posts .elementor-pagination .page-numbers.current{background:var(--av-ink);color:var(--av-paper)}
.av-posts .elementor-pagination .page-numbers:hover{background:var(--av-wash-2)}

/* Metadatos de entrada (shortcode propio) */
.av-meta{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;align-items:center;font-family:var(--av-mono);
  font-size:.7rem;letter-spacing:.11em;text-transform:uppercase;color:var(--av-muted)}
.av-meta time,.av-meta span{display:inline-block}
.av-meta-tag{background:var(--av-wash);color:var(--av-deep);padding:.35rem .8rem;
  border-radius:var(--av-pill);letter-spacing:.12em}

/* El widget de entradas ignora posts_per_page por REST: limitamos a 3 por CSS */
.av-relacionados .elementor-post:nth-child(n+4){display:none}

/* ============================================================
   AJUSTES tras la primera revisión de David
   ============================================================ */

/* 1 y 2 · Color y peso de los botones.
   OJO CON LA ESPECIFICIDAD: el kit de Elementor genera «.elementor-kit-7 a{color:…}»,
   que vale (0,1,1) y pisaba a «.av-btn--teal» (0,1,0). Por eso TODOS los botones salían
   con el color de enlace en vez del suyo. Con dos clases, (0,2,0), ganamos sin !important. */
.av-btn.av-btn--teal,
.av-btn.av-btn--teal:hover,
.av-btn.av-btn--teal:focus,
.av-btn.av-btn--teal:visited,
.av-btn.av-btn--teal svg{color:#FFFFFF}

.av-btn.av-btn--soft,
.av-btn.av-btn--soft:hover,
.av-btn.av-btn--soft:visited{color:var(--av-text);font-weight:600}

.av-btn.av-btn--ghost,
.av-btn.av-btn--ghost:hover,
.av-btn.av-btn--ghost:visited{color:var(--av-on-dark)}

a.av-btn:not(.av-btn--teal):not(.av-btn--soft):not(.av-btn--ghost),
a.av-btn:not(.av-btn--teal):not(.av-btn--soft):not(.av-btn--ghost):hover{color:var(--av-paper)}

/* El botón del teléfono, en negrita */
a.av-tel,a.av-tel:hover{font-weight:600;color:var(--av-text)}
a.av-tel:hover{color:var(--av-deep)}

/* 3 · Retrato del hero con máscara circular */
.av-fig{width:min(100%,430px);margin-inline:auto}
.av-fig .av-fig-circulo{display:block;position:relative;width:100%;aspect-ratio:1;border-radius:50%;overflow:hidden;
  background:radial-gradient(circle at 50% 30%,var(--av-wash) 0%,#CFE9EB 55%,#B6DDE0 100%);
  box-shadow:0 26px 60px -24px rgba(8,34,42,.45)}
.av-fig .av-fig-circulo::after{content:"";position:absolute;inset:0;border-radius:50%;
  border:1px solid rgba(6,148,162,.28)}
.av-fig .av-fig-circulo img{position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  width:96%;height:auto;display:block;filter:none}

/* 4 · Marquesina de clientes con logotipos reales */
.av-marq-track img{height:56px;width:auto;display:block;object-fit:contain;
  filter:grayscale(1);opacity:.62;transition:filter .3s,opacity .3s}
.av-marq-track a,.av-marq-track figure{display:grid;place-items:center;margin:0;
  background:var(--av-paper-2);border-radius:var(--av-lg);box-shadow:var(--av-sh1);
  padding:.9rem 1.4rem;min-width:170px;height:88px}
.av-marq-track figure:hover img{filter:grayscale(0);opacity:1}

/* 5 · Colaboradores (SER, Cámara, ISDE, CFC) */
/* Tres columnas fijas: con seis tarjetas salen dos filas parejas. Con `auto-fit`
   caían cinco arriba y una sola abajo. */
.av-colabs{display:grid;grid-template-columns:repeat(3,1fr);gap:1.15rem}
@media(max-width:900px){.av-colabs{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.av-colabs{grid-template-columns:1fr}}
.av-colab{background:var(--av-paper-2);border-radius:var(--av-xl);padding:1.75rem;box-shadow:var(--av-sh1);
  display:flex;flex-direction:column;gap:1rem;
  transition:transform .34s cubic-bezier(.2,.8,.3,1),box-shadow .34s}
.av-colab:hover{transform:translateY(-5px);box-shadow:var(--av-sh2)}
.av-colab .marca{height:62px;display:grid;place-items:start;}
.av-colab .marca img{max-height:62px;width:auto;max-width:100%;object-fit:contain}
.av-colab h3{font-size:1.02rem;margin:0}
.av-colab p{font-size:.92rem;color:var(--av-muted);margin:0}

/* La chapa del logotipo es un enlace en las entidades que lo exigen (la EOI pide
   enlazar a eoi.es donde aparezca su marca): sin subrayado y con foco visible. */
.av-colab .marca a{display:block;line-height:0;text-decoration:none;border-radius:4px}
.av-colab .marca a:focus-visible{outline:2px solid var(--av-teal);outline-offset:3px}

/* 6 · Kit Digital con los sellos oficiales */
.av-kit{margin-top:2.5rem;flex-direction:column;align-items:flex-start;gap:1.4rem}
.av-kit .seals{margin-left:0;align-items:center;gap:1.75rem}
.av-kit .seals img{height:46px;width:auto;object-fit:contain}
@media(max-width:620px){.av-kit .seals{gap:1.1rem}.av-kit .seals img{height:34px}}

/* 7 · Blog: pastilla de categoría, «Leer más» y esquinas de la tarjeta */
.av-meta-tag{background:var(--av-teal);color:#FFFFFF}
/* El radio va en el CONTENEDOR de la tarjeta, no en la imagen: si se lo pones solo a la
   foto, asoman las esquinas blancas de la tarjeta por encima. Elementor impone
   border-radius:3px con (0,2,0), así que aquí subimos a (0,3,0). */
.av-posts .elementor-posts .elementor-post__card{border-radius:var(--av-lg);overflow:hidden}
.av-posts .elementor-posts .elementor-post__card .elementor-post__thumbnail__link,
.av-posts .elementor-posts .elementor-post__card .elementor-post__thumbnail,
.av-posts .elementor-posts .elementor-post__card .elementor-post__thumbnail img{border-radius:0}
.av-posts .elementor-post__card .elementor-post__badge{background:var(--av-teal);color:#FFFFFF}
.av-posts .elementor-post__read-more{
  display:inline-flex;align-items:center;gap:.5rem;margin-top:.9rem;
  font-family:var(--av-disp);font-weight:600;font-size:.88rem;letter-spacing:0;text-transform:none;
  padding:.62rem 1.25rem;border-radius:var(--av-pill);color:#FFFFFF;text-decoration:none;
  background:var(--av-btn-solid) var(--av-btn-grad);
  background-size:210% 100%;transition:background-position .5s,transform .25s,box-shadow .25s}
.av-posts .elementor-post__read-more:hover{background-position:100% 0;transform:translateY(-2px);
  box-shadow:var(--av-sh2);color:#FFFFFF}

/* La caja de autor va sin foto */
.av-autor img{display:none}
.av-autor{max-width:68ch}

/* En las tarjetas de entradas, Elementor ignora meta_data por REST y pinta su meta por
   defecto: fecha + comentarios (dentro de un span mal llamado «elementor-post-avatar»).
   Dejamos solo la fecha. */
.av-posts .elementor-post__meta-data .elementor-post-avatar,
.av-posts .elementor-post__meta-data .elementor-post-comments,
.av-posts .elementor-post__meta-data .elementor-post__avatar{display:none}

/* ============================================================
   AJUSTES · segunda ronda de revisión
   ============================================================ */

/* 1 · El retrato del hero vuelve a ser rectangular, con esquinas de 25 px */
.av-fig .av-fig-circulo{display:block;position:relative;width:100%;aspect-ratio:auto;
  border-radius:25px;overflow:hidden;background:none;box-shadow:none}
.av-fig .av-fig-circulo::after{display:none}
.av-fig .av-fig-circulo img{position:static;transform:none;width:100%;height:auto;
  border-radius:25px;filter:drop-shadow(0 26px 44px rgba(8,34,42,.24))}

/* 2 · «Más información» de las tarjetas de servicio, como botón de gradiente */
.av-card .av-go{margin-top:auto;padding-top:1rem}
.av-card .av-go--btn{display:inline-flex;align-items:center;gap:.5rem;align-self:flex-start;
  font-family:var(--av-disp);font-weight:600;font-size:.88rem;letter-spacing:0;text-transform:none;
  padding:.62rem 1.25rem;border-radius:var(--av-pill);color:#FFFFFF;
  background:var(--av-btn-solid) var(--av-btn-grad);background-size:210% 100%;
  transition:background-position .5s,transform .25s,box-shadow .25s}
.av-card:hover .av-go--btn{background-position:100% 0;transform:translateY(-1px);box-shadow:var(--av-sh2)}

/* Tarjeta final destacada: consulta personalizada */
.av-card--cta{background:var(--av-ink) linear-gradient(150deg,var(--av-ink),var(--av-deep));color:var(--av-on-dark)}
/* Decía «h3» y el marcado usa «h2», así que la regla NUNCA se aplicaba: el título
   heredaba el color de titular del kit (#04555E), que es exactamente la parada final
   del degradado de la tarjeta. Contraste 1,00: invisible. */
.av-card--cta h2,.av-card--cta h3{color:#fff}
/* El párrafo se quedaba en 3,81 sobre el extremo claro del degradado, por debajo del
   mínimo legible. Con este tono sube a 5,24. */
.av-card--cta p{color:#B4D0D4}
.av-card--cta .av-ico{background:rgba(49,203,209,.18);color:var(--av-lift)}
.av-card--cta:hover .av-ico{background:var(--av-lift);color:#02333A}
.av-card--cta::after{display:none}
/* Con doce tarjetas la decimotercera se quedaba sola en su fila. A todo el ancho
   —dos columnas en tableta, tres o cuatro en escritorio— cierra la rejilla sin huecos
   y se lee como lo que es: la salida para quien no encaja en ninguna. */
.av-card--cta{grid-column:1/-1}
@media(min-width:760px){
  .av-card--cta{flex-direction:row;align-items:center;gap:1.6rem;padding:1.9rem 2.1rem}
  .av-card--cta .av-ico{flex:none}
  .av-card--cta .txt{flex:1;display:flex;flex-direction:column;gap:.55rem}
  .av-card--cta p{max-width:62ch}
  .av-card--cta .av-go{margin-top:0;padding-top:0;flex:none;align-self:center}
  /* La píldora conserva SU relleno: el `padding-top:0` de arriba es para el enlace
     pelado de las tarjetas en columna, no para ésta. */
  .av-card--cta .av-go--btn{padding:calc(.62rem - 1px) 1.25rem calc(.62rem + 1px)}
}

/* 3 · Carrusel doble en direcciones opuestas */
.av-marq+.av-marq{margin-top:.9rem}
.av-marq-track--rev{animation-name:av-slide-rev}
@keyframes av-slide-rev{from{transform:translateX(-50%)}to{transform:translateX(0)}}

/* 4 · Colaboraciones con foto + logotipo */
.av-colab{padding:0;overflow:hidden;gap:0}
.av-colab .foto{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--av-wash)}
.av-colab .foto img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .6s cubic-bezier(.2,.8,.3,1)}
.av-colab:hover .foto img{transform:scale(1.05)}
.av-colab .foto::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(8,34,42,0) 45%,rgba(8,34,42,.55) 100%)}
.av-colab .marca{position:absolute;left:1rem;bottom:1rem;z-index:2;height:auto;
  background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border-radius:var(--av-md);padding:.6rem .9rem;box-shadow:var(--av-sh1);display:grid;place-items:center}
.av-colab .marca img{max-height:30px;width:auto;max-width:130px;object-fit:contain;display:block}
.av-colab .cuerpo{padding:1.5rem 1.6rem 1.75rem;display:flex;flex-direction:column;gap:.7rem}

/* 5 · Reseñas: carrusel + modal */
.av-rev-head{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.75rem;margin-bottom:1.75rem;
  background:var(--av-paper-2);border-radius:var(--av-xl);padding:1.4rem 1.75rem;box-shadow:var(--av-sh1)}
.av-rev-head .score{display:flex;align-items:baseline;gap:.6rem}
.av-rev-head .score b{font-family:var(--av-disp);font-size:2.4rem;font-weight:700;letter-spacing:-.03em}
.av-rev-head .n{font-family:var(--av-mono);font-size:.76rem;color:var(--av-muted)}
.av-rev-head .acts{margin-left:auto;display:flex;gap:.6rem;flex-wrap:wrap}
@media(max-width:720px){.av-rev-head .acts{margin-left:0}}

.av-carr-caja{display:flex;gap:1.15rem;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:.35rem .35rem 1.15rem;scrollbar-width:thin;scroll-behavior:smooth}
.av-carr-caja::-webkit-scrollbar{height:6px}
.av-carr-caja::-webkit-scrollbar-thumb{background:var(--av-line);border-radius:var(--av-pill)}
.av-carr-caja .av-rev{flex:0 0 min(340px,82vw);scroll-snap-align:start}
.av-rev{background:var(--av-paper-2);border-radius:var(--av-lg);padding:1.5rem;box-shadow:var(--av-sh1);
  display:flex;flex-direction:column;gap:.85rem}
.av-rev .texto{font-size:.95rem;color:var(--av-muted);line-height:1.6;margin:0}
.av-rev .who{display:flex;align-items:center;gap:.75rem;margin-top:auto}
.av-rev .who b{display:block;font-size:.88rem;font-weight:600}
.av-rev .who time{font-family:var(--av-mono);font-size:.68rem;color:var(--av-muted)}
.av-rev .g{width:18px;height:18px;flex:none;margin-left:auto}

.av-modal{position:fixed;inset:0;z-index:9999;display:none;padding:clamp(1rem,4vw,3rem);
  /* Sin esto manda la hoja del navegador: fondo blanco, borde de 3 px y, sobre todo,
     `width/height:fit-content`, que deja sin efecto el `inset:0`. */
  width:auto;height:auto;max-width:none;max-height:none;background:transparent;border:0}
.av-modal[open]{display:grid;place-items:center}
.av-modal::backdrop{background:rgba(8,34,42,.62);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.av-modal .caja{background:var(--av-paper);border-radius:var(--av-xl);max-width:920px;width:100%;
  max-height:82vh;overflow:auto;padding:clamp(1.4rem,3vw,2.25rem);box-shadow:var(--av-sh2);
  border:0}
.av-modal .cab{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;position:sticky;top:0;
  background:var(--av-paper);padding-bottom:.75rem;z-index:2}
.av-modal .cab h2{font-size:1.4rem;margin:0}
.av-modal .cerrar{margin-left:auto;width:40px;height:40px;border-radius:50%;border:1px solid var(--av-line);
  background:var(--av-paper-2);cursor:pointer;font-size:1.2rem;line-height:1;color:var(--av-text)}
.av-modal .cerrar:focus,.av-modal .cerrar:active{background:var(--av-paper-2);
  color:var(--av-text);border-color:var(--av-line)}
.av-modal .cerrar:hover{background:var(--av-wash-2);color:var(--av-text)}
.av-modal .lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.15rem}

/* 6 · Kit Digital: texto a todo el ancho, encima de los sellos, centrado */
.av-kit{flex-direction:column;align-items:center;text-align:center;gap:1.5rem}
.av-kit p{max-width:none;width:100%;text-align:center;font-size:.9rem}
.av-kit .seals{margin-left:0;justify-content:center;width:100%}

/* 7 · El pie «flota»: márgenes laterales REALES.
   Con «max-width + margin-inline:auto» no había hueco en cuanto la ventana era menor
   que el max-width, y el pie quedaba pegado a los bordes. */
.av-foot{--width:auto;width:auto;max-width:none;
  margin-inline:clamp(.75rem,2.2vw,2rem);
  margin-bottom:clamp(.75rem,2vw,1.5rem);
  /* Separado también por arriba: en las páginas cuya última sección tiene fondo de
     color (p. ej. /emprende/, con su beige), el pie oscuro chocaba directamente
     contra él y quedaba un corte entre colores. Con este margen se ve el fondo de
     la página por detrás y el pie flota, como ya hace por los lados y por abajo. */
  margin-top:clamp(1.25rem,3vw,2.5rem);
  border-radius:var(--av-xl)}
@media(max-width:720px){.av-foot{border-radius:var(--av-lg);margin-inline:.75rem}}

/* 8 · Blog: fuera las fotos de autor y meta de fecha más pequeño */
.av-posts .elementor-post__meta-data img,
.av-posts img.avatar,
.av-posts .elementor-post-avatar{display:none}
.av-posts .elementor-post__meta-data{font-size:.64rem;letter-spacing:.1em}
.av-meta{font-size:.64rem}
.av-meta-tag{font-size:.62rem}

/* ============================================================
   AJUSTES · tercera ronda de revisión
   ============================================================ */

/* 1 · Carrusel de reseñas: bucle infinito automático.
   Se duplica la tanda en el HTML y se desplaza el 50 %: al llegar,
   la posición coincide con el inicio y el salto es invisible. */
/* CARRUSEL DE RESEÑAS
   Antes era una animación CSS pura sobre la pista. Se ha pasado a desplazamiento
   real gobernado por JS para que las flechas puedan moverlo de verdad, y de paso
   funcionan el arrastre con el dedo y las teclas de dirección. */
.av-carr{position:relative}

.av-carr-caja{
  overflow-x:auto;overflow-y:hidden;scroll-snap-type:none;
  padding:.35rem 0 1.15rem;
  /* «auto», nunca «smooth»: el JS escribe scrollLeft en cada fotograma y un
     desplazamiento suave del navegador pelearía con él */
  scroll-behavior:auto;
  scrollbar-width:none;-ms-overflow-style:none;
  /* Los bordes se desvanecen. Con «mask» y no con degradados encima, para que
     funcione sea cual sea el fondo de la sección. */
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 56px,#000 calc(100% - 56px),transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0,#000 56px,#000 calc(100% - 56px),transparent 100%)}
.av-carr-caja::-webkit-scrollbar{display:none;height:0}
.av-carr-caja:focus-visible{outline:2px solid var(--av-teal);outline-offset:4px;border-radius:var(--av-lg)}
@media(max-width:720px){
  .av-carr-caja{
    -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 26px,#000 calc(100% - 26px),transparent 100%);
    mask-image:linear-gradient(90deg,transparent 0,#000 26px,#000 calc(100% - 26px),transparent 100%)}
}

.av-carr-pista{display:flex;gap:1.15rem;width:max-content}
.av-carr-pista .av-rev{flex:0 0 min(340px,82vw)}

/* Flechas: aparecen al pasar por encima, y siempre que reciban el foco por teclado */
.av-carr-flecha{position:absolute;top:calc(50% - 1.15rem);transform:translateY(-50%);z-index:3;
  width:44px;height:44px;border-radius:50%;border:1px solid var(--av-line);
  background:var(--av-paper-2);color:var(--av-deep);box-shadow:var(--av-sh2);
  display:grid;place-items:center;cursor:pointer;padding:0;
  opacity:0;visibility:hidden;
  transition:opacity .25s ease,visibility .25s ease,background-color .25s ease,color .25s ease}
.av-carr-flecha svg{width:20px;height:20px}
.av-carr-flecha.izq{left:-4px}
.av-carr-flecha.izq svg{transform:scaleX(-1)}
.av-carr-flecha.der{right:-4px}
.av-carr:hover .av-carr-flecha,
.av-carr:focus-within .av-carr-flecha{opacity:1;visibility:visible}
/* El «reset» de Hello Elementor pinta TODOS los botones de rosa (#CC3366) en
   «:hover» y «:focus». En hover nuestras reglas ya ganaban, pero no había ninguna
   para «:focus», así que al pulsar con el ratón el botón se quedaba marcado en rosa.
   Aquí se fija el aspecto también en foco. El hover va después a propósito: misma
   especificidad, así que manda el que se declara más abajo. */
.av-carr-flecha:focus,.av-carr-flecha:active,
.av-carr-flecha:focus-visible{background:var(--av-paper-2);color:var(--av-deep);
  border-color:var(--av-line)}
.av-carr-flecha:focus-visible{opacity:1;visibility:visible;
  outline:2px solid var(--av-teal);outline-offset:3px}
.av-carr-flecha:hover{background:var(--av-teal);color:#fff;border-color:var(--av-teal)}

/* Sin ratón no hay hover que valga: en táctil se ven siempre */
@media (hover:none){
  .av-carr-flecha{opacity:1;visibility:visible}
  .av-carr-flecha.izq{left:2px}
  .av-carr-flecha.der{right:2px}
}

/* 2 · Modal genérica para formularios de HubSpot */
.av-modal .caja--form{max-width:640px}

/* ── Concertar cita: elegir presencial o videollamada ── */
.av-modal .caja--cita{max-width:560px}
.av-modal .caja--cita .cuerpo>p{margin:0 0 1.35rem;color:var(--av-muted);font-size:.95rem}
.av-cita-op{display:flex;align-items:center;gap:1rem;text-decoration:none;color:inherit;
  background:var(--av-paper-2);border-radius:var(--av-lg);padding:1.1rem 1.25rem;
  box-shadow:var(--av-sh1);margin-bottom:.9rem;
  transition:transform .28s cubic-bezier(.2,.8,.3,1),box-shadow .28s}
.av-cita-op:last-child{margin-bottom:0}
.av-cita-op:hover{transform:translateY(-3px);box-shadow:var(--av-sh2);color:inherit}
.av-cita-op:focus-visible{outline:2px solid var(--av-teal);outline-offset:3px}
.av-cita-op .ico{width:46px;height:46px;flex:none;border-radius:var(--av-md);display:grid;
  place-items:center;background:var(--av-wash);color:var(--av-deep)}
.av-cita-op .ico svg{width:23px;height:23px}
.av-cita-op:hover .ico{background:var(--av-teal);color:#fff}
.av-cita-op .txt{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.av-cita-op .txt b{font-family:var(--av-disp);font-weight:600;font-size:1.02rem;color:var(--av-text)}
.av-cita-op .txt small{font-size:.84rem;color:var(--av-muted);line-height:1.4}
.av-cita-op .ar{margin-left:auto;color:var(--av-deep);transition:transform .3s;flex:none}
.av-cita-op:hover .ar{transform:translateX(4px)}

/* La opción del flotante, en el color de la marca para que destaque sobre las otras */
.av-fab-op--cita .ico{background:var(--av-btn-solid) var(--av-btn-grad);color:#fff}

/* El botón suelto que abre la ventana: hereda `.av-btn`, sólo hay que quitarle lo que
   el navegador le pone por ser un <button>. */
.av-abrir-cita{border:0;cursor:pointer;font-family:var(--av-disp)}
.av-hsform-modal{border:0;width:100%;min-height:560px;border-radius:var(--av-lg);
  background:var(--av-paper)}

/* 3 · Pie: correo y teléfono al mismo tamaño que el resto */
.av-foot-cols ul li,
.av-foot-cols ul li a{font-size:.92rem;line-height:1.5}

/* 4 · Actualidad: enlace al archivo */
.av-mas-blog{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;
  margin:1.75rem 0 0;font-size:.98rem;color:var(--av-muted)}
.av-mas-blog a{color:var(--av-deep);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.av-mas-blog a:hover{color:var(--av-teal)}

/* 5 · Colaboraciones: foto más alta y logotipo más grande */
.av-colab .foto{aspect-ratio:5/4}
.av-colab .marca{left:1.1rem;bottom:1.1rem;padding:.75rem 1.1rem;border-radius:var(--av-lg)}
.av-colab .marca img{max-height:46px;max-width:172px}
@media(max-width:620px){.av-colab .marca img{max-height:38px;max-width:150px}}

/* ============================================================
   CABECERA · megamenú, hover y contraste del pie
   ============================================================ */

/* 1 · El botón de la barra NO se levanta al pasar el ratón.
   Con todo en una sola línea, ese translateY(-2px) hacía que el botón
   dejara de alinearse con el logotipo y el menú. Aquí el aviso es de color. */
.av-bar .av-btn:hover,
.av-bar .av-btn:focus-visible{transform:none;box-shadow:0 6px 18px -6px rgba(6,148,162,.55)}

/* Los elementos del menú, centrados en su eje pase lo que pase */
.av-menu-wrap .elementor-nav-menu{align-items:center}
.av-menu-wrap .elementor-nav-menu>li{display:flex;align-items:center}
.av-menu-wrap .elementor-nav-menu a.elementor-item{line-height:1.25;border:0}

/* 2 · MEGAMENÚ de Servicios
   Se apoya en el submenú real de WordPress: Rafael puede añadir o quitar áreas
   desde Apariencia → Menús y el megamenú se actualiza solo.
   El panel se ancla al <li> de «Servicios» con un ancho fijo. Elementor impone
   «width:12em» y «position» al submenú desde su propia hoja, así que aquí hace
   falta !important: es CSS de terceros que no controlo. */
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children{position:relative}
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children>a::after{
  content:"";width:6px;height:6px;margin-left:.15rem;display:inline-block;
  border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;
  transform:translateY(-2px) rotate(45deg);transition:transform .25s;opacity:.7}
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children:hover>a::after{
  transform:translateY(0) rotate(-135deg)}

.av-menu-wrap .elementor-nav-menu .sub-menu{
  position:absolute !important;
  /* El <li> mide 36 px dentro de una barra de 74: del borde inferior del enlace
     al de la barra hay ~19 px. Sumamos eso más el hueco visual. */
  top:calc(100% + 2rem) !important;
  left:50% !important;
  right:auto !important;
  transform:translateX(-50%) translateY(-6px);
  width:min(720px,calc(100vw - 3rem)) !important;
  max-width:none !important;
  display:grid !important;grid-template-columns:repeat(2,1fr);gap:.15rem .6rem;
  padding:1.1rem;margin:0;list-style:none;
  background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%);
  border:1px solid rgba(255,255,255,.75);border-radius:var(--av-lg);
  box-shadow:var(--av-shglass);
  opacity:0;visibility:hidden;
  transition:opacity .25s ease,transform .25s ease,visibility .25s;
  z-index:60}
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children:hover>.sub-menu,
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children:focus-within>.sub-menu{
  opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
/* Puente invisible: al bajar el ratón del enlace al panel no se pierde el hover */
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children>.sub-menu::before{
  content:"";position:absolute;left:0;right:0;top:-2rem;height:2rem}
.av-menu-wrap .elementor-nav-menu .sub-menu li{margin:0;display:block}
.av-menu-wrap .elementor-nav-menu .sub-menu a{
  display:flex;align-items:center;gap:.6rem;white-space:normal;
  padding:.62rem .8rem;border-radius:var(--av-md);
  font-family:var(--av-body);font-size:.9rem;font-weight:400;line-height:1.35;
  color:var(--av-text);text-decoration:none;
  transition:background .2s,color .2s}
.av-menu-wrap .elementor-nav-menu .sub-menu a::before{
  content:"";width:6px;height:6px;border-radius:50%;background:var(--av-teal);
  flex:none;opacity:.55;transition:opacity .2s,transform .2s}
.av-menu-wrap .elementor-nav-menu .sub-menu a:hover,
.av-menu-wrap .elementor-nav-menu .sub-menu a:focus-visible{
  background:rgba(6,148,162,.11);color:var(--av-deep)}
.av-menu-wrap .elementor-nav-menu .sub-menu a:hover::before{opacity:1;transform:scale(1.25)}
.av-bar{position:relative}
@media(max-width:1080px){.av-menu-wrap .elementor-nav-menu .sub-menu{display:none !important}}

/* En el cajón móvil el submenú se muestra en vertical, sin panel */
.av-drawer-menu .elementor-nav-menu .sub-menu{
  /* Aquí había un «display:block !important» de cuando el submenú iba siempre
     desplegado. Quitarlo es justo lo que permite plegarlo: el «!important» ganaba
     a cualquier regla posterior. El display lo gobierna ahora la clase del <li>. */
  /* Elementor fija «position:absolute; width:12em» a los submenús. En el cajón tienen
     que ocupar todo el ancho disponible, no 156 px sueltos en mitad de la pantalla. */
  position:static;width:auto;min-width:0;max-width:none;
  opacity:1;visibility:visible;transform:none;
  background:none;border:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;
  /* Sin sangría: en el cajón cada área ocupa la línea entera. La jerarquía ya la
     marcan el icono y el propio despliegue. */
  padding:0 0 .5rem;margin:0}
.av-drawer-menu .elementor-nav-menu .sub-menu a{
  font-family:var(--av-body);font-size:.95rem;padding:.55rem .2rem;border-bottom:0;color:var(--av-muted)}
.av-drawer-menu .elementor-nav-menu .sub-menu a::before{content:none}

/* 3 · Iconos sociales del pie: contraste.
   Heredaban el color de enlace del kit (#04555E) sobre un fondo casi negro. */
.av-foot-bot .sp a,
.av-foot-bot .sp a:visited{color:var(--av-on-dark);background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.16);transition:background .25s,color .25s,border-color .25s}
.av-foot-bot .sp a:hover,
.av-foot-bot .sp a:focus-visible{background:var(--av-teal);border-color:var(--av-teal);color:#FFFFFF}

/* ============================================================
   CABECERA · geometría a prueba de hover, megamenú y pie
   ============================================================ */

/* 1 · GEOMETRÍA FIJA en los enlaces del menú.
   No conseguí reproducir el desplazamiento midiendo, así que en vez de perseguirlo
   lo hago imposible: caja de tamaño invariable y flecha fuera del flujo. Nada de lo
   que ocurra en :hover puede cambiar el ancho ni la posición del enlace. */
.av-menu-wrap .elementor-nav-menu>li{display:flex;align-items:center;margin:0;padding:0}
.av-menu-wrap .elementor-nav-menu a.elementor-item,
.av-menu-wrap .elementor-nav-menu a.elementor-item:hover,
.av-menu-wrap .elementor-nav-menu a.elementor-item:focus,
.av-menu-wrap .elementor-nav-menu a.elementor-item:active,
.av-menu-wrap .elementor-nav-menu a.elementor-item.elementor-item-active{
  display:inline-flex;align-items:center;justify-content:center;
  box-sizing:border-box;
  padding:.5rem .8rem;margin:0;border:0;
  min-height:36px;line-height:1.25;
  font-family:var(--av-body);font-size:.92rem;font-weight:400;letter-spacing:normal;
  white-space:nowrap;text-decoration:none;border-radius:var(--av-pill);
  transition:background-color .25s ease,color .25s ease}

/* La flecha del desplegable, centrada con el texto y SIN ocupar sitio */
/* El hueco para la flecha debe declararse TAMBIÉN en :hover/:focus/:active.
   Si no, la regla general «a.elementor-item:hover» (0,4,1) gana a esta (0,3,2),
   el padding-right cae de 1.65rem a .8rem y pasan dos cosas a la vez: la flecha
   se monta sobre el texto y el enlace se estrecha, corriendo los siguientes.
   Con el pseudo-.elementor-kit-7 incluido, esta regla sube a (0,4,2) y gana. */
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children>a,
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children>a:hover,
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children>a:focus,
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children>a:active,
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children>a.elementor-item-active{
  position:relative;padding-right:1.75rem}
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children>a::after{
  content:"";position:absolute;right:.72rem;top:50%;
  width:6px;height:6px;margin:0;
  border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;
  transform:translateY(-70%) rotate(45deg);
  transform-origin:center;transition:transform .25s ease;opacity:.75}
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children:hover>a::after,
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children:focus-within>a::after{
  transform:translateY(-25%) rotate(-135deg)}

/* 2 · MEGAMENÚ desarrollado: nombre destacado + resumen + icono */
.av-menu-wrap .elementor-nav-menu .sub-menu{
  grid-template-columns:repeat(2,1fr);gap:.25rem .5rem;
  width:min(780px,calc(100vw - 3rem)) !important;padding:1rem}
.av-menu-wrap .elementor-nav-menu .sub-menu a,
.av-menu-wrap .elementor-nav-menu .sub-menu a:hover{
  display:flex;align-items:flex-start;gap:.85rem;
  box-sizing:border-box;
  padding:.7rem .8rem;margin:0;border:0;
  white-space:normal;border-radius:var(--av-md);
  transition:background-color .2s ease,color .2s ease}
/* El puntito antiguo desaparece: ahora hay icono */
.av-menu-wrap .elementor-nav-menu .sub-menu a::before{content:none}
.mm-ico{flex:none;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;
  background:var(--av-wash);color:var(--av-deep);
  transition:background-color .2s ease,color .2s ease}
.mm-ico svg{width:20px;height:20px;overflow:visible}
.av-menu-wrap .elementor-nav-menu .sub-menu a:hover .mm-ico{background:var(--av-teal);color:#fff}
.mm-txt{display:flex;flex-direction:column;gap:.12rem;min-width:0}
.mm-txt b{font-family:var(--av-disp);font-weight:600;font-size:.94rem;line-height:1.25;
  letter-spacing:-.01em;color:var(--av-text)}
.mm-txt small{font-family:var(--av-body);font-size:.78rem;line-height:1.35;color:var(--av-muted);
  font-weight:400}
.av-menu-wrap .elementor-nav-menu .sub-menu a:hover .mm-txt b{color:var(--av-deep)}

/* En el cajón: icono sí, resumen no (sobra texto en una pantalla estrecha) */
.av-drawer-menu .sub-menu .mm-txt small{display:none}
.av-drawer-menu .sub-menu .mm-ico{display:grid;width:32px;height:32px;border-radius:10px;
  place-items:center;flex:none;background:var(--av-wash);color:var(--av-deep)}
.av-drawer-menu .sub-menu .mm-ico svg{width:17px;height:17px;overflow:visible}
.av-drawer-menu .sub-menu a{gap:.7rem}

/* CAJÓN MÓVIL · el submenú va plegado
   Abría con las 12 áreas desplegadas: 700 px de menú antes de ver nada. */
.av-drawer li.menu-item-has-children{position:relative}
.av-drawer li.menu-item-has-children > .sub-menu{display:none}
.av-drawer li.av-sub-abierto > .sub-menu{display:block}
.av-drawer li.menu-item-has-children > a{padding-right:3rem}

.av-sub-toggle{position:absolute;top:0;right:0;width:44px;height:44px;
  display:grid;place-items:center;padding:0;cursor:pointer;
  background:transparent;border:0;color:var(--av-muted);
  transition:color .2s ease}
.av-sub-toggle,.av-sub-toggle:hover,.av-sub-toggle:focus,.av-sub-toggle:active{
  background:transparent;border:0;color:var(--av-muted)}
.av-sub-toggle:hover,.av-sub-toggle[aria-expanded="true"]{color:var(--av-deep)}
.av-sub-toggle svg{width:20px;height:20px;transition:transform .25s ease}
.av-sub-toggle[aria-expanded="true"] svg{transform:rotate(180deg)}
.av-sub-toggle:focus-visible{outline:2px solid var(--av-teal);outline-offset:-4px;border-radius:12px}

/* La flecha propia del menú de Elementor sobra aquí: ya hay un botón */
.av-drawer .elementor-nav-menu > li.menu-item-has-children > a::after{content:none}

/* 3 · Iconos sociales del pie.
   El «fill:currentColor» que puse antes rellenaba el icono de Instagram, que es de
   TRAZO, y lo convertía en un bloque macizo. Basta con fijar el color: cada SVG ya
   declara si usa relleno o trazo. */
.av-foot-bot .sp a svg{fill:none;stroke:none}
.av-foot-bot .sp a svg[fill="currentColor"]{fill:currentColor}
.av-foot-bot .sp a svg[stroke="currentColor"]{stroke:currentColor}
.av-foot-bot .sp a svg [fill="currentColor"]{fill:currentColor}

/* Tamaño ÓPTICO de los tres iconos sociales.
   Cada glifo ocupa distinta proporción de su viewBox (Facebook 18/24, LinkedIn 16/24,
   Instagram 24/24), así que a igual tamaño de caja se ven distintos. Ajustamos para
   que los tres midan ~12 px de tinta. */
.av-foot-bot .sp a[aria-label="Instagram"] svg{width:13px;height:13px}
.av-foot-bot .sp a[aria-label="LinkedIn"] svg{width:18px;height:18px}
.av-foot-bot .sp a[aria-label="Facebook"] svg{width:16px;height:16px}

/* Crédito de autoría en el pie */
.av-foot-bot .av-credito{color:#6E8C94}
.av-foot-bot .av-credito a{color:var(--av-on-dark-muted);text-decoration:none;
  border-bottom:1px solid rgba(255,255,255,.18);padding-bottom:1px;transition:color .25s,border-color .25s}
.av-foot-bot .av-credito a:hover{color:var(--av-lift);border-color:var(--av-lift)}

/* ============================================================
   FORMULARIO PROPIO (sin el motor de Elementor) · mapa · autor
   ============================================================ */

.av-form{max-width:720px}
.av-form h2{font-size:1.45rem;margin:.8rem 0 .4rem}
.av-form-el[hidden],.av-form-intro[hidden]{display:none}
.av-form-intro{margin-bottom:1.35rem}
.av-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:620px){.av-form-grid{grid-template-columns:1fr}}
.av-field--full{grid-column:1/-1}
.av-field .opc{text-transform:none;letter-spacing:0;color:#5A7278}   /* 2,48 → 5,11 de contraste */
.av-field.con-error input,
.av-field.con-error select,
.av-field.con-error textarea{border-color:var(--av-alert);background:#FDF4F2}
.av-error{display:block;min-height:0;font-size:.78rem;color:var(--av-alert);margin-top:.1rem}
.av-error:empty{display:none}

.av-check{display:flex;gap:.7rem;align-items:flex-start;margin-top:1.15rem;font-size:.82rem;color:var(--av-muted)}
.av-check input{margin-top:.28rem;accent-color:var(--av-teal);width:16px;height:16px;flex:none}
.av-check a{color:var(--av-deep);text-decoration:underline;text-underline-offset:2px}

/* Trampa para robots: fuera de la vista pero sin display:none, que algunos rellenan igual */
.av-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.av-form-enviar{margin-top:1.35rem}
.av-form-enviar[disabled]{opacity:.65;cursor:progress}
.av-form-aviso{margin-top:.9rem;font-size:.86rem}
.av-form-aviso:empty{display:none}
.av-form-aviso.es-error{color:var(--av-alert)}

/* El atributo [hidden] vale «display:none», pero cualquier «display» explícito lo pisa.
   Sin la primera línea el bloque de «Mensaje enviado» se veía siempre. */
.av-form-ok[hidden]{display:none}
.av-form-ok{display:flex;flex-direction:column;align-items:flex-start;gap:.85rem;padding:.5rem 0 .25rem}
.av-form-ok .av-ico{background:var(--av-wash);color:var(--av-deep)}
.av-form-ok h3{font-size:1.2rem;margin:0}
.av-form-ok p{margin:0;color:var(--av-muted)}

/* Sección de formulario sobre fondo blanco */
.av-form-seccion{background:var(--av-paper-2)}
.av-form-seccion .av-form{margin-inline:auto;box-shadow:none;padding:0;background:none}
/* «start», no «center»: la columna de texto mide ~237 px y la del formulario ~850,
   así que centrarla la dejaba caída a media altura. */
.av-form-cta{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(1.5rem,4vw,3.5rem);
  align-items:start}

@media(max-width:960px){.av-form-cta{grid-template-columns:1fr}}
.av-form-cta h2{font-size:clamp(1.7rem,3vw,2.4rem);margin:.9rem 0 1rem}
.av-form-cta .datos{display:flex;flex-direction:column;gap:.7rem;margin-top:1.5rem}
.av-form-cta .datos a{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;
  font-family:var(--av-disp);font-weight:600;font-size:1rem;color:var(--av-text)}
.av-form-cta .datos a:hover{color:var(--av-deep)}
.av-form-cta .datos svg{width:18px;height:18px;color:var(--av-teal)}

/* Mapa real de Google */
.av-mapa-real{border-radius:var(--av-xl);overflow:hidden;box-shadow:var(--av-sh1);line-height:0}
.av-mapa-real iframe{width:100%;height:300px;border:0;display:block;filter:saturate(.9)}
@media(max-width:620px){.av-mapa-real iframe{height:240px}}

/* Caja de autor del blog: con foto y enlace a LinkedIn */
.av-autor{align-items:center}
.av-autor img{display:block;width:74px;height:74px;border-radius:50%;flex:none;object-fit:cover}
.av-autor .enlaces{display:flex;gap:.6rem;margin-top:.7rem;flex-wrap:wrap}
.av-autor .enlaces a{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--av-mono);
  font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--av-deep);
  text-decoration:none;background:var(--av-wash);padding:.42rem .85rem;border-radius:var(--av-pill);
  transition:background .25s,color .25s}
.av-autor .enlaces a:hover{background:var(--av-teal);color:#fff}
.av-autor .enlaces svg{width:14px;height:14px;fill:currentColor}

/* ============================================================
   MENÚ · color de la flecha, estados activos y pie
   ============================================================ */

/* 1 · La flecha del desplegable con COLOR PROPIO, no heredado.
   Al ir con `currentColor` dependía de qué regla ganase el color del enlace en cada
   página, y en algunas se veía casi blanca. Ahora es explícito en los tres estados. */
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children>a::after{
  border-right-color:var(--av-muted);border-bottom-color:var(--av-muted)}
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children:hover>a::after,
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children:focus-within>a::after,
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children.current-menu-item>a::after,
.av-menu-wrap .elementor-nav-menu>li.menu-item-has-children.current-menu-ancestor>a::after{
  border-right-color:var(--av-deep);border-bottom-color:var(--av-deep)}

/* 2 · Estados activos del menú, definidos por nosotros (Elementor pinta los suyos) */
.av-menu-wrap .elementor-nav-menu>li.current-menu-item>a,
.av-menu-wrap .elementor-nav-menu>li.current-menu-ancestor>a,
.av-menu-wrap .elementor-nav-menu a.elementor-item.elementor-item-active{
  background:rgba(6,148,162,.11);color:var(--av-deep)}

/* El área en la que estás, dentro del megamenú: marcada, pero sin gritar */
.av-menu-wrap .elementor-nav-menu .sub-menu li.current-menu-item>a,
.av-menu-wrap .elementor-nav-menu .sub-menu a.elementor-item-active,
.av-menu-wrap .elementor-nav-menu .sub-menu a.elementor-sub-item-active{
  background:var(--av-wash-2);
  box-shadow:inset 2px 0 0 var(--av-teal);
  color:var(--av-text)}
.av-menu-wrap .elementor-nav-menu .sub-menu li.current-menu-item>a .mm-ico,
.av-menu-wrap .elementor-nav-menu .sub-menu a.elementor-item-active .mm-ico{
  background:var(--av-teal);color:#fff}
.av-menu-wrap .elementor-nav-menu .sub-menu li.current-menu-item>a .mm-txt b,
.av-menu-wrap .elementor-nav-menu .sub-menu a.elementor-item-active .mm-txt b{color:var(--av-deep)}
/* Y que el hover siga mandando por encima del estado activo */
.av-menu-wrap .elementor-nav-menu .sub-menu a:hover{background:rgba(6,148,162,.11)}

/* 3 · Enlaces del pie: geometría bloqueada en TODOS los estados.
   Elementor les mete «padding:10px 20px» y en :hover recuperaba el suyo,
   moviendo el enlace. Mismo problema que ya tuvimos en la cabecera. */
.av-foot-menu .elementor-nav-menu a.elementor-item,
.av-foot-menu .elementor-nav-menu a.elementor-item:hover,
.av-foot-menu .elementor-nav-menu a.elementor-item:focus,
.av-foot-menu .elementor-nav-menu a.elementor-item:active,
.av-foot-menu .elementor-nav-menu a.elementor-item.elementor-item-active{
  display:inline-block;box-sizing:border-box;
  padding:0;margin:0;border:0;
  font-family:var(--av-body);font-size:.92rem;font-weight:400;letter-spacing:normal;
  line-height:1.5;background:transparent;text-decoration:none;
  transition:color .25s ease}
.av-foot-menu .elementor-nav-menu a.elementor-item{color:var(--av-on-dark-muted)}
.av-foot-menu .elementor-nav-menu a.elementor-item:hover,
.av-foot-menu .elementor-nav-menu a.elementor-item:focus-visible,
.av-foot-menu .elementor-nav-menu a.elementor-item.elementor-item-active{color:var(--av-lift)}

/* Los enlaces sueltos del pie (correo, teléfono) tampoco se mueven */
.av-foot-cols a,.av-foot-bot a{transition:color .25s ease}

/* ============================================================
   MÓVIL · barra y menú
   ============================================================ */
/* La barra nunca parte en dos líneas: Elementor pone flex-wrap:wrap en .e-con */
.av-bar{flex-wrap:nowrap}

@media(max-width:1080px){
  /* «.av-menu-wrap{display:none}» perdía contra el display:flex que Elementor
     aplica al widget; con .av-bar delante sube a (0,2,0) y gana. */
  .av-bar .av-menu-wrap{display:none !important}
  .av-bar .av-btn--teal{display:none}
  .av-burger{display:flex;margin-left:auto}
}

/* El cajón puede ser más alto que la pantalla (19 entradas con las 12 áreas dentro).
   Como vive en una cabecera fija, sin esto las últimas quedaban fuera de alcance. */
.av-drawer{max-height:calc(100dvh - 8rem);overflow-y:auto;overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch}
@supports not (height: 100dvh){.av-drawer{max-height:calc(100vh - 6.5rem)}}
.av-drawer::-webkit-scrollbar{width:6px}
.av-drawer::-webkit-scrollbar-thumb{background:var(--av-line);border-radius:var(--av-pill)}

/* Imágenes de contenido: que nunca superen su contenedor.
   OJO: las miniaturas de las tarjetas de Elementor quedan FUERA a propósito. Son más
   anchas que la caja porque usan recorte «cover» dentro de un contenedor con
   overflow:hidden; ponerles max-width:100% rompería el encuadre. Comprobado que no
   provocan scroll horizontal. */
.av-article img,
.av-colab img,
.av-foto img,
.av-fig img{max-width:100%;height:auto}
.av-posts .elementor-post__thumbnail{overflow:hidden}

/* Nota de la modal de reseñas: deja claro que es una selección de las 52 */
.av-modal-nota{margin:0 0 1.1rem;font-size:.88rem;color:var(--av-muted)}
.av-modal-nota a{color:var(--av-deep);text-decoration:underline;text-underline-offset:2px}


/* ============================================================
   BOTÓN FLOTANTE DE CONTACTO
   Cuatro vías en un solo sitio: WhatsApp, teléfono, correo y el formulario.
   ============================================================ */
.av-fab{position:fixed;right:clamp(.9rem,2.5vw,1.75rem);bottom:clamp(.9rem,2.5vw,1.75rem);
  z-index:9995;display:flex;flex-direction:column;align-items:flex-end;gap:.95rem}

.av-fab-btn{width:56px;height:56px;border-radius:50%;border:0;cursor:pointer;padding:0;
  display:grid;place-items:center;color:#fff;background:var(--av-btn-solid) var(--av-btn-grad);
  box-shadow:0 10px 30px -8px rgba(8,34,42,.55),0 2px 6px rgba(8,34,42,.2);
  transition:transform .28s cubic-bezier(.2,.8,.3,1),box-shadow .28s}
.av-fab-btn,.av-fab-btn:hover,.av-fab-btn:focus,.av-fab-btn:active{
  background:var(--av-btn-solid) var(--av-btn-grad);color:#fff;border:0}
.av-fab-btn:hover{transform:translateY(-2px) scale(1.04)}
.av-fab-btn:focus-visible{outline:3px solid var(--av-lift);outline-offset:3px}
.av-fab-btn svg{width:26px;height:26px}
.av-fab-btn .cerrar{display:none}
.av-fab.is-open .av-fab-btn .abrir{display:none}
.av-fab.is-open .av-fab-btn .cerrar{display:grid}
.av-fab.is-open .av-fab-btn{transform:rotate(90deg)}

/* ── Fotos del despacho ──
   Una apaisada grande y dos verticales al lado. En móvil se apilan y todas pasan a
   4:3, que es donde estos encuadres siguen leyéndose. */
.av-galeria{display:grid;grid-template-columns:1.62fr 1fr 1fr;gap:1rem}
.av-galeria figure{margin:0;border-radius:var(--av-xl);overflow:hidden;box-shadow:var(--av-sh1);
  background:var(--av-paper-2)}
.av-galeria img{display:block;width:100%;height:100%;object-fit:cover;aspect-ratio:3/4}
.av-galeria figure:first-child img{aspect-ratio:3/2}
@media(max-width:860px){
  .av-galeria{grid-template-columns:1fr 1fr}
  .av-galeria figure:first-child{grid-column:1/-1}
  .av-galeria img{aspect-ratio:4/3}
}
@media(max-width:520px){.av-galeria{grid-template-columns:1fr}}

.av-foto-ancha{margin:0;border-radius:var(--av-xl);overflow:hidden;box-shadow:var(--av-sh1)}
.av-foto-ancha img{display:block;width:100%;height:auto}

/* ── El despacho en la portada ──
   Dos columnas: la galería a la izquierda y el texto a la derecha, centrado con ella. */
.av-despacho{display:grid;grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);
  gap:clamp(1.75rem,4vw,3.25rem);align-items:center}
.av-despacho-txt{max-width:52ch}
.av-despacho h2{font-size:clamp(1.8rem,2.9vw,2.35rem);margin:.7rem 0 1.1rem}
.av-despacho p{margin:0 0 .9rem}
.av-despacho p b{color:var(--av-text);font-weight:600}
@media(max-width:920px){
  .av-despacho{grid-template-columns:1fr}
  .av-despacho-txt{max-width:100%}
}

/* Una foto por vista: `100cqw` es el ancho del propio carrusel, así que la pieza mide
   exactamente lo que la columna sin que la hoja tenga que saber cuánto mide. */
.av-carr--fotos{container-type:inline-size}
.av-foto-carr{flex:0 0 min(320px,76vw);margin:0}
@supports (width:100cqw){.av-carr--fotos .av-foto-carr{flex:0 0 100cqw}}
.av-foto-carr img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;
  border-radius:var(--av-xl);box-shadow:var(--av-sh1);background:var(--av-wash)}
.av-foto-carr figcaption{margin-top:.8rem;font-size:.86rem;color:var(--av-muted);
  line-height:1.45;padding-inline:.2rem}
.av-carr--fotos .av-carr-pista{align-items:flex-start}
/* Sin desvanecido lateral aquí: con una sola foto a la vista, difuminar los bordes le
   comería las esquinas en vez de insinuar que hay más. Las flechas ya lo dicen. */
.av-carr--fotos .av-carr-caja{-webkit-mask-image:none;mask-image:none}

/* ── WhatsApp: el botón principal ──
   Va delante porque es el que el cliente quiere en primer plano, y es un enlace de
   verdad: pulsarlo abre WhatsApp, no un menú. El verde es el de la marca (#25D366).
   El globo con «24 horas» sólo aparece en escritorio, donde hay sitio; en el móvil
   la promesa la lleva la chapa «24 h», que ocupa lo que ocupa. */
.av-fab-wa{order:2;position:relative;width:60px;height:60px;border-radius:50%;
  display:grid;place-items:center;text-decoration:none;
  background:#25D366;color:#fff;
  box-shadow:0 10px 30px -8px rgba(6,80,40,.55),0 2px 6px rgba(8,34,42,.2);
  transition:transform .28s cubic-bezier(.2,.8,.3,1),box-shadow .28s}
.av-fab-wa,.av-fab-wa:hover,.av-fab-wa:focus,.av-fab-wa:active{background:#25D366;color:#fff}
.av-fab-wa:hover{transform:translateY(-2px) scale(1.05)}
.av-fab-wa:focus-visible{outline:3px solid var(--av-ink);outline-offset:3px}
.av-fab-wa svg{width:32px;height:32px;fill:#fff}
.av-fab-wa svg path{fill:#fff}
.av-fab-24{position:absolute;top:-5px;right:-7px;background:#097681;color:#fff;
  font-family:var(--av-mono);font-size:.58rem;letter-spacing:.06em;line-height:1;
  padding:.3rem .38rem;border-radius:999px;border:2px solid var(--av-paper);white-space:nowrap}
.av-fab-globo{position:absolute;right:calc(100% + .6rem);top:50%;transform:translateY(-50%) translateX(6px);
  background:var(--av-ink);color:#fff;font-family:var(--av-disp);font-size:.8rem;font-weight:600;
  padding:.5rem .8rem;border-radius:var(--av-md);white-space:nowrap;pointer-events:none;
  opacity:0;transition:opacity .22s,transform .22s;box-shadow:var(--av-sh1)}
.av-fab-wa:hover .av-fab-globo,.av-fab-wa:focus-visible .av-fab-globo{opacity:1;transform:translateY(-50%)}
@media(max-width:640px){.av-fab-globo{display:none}}

/* El de siempre queda encima y más pequeño: es la vía secundaria */
.av-fab-btn{order:1;width:44px;height:44px}
.av-fab-btn svg{width:21px;height:21px}
.av-fab-ops{order:0;display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}
.av-fab-ops[hidden]{display:none}
.av-fab-op{display:inline-flex;align-items:center;gap:.7rem;text-decoration:none;cursor:pointer;
  padding:.6rem .95rem;border-radius:var(--av-pill);
  background:var(--av-paper-2);border:1px solid var(--av-line);
  color:var(--av-text);font-family:var(--av-disp);font-weight:600;font-size:.9rem;
  box-shadow:var(--av-sh2);white-space:nowrap;
  animation:av-fab-entra .22s cubic-bezier(.2,.8,.3,1) both;
  transition:transform .2s ease,color .2s ease,border-color .2s ease}
.av-fab-op,.av-fab-op:hover,.av-fab-op:focus,.av-fab-op:active{
  background:var(--av-paper-2);border-color:var(--av-line);color:var(--av-text)}
.av-fab-op:hover{transform:translateX(-3px)}
.av-fab-op:focus-visible{outline:2px solid var(--av-teal);outline-offset:2px}
.av-fab-op .ico{width:30px;height:30px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:var(--av-wash);color:var(--av-deep)}
.av-fab-op .ico svg{width:17px;height:17px}
.av-fab-op--wa .ico{background:#25D366;color:#fff}
.av-fab-op:nth-child(2){animation-delay:.04s}
.av-fab-op:nth-child(3){animation-delay:.08s}
.av-fab-op:nth-child(4){animation-delay:.12s}
@keyframes av-fab-entra{from{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .av-fab-op{animation:none}
  .av-fab-btn:hover,.av-fab.is-open .av-fab-btn{transform:none}
}

/* En pantallas muy estrechas el botón se queda; las etiquetas se ajustan */
@media(max-width:400px){
  .av-fab-op{font-size:.85rem;padding:.55rem .8rem}
  .av-fab-btn{width:40px;height:40px}
  .av-fab-wa{width:56px;height:56px}
  .av-fab-wa svg{width:30px;height:30px}
  /* El plugin de accesibilidad se pone abajo a la derecha en el móvil: se le deja sitio */
  .av-fab{bottom:5.25rem}
}

/* Que no tape el pie al llegar abajo del todo */
.av-foot{scroll-margin-bottom:5rem}


/* Submenú del cajón: cada área ocupa la línea entera y se toca cómodo */
.av-drawer .sub-menu{width:auto;padding:.15rem 0 .6rem}
.av-drawer .sub-menu > li{display:block;width:100%}
.av-drawer .sub-menu > li > a{display:flex;align-items:center;width:100%;
  padding:.55rem .35rem;border-radius:var(--av-md)}
.av-drawer .sub-menu > li > a:hover,
.av-drawer .sub-menu > li > a:focus-visible{background:var(--av-wash-2)}
.av-drawer .sub-menu .mm-txt{min-width:0}
.av-drawer .sub-menu .mm-txt b{font-family:var(--av-body);font-weight:500;font-size:.95rem;
  color:var(--av-text);letter-spacing:normal}


/* Con el menú móvil abierto, el botón flotante sobra: iría por encima (z-index 9995
   contra 9990 de la cabecera) y taparía las últimas opciones. */
html.av-menu-abierto .av-fab{opacity:0;visibility:hidden;pointer-events:none}
/* «visibility» NO se transiciona a propósito: si la transición no llega a correr
   (pestaña en segundo plano, movimiento reducido), el valor se queda congelado y el
   botón seguiría visible. Así se oculta seguro, y el desvanecido es sólo el adorno. */
.av-fab{transition:opacity .2s ease}

/* ¿Por qué cada degradado lleva un color sólido delante?
   Elementor, para acelerar la carga, le pone «background-image:none !important» a TODO
   lo que hay dentro de las secciones a partir de la cuarta mientras no se han visto
   (`.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded) *`). Como «background: <degradado>»
   es una abreviatura, deja además el color de fondo en transparente: al quitarle la imagen
   no queda NADA debajo, y el texto claro que va encima desaparece.
   Le pasaba a la tarjeta «Start Pack Empresas», que se veía en blanco sobre blanco.
   Con el color sólido delante, el degradado pasa a ser el adorno y no el sustento. */

/* LEGIBILIDAD DEL META DE LAS ENTRADAS
   Medido: la fecha de las tarjetas del blog quedaba en 2,24 de contraste y el extracto
   en 4,48, ambos por debajo del mínimo de 4,5 para texto normal. Y la fecha va a 12 px,
   que es donde más se nota. Este tono da 5,11 sobre blanco y 4,77 sobre el fondo de la
   página, así que cumple en las dos superficies donde aparece. */
.elementor-post-date,
.elementor-post__meta-data,
.elementor-post__meta-data span,
.elementor-post__excerpt p{color:#5A7278}

/* ÁREAS REDACTADAS POR EL CLIENTE
   Sus textos traen varios párrafos y listas dentro de cada apartado, mientras que
   las áreas antiguas eran de un solo párrafo. Estas tarjetas admiten ambas cosas. */
.av-svc--largo{align-items:flex-start}
.av-svc--largo > div > * + *{margin-top:.85rem}
.av-svc--largo p{color:var(--av-muted);font-size:.97rem;line-height:1.7;max-width:70ch}
.av-svc--largo ul{margin:0;padding-left:1.2rem;display:flex;flex-direction:column;gap:.42rem;
  color:var(--av-muted);font-size:.95rem;line-height:1.6;max-width:70ch}
.av-svc--largo li::marker{color:var(--av-teal)}
.av-svc--largo li b{color:var(--av-text);font-weight:600;display:block;margin-bottom:.1rem}/* End custom CSS */