/* ============================================================
   AYC GROUP — RESPONSIVE SAFETY LAYER
   Cargado con prioridad 10002 (después de typography.css).
   Reglas globales para evitar overflow, overlapping y figuras
   rotas en mobile/tablet. Convención de breakpoints:
     - mobile: max-width: 767px
     - tablet: 768-1024px
     - desktop: 1025px+
   ============================================================ */

/* ---------- 1. CONTENCIÓN GLOBAL (solo mobile/tablet) ----------
   Desktop conserva su comportamiento original — no aplicamos
   max-width:100vw ni img max-width:100% globalmente.
   Solo box-sizing es estándar y seguro globalmente. */
*, *::before, *::after {
  box-sizing: border-box;
}
@media (max-width: 1024px) {
  html, body {
    overflow-x: hidden;
    max-width: 100vw;
  }
  img, video, iframe, svg, canvas {
    max-width: 100%;
    height: auto;
  }
}

/* ---------- 2. FIX calc(100vw - 160px) EN MOBILE ----------
   Hardcoded en accountants/advisors/ayuda-center/servicios/overrides
   asume 160px de margen lateral que no existe en mobile.
   Cuando el viewport baja de 768px, fuerza 100% con padding interno. */
@media (max-width: 1024px) {
  body .elementor-element[data-id="qt1e2jbl"],
  body .elementor-element[data-id="ac-hero-legal"],
  body .elementor-element[data-id="adv-hero-legal"],
  body .elementor-element[data-id="acchc46abe"],
  body .qs-tl-track-wrap,
  body [class*="hero-legal"] {
    width: 100% !important;
    max-width: 100% !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
}

/* ---------- 3. DISCLAIMER GLOBAL: ROMPER nowrap EN MOBILE ----------
   El "No somos abogados..." tiene white-space: nowrap → 1064px de ancho.
   Forzar wrap en pantallas pequeñas. data-ids reales: qt1e2jbl (home),
   advhc46abe (advisors), acchc46abe (accountants), ftr_disclaimer (footer). */
@media (max-width: 1024px) {
  .elementor-element[data-id="qt1e2jbl"] p,
  .elementor-element[data-id="qt1e2jbl"],
  .elementor-element[data-id="advhc46abe"],
  .elementor-element[data-id="advhc46abe"] p,
  .elementor-element[data-id="acchc46abe"],
  .elementor-element[data-id="acchc46abe"] p,
  [class*="hero-legal"] p,
  [class*="hero-legal"],
  .qs-hero-legal-text,
  .faq-hero-legal p,
  body .elementor-element[data-id="ftr_disclaimer"] p,
  body .elementor-element[data-id="ftr_disclaimer"] {
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    overflow: visible !important;
    text-align: center !important;
    line-height: 1.5 !important;
    max-width: 100% !important;
  }
  /* Specificity bump: advisors.css y accountants.css usan
     body.page-id-XX .elementor-element[data-id="..."] p (0,2,2) que gana
     a la regla anterior (0,2,1). Repetimos con prefijo body.page-id para
     empatar/ganar y forzar wrap en mobile. */
  body.page-id-78 .elementor-element[data-id="advhc46abe"] p,
  body.page-id-78 .elementor-element[data-id="advhc46abe"],
  body.page-id-69 .elementor-element[data-id="acchc46abe"] p,
  body.page-id-69 .elementor-element[data-id="acchc46abe"] {
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    overflow: visible !important;
    max-width: 100% !important;
  }
}
/* Advisors disclaimer: <p> con font-size 9px inline (microscópico).
   Solo aplica en mobile/tablet — desktop conserva su 9px original. */
@media (max-width: 1024px) {
  .elementor-element[data-id="advhc46abe"] p {
    font-size: var(--fs-xs) !important;
  }
}

/* ---------- 4. HEADER DERECHO: APILAR EN MOBILE ----------
   `hdr_right` sale del viewport en 360-390px (rightEdge 402).
   Reducir su tamaño y permitir wrap. */
@media (max-width: 767px) {
  .elementor-element[data-id="hdr_right"],
  body .elementor-element[data-id="hdr_right"] {
    max-width: 100% !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 8px !important;
  }
  .elementor-element[data-id="hdr_right"] .elementor-button {
    padding: 8px 14px !important;
    font-size: var(--fs-small) !important;
  }
}

/* ---------- 5. FOOTER: APILAR COLUMNAS EN MOBILE ----------
   ftr_col3/4, ftr_addr, ftr_social no se apilan correctamente. */
@media (max-width: 767px) {
  .elementor-6 .e-con-inner,
  .elementor-element[data-id="ftr_inner"] .e-con-inner,
  .elementor-element[data-id*="ftr_col"] {
    flex-direction: column !important;
    flex-wrap: wrap !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  .elementor-element[data-id*="ftr_col"] {
    margin-bottom: 24px !important;
  }
}

/* ---------- 6. HEADING "NUESTROS SERVICIOS" — OVERLAP MOBILE ----------
   data-ids reales:
   - Accountants: accs855d2a (heading "Nuestros Servicios")
   - Ayuda Center: ac-svc-title (heading "Nuestros Servicios")
   - Advisors: similar
   El heading se solapa con la primera card por margin negativo o sticky.
   Forzar position estática y margin generoso debajo. */
@media (max-width: 1024px) {
  body.page-id-69 .elementor-element[data-id="accs855d2a"],
  body.page-id-29 .elementor-element[data-id="ac-svc-title"],
  body.page-id-78 [data-id*="adv-svc-title"],
  body.page-id-78 [data-id*="adv-srv"],
  body.page-id-69 [data-id*="acc-srv"],
  body.page-id-29 [data-id*="ac-srv"] {
    position: static !important;
    margin-top: 0 !important;
    margin-bottom: 32px !important;
    padding-bottom: 16px !important;
    z-index: auto !important;
    top: auto !important;
  }
  body.page-id-69 .elementor-element[data-id="accs855d2a"] + .elementor-element,
  body.page-id-29 .elementor-element[data-id="ac-svc-title"] + .elementor-element,
  body.page-id-69 [data-id="accs855d2a"] ~ .e-con,
  body.page-id-29 [data-id="ac-svc-title"] ~ .e-con {
    margin-top: 24px !important;
  }
  /* Safety neta: cualquier H2 seguido de un widget que se le pega */
  body .elementor-widget-heading h2.elementor-heading-title {
    position: static !important;
    margin-bottom: 16px !important;
  }
  body .elementor-widget-heading + .elementor-widget,
  body .elementor-widget-heading + .e-con {
    margin-top: 16px !important;
  }
}

/* ---------- 7. CTA HEADING vs PÁRRAFO (Ayuda Center, Quienes Somos) ----------
   Overlap de H2 grande con <p> siguiente. */
@media (max-width: 1024px) {
  body .elementor-widget-heading + .elementor-widget-text-editor,
  body .elementor-widget-heading + .elementor-widget {
    margin-top: 12px !important;
  }
  body h1, body h2, body h3 {
    margin-bottom: 16px !important;
  }
}

/* ---------- 8. QUIENES SOMOS: TEAM CAROUSEL ----------
   Es un carrusel horizontal (.qs-team-viewport > .qs-team-track > 6× .qs-team-card).
   Desktop muestra 3 cards a la vez (flex-basis: calc((100% - 56px) / 3)).
   Mobile/tablet: ajustar flex-basis para que se vea 1 (mobile) o 2 (tablet)
   por vista, sin romper el JS del carrusel. */
@media (max-width: 767px) {
  body.page-id-87 .qs-team-viewport {
    max-width: 100% !important;
    padding: 20px 16px !important;
  }
  body.page-id-87 .qs-team-track {
    max-width: none !important;
    gap: 16px !important;
  }
  body.page-id-87 .qs-team-track > .qs-team-card {
    flex: 0 0 calc(100% - 0px) !important;
    min-width: 0 !important;
    aspect-ratio: 3/4 !important;
  }
  body.page-id-87 .qs-team-card .qs-team-name {
    font-size: var(--fs-base) !important;
    line-height: 1.3 !important;
  }
  body.page-id-87 .qs-team-card .qs-team-role {
    font-size: var(--fs-small) !important;
    line-height: 1.4 !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  body.page-id-87 .qs-team-track > .qs-team-card {
    flex: 0 0 calc((100% - 28px) / 2) !important;
  }
}

/* ---------- 9. QUIENES SOMOS: PHILO CIRCLES ----------
   80x80 con frases enteras → texto se sale. Agrandar y reorganizar. */
@media (max-width: 767px) {
  body.page-id-87 .qs-philo-graphic {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    height: auto !important;
    gap: 12px !important;
    padding: 12px !important;
  }
  body.page-id-87 .qs-philo-bubble {
    position: static !important;
    width: 100% !important;
    height: auto !important;
    min-height: 64px !important;
    border-radius: 12px !important;
    padding: 12px 16px !important;
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    transform: none !important;
  }
  body.page-id-87 .qs-philo-bubble span {
    font-size: var(--fs-small) !important;
    line-height: 1.4 !important;
    text-align: left !important;
    flex: 1 !important;
    white-space: normal !important;
  }
  body.page-id-87 .qs-philo-bubble i {
    flex-shrink: 0 !important;
    font-size: 22px !important;
  }
  body.page-id-87 .qs-philo-center,
  body.page-id-87 .qs-philo-arc {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  body.page-id-87 .qs-philo-bubble {
    width: 110px !important;
    height: 110px !important;
  }
  body.page-id-87 .qs-philo-bubble span {
    font-size: var(--fs-xs) !important;
    line-height: 1.3 !important;
  }
}

/* ---------- 10. QUIENES SOMOS: DIFF CIRCLES ----------
   120x120 con icono FontAwesome que sobresale. Ajustar padding. */
@media (max-width: 1024px) {
  body.page-id-87 .qs-diff-circle {
    width: 96px !important;
    height: 96px !important;
    padding: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden !important;
  }
  body.page-id-87 .qs-diff-circle i,
  body.page-id-87 .qs-diff-circle svg {
    font-size: 36px !important;
    max-width: 60% !important;
    max-height: 60% !important;
  }
}

/* ---------- 11. QUIENES SOMOS: TIMELINE SLIDES ----------
   Desktop usa layout 3-up (left/center/right) con translateX. En mobile
   se solapan. Mostrar SOLO la slide activa, ocultar las otras. */
@media (max-width: 1024px) {
  body.page-id-87 .qs-tl-slide {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
    transform: none !important;
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transition: opacity 0.4s ease !important;
  }
  body.page-id-87 .qs-tl-slide.is-active,
  body.page-id-87 .qs-tl-slide.qs-tl-center {
    position: relative !important;
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
  }
  body.page-id-87 .qs-tl-track {
    transform: none !important;
    width: 100% !important;
    position: relative !important;
  }
  body.page-id-87 .qs-tl-carousel,
  body.page-id-87 .qs-tl-viewport {
    overflow: hidden !important;
    width: 100% !important;
  }
  body.page-id-87 .qs-tl-slide-bg,
  body.page-id-87 .qs-tl-slide-overlay {
    width: 100% !important;
    max-width: 100% !important;
  }
  body.page-id-87 .qs-tl-block {
    width: 100% !important;
    max-width: 100% !important;
    padding: 16px !important;
  }
  /* Quitar el 400vh de scroll-pinning en mobile/tablet. Ese height era para
     pinned-scroll desktop. Mobile: altura natural del carrusel + chrome. */
  body.page-id-87 [data-id="qs-tl-sec"] {
    height: auto !important;
    min-height: auto !important;
  }
  body.page-id-87 [data-id="qs-tl-html"] {
    height: auto !important;
    min-height: 0 !important;
  }
  /* Carrusel necesita altura definida porque slides son absolute */
  body.page-id-87 .qs-tl-carousel,
  body.page-id-87 .qs-tl-viewport,
  body.page-id-87 .qs-tl-track {
    height: auto !important;
    min-height: 500px !important;
    position: relative !important;
  }
}

/* ---------- 12. HOME: ÓVALO DECORATIVO ll6itevi ----------
   Desktop conserva el border-radius:50% original (diseño intencional).
   Solo en mobile reducimos el radius para que no quede óvalo extraño. */
@media (max-width: 767px) {
  .elementor-element[data-id="ll6itevi"] {
    border-radius: 16px !important;
    max-width: 90% !important;
    margin: 0 auto !important;
  }
}

/* ---------- 13. ADVISORS: CHECK ITEMS ROW ----------
   `.ayc-check-item` se salen del viewport en mobile. Forzar wrap. */
@media (max-width: 767px) {
  body.page-id-78 .ayc-check-list,
  body.page-id-78 [class*="check-row"],
  body.page-id-78 [data-id*="check"] .e-con-inner {
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 12px !important;
  }
  body.page-id-78 .ayc-check-item {
    flex: 0 0 calc(50% - 6px) !important;
    max-width: calc(50% - 6px) !important;
    min-width: 0 !important;
  }
}

/* ---------- 14. ACCOUNTANTS: TESTIMONIALES ----------
   `accx6186f72` testimonial wrapper sale a rightEdge 1240 a 768. */
@media (max-width: 1024px) {
  body.page-id-69 .elementor-element[data-id="accx6186f72"],
  body.page-id-69 [class*="testimonial-wrapper"] {
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
  }
}

/* ---------- 15. SERVICIOS: INTRO TITLE ----------
   svc-intro-title tiene white-space:nowrap forzado en overrides.css:6778
   (bloque "FINAL OVERRIDES: servicios intro one-line responsive") - bueno
   para desktop pero rompe layout en mobile (scrollW 555 / clientW 244).
   Anular nowrap bajo 1024px y permitir wrap natural. */
@media (max-width: 1024px) {
  html body.page-id-27 .elementor-element[data-id="svc-intro-title"] p,
  html body.page-id-27 .elementor-element[data-id="svc-intro-title"] p span {
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-wrap: break-word !important;
    font-size: var(--fs-h3) !important;
    line-height: 1.3 !important;
  }
  body.page-id-27 .elementor-element[data-id="svc-intro-title"],
  body.page-id-27 [data-id*="svc-intro"] {
    width: 100% !important;
    max-width: 100% !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
}

/* ---------- 16. SAFETY NET: TEXTOS CON NOWRAP EN MOBILE ----------
   Cualquier párrafo con white-space:nowrap en mobile rompe layout. */
@media (max-width: 767px) {
  body p,
  body .elementor-widget-text-editor p,
  body .elementor-heading-title {
    white-space: normal !important;
    word-wrap: break-word !important;
    overflow-wrap: break-word !important;
  }
}

/* ---------- 17. CONTAINERS ELEMENTOR: PADDING CONSISTENTE MOBILE ---------- */
@media (max-width: 767px) {
  body .e-con-boxed > .e-con-inner,
  body .e-con-full {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
}

/* ---------- 18. MIN-WIDTH BOTONES: RELAJAR EN MOBILE ----------
   overrides.css fuerza min-width 220-360px en botones — overflow mobile. */
@media (max-width: 767px) {
  body .elementor-button,
  body button,
  body a.elementor-button {
    min-width: 0 !important;
    max-width: 100% !important;
    white-space: normal !important;
    word-wrap: break-word !important;
  }
}

/* ============================================================
   FIXES RONDA 2 — más finos, basados en auditoría posterior
   ============================================================ */

/* ---------- 19. HEADER hdr_right: gap y padding mobile ----------
   Excede 12px en mobile 390 (rightEdge 402). Reducir gap y compactar. */
@media (max-width: 767px) {
  .elementor-element[data-id="hdr_right"] {
    gap: 4px !important;
    padding-left: 4px !important;
    padding-right: 4px !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
  .elementor-element[data-id="hdr_right"] .elementor-button,
  .elementor-element[data-id="hdr_right"] .elementor-widget-button .elementor-button {
    padding: 6px 10px !important;
    font-size: 13px !important;
    min-width: 0 !important;
  }
  .elementor-element[data-id="hdr_right"] .elementor-icon-list-icon,
  .elementor-element[data-id="hdr_right"] .elementor-widget-icon-list .elementor-icon-list-item {
    font-size: 14px !important;
  }
}

/* ---------- 20. TESTIMONIALES tablet/mobile (Accountants, Ayuda) ----------
   El container padre `[data-id="581ginu8"]` (Accountants) y similares
   contienen 3 widgets `.elementor-widget-testimonial` en flex row.
   En tablet (≤1024px) y mobile, apilar verticalmente. */
@media (max-width: 1024px) {
  /* Contenedores de testimoniales en Accountants y Ayuda */
  body.page-id-69 .elementor-element[data-id="581ginu8"],
  body.page-id-29 [data-id*="testimonial-row"],
  body.page-id-69 [data-id*="testimonial-row"],
  body.page-id-29 .elementor-element[data-id="581ginu8"] {
    flex-direction: column !important;
    flex-wrap: wrap !important;
  }
  /* Cada widget de testimonial individual debe ser full-width */
  body.page-id-69 .elementor-widget-testimonial,
  body.page-id-29 .elementor-widget-testimonial,
  body.page-id-78 .elementor-widget-testimonial {
    width: 100% !important;
    max-width: 100% !important;
    flex: 1 1 100% !important;
    margin-bottom: 16px !important;
  }
  /* Si hay grid testimonial, 1 col */
  .elementor-widget-testimonial-carousel .elementor-grid,
  [class*="testimonial"] .elementor-grid {
    grid-template-columns: 1fr !important;
  }
}

/* ---------- 21. HOME: SERVICES CARDS 3-col → 2-col en TABLET ----------
   Las cards de servicios en Home se quedan en 3 columnas a 768px y la
   tercera sale del viewport. Forzar 2-col tablet, 1-col mobile. */
@media (min-width: 768px) and (max-width: 1024px) {
  body.page-id-13 [data-id="dny0xfaj"] ~ .elementor-element .elementor-image-box-wrapper,
  body.page-id-13 .elementor-widget-image-box {
    width: 48% !important;
    max-width: 48% !important;
    flex: 0 0 48% !important;
  }
}
@media (max-width: 767px) {
  body.page-id-13 .elementor-widget-image-box {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
    margin-bottom: 16px !important;
  }
}

/* ---------- 22. QS TIMELINE bg slide overflow ----------
   `.qs-tl-slide-bg` 437px se sale del viewport 390 mobile. */
@media (max-width: 1024px) {
  body.page-id-87 .qs-tl-slide-bg,
  body.page-id-87 .qs-tl-slide-overlay {
    width: 100% !important;
    max-width: 100% !important;
    object-fit: cover !important;
  }
  body.page-id-87 .qs-tl-track-wrap {
    overflow: hidden !important;
  }
}

/* ---------- 23. QS ICONS y DIFF-CIRCLE escalado tablet ----------
   `.qs-value-icon` 54px y `.qs-diff-circle` 96px no escalan entre
   mobile y tablet. Subir un poco en tablet. */
@media (min-width: 768px) and (max-width: 1024px) {
  body.page-id-87 .qs-value-icon {
    width: 72px !important;
    height: 72px !important;
  }
  body.page-id-87 .qs-diff-circle {
    width: 120px !important;
    height: 120px !important;
  }
  body.page-id-87 .qs-diff-circle i,
  body.page-id-87 .qs-diff-circle svg {
    font-size: 46px !important;
  }
}

/* ---------- 24. SECCIONES con padding excesivo en mobile ----------
   Reducir padding lateral de secciones que comprimen contenido. */
@media (max-width: 767px) {
  body .elementor-section,
  body .elementor-container,
  body .e-con > .e-con-inner {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
}

/* ============================================================
   FIXES RONDA 3 — basados en auditoría UI/UX profunda
   ============================================================ */

/* ---------- 25. MENU MOBILE DRAWER (specificity HIGH) ----------
   El handler JS está en animations.js. Acá el CSS con html body
   prefijo para batir Elementor inline + dropdown defaults. */
@media (max-width: 1024px) {
  /* Ocultar nav horizontal de Elementor en mobile/tablet — specificity nuclear */
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav nav.elementor-nav-menu--main,
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav nav.elementor-nav-menu--main.elementor-nav-menu__container,
  html body .elementor-element-hdr_nav nav.elementor-nav-menu--main,
  html body .elementor-element[data-id="hdr_nav"] nav.elementor-nav-menu--main {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    width: 0 !important;
    height: 0 !important;
    overflow: hidden !important;
    position: absolute !important;
    pointer-events: none !important;
  }
  /* Mostrar hamburger nativo de Elementor (si existe) */
  html body .elementor-element-hdr_nav .elementor-menu-toggle {
    display: inline-flex !important;
    visibility: visible !important;
  }
  /* Y nuestro hamburger custom */
  html body .ayc-hamburger {
    display: inline-flex !important;
    cursor: pointer !important;
  }

  /* Dropdown drawer. Specificity (0,6,3) para batir overrides.css que tiene
     .elementor-5 .elementor-element.elementor-element-hdr_nav .elementor-nav-menu--dropdown.elementor-nav-menu__container con bg blanco !important. */
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav nav.elementor-nav-menu--dropdown.elementor-nav-menu__container,
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav nav.elementor-nav-menu--dropdown,
  html body .elementor-element-hdr_nav nav.elementor-nav-menu--dropdown.elementor-nav-menu__container,
  html body .elementor-element-hdr_nav nav.elementor-nav-menu--dropdown,
  html body .elementor-element[data-id="hdr_nav"] nav.elementor-nav-menu--dropdown {
    position: fixed !important;
    top: 70px !important;
    right: 0 !important;
    left: 0 !important;
    width: 100vw !important;
    max-width: 100vw !important;
    background: #003366 !important;
    background-color: #003366 !important;
    z-index: 9998 !important;
    box-shadow: 0 8px 24px rgba(0,0,0,0.2) !important;
    padding: 16px 0 !important;
    margin: 0 !important;
    max-height: calc(100vh - 70px) !important;
    overflow-y: auto !important;
    transform: translateY(-110%) !important;
    transition: transform 0.3s ease !important;
    display: block !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }
  /* OPEN state — mismo bump de specificity */
  html body.ayc-menu-open .elementor-5 .elementor-element.elementor-element-hdr_nav nav.elementor-nav-menu--dropdown.elementor-nav-menu__container,
  html body.ayc-menu-open .elementor-5 .elementor-element.elementor-element-hdr_nav nav.elementor-nav-menu--dropdown,
  html body.ayc-menu-open .elementor-element-hdr_nav nav.elementor-nav-menu--dropdown.elementor-nav-menu__container,
  html body.ayc-menu-open .elementor-element-hdr_nav nav.elementor-nav-menu--dropdown,
  html body.ayc-menu-open .elementor-element[data-id="hdr_nav"] nav.elementor-nav-menu--dropdown {
    transform: translateY(0) !important;
    visibility: visible !important;
    opacity: 1 !important;
    pointer-events: auto !important;
  }
  /* Items */
  html body .elementor-element-hdr_nav .elementor-nav-menu--dropdown ul,
  html body .elementor-element-hdr_nav .elementor-nav-menu--dropdown li {
    list-style: none !important;
    background: transparent !important;
  }
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav .elementor-nav-menu--dropdown a.elementor-item,
  html body .elementor-element-hdr_nav .elementor-nav-menu--dropdown a.elementor-item {
    color: #ffffff !important;
    background: transparent !important;
    padding: 14px 24px !important;
    font-size: var(--fs-base) !important;
    border-bottom: 1px solid rgba(255,255,255,0.08) !important;
    display: block !important;
  }
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav .elementor-nav-menu--dropdown a.elementor-item:hover,
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav .elementor-nav-menu--dropdown a.elementor-item.elementor-item-active,
  html body .elementor-element-hdr_nav .elementor-nav-menu--dropdown a.elementor-item:hover,
  html body .elementor-element-hdr_nav .elementor-nav-menu--dropdown a.elementor-item.elementor-item-active {
    background: rgba(255,255,255,0.05) !important;
    color: #9dc41a !important;
  }
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav .elementor-nav-menu--dropdown .sub-menu a.elementor-sub-item,
  html body .elementor-element-hdr_nav .elementor-nav-menu--dropdown .sub-menu a.elementor-sub-item {
    color: rgba(255,255,255,0.85) !important;
    padding-left: 40px !important;
    font-size: var(--fs-small) !important;
  }
  /* Overlay opcional cuando drawer abierto */
  body.ayc-menu-open::before {
    content: '' !important;
    position: fixed !important;
    inset: 70px 0 0 0 !important;
    background: rgba(0,0,0,0.4) !important;
    z-index: 9997 !important;
    pointer-events: none !important;
  }
}

/* ---------- 26. NUESTRA PROMESA (Home) — DESACTIVAR LAYOUT DESKTOP EN MOBILE/TABLET ----------
   overrides.css aplica mask-image, width:485px, margin-left:-220px sin media query.
   En mobile/tablet borra texto y saca el círculo del viewport. */
@media (max-width: 1024px) {
  /* Stack vertical, sin mask, sin overlap */
  body.page-id-13 .elementor-element[data-id="9ocgr3gm"] {
    flex-direction: column !important;
    gap: 24px !important;
    align-items: center !important;
    overflow: visible !important;
  }
  body.page-id-13 .elementor-element[data-id="uvqgyi4m"] {
    -webkit-mask-image: none !important;
    mask-image: none !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    padding: 32px 24px !important;
    border-radius: 24px !important;
    flex: 1 1 auto !important;
  }
  body.page-id-13 .elementor-element[data-id="ll6itevi"] {
    flex: 0 0 auto !important;
    width: 220px !important;
    height: 220px !important;
    margin: 0 auto !important;
    border-radius: 50% !important;
    overflow: hidden !important;
    align-self: center !important;
  }
  /* Icon-list ytds4dmc no nowrap mobile */
  body.page-id-13 .elementor-element[data-id="ytds4dmc"] .elementor-icon-list-items {
    flex-direction: column !important;
    flex-wrap: wrap !important;
  }
  body.page-id-13 .elementor-element[data-id="ytds4dmc"] .elementor-icon-list-item {
    flex: 1 1 100% !important;
    width: 100% !important;
  }
}

/* ---------- 27. QS FILOSOFÍA — SELECTOR CORRECTO ----------
   El HTML real usa .qs-philo-item con position:absolute y coords desktop.
   Reescribir layout mobile/tablet a stack vertical. */
@media (max-width: 1024px) {
  body.page-id-87 .qs-philo-graphic {
    height: auto !important;
    min-height: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 12px !important;
    padding: 16px !important;
    position: relative !important;
  }
  body.page-id-87 .qs-philo-item {
    position: static !important;
    width: 100% !important;
    height: auto !important;
    transform: none !important;
    left: auto !important;
    top: auto !important;
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
  }
  body.page-id-87 .qs-philo-circle {
    flex: 0 0 56px !important;
    width: 56px !important;
    height: 56px !important;
    min-width: 56px !important;
    border-radius: 50% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
  body.page-id-87 .qs-philo-circle span {
    display: none !important;  /* mover el texto al lado del círculo */
  }
  body.page-id-87 .qs-philo-circle i,
  body.page-id-87 .qs-philo-circle svg {
    font-size: 22px !important;
    flex-shrink: 0 !important;
  }
  body.page-id-87 .qs-philo-item .qs-philo-text {
    flex: 1 1 auto !important;
    font-size: var(--fs-small) !important;
    line-height: 1.4 !important;
    text-align: left !important;
  }
  /* Inyectar el texto del span original como pseudo si no hay .qs-philo-text */
  body.page-id-87 .qs-philo-item .qs-philo-circle + span,
  body.page-id-87 .qs-philo-item > span {
    flex: 1 1 auto !important;
    font-size: var(--fs-small) !important;
    line-height: 1.4 !important;
    text-align: left !important;
    display: block !important;
    color: inherit !important;
    white-space: normal !important;
  }
  body.page-id-87 .qs-philo-center,
  body.page-id-87 .qs-philo-arc {
    display: none !important;
  }
}

/* ---------- 28. QS DIFF-BODY 31px width fix ----------
   El grid contenedor colapsa los items a ~31px. Forzar wrap + 100% width. */
@media (max-width: 1024px) {
  body.page-id-87 .qs-diff-grid,
  body.page-id-87 [class*="diff-row"],
  body.page-id-87 [data-id*="diff"] .e-con-inner {
    flex-wrap: wrap !important;
    flex-direction: column !important;
    gap: 24px !important;
  }
  body.page-id-87 .qs-diff-item,
  body.page-id-87 .qs-diff-card {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    flex: 1 1 100% !important;
  }
  body.page-id-87 .qs-diff-body {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
  }
  body.page-id-87 .qs-diff-body ul {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
  }
  body.page-id-87 .qs-diff-body ul li {
    width: 100% !important;
  }
}

/* ---------- 29. AYUDA CENTER — CONTRASTE HEADINGS ----------
   Headings `ac-svc-title` y CTA "Da el primer paso..." aparecen blanco
   sobre blanco. Forzar color navy. */
body.page-id-29 .elementor-element[data-id="ac-svc-title"] .elementor-heading-title,
body.page-id-29 .elementor-element[data-id="ac-final-cta-title"] .elementor-heading-title,
body.page-id-29 .ayc-section-title,
body.page-id-29 h2.elementor-heading-title {
  color: #003366 !important;
}
/* Excepción: si el heading está sobre fondo navy, mantener blanco */
body.page-id-29 [class*="bg-navy"] h2.elementor-heading-title,
body.page-id-29 [class*="dark-bg"] h2.elementor-heading-title {
  color: #ffffff !important;
}

/* ---------- 30. ADVISORS — CHECK ITEMS 2-COL MOBILE ----------
   `.ayc-checklist-grid` mantiene grid 4-col en mobile → items 16-27px. */
@media (max-width: 480px) {
  body.page-id-78 .ayc-checklist-grid,
  body.page-id-78 [class*="checklist-grid"],
  body.page-id-78 [class*="check-grid"] {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 12px !important;
  }
}
@media (min-width: 481px) and (max-width: 767px) {
  body.page-id-78 .ayc-checklist-grid,
  body.page-id-78 [class*="checklist-grid"] {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 14px !important;
  }
}
@media (max-width: 767px) {
  body.page-id-78 .ayc-check-item {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    justify-self: stretch !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
    box-sizing: border-box !important;
  }
}

/* ---------- 31. ADVISORS — HEADING 46px reducir mobile ----------
   "Qué hacemos en AYC Advisors" 46px solapa primera card 87px. */
@media (max-width: 767px) {
  body.page-id-78 h2.elementor-heading-title,
  body.page-id-78 [class*="adv-svc-title"] .elementor-heading-title {
    font-size: clamp(26px, 7vw, 32px) !important;
    line-height: 1.2 !important;
    margin-bottom: 24px !important;
  }
}

/* ---------- 32. ADVISORS — DISCLAIMER FULL-WIDTH MOBILE ----------
   Está dentro de columna lateral de 154px. Sacarlo grid-column 1/-1. */
@media (max-width: 1024px) {
  body.page-id-78 .elementor-element[data-id="advhc46abe"] {
    grid-column: 1 / -1 !important;
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* ---------- 33. TESTIMONIALES — sin overrides cuando están en carrusel ----------
   Solo aplica width:100% a testimoniales que NO están dentro de .ayc-carousel-track.
   El carrusel JS controla las dimensiones de las cards adentro. */
@media (max-width: 1024px) {
  body.page-id-78 .elementor-widget-testimonial:not(.ayc-carousel-track *),
  body.page-id-29 .elementor-widget-testimonial:not(.ayc-carousel-track *),
  body.page-id-69 .elementor-widget-testimonial:not(.ayc-carousel-track *),
  body.page-id-13 .elementor-widget-testimonial:not(.ayc-carousel-track *) {
    position: static !important;
    max-width: 100% !important;
    transform: none !important;
    margin-bottom: 16px !important;
  }
  /* Para los que SÍ están en carousel, dejar que JS controle width */
  body .ayc-carousel-track .elementor-widget-testimonial {
    transform: none !important;
    /* width set inline by JS — no override */
  }
}

/* ---------- 34. AYUDA CENTER — CARDS WRAP POR LETRA ----------
   Contenedor inner card colapsado a 80px. Forzar width 100% + word-break. */
@media (max-width: 767px) {
  body.page-id-29 .ayc-service-card,
  body.page-id-29 .ayc-card-text,
  body.page-id-29 [class*="card-text"],
  body.page-id-29 [class*="card-body"],
  body.page-id-29 .elementor-widget-icon-box {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  body.page-id-29 .ayc-card-text,
  body.page-id-29 [class*="card-text"] p,
  body.page-id-29 [class*="card-body"] p {
    word-break: normal !important;
    overflow-wrap: break-word !important;
    white-space: normal !important;
  }
}

/* ---------- 35. AYUDA — CARDS 2-COL TABLET ----------
   En 768-1024 las cards quedan 1-col. Pasarlas a 2-col. */
@media (min-width: 768px) and (max-width: 1024px) {
  body.page-id-29 .ayc-svc-grid,
  body.page-id-29 [data-id*="svc-grid"] .e-con-inner,
  body.page-id-29 [data-id*="svc-cards"] .e-con-inner {
    grid-template-columns: repeat(2, 1fr) !important;
    flex-wrap: wrap !important;
    gap: 16px !important;
  }
  body.page-id-29 .ayc-service-card {
    width: calc(50% - 8px) !important;
    flex: 0 0 calc(50% - 8px) !important;
  }
}

/* ---------- 36. AYUDA — "POR QUÉ ELEGIRNOS" COLUMNA DERECHA CONTRASTE ----------
   Aparece gris fantasma. Forzar color body dark. */
body.page-id-29 [class*="por-que"] *,
body.page-id-29 [data-id*="why-us"] *,
body.page-id-29 [class*="elegir"] .elementor-icon-box-content * {
  color: #212121 !important;
}

/* ---------- 37. AYUDA — HERO OVERFLOW MOBILE ----------
   Subtítulo + disclaimer + botón cortados a la derecha. */
@media (max-width: 767px) {
  body.page-id-29 [class*="hero"] *,
  body.page-id-29 [data-id*="hero"] * {
    max-width: 100% !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
  }
  body.page-id-29 [data-id*="hero"] {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
}

/* ---------- 38. HOME STATS — fix CRÍTICO ----------
   qh0b8rle (container row) tiene 5 image-box widgets en flex-row a 281px
   → cada widget 48px → texto rompe letra por línea (años/exper/ienci/a).
   Forzar grid 2-col mobile, 5-col single-line tablet. */
@media (max-width: 767px) {
  body.page-id-13 .elementor-element[data-id="qh0b8rle"],
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] > .e-con-inner {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 16px 12px !important;
    flex-direction: unset !important;
    flex-wrap: unset !important;
    width: 100% !important;
    max-width: 100% !important;
    justify-content: center !important;
    align-items: start !important;
  }
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] > .elementor-widget,
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] > .elementor-element.elementor-widget-image-box,
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] > .elementor-element {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    flex: unset !important;
    /* CRÍTICO: Elementor compila padding 32px 32px en cada widget,
       que en mobile deja solo 54px de contenido. Reducir a 8px. */
    padding-left: 8px !important;
    padding-right: 8px !important;
    border-left: none !important;
    border-right: none !important;
  }
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] .elementor-image-box-wrapper {
    width: 100% !important;
    min-width: 100% !important;  /* width:100% no resolvía (intrinsic sizing); min-width fuerza expansión */
    box-sizing: border-box !important;
    align-items: stretch !important;
    text-align: center !important;
  }
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] .elementor-image-box-content {
    width: 100% !important;
    min-width: 100% !important;
    max-width: 100% !important;
    text-align: center !important;
  }
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] .elementor-image-box-img {
    margin: 0 auto 8px !important;
  }
  /* Número grande, prominente — no wrap (mantiene "9.920", "2.089" en una línea) */
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] .elementor-image-box-title,
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] h3.elementor-image-box-title {
    font-size: 32px !important;
    line-height: 1.1 !important;
    margin: 8px 0 4px !important;
    width: 100% !important;
    max-width: 100% !important;
    text-align: center !important;
    white-space: nowrap !important;
    overflow: visible !important;
    display: block !important;
  }
  /* También el content wrapper que estaba en 54px */
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] .elementor-image-box-content {
    width: 100% !important;
    align-self: stretch !important;
    flex: 1 1 auto !important;
  }
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] .elementor-image-box-wrapper {
    width: 100% !important;
    align-self: stretch !important;
  }
  /* Label completo, sin breaks de letra */
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] .elementor-image-box-description {
    width: 100% !important;
    max-width: 100% !important;
    text-align: center !important;
    font-size: var(--fs-small) !important;
    line-height: 1.35 !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
    white-space: normal !important;
  }
  /* El quinto stat (impar) ocupa fila completa, centrado */
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] > .elementor-widget:nth-child(5):last-child {
    grid-column: 1 / -1 !important;
    justify-self: center !important;
    max-width: 50% !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 16px !important;
  }
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] > .elementor-widget {
    flex: 0 0 calc(33.333% - 16px) !important;
    max-width: calc(33.333% - 16px) !important;
  }
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] .elementor-image-box-title {
    font-size: 40px !important;
  }
  body.page-id-13 .elementor-element[data-id="qh0b8rle"] .elementor-image-box-description {
    font-size: var(--fs-base) !important;
    word-break: normal !important;
  }
}

/* ============================================================
   POLISH UI/UX GLOBAL — RONDA 5
   Mejoras visuales transversales para mobile/tablet en todas las páginas.
   ============================================================ */

/* ---------- 43. SPACING ENTRE SECCIONES — más compacto mobile ----------
   Secciones desktop tienen padding 80-100px. En mobile compactar para
   reducir scroll innecesario y mantener flujo limpio. */
@media (max-width: 767px) {
  body .elementor-section.elementor-section-boxed > .elementor-container,
  body .elementor-section > .e-con-inner,
  body .e-con.e-parent {
    padding-top: 40px !important;
    padding-bottom: 40px !important;
  }
  /* Hero excepción: más altura para impacto */
  body [class*="hero-sec"],
  body [data-id*="hero"] {
    padding-top: 60px !important;
    padding-bottom: 60px !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  body .e-con.e-parent {
    padding-top: 56px !important;
    padding-bottom: 56px !important;
  }
}

/* ---------- 44. HERO OVERLAY — mejorar contraste texto sobre imagen ----------
   Heroes con imagen de fondo tienen H1 blanco que pierde contraste.
   Añadir gradient overlay oscuro semi-transparente. */
@media (max-width: 1024px) {
  body [class*="hero-sec"]::before,
  body [data-id*="hero-sec"]::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    background: linear-gradient(180deg, rgba(0,15,40,0.35) 0%, rgba(0,15,40,0.65) 100%) !important;
    z-index: 0 !important;
    pointer-events: none !important;
  }
  body [class*="hero-sec"] > *,
  body [data-id*="hero-sec"] > * {
    position: relative !important;
    z-index: 1 !important;
  }
}

/* ---------- 45. CARDS — consistencia visual mobile ----------
   Aplicar border-radius, padding y shadow consistente a cards comunes. */
@media (max-width: 1024px) {
  body .ayc-service-card,
  body .ayc-card,
  body [class*="-card"]:not([class*="testimonial-card"]),
  body [data-id^="acc-p"],
  body [data-id^="ac-w"],
  body [data-id^="adv-w"],
  body [data-id^="ac-qi"] {
    border-radius: 12px !important;
    background: #ffffff !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06) !important;
    padding: 20px !important;
    margin-bottom: 16px !important;
    box-sizing: border-box !important;
  }
}

/* ---------- 46. HEADINGS — jerarquía visual clara mobile ----------
   Top margin generoso para separar de la sección previa. */
@media (max-width: 767px) {
  body h2.elementor-heading-title,
  body h3.elementor-heading-title {
    margin-top: 0 !important;
    margin-bottom: 20px !important;
  }
  /* Sección heading: centrar y dar respiro */
  body .elementor-widget-heading {
    text-align: center !important;
    margin-bottom: 16px !important;
  }
}

/* ---------- 47. BOTONES — touch-friendly mobile ----------
   Mínimo 44x44 para tap targets. */
@media (max-width: 767px) {
  body .elementor-button,
  body a.elementor-button,
  body button.elementor-button,
  body .ayc-btn-primary,
  body .ayc-btn-outline-navy {
    min-height: 44px !important;
    padding: 12px 24px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: var(--fs-btn) !important;
    border-radius: 8px !important;
  }
}

/* ---------- 48. IMÁGENES RESPONSIVE — sin distorsión ----------
   Forzar object-fit cover y altura natural en mobile. */
@media (max-width: 1024px) {
  body .elementor-widget-image img,
  body .elementor-image-box-img img {
    max-width: 100% !important;
    height: auto !important;
    object-fit: cover !important;
    border-radius: 8px !important;
  }
}

/* ---------- 49. FORMS / INPUTS — touch-friendly mobile ---------- */
@media (max-width: 767px) {
  body input[type="text"],
  body input[type="email"],
  body input[type="tel"],
  body input[type="number"],
  body select,
  body textarea {
    min-height: 44px !important;
    font-size: 16px !important; /* prevent zoom on iOS */
    padding: 10px 14px !important;
    border-radius: 8px !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }
}

/* ---------- 50. DIVIDERS / SEPARADORES — visibilidad mobile ---------- */
@media (max-width: 1024px) {
  body .elementor-divider-separator {
    width: 60px !important;
    max-width: 60px !important;
    height: 4px !important;
    background-color: #9dc41a !important;
    border-radius: 2px !important;
    margin: 0 auto !important;
  }
}

/* ---------- 51. ICON LISTS — espaciado mobile ---------- */
@media (max-width: 767px) {
  body .elementor-icon-list-items {
    gap: 12px !important;
  }
  body .elementor-icon-list-item {
    padding: 4px 0 !important;
  }
}

/* ---------- 52. SECTION BACKGROUNDS — fix transitions ----------
   Asegurar que alternancia blanco/navy se vea limpia mobile. */
@media (max-width: 767px) {
  body section + section,
  body .e-con + .e-con {
    margin-top: 0 !important;
  }
}

/* ---------- 53c. AYUDA: Cards services + CTA button mobile ----------
   Cards anidadas con padding acumulado (263→231→191→151). Reducir padding
   en cada nivel y forzar button full-width. */
@media (max-width: 1024px) {
  /* Reducir padding interno de cards de servicios */
  body.page-id-29 [data-id*="ac-card"],
  body.page-id-29 .ayc-service-card,
  body.page-id-29 .ayc-ac-card {
    padding: 8px !important;
  }
  body.page-id-29 .ayc-card-body {
    padding: 12px 8px !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }
  body.page-id-29 .ayc-card-body > div {
    width: 100% !important;
  }
  /* Button CTA full width dentro de cards */
  body .ayc-card-cta-btn,
  body a.ayc-card-cta-btn,
  body.page-id-29 a.ayc-card-cta-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    max-width: 100% !important;
    padding: 12px 16px !important;
    text-align: center !important;
    box-sizing: border-box !important;
    white-space: normal !important;
    font-size: 14px !important;
    line-height: 1.3 !important;
    min-height: 44px !important;
  }
}

/* ---------- 53b. FAQ — padding y layout mobile ---------- */
@media (max-width: 1024px) {
  body.page-id-90 [data-id="faq-list-inner"],
  body.page-id-90 [data-id="faq-list-inner"] > .e-con-inner {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
  body.page-id-90 [data-id="faq-list-sec"] {
    padding: 40px 16px !important;
  }
  /* FAQ groups stack vertical full-width */
  body.page-id-90 [data-id*="faq-grp"] {
    width: 100% !important;
    max-width: 100% !important;
    margin-bottom: 24px !important;
  }
  body.page-id-90 [data-id*="faq-grp"] > .e-con-inner {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
  body.page-id-90 .faq-list {
    width: 100% !important;
  }
  body.page-id-90 .faq-item {
    width: 100% !important;
    min-width: 0 !important;
  }
  body.page-id-90 .faq-q,
  body.page-id-90 .faq-a {
    width: 100% !important;
    word-break: normal !important;
  }
  /* FAQ heading "FAQs Generales" no debe romper */
  body.page-id-90 [data-id*="faq-grp"] .elementor-heading-title {
    white-space: normal !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
  }
}

/* ---------- 53. TESTIMONIALES — visual polish mobile ---------- */
@media (max-width: 1024px) {
  body .elementor-testimonial-wrapper,
  body .elementor-testimonial {
    padding: 24px 20px !important;
    border-radius: 12px !important;
    background: #ffffff !important;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08) !important;
    margin-bottom: 16px !important;
  }
  body .elementor-testimonial-content {
    font-style: italic !important;
    margin-bottom: 16px !important;
  }
  body .elementor-testimonial-image-position-aside {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
  }
}

/* ---------- 42. H1 HERO TAMAÑO MOBILE ----------
   Páginas tienen H1 a 50-60px que rompe ("AYC / Advis / ors").
   Reducir mobile + asegurar wrap natural. */
@media (max-width: 767px) {
  body h1,
  body h1.elementor-heading-title,
  body .elementor-widget-heading h1.elementor-heading-title {
    font-size: clamp(28px, 8vw, 38px) !important;
    line-height: 1.15 !important;
    word-wrap: normal !important;
    overflow-wrap: break-word !important;
    white-space: normal !important;
  }
}

/* ---------- 41b. EXCLUSIÓN: widgets DENTRO de carrusel respetan JS inline ----------
   Las cards dentro de .ayc-carousel-track tienen width inline set por JS.
   NO sobrescribir esos widths con 100%. */
@media (max-width: 1024px) {
  body .ayc-carousel-track > .elementor-widget,
  body .ayc-carousel-track .elementor-widget-testimonial {
    width: auto !important;
    min-width: 0 !important;
    /* width inline applied by JS — respect it */
  }
}

/* ---------- 41. GLOBAL: widgets con flex-basis fija en post-N.css ----------
   Elementor compila flex 0 0 calc(33% - X) en widgets para layouts desktop.
   En mobile rompen (cards a 83px con texto que explota verticalmente).
   Forzar todos los .elementor-element directos hijos de containers e-flex
   a 100% en mobile, EXCEPTO los del header (page-id global). */
@media (max-width: 767px) {
  /* Hijos directos de containers flex/grid de Elementor, dentro de páginas
     de contenido (no header/footer chrome) */
  body.page-id-13 .e-con-full > .elementor-element.elementor-widget,
  body.page-id-13 .e-con-boxed > .elementor-element.elementor-widget,
  body.page-id-69 .e-con-full > .elementor-element.elementor-widget,
  body.page-id-69 .e-con-boxed > .elementor-element.elementor-widget,
  body.page-id-78 .e-con-full > .elementor-element.elementor-widget,
  body.page-id-78 .e-con-boxed > .elementor-element.elementor-widget,
  body.page-id-87 .e-con-full > .elementor-element.elementor-widget,
  body.page-id-87 .e-con-boxed > .elementor-element.elementor-widget,
  body.page-id-29 .e-con-full > .elementor-element.elementor-widget,
  body.page-id-29 .e-con-boxed > .elementor-element.elementor-widget,
  body.page-id-27 .e-con-full > .elementor-element.elementor-widget,
  body.page-id-27 .e-con-boxed > .elementor-element.elementor-widget,
  body.page-id-90 .e-con-full > .elementor-element.elementor-widget,
  body.page-id-90 .e-con-boxed > .elementor-element.elementor-widget,
  body.page-id-86 .e-con-full > .elementor-element.elementor-widget,
  body.page-id-86 .e-con-boxed > .elementor-element.elementor-widget {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
  }
  /* También hijos directos de .e-con-inner */
  body.page-id-13 .e-con-inner > .elementor-element.elementor-widget,
  body.page-id-69 .e-con-inner > .elementor-element.elementor-widget,
  body.page-id-78 .e-con-inner > .elementor-element.elementor-widget,
  body.page-id-87 .e-con-inner > .elementor-element.elementor-widget,
  body.page-id-29 .e-con-inner > .elementor-element.elementor-widget,
  body.page-id-27 .e-con-inner > .elementor-element.elementor-widget,
  body.page-id-90 .e-con-inner > .elementor-element.elementor-widget,
  body.page-id-86 .e-con-inner > .elementor-element.elementor-widget {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
  }
  /* Containers padres: forzar flex column en mobile para que el stack vertical
     funcione correctamente con los hijos full-width */
  body.page-id-13 .e-con.e-flex,
  body.page-id-69 .e-con.e-flex,
  body.page-id-78 .e-con.e-flex,
  body.page-id-87 .e-con.e-flex,
  body.page-id-29 .e-con.e-flex,
  body.page-id-27 .e-con.e-flex,
  body.page-id-90 .e-con.e-flex,
  body.page-id-86 .e-con.e-flex {
    flex-wrap: wrap !important;
  }
  /* También .e-con (containers anidados, como hero columns) deben ser
     full-width en mobile para que el stack vertical funcione. */
  body.page-id-13 .e-con-full > .e-con,
  body.page-id-13 .e-con-boxed > .e-con,
  body.page-id-69 .e-con-full > .e-con,
  body.page-id-69 .e-con-boxed > .e-con,
  body.page-id-78 .e-con-full > .e-con,
  body.page-id-78 .e-con-boxed > .e-con,
  body.page-id-87 .e-con-full > .e-con,
  body.page-id-87 .e-con-boxed > .e-con,
  body.page-id-29 .e-con-full > .e-con,
  body.page-id-29 .e-con-boxed > .e-con,
  body.page-id-27 .e-con-full > .e-con,
  body.page-id-27 .e-con-boxed > .e-con,
  body.page-id-90 .e-con-full > .e-con,
  body.page-id-90 .e-con-boxed > .e-con,
  body.page-id-86 .e-con-full > .e-con,
  body.page-id-86 .e-con-boxed > .e-con {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    flex: 0 0 100% !important;
  }
}

/* ---------- 40. AYUDA CENTER GRIDS: forzar 1-col mobile ----------
   ac-why-grid tiene grid-template-columns "40px 380px 40px" (custom desktop
   layout) que en mobile aplasta cards a 40px y las hace explotar verticalmente
   (3293px de alto). Misma patología en ac-proc-grid. */
@media (max-width: 767px) {
  body.page-id-29 [data-id="ac-why-grid"] > .e-con-inner,
  body.page-id-29 [data-id="ac-proc-grid"] > .e-con-inner,
  body.page-id-29 [data-id="ac-que-grid"] > .e-con-inner,
  body.page-id-29 [data-id="ac-card-a-wrap"] > .e-con-inner,
  body.page-id-29 [data-id*="-grid"] > .e-con-inner,
  body.page-id-29 [data-id*="-wrap"] > .e-con-inner {
    display: flex !important;
    flex-direction: column !important;
    grid-template-columns: 1fr !important;
    gap: 24px !important;
    width: 100% !important;
  }
  /* Targeting específico: widgets que en mobile reciben flex-basis < 100%
     desde post-29.css. Forzarlos a 100% width sin tocar otros. */
  body.page-id-29 [data-id^="ac-qi"],
  body.page-id-29 [data-id^="ac-w"]:not([data-id="ac-why-grid"]):not([data-id="ac-why-sec"]),
  body.page-id-29 [data-id^="ac-p"]:not([data-id="ac-proc-sec"]):not([data-id="ac-proc-grid"]),
  body.page-id-29 [data-id^="ac-card"]:not([data-id="ac-card-a-wrap"]),
  body.page-id-29 [data-id^="ac-svc-card"],
  body.page-id-29 [data-id^="ac-srv"],
  body.page-id-29 .ayc-service-card,
  body.page-id-29 [data-id="ac-why-grid"] > .e-con-inner > .elementor-element,
  body.page-id-29 [data-id="ac-proc-grid"] > .e-con-inner > .elementor-element,
  body.page-id-29 [data-id="ac-que-grid"] > .e-con-inner > .elementor-element {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
  }
}

/* ---------- 39. SAFETY-NET GENÉRICO — image-box widgets ----------
   Elementor compila padding 32px 32px en cada image-box widget en post-N.css.
   En mobile, eso deja solo ~54px de contenido en un grid 2-col → texto
   se rompe letra por línea. Reducir padding y forzar word-break normal. */
@media (max-width: 767px) {
  body .elementor-widget-image-box,
  body .elementor-widget-icon-box {
    padding-left: 8px !important;
    padding-right: 8px !important;
  }
  body .elementor-widget-image-box .elementor-image-box-wrapper,
  body .elementor-widget-icon-box .elementor-icon-box-wrapper {
    min-width: 100% !important;
    align-items: stretch !important;
  }
  body .elementor-widget-image-box .elementor-image-box-content,
  body .elementor-widget-image-box .elementor-image-box-description,
  body .elementor-widget-icon-box .elementor-icon-box-content,
  body .elementor-widget-icon-box .elementor-icon-box-description {
    word-break: normal !important;
    overflow-wrap: break-word !important;
    hyphens: none !important;
    white-space: normal !important;
  }
  /* Number / title del image-box: no wrap (mantiene "9.866", "2.082" enteros) */
  body .ayc-counter-animated,
  body .elementor-widget-image-box h3.elementor-image-box-title {
    white-space: nowrap !important;
    overflow: visible !important;
  }
}

/* ============================================================
   PLAN MAESTRO RESPONSIVE — FASE 1 (§54-58) FIXES GLOBALES
   ============================================================ */

/* ---------- 54. TIPOGRAFÍA MOBILE — clamp + word-break ---------- */
@media (max-width: 767px) {
  body h1,
  body h1.elementor-heading-title {
    font-size: clamp(26px, 8vw, 38px) !important;
    line-height: 1.15 !important;
  }
  body h2,
  body h2.elementor-heading-title {
    font-size: clamp(24px, 7vw, 32px) !important;
    line-height: 1.2 !important;
  }
  body h3,
  body h3.elementor-heading-title {
    font-size: clamp(20px, 5.5vw, 26px) !important;
    line-height: 1.3 !important;
  }
  body h1,
  body h2,
  body h3,
  body p,
  body div,
  body span {
    word-break: keep-all !important;
    overflow-wrap: break-word !important;
    hyphens: none !important;
    -webkit-hyphens: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  body h1,
  body h1.elementor-heading-title {
    font-size: clamp(32px, 6vw, 48px) !important;
  }
  body h2,
  body h2.elementor-heading-title {
    font-size: clamp(28px, 5vw, 40px) !important;
  }
}

/* ---------- 55. RESET PADDINGS containers Elementor mobile ----------
   EXCEPCIÓN: header (hdr_*), footer (ftr_*), .ayc-carousel-track NO se tocan. */
@media (max-width: 767px) {
  body .e-con-boxed:not([class*="hdr_"]):not([class*="ftr_"]):not(.ayc-carousel-track):not(.ayc-carousel-track *),
  body .elementor-section-boxed:not([class*="hdr_"]):not([class*="ftr_"]) > .elementor-container {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
  body .e-con-boxed:not([class*="hdr_"]):not([class*="ftr_"]) > .e-con-inner,
  body .e-con-full:not([class*="hdr_"]):not([class*="ftr_"]) > .e-con-inner {
    padding-left: 8px !important;
    padding-right: 8px !important;
  }
  body .elementor-element:not([class*="hdr_"]):not([class*="ftr_"]):not(.ayc-carousel-track):not(.ayc-carousel-track *) {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* ---------- 56. TOUCH TARGETS — área tap invisible, dot visual desktop ----------
   DESKTOP: dots mantienen su tamaño visual original (20×20 team, 11-14 tl).
   MOBILE/TABLET: agregamos área tap invisible vía padding negativo en pseudo ::after,
   sin tocar dimensiones visuales ni colores del dot. */
@media (max-width: 1024px) {
  /* Hamburger sí necesita 44px (es solo botón) */
  body .ayc-hamburger,
  body .elementor-element-hdr_nav .elementor-menu-toggle {
    min-width: 44px !important;
    min-height: 44px !important;
    padding: 8px !important;
  }
  /* Dots: NO tocar w/h. Solo agregar pseudo ::after para extender tap area */
  body .qs-tl-dot,
  body .qs-team-dot,
  body .ayc-carousel-dot,
  body .ayc-svc-dot,
  body .swiper-pagination-bullet {
    position: relative !important;
  }
  body .qs-tl-dot::after,
  body .qs-team-dot::after,
  body .ayc-carousel-dot::after,
  body .ayc-svc-dot::after,
  body .swiper-pagination-bullet::after {
    content: '' !important;
    position: absolute !important;
    inset: -12px !important;
    background: transparent !important;
    /* invisible tap target, doesn't affect layout */
  }
}

/* ---------- 57. CONTRASTE BOTONES VERDE — DEPRECADO ----------
   ANTES: forzaba `color:#003366` (navy) a todos los .elementor-button
   sin distincion de bg, lo que pisaba la intencion de diseno blanca
   definida en overrides.css y postX.css (Elementor) sobre #9dc41a.
   ELIMINADO en favor de la cascada natural Elementor → overrides.css
   (donde cada widget declara su color por data-id). Mobile hereda
   desktop 1:1. Si algun botón aparece con contraste insuficiente,
   abordarlo via override por data-id en overrides.css o §91 mas abajo. */
/* (regla intencionalmente vacia para preservar numeracion historica) */

/* ---------- 58. ELIMINAR max-width:390 global (enmascara overflow real) ---------- */
html, body {
  max-width: 100% !important;
  overflow-x: hidden !important;
}

/* ============================================================
   PLAN MAESTRO RESPONSIVE — FASE 2 (§59-63) FIXES POR PÁGINA
   ============================================================ */

/* ---------- 59. HOME — header inline + stats simétricos ---------- */
@media (max-width: 767px) {
  body.home .elementor-element-hdr_sec1 > .e-con-inner,
  body.home [data-id="hdr_sec1"] > .e-con-inner {
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 8px !important;
    padding: 8px 12px !important;
  }
  body.home [data-id="qh0b8rle"],
  body.home [data-id="qh0b8rle"] > .e-con-inner {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 16px !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  body.home [data-id="qh0b8rle"],
  body.home [data-id="qh0b8rle"] > .e-con-inner {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 20px !important;
  }
}

/* ---------- 60. QS — filosofía spans + diff grid + stats 5 items ---------- */
@media (max-width: 1024px) {
  body.page-id-87 .qs-philo-circle span {
    width: auto !important;
    height: auto !important;
    display: inline-block !important;
    opacity: 1 !important;
    visibility: visible !important;
    font-size: var(--fs-small, 14px) !important;
  }
}
@media (max-width: 767px) {
  body.page-id-87 [data-id="qs-diff-row"] > .e-con-inner {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 24px !important;
  }
  /* Stats QS: 5 items en mobile = 2 cols, 5to ocupa fila completa */
  body.page-id-87 [data-id*="qs-stats"] > .e-con-inner,
  body.page-id-87 .qs-stats-grid {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 16px !important;
  }
  body.page-id-87 [data-id*="qs-stats"] > .e-con-inner > *:nth-child(5),
  body.page-id-87 .qs-stats-grid > *:nth-child(5) {
    grid-column: 1 / -1 !important;
    justify-self: center !important;
    max-width: 50% !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  body.page-id-87 [data-id="qs-diff-row"] > .e-con-inner {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 24px !important;
  }
  body.page-id-87 [data-id*="qs-stats"] > .e-con-inner,
  body.page-id-87 .qs-stats-grid {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 20px !important;
  }
  body.page-id-87 [data-id*="qs-stats"] > .e-con-inner > *:nth-child(4),
  body.page-id-87 [data-id*="qs-stats"] > .e-con-inner > *:nth-child(5),
  body.page-id-87 .qs-stats-grid > *:nth-child(4),
  body.page-id-87 .qs-stats-grid > *:nth-child(5) {
    grid-column: span 1 !important;
  }
  /* 5to centrado: ocupa col 2 (centro) en fila 2 */
  body.page-id-87 [data-id*="qs-stats"] > .e-con-inner > *:nth-child(5),
  body.page-id-87 .qs-stats-grid > *:nth-child(5) {
    grid-column-start: 2 !important;
  }
}

/* ---------- 61. ACCOUNTANTS — "por qué elegir" 1-col + ocultar testimonios duplicados ---------- */
@media (max-width: 1024px) {
  body.page-id-69 [data-id*="why"] > .e-con-inner {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 20px !important;
    width: 100% !important;
  }
  body.page-id-69 [data-id*="why"] .elementor-icon-box-wrapper {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    width: 100% !important;
  }
  /* Ocultar testimoniales individuales que NO están dentro de carrusel */
  body.page-id-69 .elementor-widget-testimonial {
    display: none !important;
  }
  body.page-id-69 .ayc-carousel-track .elementor-widget-testimonial,
  body.page-id-69 .ayc-carousel-track .elementor-widget-testimonial * {
    display: block !important;
  }
}

/* ---------- 62. ADVISORS — advw-grid vertical + botón hero font-size ---------- */
@media (max-width: 1024px) {
  body.page-id-78 [class*="advw-grid"] > .e-con-inner,
  body.page-id-78 [class*="advw-grid"] {
    display: flex !important;
    flex-direction: column !important;
    gap: 24px !important;
    align-items: stretch !important;
  }
  body.page-id-78 [class*="advw-grid"] .elementor-icon-box-wrapper {
    position: static !important;
    left: 0 !important;
    top: 0 !important;
    right: auto !important;
    bottom: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
  }
}
@media (max-width: 767px) {
  body.page-id-78 [data-id="adv-hero-sec"] a.elementor-button,
  body.page-id-78 [data-id="adv-hero-sec"] .elementor-button {
    font-size: 15px !important;
    line-height: 1.3 !important;
    white-space: normal !important;
  }
}

/* ---------- 63. AYUDA — cards chrome + CTA full-width ---------- */
@media (max-width: 1024px) {
  body.page-id-29 [data-id*="ac-que-grid"] .elementor-icon-box-wrapper,
  body.page-id-29 [data-id*="ac-why-grid"] .elementor-icon-box-wrapper,
  body.page-id-29 [data-id^="ac-w"],
  body.page-id-29 [data-id^="ac-qi"] {
    background: #ffffff !important;
    border-radius: 12px !important;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08) !important;
    padding: 20px 16px !important;
    margin-bottom: 16px !important;
  }
  /* CTA "Da el primer paso" 95px constraint — forzar 100% */
  body.page-id-29 [data-id="ac-cta-sec"],
  body.page-id-29 [data-id="ac-cta-sec"] > .e-con-inner,
  body.page-id-29 [data-id="ac-cta-sec"] > *,
  body.page-id-29 [data-id="ac-cta-sec"] > .e-con-inner > * {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  body.page-id-29 [data-id="ac-cta-sec"] h2,
  body.page-id-29 [data-id="ac-cta-sec"] .elementor-heading-title {
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* ============================================================
   PLAN MAESTRO RESPONSIVE — FASE 3 (§64) CARRUSELES Y DINÁMICOS
   ============================================================ */

/* ---------- 64. SERVICIOS cards visibles + FAQ accordion + Ayuda carousel ---------- */
@media (max-width: 1024px) {
  /* Servicios: cards de áreas (Ayuda, Accountants, Advisors) deben verse */
  body.page-id-27 .ayc-card-image {
    min-height: 200px !important;
    background-size: cover !important;
    background-position: center !important;
    display: block !important;
    width: 100% !important;
  }
  body.page-id-27 .ayc-service-card,
  body.page-id-27 [id="advisors"],
  body.page-id-27 [id="ayuda"],
  body.page-id-27 [id="accountants"] {
    min-height: 280px !important;
    display: block !important;
    margin-bottom: 24px !important;
    width: 100% !important;
    visibility: visible !important;
    opacity: 1 !important;
  }
}

/* FAQ pseudo-accordion */
@media (max-width: 1024px) {
  body.page-id-90 .faq-a {
    max-height: 0 !important;
    overflow: hidden !important;
    transition: max-height 0.3s ease !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  body.page-id-90 .faq-item.is-open .faq-a {
    max-height: 800px !important;
    padding-top: 12px !important;
    padding-bottom: 12px !important;
  }
  body.page-id-90 .faq-q {
    cursor: pointer !important;
    padding-right: 32px !important;
    position: relative !important;
    user-select: none !important;
  }
  body.page-id-90 .faq-q::after {
    content: '+' !important;
    position: absolute !important;
    right: 12px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    font-size: 20px !important;
    line-height: 1 !important;
    font-weight: 700 !important;
  }
  body.page-id-90 .faq-item.is-open .faq-q::after {
    content: '−' !important;
  }
}

/* Ayuda: services carousel — esconde slides por defecto, JS las activa */
@media (max-width: 1024px) {
  body.page-id-29 [data-id^="ac-card-"][data-id$="-wrap"] {
    display: none;
  }
  body.page-id-29 [data-id^="ac-card-"][data-id$="-wrap"].ayc-svc-active {
    display: flex !important;
  }
  body.page-id-29 .ayc-svc-dot.active {
    background-color: #003366 !important;
    transform: scale(1.15) !important;
  }
}

/* ============================================================
   PLAN MAESTRO RESPONSIVE — FASE 4 (§65-§79) NUCLEAR SPECIFICITY
   Re-fixes para reglas que perdieron specificity vs Elementor
   ============================================================ */

/* ---------- §65. HOME header — forzar hamburger y ocultar nav main ---------- */
@media (max-width: 1024px) {
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav nav.elementor-nav-menu--main,
  html body .elementor-element-hdr_nav nav.elementor-nav-menu--main,
  html body .elementor-element-hdr_nav .elementor-nav-menu__container.elementor-nav-menu--main {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    height: 0 !important;
    max-height: 0 !important;
    overflow: hidden !important;
  }
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav .elementor-menu-toggle,
  html body .ayc-hamburger {
    display: inline-flex !important;
    width: 44px !important;
    height: 44px !important;
    visibility: visible !important;
  }
  html body.home .elementor-element.elementor-element-hdr_sec1 > .e-con-inner,
  html body .elementor-element.elementor-element-hdr_sec1 > .e-con-inner {
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    flex-wrap: nowrap !important;
    padding: 8px 16px !important;
    min-height: 60px !important;
  }
}

/* ---------- §66. HOME H2 "Promesa" clamp en mobile ---------- */
@media (max-width: 767px) {
  html body.home .elementor-13 .elementor-element[data-id="ef72b413"] h2.elementor-heading-title,
  html body .elementor-13 [data-id="ef72b413"] h2,
  html body [data-id="ef72b413"] h2 {
    font-size: 28px !important;
    line-height: 1.2 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
}

/* ---------- §67. HOME stats grid 2-col mobile / 3-col tablet ---------- */
@media (max-width: 767px) {
  html body.home .elementor-13 .elementor-element[data-id="qh0b8rle"],
  html body [data-id="qh0b8rle"],
  html body .elementor-element[data-id="qh0b8rle"] {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    flex-direction: unset !important;
    flex-wrap: unset !important;
    gap: 16px !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body [data-id="qh0b8rle"] {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    flex-direction: unset !important;
    gap: 16px !important;
  }
}

/* ---------- §68. QS stats 5 items — grid 2-col mobile / 3-col tablet ---------- */
@media (max-width: 767px) {
  html body.page-id-87 [data-id="qs-stats-row"],
  html body.page-id-87 .elementor-element[data-id="qs-stats-row"],
  html body.page-id-87 [data-id="qs-stats-inner"] {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    flex-direction: unset !important;
    flex-wrap: unset !important;
    gap: 16px !important;
  }
  html body.page-id-87 [data-id="qs-stats-row"] > *:nth-child(5),
  html body.page-id-87 [data-id="qs-stats-inner"] > *:nth-child(5),
  html body.page-id-87 [data-id="qs-stat-5"] {
    grid-column: 1 / -1 !important;
    max-width: 50% !important;
    justify-self: center !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-87 [data-id="qs-stats-row"],
  html body.page-id-87 [data-id="qs-stats-inner"] {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    flex-direction: unset !important;
    gap: 16px !important;
  }
  html body.page-id-87 [data-id="qs-stats-row"] > *:nth-child(5),
  html body.page-id-87 [data-id="qs-stats-inner"] > *:nth-child(5),
  html body.page-id-87 [data-id="qs-stat-5"] {
    grid-column-start: 2 !important;
  }
}

/* ---------- §69. QS "Qué nos hace diferentes" tablet 2-col ---------- */
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-87 [data-id="qs-diff-row"],
  html body.page-id-87 [data-id="qs-diff-inner"],
  html body.page-id-87 [data-id="qs-diff-row"] > .e-con-inner,
  html body.page-id-87 .elementor-element[data-id="qs-diff-row"] > .e-con-inner {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    flex-direction: unset !important;
    gap: 24px !important;
  }
}

/* ---------- §70. ACCOUNTANTS H1 hero — 34px mobile / 42px tablet ---------- */
@media (max-width: 767px) {
  html body.page-id-69 h1.elementor-heading-title,
  html body.page-id-69 .elementor-69 h1,
  html body.page-id-69 [data-id="ac-hero-h1"] h1,
  html body.page-id-69 [data-id="acc-hero-sec"] h1,
  html body.page-id-69 [data-id*="hero"] h1 {
    font-size: 34px !important;
    line-height: 1.15 !important;
    word-break: keep-all !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-69 h1.elementor-heading-title,
  html body.page-id-69 [data-id="acc-hero-sec"] h1 {
    font-size: 42px !important;
  }
}

/* ---------- §71. ACCOUNTANTS testimoniales — solo los del carousel ---------- */
@media (max-width: 1024px) {
  html body.page-id-69 .elementor-widget-testimonial {
    display: none !important;
  }
  html body.page-id-69 .ayc-carousel-track .elementor-widget-testimonial,
  html body.page-id-69 [data-id="acc-test-sec"] .ayc-carousel-track .elementor-widget-testimonial {
    display: block !important;
    visibility: visible !important;
  }
}

/* ---------- §72. ADVISORS hero CTA 15px mobile ---------- */
@media (max-width: 767px) {
  html body.page-id-78 .elementor-78 .elementor-element[data-id="adv-hero-sec"] a.elementor-button,
  html body.page-id-78 [data-id="adv-hero-sec"] a.elementor-button,
  html body.page-id-78 [data-id*="hero"] a.elementor-button {
    font-size: 15px !important;
    line-height: 1.3 !important;
    padding: 12px 20px !important;
    white-space: normal !important;
  }
}

/* ---------- §73. ADVISORS H2 "Qué hacemos" clamp ---------- */
@media (max-width: 767px) {
  html body.page-id-78 h2.elementor-heading-title,
  html body.page-id-78 [data-id="adv-svc-sec"] h2,
  html body.page-id-78 [data-id*="svc"] h2 {
    font-size: clamp(24px, 7vw, 32px) !important;
    line-height: 1.2 !important;
  }
}

/* ---------- §74. ADVISORS advw-grid — items uniformes (no staggered) ---------- */
@media (max-width: 1024px) {
  html body.page-id-78 [data-id="advw-grid"],
  html body.page-id-78 [data-id="advw-grid"] > .e-con-inner,
  html body.page-id-78 [class*="advw-grid"] > .e-con-inner,
  html body.page-id-78 [class*="advw-grid"] {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 16px !important;
  }
  html body.page-id-78 [data-id="advw-grid"] .elementor-icon-box-wrapper,
  html body.page-id-78 [data-id="advw-grid"] > .elementor-element,
  html body.page-id-78 [class*="advw-grid"] .elementor-icon-box-wrapper,
  html body.page-id-78 [class*="advw-grid"] > .elementor-element {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 100% !important;
    flex: 0 0 100% !important;
    margin: 0 !important;
    transform: none !important;
    top: auto !important;
    left: auto !important;
  }
}

/* ---------- §75. AYUDA CTA "Da el primer paso" 100% width ---------- */
@media (max-width: 1024px) {
  html body.page-id-29 [data-id="ac-cta-sec"],
  html body.page-id-29 [data-id="ac-cta-sec"] > .e-con-inner,
  html body.page-id-29 [data-id="ac-cta-sec"] *,
  html body.page-id-29 [data-id="ac-cta-h2"],
  html body.page-id-29 [data-id="ac-cta-sub"],
  html body.page-id-29 [data-id="ac-cta-btn"],
  html body.page-id-29 [data-id*="cta"] {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }
  html body.page-id-29 [data-id="ac-cta-sec"] h2,
  html body.page-id-29 [data-id="ac-cta-h2"] h2 {
    width: 100% !important;
    text-align: center !important;
    padding: 0 16px !important;
  }
}

/* ---------- §76. AYUDA "Qué hacemos" cards con chrome ---------- */
@media (max-width: 1024px) {
  html body.page-id-29 [data-id="ac-que-grid"] .elementor-icon-box-wrapper,
  html body.page-id-29 [data-id="ac-que-grid"] > .elementor-element,
  html body.page-id-29 [data-id^="ac-qi"] {
    background: #ffffff !important;
    border-radius: 12px !important;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08) !important;
    padding: 20px !important;
    margin-bottom: 12px !important;
  }
}

/* ---------- §77. SERVICIOS cards áreas (ayuda/accountants/advisors) visibles ---------- */
@media (max-width: 1024px) {
  html body.page-id-27 [data-id="svc-card-a-wrap"],
  html body.page-id-27 [data-id="svc-card-b-wrap"],
  html body.page-id-27 [data-id="svc-card-c-wrap"],
  html body.page-id-27 [data-id="svc-card-a"],
  html body.page-id-27 [data-id="svc-card-b"],
  html body.page-id-27 [data-id="svc-card-c"],
  html body.page-id-27 [data-id="svc-cards-sec"],
  html body.page-id-27 [data-id="svc-cards-sec"] > .e-con-inner,
  html body.page-id-27 [id="ayuda"],
  html body.page-id-27 [id="accountants"],
  html body.page-id-27 [id="advisors"],
  html body.page-id-27 .ayc-service-card {
    display: block !important;
    visibility: visible !important;
    height: auto !important;
    min-height: 200px !important;
    opacity: 1 !important;
    overflow: visible !important;
  }
  html body.page-id-27 [data-id="svc-card-a-wrap"],
  html body.page-id-27 [data-id="svc-card-b-wrap"],
  html body.page-id-27 [data-id="svc-card-c-wrap"] {
    width: 100% !important;
    max-width: 100% !important;
    margin-bottom: 24px !important;
  }
  html body.page-id-27 [id="ayuda"] *,
  html body.page-id-27 [id="accountants"] *,
  html body.page-id-27 [id="advisors"] * {
    visibility: visible !important;
    opacity: 1 !important;
  }
}

/* ---------- §78. HOME H2 "Soluciones claras" reducir mobile ---------- */
@media (max-width: 767px) {
  html body.home [data-id="ixz9ksb1"] h2,
  html body.home .elementor-13 .elementor-element[data-id="ixz9ksb1"] h2,
  html body [data-id="ixz9ksb1"] h2.elementor-heading-title {
    font-size: 26px !important;
    line-height: 1.15 !important;
  }
}

/* ---------- §79. Patches universales: global heading scale mobile ---------- */
@media (max-width: 767px) {
  html body h1,
  html body h1.elementor-heading-title {
    font-size: 32px !important;
    line-height: 1.15 !important;
  }
  html body h2,
  html body h2.elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.2 !important;
  }
  html body h3,
  html body h3.elementor-heading-title {
    font-size: 22px !important;
    line-height: 1.3 !important;
  }
}

/* ============================================================
   §80 — FIXES FINALES POST-QA2 (5 issues remanentes)
   ============================================================ */

/* §80a — HOME header height 266px → fila inline */
@media (max-width: 767px) {
  html body .elementor-5 .elementor-element.elementor-element-hdr_sec1,
  html body .elementor-element[data-id="hdr_sec1"] {
    min-height: 0 !important;
    max-height: 80px !important;
    padding: 4px 8px !important;
  }
  html body .elementor-5 .elementor-element.elementor-element-hdr_sec1 > .e-con-inner,
  html body .elementor-element[data-id="hdr_sec1"] > .e-con-inner {
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 4px !important;
    padding: 4px 0 !important;
    min-height: 0 !important;
    max-height: 70px !important;
  }
  /* Hide right column items extras EXCEPT button + hamburger */
  html body .elementor-element[data-id="hdr_right"] {
    flex-direction: row !important;
    align-items: center !important;
    gap: 4px !important;
    max-width: 60% !important;
  }
}

/* §80b — ACCOUNTANTS H1 50px → 34px mobile */
@media (max-width: 767px) {
  html body.page-id-69 .elementor-69 h1.elementor-heading-title,
  html body.page-id-69 [data-id="acc-hero-sec"] h1,
  html body.page-id-69 .elementor-widget-heading h1.elementor-heading-title,
  html body.page-id-69 h1.elementor-heading-title {
    font-size: 30px !important;
    line-height: 1.15 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-69 h1.elementor-heading-title {
    font-size: 40px !important;
  }
}

/* §80c — ADVISORS H2 "Qué hacemos" 46px → 28px mobile (data-id advs855d2a) */
@media (max-width: 767px) {
  html body.page-id-78 .elementor-78 .elementor-element[data-id="advs855d2a"] h2.elementor-heading-title,
  html body.page-id-78 [data-id="advs855d2a"] h2,
  html body.page-id-78 .elementor-widget-heading h2.elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.2 !important;
    word-break: keep-all !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-78 .elementor-element[data-id="advs855d2a"] h2,
  html body.page-id-78 .elementor-widget-heading h2.elementor-heading-title {
    font-size: 36px !important;
  }
}

/* §80d — AYUDA CTA H2 width 95px → 100% */
@media (max-width: 1024px) {
  html body.page-id-29 .elementor-29 .elementor-element[data-id="ac-cta-sec"] h2,
  html body.page-id-29 .elementor-element[data-id="ac-cta-sec"] h2,
  html body.page-id-29 [data-id="ac-cta-h2"] h2,
  html body.page-id-29 .elementor-element[data-id="ac-cta-h2"] {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 100% !important;
    flex: 1 1 100% !important;
    flex-basis: 100% !important;
    word-break: keep-all !important;
    text-align: center !important;
    font-size: clamp(22px, 6vw, 32px) !important;
    line-height: 1.2 !important;
    padding: 0 12px !important;
    box-sizing: border-box !important;
  }
  /* Container padre flex needs column to give H2 full width */
  html body.page-id-29 .elementor-element[data-id="ac-cta-sec"] > .e-con-inner {
    flex-direction: column !important;
    align-items: stretch !important;
    width: 100% !important;
  }
}

/* §80e — Botón CTA Ayuda también full-width */
@media (max-width: 767px) {
  html body.page-id-29 .elementor-element[data-id="ac-cta-sec"] a.elementor-button,
  html body.page-id-29 [data-id="ac-cta-btn"] a {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 240px !important;
    max-width: 100% !important;
    margin: 16px auto 0 !important;
    padding: 14px 24px !important;
    white-space: normal !important;
  }
}

/* ============================================================
   §81 — FIXES ESPECIFICIDAD MÁXIMA (selector mismo nivel + 1 extra)
   accountants.css y advisors.css usan selector (0,4,2). Necesitamos (0,4,3)+
   ============================================================ */

/* §81a — ACC H1 hero 50px → 30px mobile / 40px tablet */
@media (max-width: 767px) {
  html body.page-id-69 .elementor-element[data-id="acch7be34b"] h1.elementor-heading-title,
  html body.page-id-69 .elementor-element[data-id="acch7be34b"] .elementor-heading-title {
    font-size: 30px !important;
    line-height: 1.15 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-69 .elementor-element[data-id="acch7be34b"] h1.elementor-heading-title,
  html body.page-id-69 .elementor-element[data-id="acch7be34b"] .elementor-heading-title {
    font-size: 40px !important;
  }
}

/* §81b — ADV H2 "Qué hacemos" 46px → 28px mobile / 36px tablet */
@media (max-width: 767px) {
  html body.page-id-78 .elementor-element[data-id="advs855d2a"] h2.elementor-heading-title,
  html body.page-id-78 .elementor-element[data-id="advs855d2a"] .elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.2 !important;
    word-break: keep-all !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-78 .elementor-element[data-id="advs855d2a"] h2.elementor-heading-title,
  html body.page-id-78 .elementor-element[data-id="advs855d2a"] .elementor-heading-title {
    font-size: 36px !important;
  }
}

/* §81c0 — AYUDA CTA padding reset (la causa real: 48px 60px deja 95px) — nuclear */
@media (max-width: 1024px) {
  html body.page-id-29 .elementor-29 .elementor-element.elementor-element-ac-cta-sec,
  html body.page-id-29 .elementor-element[data-id="ac-cta-sec"],
  html body.page-id-29 .elementor-29 .elementor-element.elementor-element-ac-cta-sec > .e-con-inner,
  html body.page-id-29 .elementor-element[data-id="ac-cta-sec"] > .e-con-inner {
    padding: 24px 16px !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
    --padding-left: 16px !important;
    --padding-right: 16px !important;
    max-width: 100% !important;
  }
  html body.page-id-29 .elementor-29 .elementor-element.elementor-element-ac-cta-h2,
  html body.page-id-29 .elementor-element[data-id="ac-cta-h2"],
  html body.page-id-29 .elementor-element[data-id="ac-cta-sub"],
  html body.page-id-29 .elementor-element[data-id="ac-cta-btn"] {
    width: 100% !important;
    max-width: 100% !important;
    flex: 1 1 100% !important;
  }
}

/* §81c — AYUDA CTA H2 "Da el primer paso" — busca data-id real ac-cta-h2 */
@media (max-width: 1024px) {
  html body.page-id-29 .elementor-element[data-id="ac-cta-h2"] h2.elementor-heading-title,
  html body.page-id-29 .elementor-element[data-id="ac-cta-h2"] .elementor-heading-title {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 100% !important;
    flex: 1 1 100% !important;
    font-size: clamp(22px, 6vw, 32px) !important;
    line-height: 1.2 !important;
    text-align: center !important;
    word-break: keep-all !important;
    padding: 0 12px !important;
    box-sizing: border-box !important;
  }
  /* Forzar el container del CTA a column para que H2 ocupe todo el ancho */
  html body.page-id-29 .elementor-element[data-id="ac-cta-sec"] > .e-con-inner,
  html body.page-id-29 .elementor-element[data-id="ac-cta-h2"],
  html body.page-id-29 .elementor-element[data-id="ac-cta-sub"],
  html body.page-id-29 .elementor-element[data-id="ac-cta-btn"] {
    width: 100% !important;
    max-width: 100% !important;
    flex: 1 1 100% !important;
  }
  html body.page-id-29 .elementor-element[data-id="ac-cta-sec"] > .e-con-inner {
    flex-direction: column !important;
    align-items: stretch !important;
  }
}

/* ============================================================
   §82 — CARRUSELES "NUESTROS SERVICIOS" mobile/tablet
   Pages: 69 (Accountants), 78 (Advisors), 29 (Ayuda Center)
   FIX: scroll horizontal interno, bg-images :none, textos cortados,
        overlay solapado, grid 4/5-col fuera de viewport, dots verdes.
   ROOT CAUSE: regla §45 [class*="-card"] aplicaba background:white,
        padding:20px y box-shadow a TODOS los sub-elementos card-*
        (card-image, card-overlay, card-body, card-title, etc.).
   ============================================================ */

/* §82a — Revertir efectos colaterales de la regla §45 sobre sub-elementos
   .ayc-card-image, .ayc-card-overlay, etc. NO deben recibir bg:white ni padding:20.
   ESPECIFICIDAD: §45 usa body [class*="-card"]... = (0,2,1).
   Necesito (0,2,2)+ para ganar. Uso html body .ayc-service-card .ayc-card-X. */
@media (max-width: 1024px) {
  html body .ayc-service-card .ayc-card-image,
  html body .ayc-service-card .ayc-card-overlay,
  html body .ayc-service-card .ayc-card-badge,
  html body .ayc-service-card .ayc-card-body,
  html body .ayc-service-card .ayc-card-title,
  html body .ayc-service-card .ayc-card-desc,
  html body .ayc-service-card .ayc-card-cta-btn,
  html body .ayc-service-card .ayc-card-footer-text,
  html body .ayc-service-card .ayc-card-btn,
  html body .ayc-service-card .ayc-check-item,
  html body .ayc-ac-card .ayc-card-image,
  html body .ayc-ac-card .ayc-card-overlay,
  html body .ayc-ac-card .ayc-card-badge,
  html body .ayc-ac-card .ayc-card-body,
  html body .ayc-ac-card .ayc-card-title,
  html body .ayc-ac-card .ayc-card-desc,
  html body .ayc-ac-card .ayc-card-cta-btn,
  html body .ayc-ac-card .ayc-card-footer-text,
  html body .ayc-ac-card .ayc-card-btn,
  html body .ayc-ac-card .ayc-check-item {
    background-color: transparent !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    margin-bottom: 0 !important;
  }
  /* Restaurar padding 0 en image/overlay/title/desc (NO 20px) */
  html body .ayc-service-card .ayc-card-image,
  html body .ayc-service-card .ayc-card-title,
  html body .ayc-service-card .ayc-card-desc,
  html body .ayc-ac-card .ayc-card-image,
  html body .ayc-ac-card .ayc-card-title,
  html body .ayc-ac-card .ayc-card-desc {
    padding: 0 !important;
  }
}

/* §82b — Service-card wrapper: full width, sin overflow horizontal.
   overflow:visible para evitar clip vertical de CTA al final. Border-radius
   se aplica a image (top) y body (bottom) explicitamente. */
@media (max-width: 1024px) {
  html body.page-id-69 .ayc-service-card,
  html body.page-id-78 .ayc-service-card,
  html body.page-id-29 .ayc-service-card,
  html body.page-id-69 .ayc-ac-card,
  html body.page-id-78 .ayc-ac-card,
  html body.page-id-29 .ayc-ac-card {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    padding: 0 !important;
    margin: 0 auto !important;
    border-radius: 16px !important;
    background: #ffffff !important;
    box-shadow: 0 4px 18px rgba(0,0,0,0.08) !important;
    overflow: visible !important;
    height: auto !important;
    min-height: auto !important;
    max-height: none !important;
    box-sizing: border-box !important;
  }
  /* Containers padres de las cards: tambien full width */
  html body.page-id-69 [data-id="acc-svc-sec"] > .e-con-inner > .e-con,
  html body.page-id-78 [data-id="adv-svc-sec"] > .e-con-inner > .e-con,
  html body.page-id-29 [data-id="ac-svc-sec"] > .e-con-inner > .e-con {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    padding: 0 12px !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
  }
  /* Service section itself: kill horizontal scroll */
  html body.page-id-69 [data-id="acc-svc-sec"],
  html body.page-id-78 [data-id="adv-svc-sec"],
  html body.page-id-29 [data-id="ac-svc-sec"] {
    overflow-x: hidden !important;
    max-width: 100vw !important;
  }
  html body.page-id-69 [data-id="acc-svc-sec"] > .e-con-inner,
  html body.page-id-78 [data-id="adv-svc-sec"] > .e-con-inner,
  html body.page-id-29 [data-id="ac-svc-sec"] > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
    width: 100% !important;
    overflow-x: hidden !important;
  }
}

/* §82c — Card image: forzar dimensiones y aspect ratio mobile.
   Anti-padding-bottom-hack: usar altura fija para evitar h:0 con padding override. */
@media (max-width: 1024px) {
  html body.page-id-69 .ayc-card-image,
  html body.page-id-78 .ayc-card-image,
  html body.page-id-29 .ayc-card-image {
    position: relative !important;
    width: 100% !important;
    height: 240px !important;
    min-height: 240px !important;
    padding: 0 !important;
    padding-bottom: 0 !important;
    background-size: cover !important;
    background-position: center center !important;
    background-repeat: no-repeat !important;
    border-radius: 16px 16px 0 0 !important;
    overflow: hidden !important;
    display: block !important;
  }
}
@media (max-width: 480px) {
  html body.page-id-69 .ayc-card-image,
  html body.page-id-78 .ayc-card-image,
  html body.page-id-29 .ayc-card-image {
    height: 200px !important;
    min-height: 200px !important;
  }
}

/* §82d — Overlay: 100% width, padding mobile-friendly, no overflow vertical */
@media (max-width: 1024px) {
  html body.page-id-69 .ayc-card-overlay,
  html body.page-id-78 .ayc-card-overlay,
  html body.page-id-29 .ayc-card-overlay {
    position: absolute !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    padding: 36px 16px 14px 16px !important;
    background: rgba(19, 28, 64, 0.78) !important;
    -webkit-backdrop-filter: blur(4px) !important;
    backdrop-filter: blur(4px) !important;
    border-radius: 0 !important;
    text-align: left !important;
    box-sizing: border-box !important;
    max-height: 100% !important;
    /* overflow visible — badge (top:-24px) needs to show above overlay */
    overflow: visible !important;
  }
  html body.page-id-69 .ayc-card-title,
  html body.page-id-78 .ayc-card-title,
  html body.page-id-29 .ayc-card-title {
    font-size: 17px !important;
    line-height: 1.2 !important;
    margin: 0 0 6px 0 !important;
    color: #ffffff !important;
    text-align: left !important;
    word-break: keep-all !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  html body.page-id-69 .ayc-card-desc,
  html body.page-id-78 .ayc-card-desc,
  html body.page-id-29 .ayc-card-desc {
    font-size: 13px !important;
    line-height: 1.4 !important;
    margin: 0 !important;
    color: rgba(255,255,255,0.92) !important;
    text-align: left !important;
    width: 100% !important;
    max-width: 100% !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 3 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
  }
  html body.page-id-69 .ayc-card-badge,
  html body.page-id-78 .ayc-card-badge,
  html body.page-id-29 .ayc-card-badge {
    position: absolute !important;
    top: -24px !important;
    left: 16px !important;
    width: 48px !important;
    height: 48px !important;
    background: #9dc41a !important;
    color: #ffffff !important;
    font-size: 20px !important;
    font-weight: 700 !important;
    border-radius: 50% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    z-index: 10 !important;
    box-shadow: 0 4px 12px rgba(157,196,26,0.4) !important;
    padding: 0 !important;
  }
}

/* §82e — Card body: padding mobile, no scroll horizontal */
@media (max-width: 1024px) {
  html body.page-id-69 .ayc-card-body,
  html body.page-id-78 .ayc-card-body,
  html body.page-id-29 .ayc-card-body {
    padding: 18px 16px 24px !important;
    background: #F4F5F7 !important;
    border-radius: 0 0 16px 16px !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    /* overflow MUST be 'visible' both axes — mixing visible + hidden
       on different axes forces 'auto' (W3C) which creates scrollbar. */
    overflow: visible !important;
    height: auto !important;
    min-height: auto !important;
    max-height: none !important;
  }
  html body.page-id-69 .ayc-card-body h3,
  html body.page-id-78 .ayc-card-body h3,
  html body.page-id-29 .ayc-card-body h3,
  html body.page-id-69 .ayc-includes-title,
  html body.page-id-78 .ayc-includes-title,
  html body.page-id-29 .ayc-includes-title {
    font-size: 16px !important;
    margin-bottom: 12px !important;
    color: #1e2751 !important;
    text-align: left !important;
  }
}

/* §82f — CHECKLIST GRID: SIEMPRE 1 columna en mobile (era 4/5 col → overflow).
   Quita variaciones cols-3/4/5/6 forzando grid-template-columns: 1fr. */
@media (max-width: 480px) {
  html body.page-id-69 .ayc-checklist-grid,
  html body.page-id-78 .ayc-checklist-grid,
  html body.page-id-29 .ayc-checklist-grid,
  html body.page-id-69 .ayc-checklist-grid.ayc-cols-3,
  html body.page-id-69 .ayc-checklist-grid.ayc-cols-4,
  html body.page-id-69 .ayc-checklist-grid.ayc-cols-5,
  html body.page-id-69 .ayc-checklist-grid.ayc-cols-6,
  html body.page-id-78 .ayc-checklist-grid.ayc-cols-3,
  html body.page-id-78 .ayc-checklist-grid.ayc-cols-4,
  html body.page-id-78 .ayc-checklist-grid.ayc-cols-5,
  html body.page-id-78 .ayc-checklist-grid.ayc-cols-6,
  html body.page-id-29 .ayc-checklist-grid.ayc-cols-3,
  html body.page-id-29 .ayc-checklist-grid.ayc-cols-4,
  html body.page-id-29 .ayc-checklist-grid.ayc-cols-5,
  html body.page-id-29 .ayc-checklist-grid.ayc-cols-6 {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 6px 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    margin-bottom: 12px !important;
  }
}
@media (min-width: 481px) and (max-width: 1024px) {
  html body.page-id-69 .ayc-checklist-grid,
  html body.page-id-78 .ayc-checklist-grid,
  html body.page-id-29 .ayc-checklist-grid,
  html body.page-id-69 .ayc-checklist-grid[class*="ayc-cols"],
  html body.page-id-78 .ayc-checklist-grid[class*="ayc-cols"],
  html body.page-id-29 .ayc-checklist-grid[class*="ayc-cols"] {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 8px 12px !important;
    width: 100% !important;
    max-width: 100% !important;
    margin-bottom: 12px !important;
  }
}

/* §82g — Check items mobile: text wraps, no truncate */
@media (max-width: 1024px) {
  html body.page-id-69 .ayc-check-item,
  html body.page-id-78 .ayc-check-item,
  html body.page-id-29 .ayc-check-item {
    font-size: 13px !important;
    line-height: 1.4 !important;
    color: #374151 !important;
    word-break: keep-all !important;
    overflow-wrap: break-word !important;
    align-items: flex-start !important;
    gap: 8px !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
  html body.page-id-69 .ayc-check-item .ayc-check-icon,
  html body.page-id-78 .ayc-check-item .ayc-check-icon,
  html body.page-id-29 .ayc-check-item .ayc-check-icon {
    width: 18px !important;
    height: 18px !important;
    flex-shrink: 0 !important;
  }
  /* CTA button: full width, touch >=44px. :not(#nope) hack para vencer
     overrides.css linea 7232 que usa el mismo truco con font-size:22px. */
  html body.page-id-69 .ayc-card-cta-btn:not(#nope),
  html body.page-id-78 .ayc-card-cta-btn:not(#nope),
  html body.page-id-29 .ayc-card-cta-btn:not(#nope),
  html body.page-id-69 .ayc-card-btn:not(#nope),
  html body.page-id-78 .ayc-card-btn:not(#nope),
  html body.page-id-29 .ayc-card-btn:not(#nope) {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-height: 48px !important;
    padding: 12px 16px !important;
    font-size: 15px !important;
    line-height: 1.25 !important;
    margin: 14px auto 0 !important;
    background: #9dc41a !important;
    color: #ffffff !important;
    border-radius: 8px !important;
    text-align: center !important;
    box-shadow: 0 2px 8px rgba(157,196,26,0.25) !important;
    box-sizing: border-box !important;
    white-space: normal !important;
    word-break: keep-all !important;
    overflow: visible !important;
  }
  html body.page-id-69 .ayc-card-footer-text,
  html body.page-id-78 .ayc-card-footer-text,
  html body.page-id-29 .ayc-card-footer-text {
    font-size: 14px !important;
    text-align: center !important;
    margin: 12px 0 0 !important;
    color: #1e2751 !important;
  }
}

/* §82h — DEPRECATED: las reglas de dots 12px se trasladan a §94b/§94b-mobile.
   Solo se conserva el container layout y el touch-target invisible. */
@media (max-width: 1024px) {
  html body.page-id-69 .ayc-carousel-dots,
  html body.page-id-78 .ayc-carousel-dots,
  html body.page-id-29 .ayc-svc-dots,
  html body.page-id-29 .ayc-carousel-dots {
    display: flex !important;
    justify-content: center !important;
    gap: 10px !important;
    margin: 18px auto 8px !important;
    padding: 8px 0 !important;
    width: 100% !important;
  }
  /* Touch target (44 invisible bbox via padding-area) */
  html body.page-id-69 .ayc-carousel-dot,
  html body.page-id-78 .ayc-carousel-dot,
  html body.page-id-29 .ayc-svc-dot {
    position: relative !important;
  }
  html body.page-id-69 .ayc-carousel-dot::after,
  html body.page-id-78 .ayc-carousel-dot::after,
  html body.page-id-29 .ayc-svc-dot::after {
    content: '' !important;
    position: absolute !important;
    inset: -16px !important;
    background: transparent !important;
  }
}

/* §82i — Asegurar que la celda visible es solo 1 card a la vez en mobile.
   El JS pone display:block/none, pero forzamos width:100% en el container. */
@media (max-width: 1024px) {
  html body.page-id-69 [data-id="acc-svc-sec"] > .e-con-inner > [data-element_type="container"],
  html body.page-id-78 [data-id="adv-svc-sec"] > .e-con-inner > [data-element_type="container"],
  html body.page-id-29 [data-id="ac-svc-sec"] > .e-con-inner > [data-element_type="container"] {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
  }
}

/* §82j — Header de seccion (h2 "Nuestros Servicios" / "Que hacemos") visible y centrado */
@media (max-width: 1024px) {
  html body.page-id-69 [data-id="accs855d2a"],
  html body.page-id-78 [data-id="advs855d2a"],
  html body.page-id-29 [data-id="ac-svc-title"] {
    width: 100% !important;
    text-align: center !important;
    padding: 0 16px !important;
    box-sizing: border-box !important;
    margin-bottom: 16px !important;
  }
}

/* ============================================================
   §83 — QUIENES SOMOS RESCUE (mobile + tablet)
   Root causes detectados:
   (A) §68 aplicaba display:grid a [data-id="qs-stats-inner"]
       — eso colapsa su `.e-con-inner` a la 1ª columna (164px),
       arrastrando H2 y stats a w<60px → wrap por sílaba.
   (B) Cada container QS (qs-X-sec / qs-X-inner / qs-X-row / qs-X-right)
       hereda padding 40px 16px del tema, dejando widgets a 199-247px
       luego de 3 niveles de anidación.
   (C) §54 aplica word-break:keep-all global. Combinado con
       containers angostos → texto vertical letra por letra.
   (D) qs-val-row mantiene flex-row pero items con flex 0 0 100%
       → 4 stacked OK pero padding 40px 16px aplasta.
   (E) qs-diff-row tablet recibe §69 grid 2-col pero el
       padding 40 16 + grid-gap deja items en 135px (chrono OK)
       — sin embargo a 768x los items quedan a 24px (los hijos
       internos tienen sus propios paddings).
   ============================================================ */

/* §83a — DESACTIVAR la regla §68 sobre `qs-stats-inner`.
   `qs-stats-inner` es el contenedor de sección, NO el grid.
   El grid debe vivir en `qs-stats-row` SOLAMENTE. */
@media (max-width: 1024px) {
  html body.page-id-87 [data-id="qs-stats-inner"],
  html body.page-id-87 .elementor-element[data-id="qs-stats-inner"] {
    display: flex !important;
    flex-direction: column !important;
    grid-template-columns: none !important;
  }
  html body.page-id-87 [data-id="qs-stats-inner"] > .e-con-inner {
    display: flex !important;
    flex-direction: column !important;
    width: 100% !important;
    max-width: 100% !important;
    grid-template-columns: none !important;
  }
}

/* §83b — RESET PADDING NUCLEAR para containers QS internos.
   Anidación 3 niveles con 40+16 px deja widgets a <200px.
   Reducimos paddings horizontales a 0-12px en mobile/tablet. */
@media (max-width: 1024px) {
  html body.page-id-87 [data-id="qs-intro-sec"],
  html body.page-id-87 [data-id="qs-stats-sec"],
  html body.page-id-87 [data-id="qs-val-sec"],
  html body.page-id-87 [data-id="qs-philo-sec"],
  html body.page-id-87 [data-id="qs-team-sec"],
  html body.page-id-87 [data-id="qs-diff-sec"],
  html body.page-id-87 [data-id="qs-cta-sec"] {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
  html body.page-id-87 [data-id="qs-intro-inner"],
  html body.page-id-87 [data-id="qs-stats-inner"],
  html body.page-id-87 [data-id="qs-val-inner"],
  html body.page-id-87 [data-id="qs-philo-inner"],
  html body.page-id-87 [data-id="qs-team-inner"],
  html body.page-id-87 [data-id="qs-diff-inner"],
  html body.page-id-87 [data-id="qs-cta-inner"] {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  html body.page-id-87 [data-id="qs-stats-row"],
  html body.page-id-87 [data-id="qs-val-row"],
  html body.page-id-87 [data-id="qs-diff-row"],
  html body.page-id-87 [data-id="qs-intro-right"] {
    padding-left: 4px !important;
    padding-right: 4px !important;
  }
  html body.page-id-87 [data-id="qs-stats-row"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-val-row"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-diff-row"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-intro-right"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-intro-inner"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-stats-inner"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-val-inner"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-philo-inner"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-team-inner"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-diff-inner"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-cta-inner"] > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  /* Vertical padding reducido pero NO destruido (estética) */
  html body.page-id-87 [data-id^="qs-"][data-id$="-sec"] {
    padding-top: 28px !important;
    padding-bottom: 28px !important;
  }
}

/* §83c — REVERTIR word-break:keep-all global de §54 dentro de QS
   donde el container es muy estrecho. Permitir wrap normal. */
@media (max-width: 1024px) {
  html body.page-id-87 [data-id^="qs-"] h1,
  html body.page-id-87 [data-id^="qs-"] h2,
  html body.page-id-87 [data-id^="qs-"] h3,
  html body.page-id-87 [data-id^="qs-"] h4,
  html body.page-id-87 [data-id^="qs-"] p,
  html body.page-id-87 [data-id^="qs-"] span,
  html body.page-id-87 [data-id^="qs-"] strong,
  html body.page-id-87 [data-id^="qs-"] div {
    word-break: normal !important;
    overflow-wrap: break-word !important;
    white-space: normal !important;
    hyphens: none !important;
    -webkit-hyphens: none !important;
  }
}

/* §83d — STATS row: grid 1-col mobile / 2-col 480px+ / 3-col tablet.
   Hace prevalecer sobre §68 grid-template-columns:repeat(2,1fr). */
@media (max-width: 479px) {
  html body.page-id-87 [data-id="qs-stats-row"],
  html body.page-id-87 .elementor-element[data-id="qs-stats-row"] {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px !important;
    padding: 16px 8px !important;
  }
  html body.page-id-87 [data-id="qs-stats-row"] > *:nth-child(5),
  html body.page-id-87 [data-id="qs-stat-5"] {
    grid-column: 1 / -1 !important;
    max-width: 100% !important;
    justify-self: stretch !important;
  }
}
@media (min-width: 480px) and (max-width: 767px) {
  html body.page-id-87 [data-id="qs-stats-row"],
  html body.page-id-87 .elementor-element[data-id="qs-stats-row"] {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 16px !important;
    padding: 16px 8px !important;
  }
  html body.page-id-87 [data-id="qs-stats-row"] > *:nth-child(5),
  html body.page-id-87 [data-id="qs-stat-5"] {
    grid-column: 1 / -1 !important;
    max-width: 60% !important;
    justify-self: center !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-87 [data-id="qs-stats-row"],
  html body.page-id-87 .elementor-element[data-id="qs-stats-row"] {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 16px !important;
    padding: 24px 12px !important;
  }
}
@media (max-width: 1024px) {
  html body.page-id-87 [data-id^="qs-stat-"] {
    flex: unset !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    padding: 12px 8px !important;
    border: none !important;
    box-sizing: border-box !important;
  }
  html body.page-id-87 [data-id^="qs-stat-"] .elementor-image-box-content {
    width: 100% !important;
    max-width: 100% !important;
  }
  html body.page-id-87 [data-id^="qs-stat-"] .elementor-image-box-title,
  html body.page-id-87 [data-id^="qs-stat-"] .elementor-image-box-title span,
  html body.page-id-87 [data-id^="qs-stat-"] .ayc-counter-animated {
    font-size: 36px !important;
    line-height: 1.05 !important;
    white-space: nowrap !important;
  }
  html body.page-id-87 [data-id^="qs-stat-"] .elementor-image-box-description {
    max-width: 100% !important;
    font-size: 14px !important;
    line-height: 1.4 !important;
    word-break: normal !important;
    white-space: normal !important;
  }
  html body.page-id-87 [data-id="qs-stats-h2"] .elementor-heading-title {
    font-size: 24px !important;
    line-height: 1.25 !important;
    margin: 0 0 24px !important;
    padding: 0 8px !important;
    word-break: normal !important;
    white-space: normal !important;
  }
  html body.page-id-87 [data-id="qs-stats-foot"] {
    width: 100% !important;
    padding: 0 12px !important;
  }
  html body.page-id-87 [data-id="qs-stats-foot"] p {
    font-size: 14px !important;
    word-break: normal !important;
  }
}

/* §83e — VALORES row: 1-col mobile / 2-col tablet con paddings sanos. */
@media (max-width: 767px) {
  html body.page-id-87 [data-id="qs-val-row"],
  html body.page-id-87 .elementor-element[data-id="qs-val-row"] {
    display: flex !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    gap: 16px !important;
    max-width: 100% !important;
    padding: 8px 4px !important;
  }
  html body.page-id-87 [data-id^="qs-val-"][data-id*="-"]:not([data-id$="-sec"]):not([data-id$="-row"]):not([data-id$="-title"]):not([data-id$="-inner"]) {
    flex: 0 0 100% !important;
    width: 100% !important;
    max-width: 100% !important;
    padding: 20px 16px !important;
    margin: 0 !important;
  }
  html body.page-id-87 [data-id="qs-val-title"] .elementor-heading-title {
    font-size: 26px !important;
    line-height: 1.25 !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-87 [data-id="qs-val-row"],
  html body.page-id-87 .elementor-element[data-id="qs-val-row"] {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 20px !important;
    max-width: 100% !important;
    padding: 12px 6px !important;
  }
  html body.page-id-87 [data-id^="qs-val-"][data-id*="-"]:not([data-id$="-sec"]):not([data-id$="-row"]):not([data-id$="-title"]):not([data-id$="-inner"]) {
    flex: unset !important;
    width: 100% !important;
    max-width: 100% !important;
    padding: 24px 18px !important;
    margin: 0 !important;
  }
}

/* §83f — DIFERENCIADORES (qs-diff): 1-col mobile / 2-col tablet.
   Items con padding sano (no 40 16). */
@media (max-width: 767px) {
  html body.page-id-87 [data-id="qs-diff-row"],
  html body.page-id-87 .elementor-element[data-id="qs-diff-row"] {
    display: flex !important;
    flex-direction: column !important;
    gap: 16px !important;
    padding: 8px 4px !important;
  }
  html body.page-id-87 [data-id^="qs-diff-"][data-id*="-"]:not([data-id$="-sec"]):not([data-id$="-row"]):not([data-id$="-title"]):not([data-id$="-inner"]):not([data-id$="-h2"]) {
    width: 100% !important;
    max-width: 100% !important;
    padding: 20px 16px !important;
    margin: 0 !important;
    flex: unset !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-87 [data-id="qs-diff-row"],
  html body.page-id-87 .elementor-element[data-id="qs-diff-row"],
  html body.page-id-87 [data-id="qs-diff-row"] > .e-con-inner {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 20px !important;
    padding: 12px 6px !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  html body.page-id-87 [data-id^="qs-diff-"][data-id*="-"]:not([data-id$="-sec"]):not([data-id$="-row"]):not([data-id$="-title"]):not([data-id$="-inner"]):not([data-id$="-h2"]) {
    width: 100% !important;
    max-width: 100% !important;
    padding: 22px 18px !important;
    margin: 0 !important;
    flex: unset !important;
    box-sizing: border-box !important;
  }
}

/* §83g — INTRO (texto + composite imágenes): asegurar full width mobile */
@media (max-width: 767px) {
  html body.page-id-87 [data-id="qs-intro-inner"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-intro-inner"] {
    flex-direction: column !important;
  }
  html body.page-id-87 [data-id="qs-intro-right"],
  html body.page-id-87 [data-id="qs-intro-text1"],
  html body.page-id-87 [data-id="qs-intro-text2"] {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  html body.page-id-87 [data-id="qs-intro-text1"] p,
  html body.page-id-87 [data-id="qs-intro-text2"] p {
    font-size: 16px !important;
    line-height: 1.55 !important;
    word-break: normal !important;
    white-space: normal !important;
  }
}

/* §83h — FILOSOFÍA: graphic + bubbles legibles mobile */
@media (max-width: 767px) {
  html body.page-id-87 [data-id="qs-philo-inner"] > .e-con-inner,
  html body.page-id-87 [data-id="qs-philo-inner"] {
    width: 100% !important;
    max-width: 100% !important;
  }
  html body.page-id-87 .qs-philo-graphic {
    width: 100% !important;
    max-width: 100% !important;
    min-height: 340px !important;
    padding: 12px 0 !important;
    margin: 0 auto !important;
  }
  html body.page-id-87 [data-id^="qs-philo-"]:not([data-id$="-sec"]):not([data-id$="-inner"]):not([data-id$="-title"]) {
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* §83i — CTA final: heading legible, padding sano */
@media (max-width: 767px) {
  html body.page-id-87 [data-id="qs-cta-sec"] {
    padding: 32px 16px !important;
  }
  html body.page-id-87 [data-id="qs-cta-sec"] h2,
  html body.page-id-87 [data-id="qs-cta-sec"] .elementor-heading-title {
    font-size: 24px !important;
    line-height: 1.25 !important;
    word-break: normal !important;
    white-space: normal !important;
  }
  html body.page-id-87 [data-id="qs-cta-sec"] p {
    font-size: 15px !important;
    line-height: 1.5 !important;
    word-break: normal !important;
  }
  html body.page-id-87 [data-id="qs-cta-sec"] .elementor-button {
    width: 100% !important;
    max-width: 320px !important;
    padding: 14px 20px !important;
  }
}

/* §83j — Excluir QS de §45 [class*="-card"] efectos colaterales */
@media (max-width: 1024px) {
  html body.page-id-87 .qs-team-card,
  html body.page-id-87 [class*="qs-"][class*="-card"] {
    /* No imponer chrome card global; quienes-somos.css ya define lo necesario */
    box-shadow: revert !important;
  }
}

/* §83k — Override §41 flex-basis sobre TODOS los widgets QS dentro
   de cualquier e-con-full anidado. Forzar full width mobile.
   (Sin afectar carruseles cuyos children siguen su track.) */
@media (max-width: 1024px) {
  html body.page-id-87 [data-id^="qs-"] > .elementor-widget,
  html body.page-id-87 [data-id^="qs-"] .e-con-inner > .elementor-widget {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
  }
  /* EXCEPT carruseles (team / tl) cuyos slides necesitan su flex propio */
  html body.page-id-87 .qs-team-track > *,
  html body.page-id-87 .qs-tl-track > * {
    flex: 0 0 auto !important;
    width: auto !important;
  }
}

/* §83l — Hero QS: H1 y subtítulos clamp mobile, no roto */
@media (max-width: 767px) {
  html body.page-id-87 [data-id="qs-hero-sec"] h1,
  html body.page-id-87 [data-id="qs-hero-sec"] .elementor-heading-title {
    font-size: clamp(26px, 7vw, 34px) !important;
    line-height: 1.15 !important;
    word-break: normal !important;
    white-space: normal !important;
    text-wrap: balance !important;
  }
  html body.page-id-87 [data-id="qs-hero-sec"] p,
  html body.page-id-87 [data-id="qs-hero-sec"] span {
    word-break: normal !important;
    white-space: normal !important;
  }
}

/* §83m — DESACTIVAR §69 sobre [data-id="qs-diff-inner"]: ese es contenedor de sección
   (igual que el bug §83a de stats). El grid pertenece al row (qs-diff-row), no al inner.
   También cancelar la regla `[data-id*=diff] .e-con-inner { flex-flow: column wrap }`
   que afecta al `.e-con-inner` del inner y rompe el row interno. */
@media (max-width: 1024px) {
  html body.page-id-87 [data-id="qs-diff-inner"],
  html body.page-id-87 .elementor-element[data-id="qs-diff-inner"] {
    display: flex !important;
    flex-direction: column !important;
    grid-template-columns: none !important;
  }
  html body.page-id-87 [data-id="qs-diff-inner"] > .e-con-inner {
    display: flex !important;
    flex-direction: column !important;
    flex-flow: column nowrap !important;
    width: 100% !important;
    max-width: 100% !important;
    grid-template-columns: none !important;
  }
  /* qs-diff-row debe quedar sin width 352 — forzar 100% del padre */
  html body.page-id-87 [data-id="qs-diff-row"],
  html body.page-id-87 .elementor-element[data-id="qs-diff-row"] {
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* §83n — ZIGZAG transform en qs-diff-2/4 (translateY 60px) crea solapamiento
   visual en mobile/tablet. Cancelarlo (ya estaba en 1145, pero solo en
   media específica). Asegurar reset 1024px+. */
@media (max-width: 1024px) {
  html body.page-id-87 [data-id="qs-diff-2"],
  html body.page-id-87 [data-id="qs-diff-4"] {
    transform: none !important;
  }
}

/* §83o — qs-philo-graphic: garantizar altura mínima visible para los bubbles
   y ocupar ancho completo (estaba 232px en mobile). Centrar contenido. */
@media (max-width: 1024px) {
  html body.page-id-87 .qs-philo-graphic,
  html body.page-id-87 [data-id="qs-philo-graphic"] {
    width: 100% !important;
    max-width: 100% !important;
    min-height: 360px !important;
    position: relative !important;
    margin: 16px auto !important;
    padding: 0 !important;
  }
}

/* §83p — qs-val-row mobile (480px+) usar 2 col si cabe, para mejor uso del ancho. */
@media (min-width: 480px) and (max-width: 767px) {
  html body.page-id-87 [data-id="qs-val-row"],
  html body.page-id-87 .elementor-element[data-id="qs-val-row"] {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 14px !important;
    padding: 8px 4px !important;
  }
}

/* §83q — Filosofía items: layout horizontal icono+círculo+texto legible.
   §27 oculta el span DENTRO del circle (display:none) y esperaba un
   `.qs-philo-text` que NO existe en el HTML real. Forzamos visibilidad
   del span y lo sacamos del circle visualmente con grid/flex. */
@media (max-width: 1024px) {
  /* Item: row con icon+line+circle a la izquierda y texto a la derecha */
  html body.page-id-87 .qs-philo-item {
    display: grid !important;
    grid-template-columns: 56px 1fr !important;
    align-items: center !important;
    gap: 16px !important;
    padding: 10px 12px !important;
    margin: 0 !important;
    background: #FFFFFF !important;
    border-radius: 12px !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.05) !important;
    border: 1px solid rgba(157,196,26,0.25) !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }
  /* Icono en la columna 1, fila 1: visible y centrado */
  html body.page-id-87 .qs-philo-item .qs-philo-icon {
    grid-column: 1 !important;
    grid-row: 1 !important;
    width: 44px !important;
    height: 44px !important;
    border-radius: 50% !important;
    background-color: #003366 !important;
    background-size: 60% 60% !important;
    background-position: center !important;
    background-repeat: no-repeat !important;
    background-image: var(--icon-img) !important;
    margin: 0 auto !important;
  }
  /* Line: oculta en mobile (no aporta valor sin circle posicionado) */
  html body.page-id-87 .qs-philo-item .qs-philo-line {
    display: none !important;
  }
  /* Circle: oculto en mobile, el span saldrá afuera */
  html body.page-id-87 .qs-philo-item .qs-philo-circle {
    display: contents !important;
    width: auto !important;
    height: auto !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 0 !important;
  }
  /* Span text: visible en columna 2 */
  html body.page-id-87 .qs-philo-item .qs-philo-circle span,
  html body.page-id-87 .qs-philo-item .qs-philo-circle > span {
    display: block !important;
    grid-column: 2 !important;
    grid-row: 1 !important;
    font-family: 'Futura Medium', 'Open Sans', sans-serif !important;
    font-weight: 500 !important;
    font-size: 15px !important;
    line-height: 1.4 !important;
    color: #1F2937 !important;
    text-align: left !important;
    word-break: normal !important;
    white-space: normal !important;
    width: 100% !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  /* qs-philo-graphic: column stack */
  html body.page-id-87 .qs-philo-graphic {
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
    height: auto !important;
    min-height: 0 !important;
    width: 100% !important;
    max-width: 520px !important;
    margin: 16px auto 0 !important;
    padding: 0 !important;
  }
  /* qs-philo-arc & center: ocultar en mobile/tablet (decoración desktop) */
  html body.page-id-87 .qs-philo-arc,
  html body.page-id-87 .qs-philo-center {
    display: none !important;
  }
}

/* §83r — qs-philo-item: cancelar animation transform que deja items en
   posición invisible cuando IO no triggea (ej. user llega vía deep-link
   o disable JS). Usar prefers-reduced-motion como safety net. */
@media (max-width: 1024px) {
  /* Si JS está disabled o IO no actúa, dejamos visibles tras 800ms */
  html body.page-id-87 .qs-philo-item {
    animation: qsPhiloFallback 1ms linear 1.5s forwards !important;
  }
}
@keyframes qsPhiloFallback {
  to { opacity: 1; transform: none; }
}

/* ============================================================
   §84 — MAESTRO UNIVERSAL — FIX MOBILE/TABLET 6 PÁGINAS
   Aplicación del método QS: nuclear specificity, @media 1024px,
   sin tocar desktop. Issues: header se pierde al scroll,
   H2 oversized cross-page, why-sections con widths zigzag,
   svc card-overlay constreñido por width:74%+transform.
   ============================================================ */

/* ------------------------------------------------------------
   §84a — HEADER FIXED MOBILE/TABLET (transversal)
   ROOT CAUSE 1: hdr_sec1 position:relative → scrolea con el body.
   ROOT CAUSE 2: §1 hace `html,body { overflow-x:hidden }` que
   crea scroll containers en ambos. En mobile el viewport queda
   atado a <html> pero body es scroll container también, lo cual
   rompe `position:sticky` (sticky se queda atrapado dentro de su
   container, que es body full-height; no se "pega" al viewport).
   FIX: usar position:fixed para sacarlo del flow normal del body,
   y añadir padding-top a body para que el contenido no quede
   tapado por el header.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  /* <header> queda fijo arriba */
  html body header.elementor-location-header {
    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    z-index: 9999 !important;
    background-color: #ffffff !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
    width: 100% !important;
    max-width: 100vw !important;
  }
  html body .elementor-element.elementor-element-hdr_sec1 {
    position: relative !important;
    z-index: 9999 !important;
    background-color: #ffffff !important;
    width: 100% !important;
    max-width: 100vw !important;
    overflow: visible !important;
    min-height: 60px !important;
  }
  /* Compensar el espacio del header fijo: padding-top en body. */
  html body.page-id-13,
  html body.page-id-27,
  html body.page-id-29,
  html body.page-id-69,
  html body.page-id-78,
  html body.page-id-86,
  html body.page-id-87,
  html body.page-id-90 {
    padding-top: 80px !important;
  }
}
@media (max-width: 767px) {
  /* Mobile real header height ~52px (logo 36 + 8+8 padding sec1). */
  html body.page-id-13,
  html body.page-id-27,
  html body.page-id-29,
  html body.page-id-69,
  html body.page-id-78,
  html body.page-id-86,
  html body.page-id-87,
  html body.page-id-90 {
    padding-top: 60px !important;
  }
  /* The right block should stay inline with logo, not stack vertically */
  html body .elementor-element.elementor-element-hdr_right,
  html body[class*="page-id-"] .elementor-element.elementor-element-hdr_right {
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-end !important;
    flex-wrap: nowrap !important;
    gap: 8px !important;
    width: auto !important;
    flex: 0 0 auto !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 0 !important;
    max-width: 60% !important;
  }
  /* CTA button: smaller so it fits the inline header */
  html body .elementor-element.elementor-element-hdr_right .elementor-element.elementor-element-hdr_cta,
  html body .elementor-element.elementor-element-hdr_cta {
    width: auto !important;
    max-width: 160px !important;
    flex: 0 0 auto !important;
    display: inline-flex !important;
  }
  html body .elementor-element.elementor-element-hdr_cta .elementor-widget-container {
    width: auto !important;
  }
  html body .elementor-element.elementor-element-hdr_cta .elementor-button {
    padding: 8px 12px !important;
    font-size: 13px !important;
    line-height: 1.2 !important;
    white-space: nowrap !important;
    width: auto !important;
  }
  /* Hide phone widget on mobile (it's tiny anyway) */
  html body .elementor-element.elementor-element-hdr_phone {
    display: none !important;
  }
  /* hdr_logo: no debe estirarse a full row.
     Specificity boost necesario para vencer §41:
     `body.page-id-X .e-con-full > .elementor-element.elementor-widget`
     que es (0,4,0). Necesitamos (0,5,0) mínimo. */
  html body[class*="page-id-"] .elementor-5 .e-con-full > .elementor-element.elementor-element-hdr_logo,
  html body[class*="page-id-"] header .e-con-full > .elementor-element.elementor-element-hdr_logo,
  html body[class*="page-id-"] .elementor-element-hdr_sec1 > .elementor-element.elementor-element-hdr_logo {
    width: auto !important;
    max-width: 160px !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
    flex-grow: 0 !important;
    flex-shrink: 0 !important;
  }
  html body[class*="page-id-"] .elementor-element-hdr_logo .elementor-widget-container,
  html body[class*="page-id-"] .elementor-element-hdr_logo img,
  html body[class*="page-id-"] .elementor-element-hdr_logo svg {
    width: auto !important;
    max-width: 140px !important;
    height: auto !important;
  }
  /* También hdr_nav y hdr_right necesitan ganar §41 */
  html body[class*="page-id-"] .elementor-element-hdr_sec1 > .elementor-element.elementor-element-hdr_nav,
  html body[class*="page-id-"] .elementor-element-hdr_sec1 > .elementor-element.elementor-element-hdr_right {
    width: auto !important;
    max-width: 60% !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
  }
  /* hdr_sec1 inner: layout estricto row con space-between */
  html body .elementor-element.elementor-element-hdr_sec1 {
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    flex-wrap: nowrap !important;
    padding: 8px 16px !important;
  }
}

@media (max-width: 480px) {
  /* On very small screens, hide CTA text and only show hamburger */
  html body .elementor-element.elementor-element-hdr_cta {
    max-width: 130px !important;
  }
  html body .elementor-element.elementor-element-hdr_cta .elementor-button {
    padding: 6px 10px !important;
    font-size: 12px !important;
  }
}

/* ------------------------------------------------------------
   §84b — HOME H2 "Lo que nuestros clientes dicen" mobile
   data-id="sx7r0nl2" contiene el bloque testimonial reused.
   El H2 default es ~50px → forzar 26px mobile, 36px tablet.
   ------------------------------------------------------------ */
@media (max-width: 767px) {
  html body.page-id-13 .elementor-element[data-id="sx7r0nl2"] h2.elementor-heading-title,
  html body.page-id-29 .elementor-element[data-id="sx7r0nl2"] h2.elementor-heading-title,
  html body.page-id-69 .elementor-element[data-id="sx7r0nl2"] h2.elementor-heading-title,
  html body.page-id-78 .elementor-element[data-id="sx7r0nl2"] h2.elementor-heading-title,
  html body .elementor-element[data-id="sx7r0nl2"] h2.elementor-heading-title {
    font-size: 26px !important;
    line-height: 1.15 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body .elementor-element[data-id="sx7r0nl2"] h2.elementor-heading-title {
    font-size: 36px !important;
    line-height: 1.15 !important;
  }
}

/* ------------------------------------------------------------
   §84c — SERVICIOS H1 hero 50px → 30px mobile / 38px tablet
   data-id="svc-hero-h1"
   ------------------------------------------------------------ */
@media (max-width: 767px) {
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-hero-h1"] h1,
  html body.page-id-27 .elementor-element[data-id="svc-hero-h1"] h1.elementor-heading-title,
  html body .elementor-element[data-id="svc-hero-h1"] h1 {
    font-size: 30px !important;
    line-height: 1.15 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-27 .elementor-element[data-id="svc-hero-h1"] h1,
  html body .elementor-element[data-id="svc-hero-h1"] h1 {
    font-size: 38px !important;
    line-height: 1.18 !important;
  }
}

/* ------------------------------------------------------------
   §84d — SERVICIOS card-overlay 74%+transform → 100% mobile
   ROOT CAUSE 1: servicios.css :127 .ayc-card-overlay
     width:74%; left:50%; transform:translateX(-50%);
     padding:48px 36px 32px 36px;
   Resultado mobile (287w card): overlay 213w, padding 36*2=72,
   contenido 141w → títulos quebrados.
   ROOT CAUSE 2: §45 aplica `body [class*="-card"] { background:white }`
   shorthand que resetea background-image:initial → imagen no se ve.
   FIX: overlay 100%, padding razonable, sin transform.
   Recuperar background-image inline en .ayc-card-image.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  /* Cancelar §45 background shorthand sobre .ayc-card-image:
     mantener background-image inline (no override) */
  html body.page-id-27 .ayc-service-card .ayc-card-image,
  html body[class*="page-id-"] .ayc-service-card .ayc-card-image {
    background-color: transparent !important;
    background-size: cover !important;
    background-position: center center !important;
    background-repeat: no-repeat !important;
  }
  html body.page-id-27 .ayc-service-card .ayc-card-overlay {
    position: absolute !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    transform: none !important;
    width: 100% !important;
    max-width: 100% !important;
    padding: 16px !important;
    border-radius: 0 !important;
    background: rgba(19, 28, 64, 0.78) !important;
    -webkit-backdrop-filter: blur(4px) !important;
    backdrop-filter: blur(4px) !important;
  }
  /* Card image: shorter on mobile so overlay isn't pushed too low */
  html body.page-id-27 .ayc-service-card .ayc-card-image {
    height: 280px !important;
    min-height: 280px !important;
    border-radius: 16px 16px 0 0 !important;
    position: relative !important;
  }
  /* Service card wrapper: visible chrome, full width */
  html body.page-id-27 .ayc-service-card,
  html body.page-id-27 [id="advisors"],
  html body.page-id-27 [id="ayuda"],
  html body.page-id-27 [id="accountants"] {
    margin-bottom: 24px !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    border-radius: 16px !important;
    overflow: hidden !important;
    background: #ffffff !important;
    box-shadow: 0 4px 18px rgba(0,0,0,0.08) !important;
    width: 100% !important;
    max-width: 100% !important;
    padding: 0 !important;
  }
  /* Cancelar el padding:20px de §45 sobre los wrappers svc-card-X y svc-card-X-wrap */
  html body.page-id-27 .elementor-element[data-id^="svc-card-"] {
    padding: 0 !important;
    margin-bottom: 16px !important;
    background: transparent !important;
    box-shadow: none !important;
  }
  html body.page-id-27 .elementor-element[data-id^="svc-card-"].e-con,
  html body.page-id-27 .elementor-element[data-id$="-wrap"] {
    padding: 0 !important;
  }
  html body.page-id-27 .elementor-element[data-id="svc-card-a"],
  html body.page-id-27 .elementor-element[data-id="svc-card-b"],
  html body.page-id-27 .elementor-element[data-id="svc-card-c"] {
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }
  html body.page-id-27 .elementor-element[data-id="svc-card-a"] .elementor-widget-container,
  html body.page-id-27 .elementor-element[data-id="svc-card-b"] .elementor-widget-container,
  html body.page-id-27 .elementor-element[data-id="svc-card-c"] .elementor-widget-container {
    padding: 0 !important;
    background: transparent !important;
  }
  /* Card body padding for legibility */
  html body.page-id-27 .ayc-service-card .ayc-card-body {
    padding: 16px !important;
    background: #ffffff !important;
  }
  /* Title inside overlay readable */
  html body.page-id-27 .ayc-service-card .ayc-card-title {
    font-size: 20px !important;
    line-height: 1.2 !important;
    color: #ffffff !important;
    word-break: keep-all !important;
    hyphens: none !important;
    margin: 0 0 6px 0 !important;
  }
  html body.page-id-27 .ayc-service-card .ayc-card-desc {
    font-size: 13px !important;
    line-height: 1.45 !important;
    color: #ffffff !important;
  }
  html body.page-id-27 .ayc-service-card .ayc-card-badge {
    color: #ffffff !important;
    background: #9dc41a !important;
    margin-bottom: 8px !important;
    display: inline-block !important;
    padding: 2px 10px !important;
    border-radius: 100px !important;
    font-size: 12px !important;
  }
}

/* ------------------------------------------------------------
   §84e — SERVICIOS CTA H2 "¿No sabes qué tipo...?" reducir
   data-id="svc-cta-sec" contiene heading enorme.
   ------------------------------------------------------------ */
@media (max-width: 767px) {
  html body.page-id-27 .elementor-element[data-id="svc-cta-sec"] h2.elementor-heading-title,
  html body .elementor-element[data-id="svc-cta-sec"] h2.elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.2 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
  /* H3 secondary "Te ayudamos a identificar..." — data-id="svc-cta-sub" */
  html body.page-id-27 .elementor-element[data-id="svc-cta-sub"] .elementor-heading-title,
  html body.page-id-27 .elementor-element[data-id="svc-cta-sub"] h3,
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cta-sub"] .elementor-heading-title {
    font-size: 22px !important;
    line-height: 1.25 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body .elementor-element[data-id="svc-cta-sec"] h2.elementor-heading-title {
    font-size: 36px !important;
    line-height: 1.2 !important;
  }
  html body.page-id-27 .elementor-element[data-id="svc-cta-sub"] .elementor-heading-title,
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cta-sub"] .elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.25 !important;
  }
}

/* ------------------------------------------------------------
   §84f — AYUDA "Conoce nuestro proceso" H2 reducir
   ------------------------------------------------------------ */
@media (max-width: 767px) {
  html body.page-id-29 .elementor-element[data-id="ac-proc-sec"] h2.elementor-heading-title,
  html body .elementor-element[data-id="ac-proc-sec"] h2.elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.2 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body .elementor-element[data-id="ac-proc-sec"] h2.elementor-heading-title {
    font-size: 38px !important;
    line-height: 1.2 !important;
  }
}

/* ------------------------------------------------------------
   §84g — AYUDA "¿Qué hacemos?" H2 (ac-que-sec) reducir
   ------------------------------------------------------------ */
@media (max-width: 767px) {
  html body.page-id-29 .elementor-element[data-id="ac-que-sec"] h2.elementor-heading-title,
  html body .elementor-element[data-id="ac-que-sec"] h2.elementor-heading-title {
    font-size: 32px !important;
    line-height: 1.15 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
  html body.page-id-29 .elementor-element[data-id="ac-why-title"] h2.elementor-heading-title,
  html body .elementor-element[data-id="ac-why-title"] h2.elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.2 !important;
  }
}

/* ------------------------------------------------------------
   §84h — AYUDA Why-grid icon-box items: row→column si caben,
   eliminar widths constreñidos.
   ROOT CAUSE: .elementor-icon-box-wrapper default flex-direction:row;
   Mobile: icon 36w + content ~140w; descripción rota.
   ROOT CAUSE 2: el widget ac-w1..5 tiene padding 16 20 desde §45
   y wrapper tiene 20 16 también de §45. Sumando = 72px lost.
   FIX: eliminar paddings, column-flex en wrapper, content full-width.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  /* Eliminar padding sobre los widgets ac-w1..5 (§45 los toca como -card) */
  html body.page-id-29 .elementor-element[data-id^="ac-w"]:not([data-id="ac-why-title"]):not([data-id="ac-why-grid"]):not([data-id="ac-why-sec"]),
  html body.page-id-29 [data-id="ac-why-grid"] > .elementor-element {
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    margin: 0 0 12px 0 !important;
  }
  html body.page-id-29 [data-id="ac-why-grid"] > .elementor-element .elementor-widget-container {
    padding: 0 !important;
    background: transparent !important;
  }
  /* Reset wrapper paddings + force column layout */
  html body.page-id-29 .elementor-element[data-id="ac-why-grid"] .elementor-widget-icon-box {
    width: 100% !important;
    max-width: 100% !important;
    flex-basis: 100% !important;
    padding: 0 !important;
  }
  html body.page-id-29 .elementor-element[data-id="ac-why-grid"] .elementor-icon-box-wrapper {
    width: 100% !important;
    max-width: 100% !important;
    padding: 0 !important;
    flex-direction: row !important;
    align-items: flex-start !important;
    gap: 14px !important;
    text-align: left !important;
  }
  html body.page-id-29 .elementor-element[data-id="ac-why-grid"] .elementor-icon-box-content {
    width: auto !important;
    max-width: 100% !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
  }
  html body.page-id-29 .elementor-element[data-id="ac-why-grid"] .elementor-icon-box-icon {
    flex: 0 0 auto !important;
    width: 36px !important;
    height: 36px !important;
  }
  html body.page-id-29 .elementor-element[data-id="ac-why-grid"] .elementor-icon-box-title {
    font-size: 18px !important;
    line-height: 1.25 !important;
    text-align: left !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
  html body.page-id-29 .elementor-element[data-id="ac-why-grid"] .elementor-icon-box-description {
    font-size: 14px !important;
    line-height: 1.5 !important;
    text-align: left !important;
  }
}

/* ------------------------------------------------------------
   §84i — ACCOUNTANTS Why-grid: zigzag padding-right reset
   ROOT CAUSE 1: accountants.css :1280+ aplica
     padding-right:60/20/60/120 a child(2..5)
   ROOT CAUSE 2: §45 aplica padding:20px + background a -card classes;
     los widgets accw-grid items son icon-box, no -card, pero el
     accw-grid container puede ser afectado.
   FIX: padding 0 sobre widgets + wrapper, todos full-width.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body.page-id-69 [data-id="accw-grid"] > .elementor-element,
  html body.page-id-69 .elementor-element[data-id="accw-grid"] .elementor-widget-icon-box,
  html body.page-id-69 [data-id="accw-grid"] .elementor-widget-icon-box,
  html body.page-id-69 [data-id="accw-grid"] .elementor-widget-icon-box:nth-child(2),
  html body.page-id-69 [data-id="accw-grid"] .elementor-widget-icon-box:nth-child(3),
  html body.page-id-69 [data-id="accw-grid"] .elementor-widget-icon-box:nth-child(4),
  html body.page-id-69 [data-id="accw-grid"] .elementor-widget-icon-box:nth-child(5) {
    padding: 0 !important;
    padding-right: 0 !important;
    padding-left: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    flex-basis: 100% !important;
    background: transparent !important;
    box-shadow: none !important;
    margin: 0 0 16px 0 !important;
  }
  html body.page-id-69 [data-id="accw-grid"] > .elementor-element > .elementor-widget-container {
    padding: 0 !important;
    background: transparent !important;
  }
  html body.page-id-69 [data-id="accw-grid"] .elementor-icon-box-wrapper {
    width: 100% !important;
    max-width: 100% !important;
    padding: 0 !important;
    flex-direction: row !important;
    align-items: flex-start !important;
    gap: 14px !important;
  }
  html body.page-id-69 [data-id="accw-grid"] .elementor-icon-box-content {
    width: auto !important;
    max-width: 100% !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    text-align: left !important;
  }
  html body.page-id-69 [data-id="accw-grid"] .elementor-icon-box-title {
    font-size: 18px !important;
    line-height: 1.25 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
  html body.page-id-69 [data-id="accw-grid"] .elementor-icon-box-description {
    font-size: 14px !important;
    line-height: 1.5 !important;
  }
}

/* ------------------------------------------------------------
   §84j — ADVISORS Why-grid: misma zigzag pattern
   data-id="advw-grid"
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body.page-id-78 [data-id="advw-grid"] > .elementor-element,
  html body.page-id-78 .elementor-element[data-id="advw-grid"] .elementor-widget-icon-box,
  html body.page-id-78 [data-id="advw-grid"] .elementor-widget-icon-box,
  html body.page-id-78 [data-id="advw-grid"] .elementor-widget-icon-box:nth-child(n) {
    padding: 0 !important;
    padding-right: 0 !important;
    padding-left: 0 !important;
    margin: 0 0 16px 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    flex-basis: 100% !important;
    transform: none !important;
    background: transparent !important;
    box-shadow: none !important;
  }
  html body.page-id-78 [data-id="advw-grid"] > .elementor-element > .elementor-widget-container {
    padding: 0 !important;
    background: transparent !important;
  }
  html body.page-id-78 [data-id="advw-grid"] .elementor-icon-box-wrapper {
    width: 100% !important;
    max-width: 100% !important;
    padding: 0 !important;
    flex-direction: row !important;
    align-items: flex-start !important;
    gap: 14px !important;
  }
  html body.page-id-78 [data-id="advw-grid"] .elementor-icon-box-content {
    width: auto !important;
    max-width: 100% !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    text-align: left !important;
  }
  html body.page-id-78 [data-id="advw-grid"] .elementor-icon-box-title {
    font-size: 18px !important;
    line-height: 1.25 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
  html body.page-id-78 [data-id="advw-grid"] .elementor-icon-box-description {
    font-size: 14px !important;
    line-height: 1.5 !important;
  }
}

/* ------------------------------------------------------------
   §84k — ACCOUNTANTS H1 hero ya cubierto §81a (30px),
   pero verificar el adv-hero-h1 también.
   ADVISORS H1 50px → 30px mobile / 40px tablet
   ------------------------------------------------------------ */
@media (max-width: 767px) {
  html body.page-id-78 .elementor-element[data-id="adv-hero-h1"] h1,
  html body .elementor-element[data-id="adv-hero-h1"] h1.elementor-heading-title {
    font-size: 36px !important;
    line-height: 1.1 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body .elementor-element[data-id="adv-hero-h1"] h1 {
    font-size: 44px !important;
    line-height: 1.1 !important;
  }
}

/* ------------------------------------------------------------
   §84l — FAQ Hero H1 reducir mobile (Aquí respondemos...)
   ------------------------------------------------------------ */
@media (max-width: 767px) {
  html body.page-id-90 .elementor-element[data-id="faq-hero-sec"] h1,
  html body.page-id-90 .elementor-element[data-id="faq-hero-sec"] h2,
  html body .elementor-element[data-id="faq-hero-sec"] h1.elementor-heading-title,
  html body .elementor-element[data-id="faq-hero-sec"] h2.elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.2 !important;
    word-break: keep-all !important;
    hyphens: none !important;
  }
  html body.page-id-90 .elementor-element[data-id="faq-cta-sec"] h2 {
    font-size: 28px !important;
    line-height: 1.2 !important;
  }
}

/* ------------------------------------------------------------
   §84m — Universal safety: cualquier .elementor-icon-box-wrapper
   con width<200px en mobile, forzar column si content<140px.
   No es selectivo por página, sino para casos remanentes.
   NO se aplica a .ayc-* específicos para no romper diseños custom.
   ------------------------------------------------------------ */
@media (max-width: 480px) {
  html body.page-id-13 .elementor-icon-box-wrapper,
  html body.page-id-27 .elementor-icon-box-wrapper,
  html body.page-id-29 .elementor-icon-box-wrapper,
  html body.page-id-69 .elementor-icon-box-wrapper,
  html body.page-id-78 .elementor-icon-box-wrapper,
  html body.page-id-90 .elementor-icon-box-wrapper {
    /* No tocar layout — los selectores nucleares anteriores ya lo hacen,
       esto sólo asegura que cualquier widget que se nos haya escapado
       tenga al menos texto legible. */
    word-break: keep-all;
    hyphens: none;
  }
}

/* ------------------------------------------------------------
   §84n — Por-página: backup specificity boost para asegurar
   que header fixed se aplica en QS y otras estructuras custom.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body.page-id-13 header.elementor-location-header,
  html body.page-id-27 header.elementor-location-header,
  html body.page-id-29 header.elementor-location-header,
  html body.page-id-69 header.elementor-location-header,
  html body.page-id-78 header.elementor-location-header,
  html body.page-id-86 header.elementor-location-header,
  html body.page-id-87 header.elementor-location-header,
  html body.page-id-90 header.elementor-location-header {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    z-index: 9999 !important;
    background-color: #ffffff !important;
    overflow: visible !important;
  }
}

/* ============================================================
   §85 — FIX V2 — Figuras + Scrolls + Colores heredados
   (Auditoría completa Home/Servicios/Ayuda/Acc/Adv/QS/FAQ)
   - Solo @media (max-width:1024px) — desktop intacto
   - Hereda EXACTOS los colores/bg/border de desktop
   - Mantiene figuras circulares (w==h, aspect-ratio:1/1)
   - Elimina scrolls internos / "cropped" decorativos
   ============================================================ */

/* ------------------------------------------------------------
   §85a — UNIVERSAL CAROUSEL DOTS (todas las páginas)
   Bug: <button class="ayc-svc-dot|ayc-carousel-dot|qs-tl-dot">
   con font-size heredado (13.3px) y scrollWidth(28) > clientWidth(12).
   El "texto" oculto (aria-label u otro) crea scroll interno.
   Fix: font-size:0 + overflow:hidden + aspect-ratio + tamaños iguales
   para que sean círculos perfectos en mobile.
   Desktop ref: br 50%, w==h 12/15px (active), bg #9dc41a / #d1d5db.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body button.ayc-svc-dot,
  html body button.ayc-carousel-dot,
  html body button.qs-tl-dot,
  html body button.qs-team-dot,
  html body button.ayc-card-dot {
    font-size: 0 !important;
    line-height: 0 !important;
    overflow: hidden !important;
    text-indent: -9999px !important;
    padding: 0 !important;
    border: 0 !important;
    cursor: pointer !important;
    aspect-ratio: 1 / 1 !important;
    box-sizing: content-box !important;
    -webkit-appearance: none !important;
    appearance: none !important;
  }
  /* Tamaños/colores DELEGADOS a §94b/§94b-mobile (autoridad única de dots).
     §85a solo conserva el reset de scroll interno (font-size:0/overflow/aspect-ratio). */
}

/* ------------------------------------------------------------
   §85b — UNIVERSAL CAROUSEL ARROWS — heredan exacto desktop
   Desktop ref:
     .ayc-carousel-arrow  → 44x44, bg #1E2751, border 2px solid #9dc41a,
                            color #fff, br 50%, fs 28px.
     .qs-team-arrow       → 44x44, bg rgba(255,255,255,.95),
                            border 1px solid rgba(21,41,106,.12),
                            color #003366, br 50%, fs 18px.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body .ayc-carousel-arrow,
  html body .ayc-arrow-prev,
  html body .ayc-arrow-next {
    width: 44px !important;
    height: 44px !important;
    min-width: 44px !important;
    aspect-ratio: 1 / 1 !important;
    border-radius: 50% !important;
    background-color: rgb(30, 39, 81) !important;
    border: 2px solid rgb(157, 196, 26) !important;
    color: rgb(255, 255, 255) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 28px !important;
    line-height: 1 !important;
    padding: 0 !important;
    overflow: hidden !important;
    cursor: pointer !important;
  }
  html body .qs-team-arrow {
    width: 44px !important;
    height: 44px !important;
    min-width: 44px !important;
    aspect-ratio: 1 / 1 !important;
    border-radius: 50% !important;
    background-color: rgba(255, 255, 255, 0.95) !important;
    border: 1px solid rgba(21, 41, 106, 0.12) !important;
    color: rgb(0, 51, 102) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 18px !important;
    line-height: 1 !important;
    padding: 0 !important;
    overflow: hidden !important;
  }
}

/* ------------------------------------------------------------
   §85c — UNIVERSAL TESTIMONIAL AVATAR — círculo perfecto
   Desktop ref: 86×86, br 50%, object-fit cover.
   Mobile: igual. Forzar aspect-ratio para nunca volverse óvalo.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body .elementor-testimonial-image img,
  html body .elementor-testimonial__image img,
  html body .elementor-testimonial-wrapper .elementor-testimonial-image img {
    width: 86px !important;
    height: 86px !important;
    aspect-ratio: 1 / 1 !important;
    border-radius: 50% !important;
    object-fit: cover !important;
    object-position: center !important;
    flex-shrink: 0 !important;
  }
}

/* ------------------------------------------------------------
   §85d — QS PHILO B3 — neutralizar translateX(-50%)
   Bug: .qs-philo-b3 hereda transform: translateX(-50%) de desktop
   (regla quienes-somos.css l.713 para centrar el pentágono).
   En mobile/tablet con stack columnar, esto saca el item -260px
   off-screen (x=-143 en tablet, x=-152 en mobile).
   Fix: anular translateX en mobile, preservar la transition fade-in.
   Importante: NO usar transform:none (rompe fade JS).
   Usar translate(0,0) explícito post-animation.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body.page-id-87 .qs-philo-graphic .qs-philo-b3 {
    transform: translate(0, 0) !important;
    left: auto !important;
    top: auto !important;
    right: auto !important;
    position: static !important;
  }
  /* Re-asegurar el resto de items también sean static (column stack) */
  html body.page-id-87 .qs-philo-graphic .qs-philo-b1,
  html body.page-id-87 .qs-philo-graphic .qs-philo-b2,
  html body.page-id-87 .qs-philo-graphic .qs-philo-b4,
  html body.page-id-87 .qs-philo-graphic .qs-philo-b5 {
    position: static !important;
    left: auto !important;
    top: auto !important;
    right: auto !important;
    transform: translate(0, 0) !important;
  }
  /* Garantizar visibilidad fallback (la animación qsPhiloFallback ya
     pone opacity 1; aseguramos transform reset al finalizar) */
  html body.page-id-87 .qs-philo-graphic.is-visible .qs-philo-b3 {
    transform: translate(0, 0) !important;
  }
}

/* ------------------------------------------------------------
   §85e — QS PHILO CIRCLE (mobile) — heredar bg/border desktop SI
   se vuelve visible. En mobile §83q lo hace display:contents (correcto:
   icon absorbe rol). Sólo aseguramos que si algún screen-reader o
   layout test reactiva el circle, NO invente colores.
   Desktop ref: bg #FFFFFF, border 2px solid rgba(157,196,26,0.X).
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body.page-id-87 .qs-philo-item .qs-philo-circle:not([style*="display: none"]) {
    /* Hereda colores desktop exactos por si display:contents se anula */
    background-color: rgb(255, 255, 255) !important;
    border-color: rgba(157, 196, 26, 0.4) !important;
  }
}

/* ------------------------------------------------------------
   §85f — QS TEAM PHOTO — confirmar que es figura rectangular
   (NO circular) tal como en desktop. Garantizar bg gris desktop
   (rgb(214,222,229)) heredado y NO border-radius 50% por accidente.
   Desktop ref: 317×397 ratio ~ 0.8 (vertical), br 0px, bg #d6dee5.
   Mobile actual: 231×321 (ratio ~0.72 OK).
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body.page-id-87 .qs-team-photo {
    border-radius: 0 !important;
    background-color: rgb(214, 222, 229) !important;
    object-fit: cover !important;
    /* aspect-ratio matching desktop (317/397 ≈ 0.798) */
    aspect-ratio: 0.8 / 1 !important;
  }
}

/* ------------------------------------------------------------
   §85g — QS DIFF CIRCLE — heredar border 6px solid #9dc41a EXACTO
   Desktop ref: 120×120, bg #fff, border 6px solid rgb(157,196,26),
   br 50%.
   Mobile: 96×96 OK (más chico pero ratio 1:1). Forzar border y bg
   correctos para que NUNCA se rompa el estilo en ningún breakpoint.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body.page-id-87 .qs-diff-circle {
    aspect-ratio: 1 / 1 !important;
    border-radius: 50% !important;
    background-color: rgb(255, 255, 255) !important;
    border: 6px solid rgb(157, 196, 26) !important;
    box-sizing: border-box !important;
  }
}

/* ------------------------------------------------------------
   §85h — QS VALUE ICON & PHILO ICON — heredar bg desktop exacto.
   Desktop ref:
     .qs-value-icon  → 54×54 / 72×72 tablet, br 50%, bg #9dc41a.
     .qs-philo-icon  → 18×18 desktop pero mobile 44×44 (intencional
                       por §83q). Mantener bg #003366.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body.page-id-87 .qs-value-icon {
    aspect-ratio: 1 / 1 !important;
    border-radius: 50% !important;
    background-color: rgb(157, 196, 26) !important;
  }
  html body.page-id-87 .qs-philo-icon {
    aspect-ratio: 1 / 1 !important;
    border-radius: 50% !important;
    background-color: rgb(0, 51, 102) !important;
  }
}

/* ------------------------------------------------------------
   §85i — FAQ NUM CIRCLE — heredar bg verde desktop (#9dc41a),
   evitar deformación a óvalo.
   Mobile actual: 30×30 br 50% bg #9dc41a (perfecto).
   Sólo añadimos aspect-ratio guard.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body.page-id-90 .faq-num {
    aspect-ratio: 1 / 1 !important;
    border-radius: 50% !important;
    background-color: rgb(157, 196, 26) !important;
    flex-shrink: 0 !important;
  }
}

/* ------------------------------------------------------------
   §85j — UNIVERSAL SCROLL-X GUARD
   Elimina cualquier scroll horizontal interno en widgets que
   no deberían tenerlo (Elementor a veces aplica overflow:auto en
   .elementor-widget-container con padding mal calculado).
   NO afecta carruseles legítimos (.ayc-carousel-track, .swiper-*).
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body .elementor-widget-container,
  html body .elementor-column-wrap,
  html body .elementor-row,
  html body .elementor-section > .elementor-container {
    overflow-x: visible !important;
  }
  /* Excepción: carruseles propios sí pueden tener overflow */
  html body .ayc-carousel-track,
  html body .ayc-svc-track,
  html body .qs-team-track {
    overflow-x: visible !important; /* track usa transform, no scroll */
  }
  /* El viewport del carrusel sí debe esconder lo que sobre */
  html body .ayc-carousel-viewport,
  html body .ayc-svc-viewport,
  html body .qs-team-viewport {
    overflow-x: hidden !important;
    overflow-y: visible !important;
  }
}

/* ------------------------------------------------------------
   §85k — UNIVERSAL CTA BUTTON SAFETY (carrusel + cards)
   Asegura que cualquier .elementor-button dentro de cards o
   tracks de carrusel tenga:
   - min-height 44px táctil
   - white-space: normal (texto puede romper en 2 lines si necesario)
   - display inline-flex centrado
   - font-size razonable (no más de 18px en mobile excepto los hero
     que ya tienen su propia regla)
   NO toca colores: respeta los heredados de Elementor.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body .ayc-carousel-track a.elementor-button,
  html body .ayc-svc-track a.elementor-button,
  html body .ayc-card a.elementor-button,
  html body [class*="card"] a.ayc-card-cta-btn,
  html body .ayc-card-cta-btn {
    min-height: 44px !important;
    white-space: normal !important;
    word-break: keep-all !important;
    hyphens: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    line-height: 1.2 !important;
    box-sizing: border-box !important;
    overflow: visible !important;
  }
}

/* ------------------------------------------------------------
   §85l — UNIVERSAL CARD IMAGES — círculos / ovalados
   Si una <img> dentro de .ayc-card-image, .ayc-card-photo,
   o un wrapper con clase *photo*/*avatar* tiene br>=50%,
   forzar aspect-ratio 1:1 + object-fit cover para no deformar.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body .ayc-card-photo,
  html body .ayc-card-avatar,
  html body img.is-circle,
  html body [class*="avatar"] img,
  html body [class*="-photo"] img.is-round {
    aspect-ratio: 1 / 1 !important;
    border-radius: 50% !important;
    object-fit: cover !important;
    object-position: center !important;
  }
}

/* ------------------------------------------------------------
   §85m — UNIVERSAL ELEMENTOR ICON-BOX ICON (círculo)
   Asegura que .elementor-icon dentro de un wrapper con
   border-radius:50% mantiene aspect-ratio 1:1 (evita óvalos
   cuando Elementor calcula width/height por separado).
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html body .elementor-icon-wrapper .elementor-icon[style*="border-radius: 50%"],
  html body .elementor-icon[style*="border-radius:50%"],
  html body .elementor-shape-circle .elementor-icon {
    aspect-ratio: 1 / 1 !important;
  }
}

/* ------------------------------------------------------------
   §85n — Guard final: prevenir body scroll horizontal global
   en mobile. Si alguna regla anterior deja un widget desbordando,
   este límite duro asegura que el usuario NUNCA vea scroll-x global.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  html, body {
    overflow-x: hidden !important;
    max-width: 100vw !important;
  }
}

/* ============================================================
   §86 — SERVICIOS (page-id 27) MOBILE/TABLET POLISH
   Fixes específicos detectados post §82+/§85: tabs ilegibles,
   checklist Ayuda 5col truncada, paddings y reveal failsafes.
   Desktop NO se toca (todo dentro de @media ≤1024px).
   ============================================================ */

/* §86a — TABS 2/3 inactive readability mobile + tablet
   En desktop quedan dark-on-dark (heredan color del kit) pero
   en mobile/tablet los tabs son grandes y la falta de contraste
   se vuelve crítica. Forzamos texto blanco en tabs inactivos.
   El tab activo (.ayc-btn-active) mantiene su color navy sobre
   verde corporativo (#9dc41a / #003366). */
@media (max-width: 1024px) {
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab2"] .elementor-button:not(.ayc-btn-active),
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab3"] .elementor-button:not(.ayc-btn-active),
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab1"] .elementor-button:not(.ayc-btn-active) {
    color: #ffffff !important;
    background: #1e2751 !important;
    border-color: #1e2751 !important;
  }
  /* Active tab keep green palette consistent — texto blanco para
     emparejar desktop (que tras eliminar §57 muestra blanco sobre #9dc41a). */
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab1"] .elementor-button.ayc-btn-active,
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab2"] .elementor-button.ayc-btn-active,
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab3"] .elementor-button.ayc-btn-active {
    color: #ffffff !important;
    background: #9dc41a !important;
    border-color: #9dc41a !important;
  }
}

/* §86b — CHECKLIST Card B (Ayuda Center) overflow fix.
   overrides.css linea 6216 fuerza repeat(5,1fr) lo que en mobile
   y tablet corta texto largo ("Aplicaciones para residencia
   (green card)"). servicios.css §86+ extends §82f para page-27,
   que estaba excluida. Mobile: 1 col, Tablet: 2 col. */
@media (max-width: 480px) {
  html body.page-id-27 .elementor-27 .ayc-checklist-grid,
  html body.page-id-27 .elementor-27 .ayc-checklist-grid.ayc-cols-3,
  html body.page-id-27 .elementor-27 .ayc-checklist-grid.ayc-cols-4,
  html body.page-id-27 .elementor-27 .ayc-checklist-grid.ayc-cols-5,
  html body.page-id-27 .elementor-27 [data-id="svc-card-a"] .ayc-checklist-grid,
  html body.page-id-27 .elementor-27 [data-id="svc-card-b"] .ayc-checklist-grid,
  html body.page-id-27 .elementor-27 [data-id="svc-card-c"] .ayc-checklist-grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 10px 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 0 16px 0 !important;
  }
}
@media (min-width: 481px) and (max-width: 1024px) {
  html body.page-id-27 .elementor-27 .ayc-checklist-grid,
  html body.page-id-27 .elementor-27 .ayc-checklist-grid[class*="ayc-cols"],
  html body.page-id-27 .elementor-27 [data-id="svc-card-a"] .ayc-checklist-grid,
  html body.page-id-27 .elementor-27 [data-id="svc-card-b"] .ayc-checklist-grid,
  html body.page-id-27 .elementor-27 [data-id="svc-card-c"] .ayc-checklist-grid {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 10px 16px !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 0 16px 0 !important;
  }
}

/* §86c — CHECK ITEMS Servicios: no truncate, wrap natural */
@media (max-width: 1024px) {
  html body.page-id-27 .elementor-27 .ayc-check-item {
    display: flex !important;
    align-items: flex-start !important;
    gap: 8px !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    color: #374151 !important;
    word-break: keep-all !important;
    overflow-wrap: break-word !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: normal !important;
    line-height: 1.4 !important;
  }
  html body.page-id-27 .elementor-27 .ayc-check-item .ayc-check {
    flex-shrink: 0 !important;
  }
}
@media (max-width: 767px) {
  html body.page-id-27 .elementor-27 .ayc-check-item {
    font-size: 15px !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-27 .elementor-27 .ayc-check-item {
    font-size: 16px !important;
  }
}

/* §86d — REVEAL FAILSAFE: si el IntersectionObserver no ha
   disparado (e.g. user llega a un anchor, screenshot tool,
   prefers-reduced-motion), asegurar que tras 1.2s todo es
   visible. Aplica via animation que setea opacity:1 al final
   sin tocar transform — sólo failsafe. Sólo mobile/tablet
   donde el problema es más probable.

   Targets: svc-intro-title, svc-intro-sub, svc-tab1/2/3,
   svc-cta-inner — los elementos con opacity:0 inicial. */
@media (max-width: 1024px) {
  @keyframes ayc-svc-failsafe-show {
    0%, 90%   { opacity: var(--ayc-fs-start, 0); }
    100%      { opacity: 1; }
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-title"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-sub"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab1"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab2"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab3"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cta-inner"] {
    animation: ayc-svc-failsafe-show 1.6s ease 0.8s forwards !important;
  }
  /* Si el observer ya disparó (clase de in-view presente) overrideamos
     a opacity:1 inmediato — no esperar. */
  html body.page-id-27 .elementor-27 .ayc-reveal-up.ayc-reveal-up-in,
  html body.page-id-27 .elementor-27 .ayc-svc-visible {
    opacity: 1 !important;
    transform: translateY(0) !important;
    animation: none !important;
  }
  html body.page-id-27 .elementor-27 [data-id="svc-tabs-row"].ayc-tabs-entered [data-id="svc-tab1"],
  html body.page-id-27 .elementor-27 [data-id="svc-tabs-row"].ayc-tabs-entered [data-id="svc-tab2"],
  html body.page-id-27 .elementor-27 [data-id="svc-tabs-row"].ayc-tabs-entered [data-id="svc-tab3"] {
    opacity: 1 !important;
    transform: translateY(0) !important;
  }
}

/* §86e — Empty band entre intro y cards: el margin-top:-40px
   de svc-intro-sec deja la intro-card pisando el hero, pero
   svc-cards-sec sigue con padding-top heredado. En mobile
   eliminamos la sobre-separación. */
@media (max-width: 767px) {
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cards-sec"] {
    padding-top: 8px !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tabs-row"] {
    padding-top: 16px !important;
    padding-bottom: 4px !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-card-a-wrap"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-card-b-wrap"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-card-c-wrap"] {
    padding-top: 8px !important;
    margin-bottom: 28px !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-sec"] {
    padding-bottom: 8px !important;
  }
}

/* §86f — CARD BODY paddings sanos mobile + asegurar fondo blanco
   completo + el .ayc-card-body suficiente espacio entre Incluye
   y el CTA. */
@media (max-width: 767px) {
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-body {
    padding: 28px 18px 32px !important;
    background: #ffffff !important;
  }
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-title {
    font-size: 22px !important;
    line-height: 1.2 !important;
    margin-bottom: 8px !important;
  }
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-desc {
    font-size: 14px !important;
    line-height: 1.5 !important;
  }
  /* "Incluye:" header centered, navy */
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-body > h3,
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-body > h4,
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-body strong {
    color: #1e2751 !important;
  }
}

/* §86g0 — CRÍTICO: .ayc-card-cta wrapper en servicios.css:252
   tiene position:absolute; bottom:-24px que en mobile causa
   solapamiento del CTA con los últimos items "Talento
   especializado" / "Relocalización corporativa". Devolverlo a
   flow normal en mobile/tablet. */
@media (max-width: 1024px) {
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-cta,
  html body.page-id-27 .elementor-27 [data-id="svc-card-a"] .ayc-card-cta,
  html body.page-id-27 .elementor-27 [data-id="svc-card-b"] .ayc-card-cta,
  html body.page-id-27 .elementor-27 [data-id="svc-card-c"] .ayc-card-cta {
    position: static !important;
    bottom: auto !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    margin: 8px 0 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    z-index: auto !important;
  }
}

/* §86g — Card CTA buttons servicios full-width mobile, tap 48px.
   overrides.css usa font-size:31px y padding gigante en desktop
   — ese valor en mobile rompe layout. Forzar mobile-friendly. */
@media (max-width: 767px) {
  html body.page-id-27 .elementor-27 .ayc-card-cta-btn:not(#nope),
  html body.page-id-27 .elementor-27 .ayc-card-btn:not(#nope) {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-height: 48px !important;
    padding: 14px 18px !important;
    font-size: 16px !important;
    line-height: 1.25 !important;
    margin: 16px auto 0 !important;
    background: #9dc41a !important;
    color: #ffffff !important;
    border: none !important;
    border-radius: 8px !important;
    text-align: center !important;
    box-shadow: 0 2px 8px rgba(157,196,26,0.25) !important;
    box-sizing: border-box !important;
    white-space: normal !important;
    word-break: keep-all !important;
    overflow: visible !important;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-27 .elementor-27 .ayc-card-cta-btn:not(#nope),
  html body.page-id-27 .elementor-27 .ayc-card-btn:not(#nope) {
    display: inline-block !important;
    min-height: 48px !important;
    padding: 14px 36px !important;
    font-size: 20px !important;
    line-height: 1.25 !important;
    background: #9dc41a !important;
    color: #ffffff !important;
    border-radius: 8px !important;
    box-shadow: 0 2px 10px rgba(157,196,26,0.30) !important;
    white-space: normal !important;
  }
}

/* §86h — TABS row: justify center, gap fino, max-width consistente.
   Mobile pequeño (480-) stack vertical; tablet/mobile grande row. */
@media (max-width: 480px) {
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tabs-row"] > .e-con-inner {
    flex-direction: column !important;
    gap: 6px !important;
    max-width: 100% !important;
    padding: 0 !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab1"] .elementor-button,
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab2"] .elementor-button,
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab3"] .elementor-button {
    border-radius: 8px !important;
    min-height: 48px !important;
    font-size: 16px !important;
    padding: 12px 18px !important;
    width: 100% !important;
    white-space: normal !important;
  }
}
@media (min-width: 481px) and (max-width: 1024px) {
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tabs-row"] > .e-con-inner {
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    gap: 6px !important;
    max-width: 100% !important;
    padding: 0 !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab1"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab2"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab3"] {
    flex: 1 1 0 !important;
    min-width: 0 !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab1"] .elementor-button,
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab2"] .elementor-button,
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-tab3"] .elementor-button {
    border-radius: 8px 8px 0 0 !important;
    min-height: 52px !important;
    font-size: 14px !important;
    padding: 12px 8px !important;
    width: 100% !important;
    white-space: normal !important;
    line-height: 1.2 !important;
  }
}

/* §86i — CARD IMAGE + OVERLAY mobile: la imagen debe ser tall
   suficiente para que el overlay quepa SIN sobresalir por arriba.
   El overlay tiene title+desc ~250px. Hacemos image min-height
   360px (deja ~100px visibles arriba para imagen+badge). */
@media (max-width: 767px) {
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-image {
    height: 360px !important;
    min-height: 360px !important;
    max-height: none !important;
    aspect-ratio: auto !important;
    border-radius: 12px 12px 0 0 !important;
    overflow: hidden !important;
    position: relative !important;
    background-size: cover !important;
    background-position: center center !important;
    background-repeat: no-repeat !important;
    background-color: transparent !important;
  }
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-overlay {
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    top: auto !important;
    transform: none !important;
    width: 100% !important;
    max-width: 100% !important;
    padding: 24px 16px 22px !important;
    border-radius: 0 !important;
    background: rgba(19, 28, 64, 0.78) !important;
    -webkit-backdrop-filter: blur(4px) !important;
    backdrop-filter: blur(4px) !important;
  }
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-overlay .ayc-card-title {
    margin-top: 8px !important;
  }
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-badge {
    width: 44px !important;
    height: 44px !important;
    font-size: 18px !important;
    flex-shrink: 0 !important;
    z-index: 25 !important;
  }
}

/* §86j — CTA section mobile: H2 wraps en líneas cómodas, sub legible */
@media (max-width: 767px) {
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cta-sec"] {
    padding: 40px 16px !important;
    min-height: 0 !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cta-inner"] {
    padding: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cta-h2"] .elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.2 !important;
    margin: 0 0 16px 0 !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cta-sub"] .elementor-heading-title {
    font-size: 16px !important;
    line-height: 1.5 !important;
    margin: 0 0 24px 0 !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cta-btn"] .elementor-button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 48px !important;
    font-size: 18px !important;
    padding: 12px 32px !important;
    white-space: normal !important;
    background: #9dc41a !important;
    color: #ffffff !important; /* heredar desktop: blanco sobre verde */
    border-radius: 8px !important;
  }
}

/* §86k — Hero mobile: H1 no se rompe raro, sub balanceado, botón
   más prominente y a ancho útil. */
@media (max-width: 767px) {
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-hero-sec"] {
    padding: 80px 16px 32px !important;
    min-height: 480px !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-hero-h1"] {
    padding: 24px 0 0 !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-hero-h1"] h1.elementor-heading-title {
    font-size: 30px !important;
    line-height: 1.15 !important;
    word-break: keep-all !important;
    overflow-wrap: break-word !important;
    hyphens: none !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-hero-sub"] {
    padding: 12px 0 24px !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-hero-sub"] .elementor-heading-title {
    font-size: 16px !important;
    line-height: 1.5 !important;
    color: #ffffff !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-hero-btn"] {
    padding: 8px 0 16px !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-hero-btn"] .elementor-button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 48px !important;
    font-size: 18px !important;
    padding: 12px 28px !important;
    background: #9dc41a !important;
    color: #ffffff !important; /* heredar desktop: blanco sobre verde */
    border-radius: 8px !important;
    white-space: normal !important;
  }
}

/* §86l — Intro card mobile: padding sano, texto centrado legible,
   sin scroll horizontal en línea con LOGO inline. */
@media (max-width: 767px) {
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-sec"] {
    padding: 24px 16px !important;
    margin-top: -16px !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-inner"] {
    max-width: 100% !important;
    width: 100% !important;
    padding: 24px 18px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    background: #eceeef !important;
    border-radius: 12px !important;
    box-sizing: border-box !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-title"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-sub"] {
    padding: 0 !important;
    text-align: center !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-title"] p,
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-title"] p span,
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-sub"] p {
    font-size: 17px !important;
    line-height: 1.5 !important;
  }
  /* Logo inline en intro: no se desborde */
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-title"] img {
    display: inline-block !important;
    vertical-align: middle !important;
    max-width: 90px !important;
    height: auto !important;
    margin: 0 4px !important;
  }
}

/* §86m — TABLET refinements: cards más anchas, paddings balanceados.
   También: intro-inner tiene margin-left/right:80px hardcoded en
   servicios.css:96 → desborda en tablet (88% + 160px = 89% del
   viewport extra). Resetear márgenes + ancho contenido. */
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-27 .elementor-27 .ayc-service-card {
    max-width: 96% !important;
    margin: 0 auto !important;
  }
  html body.page-id-27 .elementor-27 .ayc-service-card .ayc-card-body {
    padding: 36px 32px 40px !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cards-sec"] {
    padding-top: 12px !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-card-a-wrap"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-card-b-wrap"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-card-c-wrap"] {
    padding: 12px 0 0 !important;
    margin-bottom: 24px !important;
  }
  /* CRÍTICO: intro-inner sin desborde lateral */
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-sec"] {
    padding: 36px 24px !important;
    margin-top: -40px !important;
  }
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-inner"] {
    max-width: 100% !important;
    width: 100% !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding: 36px 32px !important;
    box-sizing: border-box !important;
  }
}

/* §86n — Guard final servicios: prevenir cualquier scroll-x dentro
   de cards/secciones, y forzar widget containers visibles overflow. */
@media (max-width: 1024px) {
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cards-sec"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-hero-sec"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-intro-sec"],
  html body.page-id-27 .elementor-27 .elementor-element[data-id="svc-cta-sec"],
  html body.page-id-27 .elementor-27 .ayc-service-card,
  html body.page-id-27 .elementor-27 .ayc-card-body {
    overflow-x: clip !important;
    max-width: 100% !important;
  }
}

/* ============================================================
   §87a — DESKTOP: Servicios sub-menu (custom #ayc-svc-dropdown)
   ============================================================
   Diagnóstico: el dropdown se genera por JS (animations.js
   initServiciosDropdown) appended a <body>. Estilos previos: bg
   blanco + texto #374151 = contraste pobre, sin paleta de marca,
   poco prominente. Los estilos se inyectaban en <style> y eran
   fácilmente sobreescritos. Aquí re-aplicamos con specificity alta
   `html body #ayc-svc-dropdown` y !important para garantizar
   contraste, paleta navy+verde y micro-animación de entrada. */
html body #ayc-svc-dropdown {
  background: #003366 !important;
  background-color: #003366 !important;
  border-top: 4px solid #9dc41a !important;
  border-radius: 0 0 14px 14px !important;
  box-shadow: 0 14px 42px rgba(0, 51, 102, 0.32),
              0 4px 12px rgba(0, 0, 0, 0.15) !important;
  padding: 10px 0 !important;
  min-width: 260px !important;
  overflow: hidden !important;
  /* Micro-animación de entrada cuando JS hace display:block */
  animation: aycSvcDropdownIn 0.22s cubic-bezier(0.16, 1, 0.3, 1) both !important;
}
@keyframes aycSvcDropdownIn {
  from { opacity: 0; transform: translateY(-8px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0)    scale(1); }
}
html body #ayc-svc-dropdown a,
html body #ayc-svc-dropdown a:link,
html body #ayc-svc-dropdown a:visited {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 13px 22px !important;
  font-size: 15px !important;
  font-weight: 500 !important;
  color: #ffffff !important;
  background: transparent !important;
  font-family: "Open Sans", "Inter", sans-serif !important;
  text-decoration: none !important;
  letter-spacing: 0.2px !important;
  border-left: 3px solid transparent !important;
  transition: background 0.18s ease, color 0.18s ease,
              border-color 0.18s ease, padding 0.18s ease !important;
  position: relative !important;
}
html body #ayc-svc-dropdown a + a {
  border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
}
/* Chevron sutil que aparece al hover */
html body #ayc-svc-dropdown a::after {
  content: "" !important;
  margin-left: auto !important;
  width: 6px !important;
  height: 6px !important;
  border-right: 2px solid currentColor !important;
  border-top: 2px solid currentColor !important;
  transform: rotate(45deg) translateX(-4px) !important;
  opacity: 0 !important;
  transition: opacity 0.18s ease, transform 0.18s ease !important;
}
html body #ayc-svc-dropdown a:hover,
html body #ayc-svc-dropdown a:focus,
html body #ayc-svc-dropdown a:focus-visible {
  background: #9dc41a !important;
  color: #003366 !important;
  border-left-color: #003366 !important;
  padding-left: 26px !important;
  outline: none !important;
}
html body #ayc-svc-dropdown a:hover::after,
html body #ayc-svc-dropdown a:focus::after {
  opacity: 0.9 !important;
  transform: rotate(45deg) translateX(0) !important;
}
html body #ayc-svc-dropdown a:active {
  background: #8ab016 !important;
}
/* Respeta usuarios con preferencia reduce-motion */
@media (prefers-reduced-motion: reduce) {
  html body #ayc-svc-dropdown { animation: none !important; }
  html body #ayc-svc-dropdown a {
    transition: background 0.05s linear, color 0.05s linear !important;
  }
}
/* Mobile: el dropdown #ayc-svc-dropdown no se usa (drawer hamburger lo reemplaza) */
@media (max-width: 1024px) {
  html body #ayc-svc-dropdown { display: none !important; }
}

/* ============================================================
   §87b — MOBILE: animaciones, interactividad y feedback táctil
   ============================================================
   Capa complementaria SOLO mobile/tablet (<=1024px). NO afecta
   desktop. Las clases .ayc-m-reveal-* las añade JS via
   IntersectionObserver (handler `initMobileInteractivity` al final
   de animations.js). Respeta prefers-reduced-motion. */

/* 1) Scroll-reveal mobile genérico — fade + slide-up con stagger */
@media (max-width: 1024px) {
  .ayc-m-reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.65s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.65s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform;
  }
  .ayc-m-reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
  }
  .ayc-m-reveal-left {
    opacity: 0;
    transform: translateX(-24px);
    transition: opacity 0.65s ease, transform 0.65s ease;
  }
  .ayc-m-reveal-left.is-visible { opacity: 1; transform: translateX(0); }
  .ayc-m-reveal-right {
    opacity: 0;
    transform: translateX(24px);
    transition: opacity 0.65s ease, transform 0.65s ease;
  }
  .ayc-m-reveal-right.is-visible { opacity: 1; transform: translateX(0); }
  .ayc-m-reveal-scale {
    opacity: 0;
    transform: scale(0.92);
    transition: opacity 0.55s ease, transform 0.55s ease;
  }
  .ayc-m-reveal-scale.is-visible { opacity: 1; transform: scale(1); }

  /* Stagger por índice (data-stagger="N") */
  .ayc-m-reveal[data-stagger="1"],
  .ayc-m-reveal-left[data-stagger="1"],
  .ayc-m-reveal-right[data-stagger="1"],
  .ayc-m-reveal-scale[data-stagger="1"] { transition-delay: 0.08s; }
  .ayc-m-reveal[data-stagger="2"],
  .ayc-m-reveal-left[data-stagger="2"],
  .ayc-m-reveal-right[data-stagger="2"],
  .ayc-m-reveal-scale[data-stagger="2"] { transition-delay: 0.16s; }
  .ayc-m-reveal[data-stagger="3"],
  .ayc-m-reveal-left[data-stagger="3"],
  .ayc-m-reveal-right[data-stagger="3"],
  .ayc-m-reveal-scale[data-stagger="3"] { transition-delay: 0.24s; }
  .ayc-m-reveal[data-stagger="4"],
  .ayc-m-reveal-left[data-stagger="4"],
  .ayc-m-reveal-right[data-stagger="4"],
  .ayc-m-reveal-scale[data-stagger="4"] { transition-delay: 0.32s; }
  .ayc-m-reveal[data-stagger="5"],
  .ayc-m-reveal-left[data-stagger="5"],
  .ayc-m-reveal-right[data-stagger="5"],
  .ayc-m-reveal-scale[data-stagger="5"] { transition-delay: 0.40s; }
}

/* 2) CTA buttons mobile: feedback :active + idle pulse glow del CTA primario */
@media (max-width: 1024px) {
  .elementor-button {
    transition: transform 0.18s ease,
                box-shadow 0.18s ease,
                background-color 0.18s ease !important;
  }
  .elementor-button:active {
    transform: scale(0.96) !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18) !important;
  }
  /* Tap feedback con ripple sutil */
  .elementor-button-wrapper,
  a.elementor-button,
  button.elementor-button {
    -webkit-tap-highlight-color: rgba(157, 196, 26, 0.25);
  }
  /* CTA primario verde (paleta): pulse glow sutil cuando entra al viewport */
  .elementor-button[href*="contacto"],
  .elementor-button[href*="wa.me"],
  .elementor-button[href*="agendar"],
  .ayc-m-cta-glow .elementor-button {
    animation: aycMCtaGlow 2.6s ease-in-out 1.2s infinite;
  }
  @keyframes aycMCtaGlow {
    0%, 100% { box-shadow: 0 4px 12px rgba(157, 196, 26, 0.25); }
    50%      { box-shadow: 0 6px 22px rgba(157, 196, 26, 0.55); }
  }
}

/* 3) Card touch effect mobile: tap-down feedback */
@media (max-width: 1024px) {
  .ayc-service-card,
  .elementor-post__card,
  .elementor-widget-testimonial .elementor-testimonial,
  .ayc-card,
  .ayc-m-tap-card {
    transition: transform 0.2s ease, box-shadow 0.2s ease !important;
    -webkit-tap-highlight-color: transparent;
  }
  .ayc-service-card:active,
  .elementor-post__card:active,
  .elementor-widget-testimonial .elementor-testimonial:active,
  .ayc-card:active,
  .ayc-m-tap-card:active {
    transform: scale(0.985) translateY(-2px) !important;
    box-shadow: 0 14px 32px rgba(0, 51, 102, 0.18) !important;
  }
}

/* 4) Heading entrance: clases ayc-m-h-* aplicadas por JS */
@media (max-width: 1024px) {
  .ayc-m-heading {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.7s ease, transform 0.7s ease;
  }
  .ayc-m-heading.is-visible {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 5) Icon reveal bounce: subtle pop on entry */
@media (max-width: 1024px) {
  .ayc-m-icon-pop {
    opacity: 0;
    transform: scale(0.6);
    transition: opacity 0.45s ease, transform 0.55s cubic-bezier(0.34, 1.56, 0.64, 1);
  }
  .ayc-m-icon-pop.is-visible {
    opacity: 1;
    transform: scale(1);
  }
}

/* 6) Smooth scroll para anchors mobile (sin afectar desktop) */
@media (max-width: 1024px) {
  html { scroll-behavior: smooth; }
}

/* 7) Floating WhatsApp CTA — solo mobile/tablet */
@media (max-width: 1024px) {
  #ayc-fab-whatsapp {
    position: fixed;
    right: 16px;
    bottom: 18px;
    z-index: 9990;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #25D366;
    box-shadow: 0 6px 18px rgba(37, 211, 102, 0.45),
                0 2px 8px rgba(0, 0, 0, 0.18);
    display: flex !important;
    align-items: center;
    justify-content: center;
    text-decoration: none !important;
    color: #ffffff !important;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    animation: aycFabPulse 2.4s ease-in-out infinite;
  }
  #ayc-fab-whatsapp svg {
    width: 30px;
    height: 30px;
    fill: #ffffff;
  }
  #ayc-fab-whatsapp:active {
    transform: scale(0.92);
    animation: none;
  }
  #ayc-fab-whatsapp::after {
    content: "";
    position: absolute;
    inset: -6px;
    border-radius: 50%;
    border: 2px solid rgba(37, 211, 102, 0.55);
    opacity: 0;
    animation: aycFabRing 2.4s ease-out infinite;
    pointer-events: none;
  }
  @keyframes aycFabPulse {
    0%, 100% { box-shadow: 0 6px 18px rgba(37, 211, 102, 0.45),
                            0 2px 8px rgba(0, 0, 0, 0.18); }
    50%      { box-shadow: 0 8px 28px rgba(37, 211, 102, 0.75),
                            0 2px 12px rgba(0, 0, 0, 0.22); }
  }
  @keyframes aycFabRing {
    0%   { opacity: 0.7; transform: scale(1); }
    80%  { opacity: 0;   transform: scale(1.45); }
    100% { opacity: 0;   transform: scale(1.45); }
  }
  /* Hide FAB when drawer/menu is open */
  body.ayc-menu-open #ayc-fab-whatsapp {
    opacity: 0;
    pointer-events: none;
    transform: scale(0.8);
  }
}

/* 8) Accesibilidad: respetar prefers-reduced-motion en TODA §87b */
@media (max-width: 1024px) and (prefers-reduced-motion: reduce) {
  .ayc-m-reveal,
  .ayc-m-reveal-left,
  .ayc-m-reveal-right,
  .ayc-m-reveal-scale,
  .ayc-m-heading,
  .ayc-m-icon-pop {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .elementor-button[href*="contacto"],
  .elementor-button[href*="wa.me"],
  .elementor-button[href*="agendar"],
  .ayc-m-cta-glow .elementor-button {
    animation: none !important;
  }
  #ayc-fab-whatsapp,
  #ayc-fab-whatsapp::after { animation: none !important; }
  html { scroll-behavior: auto; }
}

/* ============================================================
   §88 — MOBILE ANIMATION HARDENING (QA pass 2026-05-18)
   ============================================================
   Defensas adicionales descubiertas tras QA en 8 páginas:
   1) Failsafe CSS @keyframes que fuerza opacity:1 si el
      IntersectionObserver falla por scroll ultra-rápido,
      Elementor lazy-render o tabs/carruseles que mutan DOM.
   2) Aislamiento de tap-cards en sliders 3rd-party
      (testimoniales con Swiper que setean opacity inline).
   3) Specificity boost del CTA glow para que no lo pisen
      animaciones existentes (ayc-pulse de §82h).
   4) prefers-reduced-motion sigue respetado al 100%.
   NO altera desktop. */

/* §88a — FAILSAFE: si el observer no marca is-visible en 2.5s
   tras el load, una animación retrasada garantiza opacity:1
   sin transform (entra "discretamente" sin saltar). Solo se
   aplica a elementos que aún NO tienen is-visible. */
@media (max-width: 1024px) {
  @keyframes aycMFailsafeReveal {
    0%   { opacity: 0; }
    100% { opacity: 1; }
  }
  .ayc-m-reveal:not(.is-visible),
  .ayc-m-reveal-left:not(.is-visible),
  .ayc-m-reveal-right:not(.is-visible),
  .ayc-m-reveal-scale:not(.is-visible),
  .ayc-m-heading:not(.is-visible),
  .ayc-m-icon-pop:not(.is-visible) {
    /* fires once after 2.5s if observer missed; transition still
       handles is-visible toggle normally if observer DOES fire */
    animation: aycMFailsafeReveal 0.6s ease 2.5s forwards;
  }
}

/* §88b — Tap-cards inside 3rd-party sliders (Elementor testimonial
   con Swiper/carousel) NO deben quedar a opacity:0 si el slider
   inyecta opacity inline. Forzamos opacity:1 cuando .ayc-m-reveal
   está dentro de .swiper-slide o .elementor-widget-testimonial
   ya inicializado. */
@media (max-width: 1024px) {
  .swiper-slide .ayc-m-reveal,
  .swiper-slide .ayc-m-reveal-left,
  .swiper-slide .ayc-m-reveal-right,
  .swiper-slide .ayc-m-reveal-scale,
  .swiper-slide .ayc-m-heading,
  .swiper-slide .ayc-m-icon-pop,
  .elementor-widget-testimonial.ayc-m-reveal {
    opacity: 1 !important;
    transform: none !important;
  }
}

/* §88c — CTA glow specificity boost: la regla §87b §2 podía ser
   sobreescrita por .elementor-button con animación ayc-pulse de §82h
   (mayor especificidad por anidación). Aquí elevamos. */
@media (max-width: 1024px) {
  a.elementor-button[href*="contacto"],
  a.elementor-button[href*="wa.me"],
  a.elementor-button[href*="agendar"],
  .ayc-m-cta-glow a.elementor-button {
    animation: aycMCtaGlow 2.6s ease-in-out 1.2s infinite !important;
  }
}

/* §88d — Guard absoluto: si JS está deshabilitado o falla
   por completo, ningún contenido debe quedar invisible. */
@media (max-width: 1024px) {
  html.no-js .ayc-m-reveal,
  html.no-js .ayc-m-reveal-left,
  html.no-js .ayc-m-reveal-right,
  html.no-js .ayc-m-reveal-scale,
  html.no-js .ayc-m-heading,
  html.no-js .ayc-m-icon-pop {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
}

/* §88e — Failsafe debe respetar prefers-reduced-motion */
@media (max-width: 1024px) and (prefers-reduced-motion: reduce) {
  .ayc-m-reveal:not(.is-visible),
  .ayc-m-reveal-left:not(.is-visible),
  .ayc-m-reveal-right:not(.is-visible),
  .ayc-m-reveal-scale:not(.is-visible),
  .ayc-m-heading:not(.is-visible),
  .ayc-m-icon-pop:not(.is-visible) {
    animation: none !important;
    opacity: 1 !important;
  }
  a.elementor-button[href*="contacto"],
  a.elementor-button[href*="wa.me"],
  a.elementor-button[href*="agendar"] {
    animation: none !important;
  }
}

/* ============================================================
   §89 — PARAGRAPH STANDARDIZATION DESKTOP (≥1025px)
   ------------------------------------------------------------
   Objetivo: unificar el tamano de los parrafos body en TODAS
   las paginas a un piso comodo de lectura. Antes:
     - Home/Servicios/Advisors/Accountants/Ayuda: 18-20px (comodo)
     - FAQ: 17px (un poco bajo)
     - Quienes Somos .qs-value-body: 13.5px (anomalia)
     - Quienes Somos .qs-diff-body: 13px (anomalia)
     - Quienes Somos .qs-intro-text1 / qs-philo-text: 17px
     - Quienes Somos qs-stats-foot/team-text/team-foot: 16px
   Decision: ESTANDAR 18px (ligeramente mayor que el 17px y
   muy mayor que los 13-13.5px anomalos). NO bajamos los que
   ya estan a 20-22-26px (esos son leads/highlights intencionales).
   Excepciones preservadas:
     - Disclaimer legal: 11px (microcopy regulatorio)
     - Footer copyright (.ftr_copy): 14px
     - Timeline desc (.qs-tl-desc): 15px (compact card layout)
     - QS hero legal / FAQ hero legal: 11-13px (microcopy)
   Las reglas estan bajo @media (min-width: 1025px) para NO
   afectar mobile/tablet (que usa typography.css).
   ============================================================ */

/* §89a — Piso base 18px para p body en cualquier widget Elementor */
@media (min-width: 1025px) {
  html body p,
  html body .elementor-widget-text-editor p,
  html body .elementor-widget-text-editor li,
  html body .elementor-icon-box-description,
  html body .elementor-image-box-description,
  html body .elementor-widget-icon-list .elementor-icon-list-text,
  html body .elementor-testimonial-content,
  html body .elementor-tab-content,
  html body .elementor-tab-content p,
  html body .elementor-accordion .elementor-tab-content p {
    font-size: 18px;
    line-height: 1.6;
  }
}

/* §89b — Quienes Somos: subir las anomalias 13px / 13.5px / 17px / 16px a 18px
   Specificity: body.page-id-87 + clase/selector data-id replica la specifity
   exacta de quienes-somos.css para batirla. Anadimos html y un tag extra. */
@media (min-width: 1025px) {
  /* Diferenciadores (13px -> 18px) */
  html body.page-id-87 .qs-diff-body,
  html body.page-id-87 .qs-diff-body p,
  html body.page-id-87 .qs-diff-body li,
  html body.page-id-87 .qs-diff-body ul li {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }
  /* Valores (13.5px -> 18px) */
  html body.page-id-87 .qs-value-body,
  html body.page-id-87 .qs-value-body p {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }
  /* qs-value-emph (subtitulo en bloque, 14px -> 18px para mantener jerarquia
     consistente; sigue diferenciado por bold/uppercase si aplica) */
  html body.page-id-87 .qs-value-body .qs-value-emph {
    font-size: 18px !important;
    line-height: 1.5 !important;
  }
  /* Intro text 1 (17px -> 18px) */
  html body.page-id-87 [data-id="qs-intro-text1"] p {
    font-size: 18px !important;
    line-height: 1.65 !important;
  }
  /* Philo text (17px -> 18px) */
  html body.page-id-87 [data-id="qs-philo-text"] p {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }
  /* Stats foot, team text, team foot (16px -> 18px) */
  html body.page-id-87 [data-id="qs-stats-foot"] p,
  html body.page-id-87 [data-id="qs-team-text"] p,
  html body.page-id-87 [data-id="qs-team-foot"] p {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }
}

/* §89c — FAQ: subir respuestas de 17px a 18px (las preguntas son h3 y NO
   se tocan: siguen siendo headings a 19px). */
@media (min-width: 1025px) {
  html body.page-id-90 .faq-a,
  html body.page-id-90 .faq-a p,
  html body.page-id-90 .faq-a li,
  html body.page-id-90 .elementor-widget-text-editor p {
    font-size: 18px !important;
    line-height: 1.62 !important;
  }
}

/* §89d — Excepciones EXPLICITAS (microcopy / legal / footer fine).
   Estas DEBEN quedar pequenas; el §89a las eleva por error si no las
   re-fijamos aqui despues. */
@media (min-width: 1025px) {
  /* Disclaimers hero (legal regulatorio - intencional 11px) */
  html body .elementor-element[data-id="qt1e2jbl"] p,
  html body .elementor-element[data-id="qs-hero-legal"] p,
  html body .elementor-element[data-id="svc-hero-legal"] p,
  html body .elementor-element[data-id="ac-hero-legal"] p,
  html body .elementor-element[data-id="ct-hero-legal"] p,
  html body .elementor-element[data-id="advhc46abe"] p,
  html body .elementor-element[data-id="acchc46abe"] p,
  html body .qs-hero-legal-text,
  html body .ayc-disclaimer,
  html body .ayc-legal {
    font-size: 11px !important;
    line-height: 1.5 !important;
  }
  /* FAQ hero legal (13px intencional, mas alto que otros porque solo) */
  html body.page-id-90 .elementor-element[data-id="faq-hero-legal"] p,
  html body.page-id-90 [data-id="faq-hero-legal"] p {
    font-size: 13px !important;
    line-height: 1.55 !important;
  }
  /* Footer copyright (14px) */
  html body .elementor-element[data-id="ftr_copy"] p,
  html body footer .ayc-footer-fine,
  html body footer .elementor-widget-text-editor p.ayc-footer-fine {
    font-size: 14px !important;
    line-height: 1.5 !important;
  }
  /* QS timeline desc (15px compact card - se preserva, no es body de lectura) */
  html body.page-id-87 .qs-tl-desc,
  html body.page-id-87 .qs-tl-block p.qs-tl-desc,
  html body.page-id-87 [data-id="qs-tl-html"] .qs-tl-block p.qs-tl-desc,
  html body.page-id-87 .elementor-widget-text-editor .qs-tl-block p.qs-tl-desc {
    font-size: 15px !important;
    line-height: 1.55 !important;
  }
  /* QS philo bubble label (microcopy circular, no parrafo de lectura) */
  html body.page-id-87 .qs-philo-bubble span {
    font-size: 11px !important;
  }
  /* Headings: el §89a usa selector p,li,description - NO afecta h1-h6,
     pero re-aseguramos por si algun H3 tiene .faq-q o similar dentro de
     widget-text-editor (no es el caso aqui, es defensivo). */
}

/* §89e — Excluir explicitamente botones, badges, counters, etiquetas form,
   y nodos con clase de utilidad explicita de tamano pequeno o grande. */
@media (min-width: 1025px) {
  html body .elementor-button,
  html body .elementor-button-text,
  html body button.ayc-btn-primary,
  html body button.ayc-btn-outline-navy,
  html body a.ayc-btn-primary,
  html body a.ayc-btn-outline-navy,
  html body .elementor-counter-number,
  html body .elementor-counter-title,
  html body .elementor-field-label,
  html body .elementor-field-textual,
  html body input.elementor-field,
  html body textarea.elementor-field,
  html body select.elementor-field {
    font-size: revert;
  }
  /* Clases de utilidad existentes */
  html body .ayc-text-xs,
  html body .ayc-small,
  html body .ayc-text-small {
    font-size: revert !important;
  }
}

/* §89f — Testimonios: en Advisors/Accountants/AyudaCenter las reglas
   page-specific dejaban testimonios a 15px. Subimos a 18px para coherencia
   con el estandar global. Elementor auto-genera CSS con specificity (0,4,1)
   tipo ".elementor-29 .elementor-element.elementor-element-XXX .elementor-
   testimonial-content" — necesitamos al menos (0,5,1) para batirlo. */
@media (min-width: 1025px) {
  html body .ayc-carousel-track .elementor-widget-testimonial .elementor-testimonial-wrapper .elementor-testimonial-content,
  html body[class*="page-id-"] .ayc-carousel-track .elementor-testimonial-content,
  html body[class*="page-id-"] .elementor-widget-testimonial .elementor-testimonial-content,
  html body.page-id-78 [data-id="adv-test-sec"] .elementor-widget-testimonial .elementor-testimonial-content,
  html body.page-id-69 [data-id="acc-test-sec"] .elementor-widget-testimonial .elementor-testimonial-content {
    font-size: 18px !important;
    line-height: 1.65 !important;
  }
}

/* ============================================================
   §90 — LAPTOP SCALE FIX (1025px ≤ vw ≤ 1599px)
   ------------------------------------------------------------
   Problema: el diseno fija H1=50, H2=48, padding hero=160px,
   minH=476px, secciones=80/72/60/40px y card padding=44/56/60
   con valores absolutos identicos en 1280 y 1920 → en pantallas
   de portatil pequenas (1280-1440) se ve sobredimensionado.
   Solucion: escalar 70-85% en el rango 1025-1599 SIN tocar:
     - mobile/tablet (≤1024) que usa typography.css
     - desktops grandes (≥1600) que conservan los valores actuales
   Verificacion: el rango [1280..1599] es el grueso de portatiles
   (13"-15" FHD/1.5x). >=1600 incluye 1600/1680/1920/2560 (monitor
   externo o desktop grande) que conservan la jerarquia heroica.
   ============================================================ */

/* §90a — Headings escalados (H1 50→40, H2 48→38, H3 24/28/32→20/24/26,
   counter H3 44→34, qs-hero-headline 42→34).
   Specificity nota: Elementor genera reglas tipo
     body .elementor-element[data-id="X"] .elementor-heading-title (0,2,1)
   con !important. Para batirlas, usamos selectores de specificity ≥ (0,3,X)
   incluyendo [class*="elementor-element"] o body[class] como bumps. */
@media (min-width: 1025px) and (max-width: 1599px) {
  /* Specificity target: bate (0,0,4,0) de
       .elementor-13 .elementor-element.elementor-element-XX .elementor-heading-title
     usando 4+ clases en cadena: [class]+.elementor-element+.elementor-widget-heading
     +.elementor-heading-title con !important → (0,0,4,3) > (0,0,4,0) en empate por
     orden de aparicion (responsive.css se carga al final). */

  /* H1 hero principal (Home, Servicios, etc.) */
  html body[class] .elementor-element .elementor-widget-heading h1.elementor-heading-title,
  html body[class] .elementor-element.elementor-widget-heading h1.elementor-heading-title,
  html body[class] .elementor-widget-heading h1.elementor-heading-title.elementor-size-default {
    font-size: 40px !important;
    line-height: 1.1 !important;
  }
  /* H2 secciones default = 38px */
  html body[class] .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body[class] .elementor-element.elementor-widget-heading h2.elementor-heading-title,
  html body[class] .elementor-widget-heading h2.elementor-heading-title.elementor-size-default {
    font-size: 38px !important;
    line-height: 1.18 !important;
  }
  /* Paginas con H2 base a 32px: bajar a 28 (IDs reales: 27 Servicios, 87 QS,
     69 Accountants, 78 Advisors, 29 AyudaCenter, 90 FAQ, 86 Contacto) */
  html body.page-id-27 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-87 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-69 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-78 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-29 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-90 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-86 .elementor-element .elementor-widget-heading h2.elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.2 !important;
  }
  /* H3 default 24px → 22px */
  html body[class] .elementor-element .elementor-widget-heading h3.elementor-heading-title,
  html body[class] .elementor-element.elementor-widget-heading h3.elementor-heading-title,
  html body[class] .elementor-widget-heading h3.elementor-heading-title.elementor-size-default {
    font-size: 22px !important;
    line-height: 1.25 !important;
  }
  /* H3 stats counter (Home) - image-box-title se usa para los numeros */
  html body[class] .ayc-stat-card h3,
  html body[class] [class*="counter"] h3,
  html body[class] .elementor-counter-number,
  html body[class] .elementor-element .elementor-image-box-wrapper h3.elementor-image-box-title,
  html body[class] .elementor-element .elementor-image-box-content h3.elementor-image-box-title,
  html body[class] .elementor-widget-image-box h3.elementor-image-box-title {
    font-size: 34px !important;
    line-height: 1.15 !important;
  }
  /* Tabs h3 (sin clase) en elementor-tabs widget */
  html body[class] .elementor-element .elementor-tabs .elementor-tab-content h3 {
    font-size: 20px !important;
    line-height: 1.25 !important;
  }
  /* Card titles custom (.ayc-card-title) - usadas en Servicios y otras paginas */
  html body[class] .ayc-card-overlay h3.ayc-card-title,
  html body[class] .ayc-card-body h3.ayc-card-title,
  html body[class] .ayc-service-card h3.ayc-card-title,
  html body.page-id-27 .ayc-card-title,
  html body.page-id-29 .ayc-card-title,
  html body.page-id-69 .ayc-card-title,
  html body.page-id-78 .ayc-card-title {
    font-size: 24px !important;
    line-height: 1.25 !important;
  }
  /* Otros titulos custom de QS */
  html body.page-id-87 h3.qs-value-title,
  html body.page-id-87 h3.qs-diff-title,
  html body.page-id-87 h3.qs-stat-title,
  html body.page-id-87 h3.qs-team-title {
    font-size: 22px !important;
    line-height: 1.25 !important;
  }
  /* QS hero headline (p.qs-hero-headline) */
  html body[class] .elementor-element .qs-hero-headline,
  html body.page-id-87 .qs-hero-headline {
    font-size: 34px !important;
    line-height: 1.2 !important;
  }
  /* QS timeline title 32px → 26px */
  html body.page-id-87 .elementor-element .elementor-widget-heading h3.qs-tl-title,
  html body.page-id-87 .qs-tl-block h3.qs-tl-title {
    font-size: 26px !important;
    line-height: 1.2 !important;
  }
  /* Servicios H3 28px → 24px (page-id real = 27) */
  html body.page-id-27 .elementor-element .elementor-widget-heading h3.elementor-heading-title {
    font-size: 24px !important;
    line-height: 1.25 !important;
  }
}

/* §90b — Section padding reducido (~28%). Elementor define los paddings via
   CSS custom property "--padding-top/--padding-bottom" en cada e-con. Estos
   son leidos por ".e-con-full, .e-con > .e-con-inner" como padding-block-*.
   Para batir SIN tener que enumerar todos los data-id, hacemos override sobre
   .e-con-full / .e-con-inner usando un factor 0.72 en padding-block. */
@media (min-width: 1025px) and (max-width: 1599px) {
  /* Hero principal (Home) - padding-top fijado explicitamente porque
     el calc(*0.72) lo dejaria en 115px que es ok pero queremos minH bajo */
  html body .e-con.e-parent[class*="elementor-element-vrz9flip"] {
    --padding-top: 110px !important;
    --padding-bottom: 16px !important;
    --min-height: 380px !important;
    min-height: 380px !important;
  }
  /* Scale generico para todas las e-con: factor 0.72 sobre padding-block */
  html body .e-con-full.e-parent,
  html body .e-con.e-parent > .e-con-inner {
    padding-block-start: calc(var(--padding-block-start, 0px) * 0.72) !important;
    padding-block-end: calc(var(--padding-block-end, 0px) * 0.72) !important;
  }
  /* Excepcion: header/footer ftr_main/hdr_sec1 conservan padding (chico) */
  html body .e-con.e-parent[class*="ftr_main"],
  html body .e-con.e-parent[class*="hdr_sec1"] {
    padding-block-start: var(--padding-block-start) !important;
    padding-block-end: var(--padding-block-end) !important;
  }
}

/* §90c — Hero min-height reducido (mas las heroes con padding-top:160
   ya bajados en §90b, pero re-aseguramos para otros heros). */
@media (min-width: 1025px) and (max-width: 1599px) {
  /* Cualquier .e-con-full marcado como hero (primer hijo del main, alto) */
  html body main > .e-con.e-parent:first-child,
  html body .elementor-section-wrap > .e-con.e-parent:first-of-type {
    min-height: 0 !important;
  }
  /* Hero home explicito */
  html body .elementor-element-vrz9flip {
    min-height: 380px !important;
  }
  /* QS hero (page-id-87 first section) */
  html body.page-id-87 main > .e-con.e-parent:first-child {
    padding-top: 90px !important;
    padding-bottom: 50px !important;
  }
  /* Servicios hero / Contacto hero (page-id real = 27 / 86) */
  html body.page-id-27 main > .e-con.e-parent:first-child,
  html body.page-id-86 main > .e-con.e-parent:first-child {
    padding-top: 90px !important;
    padding-bottom: 40px !important;
  }
}

/* §90d — Cards padding/dimensions reducidos ~20%. */
@media (min-width: 1025px) and (max-width: 1599px) {
  /* Servicios y otras paginas con .ayc-card-body / .ayc-card-overlay */
  html body .ayc-card-body {
    padding: 36px 48px 44px !important;
  }
  html body .ayc-card-overlay {
    padding: 36px 28px 24px !important;
  }
  html body .ayc-card-image {
    max-height: 520px;
  }
  /* QS value cards / diff cards / stat cards: bajar padding interno */
  html body.page-id-87 .qs-value-card,
  html body.page-id-87 .qs-diff-card,
  html body.page-id-87 .qs-stat-card {
    padding: 28px 24px !important;
  }
  /* Iconboxes (Accountants/Advisors/AyudaCenter procesos) */
  html body .elementor-widget-icon-box .elementor-icon-box-wrapper {
    padding: 0 !important;
  }
  /* Image-box widgets en Home (5 stats counters): bajar gap */
  html body .elementor-widget-image-box .elementor-image-box-wrapper {
    gap: 4px;
  }
}

/* §90e — Carrusel/testimonios y separadores: reducir margenes verticales. */
@media (min-width: 1025px) and (max-width: 1599px) {
  html body .elementor-widget-spacer .elementor-widget-container {
    /* Spacers absolutos generalmente 60-80px → reducir 30% via transform-friendly */
  }
  /* CTA final pages: bajar font-size de heading-as-p (44-45px → 34).
     Necesita (0,0,3,1)+!important para batir Elementor inline. */
  html body.page-id-13 .elementor-element.elementor-element-33wqgkfg p,
  html body.page-id-13 .elementor-element.elementor-element-oppvfba2 p,
  html body.page-id-13 .elementor-element-33wqgkfg.elementor-element p,
  html body.page-id-13 .elementor-element-oppvfba2.elementor-element p {
    font-size: 34px !important;
    line-height: 1.2 !important;
  }
  /* Heading-as-p 26-22px que actuan como leads (no body) - reducir leve */
  html body .elementor-widget-text-editor p[style*="font-size"] {
    /* preserva inline si lo hay */
  }
}

/* ============================================================
   §91 — DESIGN TOKENS AYC (FUENTE ÚNICA DE VERDAD)
   ============================================================
   Estos tokens definen el sistema canónico cross-page.
   PRINCIPIO: nuevos tokens NO rompen overrides existentes
   (§54-§90) — son la "verdad" que las reglas §92 aplican
   universalmente. Los valores reflejan el estado actual
   estabilizado del sitio (auditoría 1366px/390px).
   ============================================================ */
:root {
  /* ---------- COLORES MARCA ---------- */
  --ayc-navy:        #003366;
  --ayc-navy-deep:   #1e2751;
  --ayc-green:       #9dc41a;       /* rgb(157,196,26) */
  --ayc-green-hover: #8aaf17;
  --ayc-white:       #ffffff;

  /* ---------- COLORES TEXTO ---------- */
  --ayc-text-body:   #374151;       /* rgb(55,65,81) — el body color real medido */
  --ayc-text-muted:  #6b7280;
  --ayc-text-soft:   #4b5563;
  --ayc-text-on-dark: rgba(255,255,255,0.92);
  --ayc-text-on-dark-soft: rgba(255,255,255,0.80);

  /* ---------- COLORES UI ---------- */
  --ayc-card-bg:        #ffffff;
  --ayc-card-bg-soft:   #f9fafb;
  --ayc-border:         #e5e7eb;
  --ayc-border-soft:    #d1d5db;    /* dots inactive */

  /* ---------- TIPOGRAFIA (DESKTOP CANONICA 1025-1599) ---------- */
  --ayc-fs-body:        18px;
  --ayc-fs-body-mobile: 16px;
  --ayc-fs-lead:        20px;       /* parrafo lead/intro */
  --ayc-fs-small:       14px;
  --ayc-fs-micro:       12px;       /* microcopy / legal */
  --ayc-fs-h1:          40px;       /* heros — ya enforced por §90a */
  --ayc-fs-h2:          38px;       /* home (default) */
  --ayc-fs-h2-alt:      28px;       /* paginas internas — §90a override */
  --ayc-fs-h3:          22px;
  --ayc-fs-h3-card:     24px;       /* card titles */

  --ayc-lh-tight:       1.18;
  --ayc-lh-base:        1.6;
  --ayc-lh-relaxed:     1.75;

  /* ---------- SPACING ---------- */
  --ayc-section-py:     clamp(40px, 6vw, 80px);
  --ayc-card-p:         clamp(20px, 2vw, 28px);

  /* ---------- BORDER RADIUS ---------- */
  --ayc-radius-sm:      8px;
  --ayc-radius-md:      12px;
  --ayc-radius-lg:      16px;
  --ayc-radius-xl:      24px;
  --ayc-radius-pill:    999px;

  /* ---------- SHADOWS ---------- */
  --ayc-shadow-sm:      0 2px 8px rgba(0,0,0,0.06);
  --ayc-shadow-md:      0 6px 24px rgba(0,0,0,0.10);
  --ayc-shadow-lg:      0 8px 48px rgba(0,0,0,0.15);
  --ayc-shadow-focus:   0 0 0 3px rgba(157,196,26,0.35);

  /* ---------- BOTONES (CANONICOS) ----------
     Hero CTA grande (verde):  --ayc-btn-py-lg / --ayc-btn-px-lg
     Default (verde):          --ayc-btn-py / --ayc-btn-px
     Header / small:           --ayc-btn-py-sm / --ayc-btn-px-sm
  */
  --ayc-btn-py:         12px;
  --ayc-btn-px:         28px;
  --ayc-btn-py-sm:      10px;
  --ayc-btn-px-sm:      22px;
  --ayc-btn-py-lg:      14px;
  --ayc-btn-px-lg:      36px;
  --ayc-btn-radius:     8px;
  --ayc-btn-fs:         16px;
  --ayc-btn-fs-lg:      18px;
  --ayc-btn-fw:         600;
  --ayc-btn-transition: background-color .18s ease, transform .18s ease, box-shadow .18s ease;

  /* ---------- DOTS / CARRUSELES ---------- */
  --ayc-dot-size:        12px;
  --ayc-dot-active-size: 14px;
  --ayc-dot-bg:          var(--ayc-border-soft);
  --ayc-dot-bg-active:   var(--ayc-green);
  --ayc-dot-bg-on-dark:  rgba(255,255,255,0.50);

  /* ---------- FOCUS RING ACCESIBLE ---------- */
  --ayc-focus-outline:  3px solid rgba(157,196,26,0.55);
  --ayc-focus-offset:   2px;
}

/* ============================================================
   §92 — REGLAS UNIVERSALES BASADAS EN TOKENS
   ============================================================
   Se aplican EN TODAS LAS PAGINAS. No usan !important salvo
   cuando hace falta batir un override Elementor inline.
   Mobile/Tablet sigue gobernado por typography.css (--fs-*).
   ============================================================ */

/* §92a — Buttons universal (desktop 1025+).
   Estandariza: tamaño tipografico, radius, transition, focus.
   NO toca background/color (los hereda del widget) para no romper
   variantes verde/navy/outline pre-existentes. */
@media (min-width: 1025px) {
  html body a.elementor-button,
  html body button.elementor-button,
  html body a.ayc-btn-primary,
  html body button.ayc-btn-primary,
  html body a.ayc-btn-outline-navy,
  html body button.ayc-btn-outline-navy {
    border-radius: var(--ayc-btn-radius);
    font-weight: var(--ayc-btn-fw);
    transition: var(--ayc-btn-transition);
    line-height: 1.2;
  }

  /* Estandariza paddings excesivos: 14px 52px / 16px 48px / 16px 42px
     son outliers (Servicios CTA, QS hero, Contacto submit). Los
     equiparamos a (14px 36px) sin romper hero principal Home (12px 36px). */
  html body.page-id-27 .ayc-card-cta a.elementor-button,
  html body.page-id-87 .qs-hero-cta a.elementor-button,
  html body.page-id-86 .elementor-widget-form button[type="submit"],
  html body.page-id-29 .ayc-svc-card .elementor-button {
    padding: var(--ayc-btn-py-lg) var(--ayc-btn-px-lg);
  }
}

/* §92a-focus — Focus visible accesible (todas las paginas) */
html body a.elementor-button:focus-visible,
html body button.elementor-button:focus-visible,
html body a.ayc-btn-primary:focus-visible,
html body button.ayc-btn-primary:focus-visible,
html body a.ayc-btn-outline-navy:focus-visible,
html body button.ayc-btn-outline-navy:focus-visible {
  outline: var(--ayc-focus-outline);
  outline-offset: var(--ayc-focus-offset);
}

/* §92a-hover — Hover green: ligero darken (no afecta navy/outline) */
@media (hover: hover) and (min-width: 1025px) {
  html body a.elementor-button[style*="9dc41a"]:hover,
  html body a.elementor-button[style*="rgb(157, 196, 26)"]:hover,
  html body a.ayc-btn-primary:hover,
  html body button.ayc-btn-primary:hover {
    background-color: var(--ayc-green-hover) !important;
    transform: translateY(-1px);
  }
}

/* §92b — Body text universal (desktop). Normaliza outliers:
   - Ayuda Center: parrafos 20px → 18px (cuerpo principal)
   - Contacto: parrafos 22px → 18px (cuerpo principal)
   - QS: parrafos 15px (qs-diff-body / qs-value-body) → 18px
   Excluye: leads inline 22px+, microcopy ≤14px, headings-as-p de CTA
   (esos quedan gobernados por §90e). */
@media (min-width: 1025px) and (max-width: 1599px) {
  html body.page-id-29 .elementor-widget-text-editor p:not([style*="font-size"]),
  html body.page-id-86 .elementor-widget-text-editor p:not([style*="font-size"]):not(.ayc-disclaimer):not(.ayc-legal) {
    font-size: var(--ayc-fs-body);
    line-height: var(--ayc-lh-base);
  }
  /* QS bodies que estaban a 15px */
  html body.page-id-87 .qs-diff-body,
  html body.page-id-87 .qs-value-body {
    font-size: var(--ayc-fs-body) !important;
    line-height: var(--ayc-lh-base) !important;
  }
}

/* §92b-color — color base parrafo unificado (sin !important para
   permitir overrides locales blancos en heroes oscuros). */
@media (min-width: 1025px) {
  html body .elementor-widget-text-editor p:not([style*="color"]) {
    color: var(--ayc-text-body);
    line-height: var(--ayc-lh-base);
  }
}

/* §92c — Microcopy / legal / disclaimers — token canonico */
html body .ayc-disclaimer,
html body .ayc-legal,
html body .ayc-text-xs,
html body .faq-hero-legal,
html body .faq-hero-legal p,
html body .qs-hero-legal-text,
html body .ayc-footer-fine {
  font-size: var(--ayc-fs-micro);
  line-height: 1.5;
}

/* §92d — Dots carruseles: tamaño y color unificados a 12px / 14px active.
   EXCEPCION INTENCIONAL: qs-tl-dot mantiene 11px porque vive sobre
   overlay oscuro del timeline (estilo distinto, no inconsistencia).
   El resto (carrusel home/acc/adv/svc) queda canonico vía tokens. */
html body .ayc-carousel-dot,
html body .qs-team-dot,
html body .ayc-svc-dot,
html body .acc-dot,
html body .adv-dot,
html body .ayc-card-dot {
  width: var(--ayc-dot-size);
  height: var(--ayc-dot-size);
  border-radius: 50%;
  background: var(--ayc-dot-bg);
  border: none;
  cursor: pointer;
  transition: width .2s ease, height .2s ease, background-color .2s ease;
}
/* Dots sobre fondo claro: si la pagina marca .qs-team-dot, color soft */
html body .qs-team-dots .qs-team-dot:not(.is-active) {
  background: var(--ayc-border-soft);
}
html body .ayc-carousel-dot.active,
html body .qs-team-dot.is-active,
html body .ayc-svc-dot.active,
html body .acc-dot.active,
html body .adv-dot.active,
html body .ayc-card-dot.active {
  background: var(--ayc-dot-bg-active);
  width: var(--ayc-dot-active-size);
  height: var(--ayc-dot-active-size);
}

/* §92d-focus — Dots accesibles */
html body .ayc-carousel-dot:focus-visible,
html body .qs-team-dot:focus-visible,
html body .qs-tl-dot:focus-visible,
html body .ayc-svc-dot:focus-visible,
html body .acc-dot:focus-visible,
html body .adv-dot:focus-visible,
html body .ayc-card-dot:focus-visible {
  outline: var(--ayc-focus-outline);
  outline-offset: var(--ayc-focus-offset);
}

/* §92e — Cards: radius/shadow canonicos para genericas.
   No fuerza .ayc-ac-card (mantiene su radius:55 propio diferenciado)
   ni .ayc-service-card si ya tiene shadow medida (deja como está).
   Solo aplica a .ayc-card y al testimonial wrapper de Elementor. */
@media (min-width: 1025px) {
  html body .ayc-card,
  html body .elementor-testimonial-wrapper,
  html body .ayc-generic-card {
    border-radius: var(--ayc-radius-md);
    box-shadow: var(--ayc-shadow-sm);
    background: var(--ayc-card-bg);
  }
  html body .ayc-card:hover,
  html body .ayc-generic-card:hover {
    box-shadow: var(--ayc-shadow-md);
  }
}

/* §92f — Section padding canonico para secciones nuevas
   (no fuerza las existentes que tienen padding inline Elementor) */
html body .ayc-section,
html body section.ayc-section {
  padding-top: var(--ayc-section-py);
  padding-bottom: var(--ayc-section-py);
}

/* §92g — Heading colors canonicos (sin !important para permitir
   overrides locales de heros oscuros con color blanco) */
html body h1.elementor-heading-title:not([style*="color"]):not(.ayc-on-dark),
html body h2.elementor-heading-title:not([style*="color"]):not(.ayc-on-dark) {
  color: var(--ayc-navy-deep);
}
html body h3.elementor-heading-title:not([style*="color"]):not(.ayc-on-dark) {
  color: var(--ayc-navy);
}

/* §92h — Links inline body: color marca + underline accesible */
@media (min-width: 1025px) {
  html body .elementor-widget-text-editor p a:not(.elementor-button) {
    color: var(--ayc-navy);
    text-decoration: underline;
    text-underline-offset: 3px;
    text-decoration-thickness: 1px;
    transition: color .15s ease;
  }
  html body .elementor-widget-text-editor p a:not(.elementor-button):hover {
    color: var(--ayc-green-hover);
  }
}

/* §92i — Form inputs canonicos (Contacto) */
@media (min-width: 1025px) {
  html body .elementor-widget-form input[type="text"],
  html body .elementor-widget-form input[type="email"],
  html body .elementor-widget-form input[type="tel"],
  html body .elementor-widget-form textarea,
  html body .elementor-widget-form select {
    border-radius: var(--ayc-radius-sm);
    border: 1px solid var(--ayc-border);
    font-size: var(--ayc-fs-body);
    line-height: var(--ayc-lh-base);
    transition: border-color .15s ease, box-shadow .15s ease;
  }
  html body .elementor-widget-form input[type="text"]:focus,
  html body .elementor-widget-form input[type="email"]:focus,
  html body .elementor-widget-form input[type="tel"]:focus,
  html body .elementor-widget-form textarea:focus,
  html body .elementor-widget-form select:focus {
    border-color: var(--ayc-green);
    box-shadow: var(--ayc-shadow-focus);
    outline: none;
  }
}

/* §92j — Selection / scrollbar marca */
html body ::selection {
  background: rgba(157,196,26,0.30);
  color: var(--ayc-navy-deep);
}

/* §92k — Mobile token bridge: garantiza que las variables fs-*
   de typography.css y los tokens --ayc-fs-* mobile se mantengan
   sincronizados. En mobile, el cuerpo usa fs-base (16px) y los
   tokens canonicos --ayc-fs-body siguen su 18px desktop. */
@media (max-width: 1024px) {
  :root {
    --ayc-fs-body: var(--fs-base, 16px);
    --ayc-fs-lead: var(--fs-lead, 17px);
    --ayc-fs-small: var(--fs-small, 14px);
    --ayc-fs-micro: var(--fs-xs, 12px);
  }
}

/* ============================================================
   §93 — UNIFICACION FINAL DE PARRAFOS (QA GLOBAL)
   Cuerpo de texto en TODAS las paginas debe respetar:
   - Desktop  ≥1025px : 18px (--ayc-fs-body)
   - Tablet   768-1024: 17px (transicion)
   - Mobile   ≤767px  : 16px (--ayc-fs-body-mobile)
   Specificity: html body.page-id-XX [data-id="..."] p
   = (0,4,3) — gana a Elementor compilado (0,3,2).
   Excepciones documentadas: ver §93d.
   ============================================================ */

/* §93a — DESKTOP 1025+ : forzar 18px en deviantes detectados */
@media (min-width: 1025px) {
  /* HOME (page-id-13) — section subtitles/leads 22px, 26px, 34px → 18px.
     Specificity boost via :not(#x) (ID-arg en :not() suma 1 al primer slot)
     para batir reglas con misma estructura en overrides.css §7280+ */
  html body.page-id-13 .elementor-element[data-id="6r9y102e"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="5jn6nn5b"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="vumj2cdv"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="ptfe26dd"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="krzy8fuz"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p strong:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p b:not(#x),
  html body.page-id-13 .elementor-element[data-id="pxr2o2bu"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="33wqgkfg"] p:not(#x) {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }

  /* SERVICIOS (page-id-27) — ayc-card-desc 22px y svc-intro-title 27.32px → 18px */
  html body.page-id-27 .ayc-card-desc:not(#x),
  html body.page-id-27 .elementor-element .ayc-card-desc:not(#x),
  html body.page-id-27 .elementor-element[data-id="svc-intro-title"] p:not(#x) {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }

  /* AYUDA CENTER (page-id-29) — leads 20px y "Cada historia" 26px / "400 reseñas" 22px → 18px.
     :not(#x) boost requerido para batir ayuda-center.css §1894+ */
  html body.page-id-29 .elementor-element[data-id="ac-que-desc"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="ac-que-foot"] p:not(#x),
  html body.page-id-29 .ayc-card-desc:not(#x),
  html body.page-id-29 .elementor-element[data-id="pxr2o2bu"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p strong:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p b:not(#x) {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }

  /* ACCOUNTANTS (page-id-69) — 20px (esencia, cards, icon-box, footer) → 18px.
     :not(#x) boost para batir accountants.css §1946+ */
  html body.page-id-69 .elementor-element[data-id="acc-esencia-content"] p:not(#x),
  html body.page-id-69 .ayc-card-desc:not(#x),
  html body.page-id-69 .ayc-card-footer-text:not(#x),
  html body.page-id-69 .elementor-icon-box-description:not(#x),
  html body.page-id-69 .elementor-element .elementor-icon-box-description:not(#x),
  html body.page-id-69 .elementor-element[data-id="accx6cbf02f"] p:not(#x),
  html body.page-id-69 .elementor-element[data-id="accx1626258"] p:not(#x),
  html body.page-id-69 .elementor-element[data-id="accx1626258"] p strong:not(#x),
  html body.page-id-69 .elementor-element[data-id="accx1626258"] p b:not(#x) {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }

  /* ADVISORS (page-id-78) — advw* icon-box-description 20px + leads → 18px.
     :not(#x) boost para batir advisors.css §1511+ */
  html body.page-id-78 .elementor-icon-box-description:not(#x),
  html body.page-id-78 .elementor-element .elementor-icon-box-description:not(#x),
  html body.page-id-78 .ayc-card-desc:not(#x),
  html body.page-id-78 .elementor-element[data-id="adv-esencia-content"] p:not(#x),
  html body.page-id-78 .elementor-element[data-id="advx169b901"] p:not(#x),
  html body.page-id-78 .elementor-element[data-id="advx5fa45fe"] p:not(#x),
  html body.page-id-78 .elementor-element[data-id="advx5fa45fe"] p strong:not(#x),
  html body.page-id-78 .elementor-element[data-id="advx5fa45fe"] p b:not(#x) {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }

  /* QUIENES SOMOS (page-id-87) — 22px leads (qs-intro-text2, qs-cta-sub) → 18px.
     EXCEPCION: qs-hero-headline 34px se preserva (hero headline-as-paragraph). */
  html body.page-id-87 .elementor-element[data-id="qs-intro-text2"] p,
  html body.page-id-87 .elementor-element[data-id="qs-cta-sub"] p {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }

  /* CONTACTO (page-id-86) — leads 22/24px → 18px.
     EXCEPCION: ct-hero-title 38px se preserva (hero headline-as-paragraph). */
  html body.page-id-86 .elementor-element[data-id="ct-intro-text"] p,
  html body.page-id-86 .elementor-element[data-id="ct-cta-sub"] p,
  html body.page-id-86 .elementor-element[data-id="ct-form-sub"] p {
    font-size: 18px !important;
    line-height: 1.6 !important;
  }
}

/* §93b — TABLET 768-1024 : 17px transicion en mismos deviantes.
   :not(#x) requerido para batir reglas cross-breakpoint (overrides.css/ayuda-center.css) */
@media (min-width: 768px) and (max-width: 1024px) {
  html body.page-id-13 .elementor-element[data-id="6r9y102e"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="5jn6nn5b"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="vumj2cdv"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="ptfe26dd"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="krzy8fuz"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p strong:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p b:not(#x),
  html body.page-id-13 .elementor-element[data-id="pxr2o2bu"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="33wqgkfg"] p:not(#x),
  html body.page-id-27 .ayc-card-desc:not(#x),
  html body.page-id-27 .elementor-element[data-id="svc-intro-title"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="ac-que-desc"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="ac-que-foot"] p:not(#x),
  html body.page-id-29 .ayc-card-desc:not(#x),
  html body.page-id-29 .elementor-element[data-id="pxr2o2bu"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p strong:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p b:not(#x),
  html body.page-id-69 .elementor-element[data-id="acc-esencia-content"] p:not(#x),
  html body.page-id-69 .ayc-card-desc:not(#x),
  html body.page-id-69 .ayc-card-footer-text:not(#x),
  html body.page-id-69 .elementor-icon-box-description:not(#x),
  html body.page-id-69 .elementor-element[data-id="accx6cbf02f"] p:not(#x),
  html body.page-id-69 .elementor-element[data-id="accx1626258"] p:not(#x),
  html body.page-id-78 .elementor-icon-box-description:not(#x),
  html body.page-id-78 .ayc-card-desc:not(#x),
  html body.page-id-78 .elementor-element[data-id="adv-esencia-content"] p:not(#x),
  html body.page-id-78 .elementor-element[data-id="advx169b901"] p:not(#x),
  html body.page-id-78 .elementor-element[data-id="advx5fa45fe"] p:not(#x),
  html body.page-id-87 .elementor-element[data-id="qs-intro-text2"] p:not(#x),
  html body.page-id-87 .elementor-element[data-id="qs-cta-sub"] p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-intro-text"] p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-cta-sub"] p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-form-sub"] p:not(#x) {
    font-size: 17px !important;
    line-height: 1.6 !important;
  }
}

/* §93c — MOBILE ≤767 : 16px en todos los deviantes detectados.
   Mismo :not(#x) trick para batir rules cross-breakpoint con specificity ID. */
@media (max-width: 767px) {
  /* HOME */
  html body.page-id-13 .elementor-element[data-id="6r9y102e"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="5jn6nn5b"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="vumj2cdv"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="ptfe26dd"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="krzy8fuz"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p strong:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p b:not(#x),
  html body.page-id-13 .elementor-element[data-id="pxr2o2bu"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="33wqgkfg"] p:not(#x),
  /* SERVICIOS */
  html body.page-id-27 .ayc-card-desc:not(#x),
  html body.page-id-27 .elementor-element .ayc-card-desc:not(#x),
  html body.page-id-27 .elementor-element[data-id="svc-intro-title"] p:not(#x),
  html body.page-id-27 .elementor-element[data-id="svc-intro-sub"] p:not(#x),
  /* AYUDA CENTER */
  html body.page-id-29 .elementor-element[data-id="ac-que-desc"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="ac-que-foot"] p:not(#x),
  html body.page-id-29 .ayc-card-desc:not(#x),
  html body.page-id-29 .elementor-element[data-id="pxr2o2bu"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p strong:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p b:not(#x),
  html body.page-id-29 .elementor-icon-box-description:not(#x),
  /* ACCOUNTANTS */
  html body.page-id-69 .elementor-element[data-id="acc-esencia-content"] p:not(#x),
  html body.page-id-69 .ayc-card-desc:not(#x),
  html body.page-id-69 .ayc-card-footer-text:not(#x),
  html body.page-id-69 .elementor-icon-box-description:not(#x),
  html body.page-id-69 .elementor-element[data-id="accx6cbf02f"] p:not(#x),
  html body.page-id-69 .elementor-element[data-id="accx1626258"] p:not(#x),
  /* ADVISORS */
  html body.page-id-78 .elementor-icon-box-description:not(#x),
  html body.page-id-78 .ayc-card-desc:not(#x),
  html body.page-id-78 .elementor-element[data-id="adv-esencia-content"] p:not(#x),
  html body.page-id-78 .elementor-element[data-id="advx169b901"] p:not(#x),
  html body.page-id-78 .elementor-element[data-id="advx5fa45fe"] p:not(#x),
  /* QUIENES SOMOS */
  html body.page-id-87 .elementor-element[data-id="qs-intro-text2"] p:not(#x),
  html body.page-id-87 .elementor-element[data-id="qs-cta-sub"] p:not(#x),
  /* CONTACTO */
  html body.page-id-86 .elementor-element[data-id="ct-intro-text"] p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-cta-sub"] p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-form-sub"] p:not(#x),
  /* TESTIMONIALS — mobile: 16px (italic mantenido). Override §89f que aplica
     solo desktop pero algunas paginas tienen overrides cross-breakpoint */
  html body .elementor-testimonial-content:not(#x),
  html body[class*="page-id-"] .elementor-widget-testimonial .elementor-testimonial-content:not(#x),
  /* HOME hero subhead 6eeek77d y blog subhead a6b6eym1 (leads 18→16 mobile) */
  html body.page-id-13 .elementor-element[data-id="6eeek77d"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="a6b6eym1"] p:not(#x),
  /* ACCOUNTANTS leads (intro/esencia/CTA-sub) 18→16 mobile */
  html body.page-id-69 .elementor-element[data-id="accide5bc7"] p:not(#x),
  html body.page-id-69 .elementor-element[data-id="accib7af59"] p:not(#x),
  html body.page-id-69 .elementor-element[data-id="accx10680e"] p:not(#x),
  /* ADVISORS leads (intro/esencia/CTA-sub) 18→16 mobile */
  html body.page-id-78 .elementor-element[data-id="advide5bc7"] p:not(#x),
  html body.page-id-78 .elementor-element[data-id="advib7af59"] p:not(#x),
  html body.page-id-78 .elementor-element[data-id="advx10680e"] p:not(#x) {
    font-size: 16px !important;
    line-height: 1.6 !important;
  }
}

/* §93d — RE-AFIRMAR EXCEPCIONES (deben sobrevivir a §93a-c)
   Estas reglas se colocan DESPUES para garantizar prioridad por
   orden de cascada cuando la specificity es igual. */
@media (min-width: 1025px) {
  /* QS timeline desc — 15px compact (ya en §89d, re-afirmado) */
  html body.page-id-87 .qs-tl-desc,
  html body.page-id-87 .qs-tl-block p.qs-tl-desc {
    font-size: 15px !important;
    line-height: 1.55 !important;
  }
  /* Labels en circulos / bubbles — 11px microcopy */
  html body.page-id-87 .qs-philo-bubble span,
  html body .ayc-circle-label,
  html body .ayc-bubble-label {
    font-size: 11px !important;
  }
  /* Footer copyright — 14px (ya en §89d) */
  html body .elementor-element[data-id="ftr_copy"] p,
  html body footer .ayc-footer-fine {
    font-size: 14px !important;
  }
  /* Footer disclaimer legal — 12px */
  html body .elementor-element[data-id="ftr_disclaimer"] p {
    font-size: 12px !important;
  }
}

/* ============================================================
   §94a — QS STATS = HOME STATS (paridad visual)
   ------------------------------------------------------------
   Home (qh0b8rle: zgzick0h / 0h5qmaso / ur1nztr5)
     widget padding: 24px 32px
     img figure margin: 0 0 16px (gap entre icono y numero)
     number H3: 34/800/green   |   desc P: 18/400/gray
     box: flex column gap 4px
   QS (qs-stats-row: qs-stat-1..5) pre-fix:
     widget padding: 8px 16px  ← DELTA (mas chico)
     img figure margin: 0       ← DELTA (numero pegado al icono)
     numero/desc/colores: ya coinciden
   Fix: igualar padding del widget y reponer el margin-bottom de la
   figura. NO tocamos number/desc (ya estan idénticos). Aplicamos
   per-data-id para evitar afectar otros image-box de la página.
   ============================================================ */
html body.page-id-87 .elementor-element[data-id="qs-stat-1"],
html body.page-id-87 .elementor-element[data-id="qs-stat-2"],
html body.page-id-87 .elementor-element[data-id="qs-stat-3"],
html body.page-id-87 .elementor-element[data-id="qs-stat-4"],
html body.page-id-87 .elementor-element[data-id="qs-stat-5"] {
  padding: 24px 32px !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
html body.page-id-87 .elementor-element[data-id="qs-stat-1"] .elementor-image-box-wrapper,
html body.page-id-87 .elementor-element[data-id="qs-stat-2"] .elementor-image-box-wrapper,
html body.page-id-87 .elementor-element[data-id="qs-stat-3"] .elementor-image-box-wrapper,
html body.page-id-87 .elementor-element[data-id="qs-stat-4"] .elementor-image-box-wrapper,
html body.page-id-87 .elementor-element[data-id="qs-stat-5"] .elementor-image-box-wrapper {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 4px !important;
  text-align: center !important;
}
html body.page-id-87 .elementor-element[data-id="qs-stat-1"] .elementor-image-box-img,
html body.page-id-87 .elementor-element[data-id="qs-stat-2"] .elementor-image-box-img,
html body.page-id-87 .elementor-element[data-id="qs-stat-3"] .elementor-image-box-img,
html body.page-id-87 .elementor-element[data-id="qs-stat-4"] .elementor-image-box-img,
html body.page-id-87 .elementor-element[data-id="qs-stat-5"] .elementor-image-box-img {
  margin: 0 0 16px !important;
  display: block !important;
}
html body.page-id-87 .elementor-element[data-id="qs-stat-1"] .elementor-image-box-img img,
html body.page-id-87 .elementor-element[data-id="qs-stat-2"] .elementor-image-box-img img,
html body.page-id-87 .elementor-element[data-id="qs-stat-3"] .elementor-image-box-img img,
html body.page-id-87 .elementor-element[data-id="qs-stat-4"] .elementor-image-box-img img,
html body.page-id-87 .elementor-element[data-id="qs-stat-5"] .elementor-image-box-img img {
  height: 62px !important;
  width: auto !important;
  max-width: 100% !important;
}
html body.page-id-87 .elementor-element[data-id="qs-stat-1"] .elementor-image-box-title,
html body.page-id-87 .elementor-element[data-id="qs-stat-2"] .elementor-image-box-title,
html body.page-id-87 .elementor-element[data-id="qs-stat-3"] .elementor-image-box-title,
html body.page-id-87 .elementor-element[data-id="qs-stat-4"] .elementor-image-box-title,
html body.page-id-87 .elementor-element[data-id="qs-stat-5"] .elementor-image-box-title {
  font-size: 34px !important;
  font-weight: 800 !important;
  line-height: 1.15 !important;
  color: var(--ayc-green) !important;
  margin: 4px 0 8px !important;
  text-align: center !important;
}
html body.page-id-87 .elementor-element[data-id="qs-stat-1"] .elementor-image-box-description,
html body.page-id-87 .elementor-element[data-id="qs-stat-2"] .elementor-image-box-description,
html body.page-id-87 .elementor-element[data-id="qs-stat-3"] .elementor-image-box-description,
html body.page-id-87 .elementor-element[data-id="qs-stat-4"] .elementor-image-box-description,
html body.page-id-87 .elementor-element[data-id="qs-stat-5"] .elementor-image-box-description {
  font-size: 18px !important;
  font-weight: 400 !important;
  line-height: 1.6 !important;
  color: #6b7280 !important;
  margin: 0 !important;
  text-align: center !important;
}
/* Row layout: como Home (flex row, gap 0, padding 0 20px) */
html body.page-id-87 .elementor-element[data-id="qs-stats-row"] {
  display: flex !important;
  flex-direction: row !important;
  justify-content: space-around !important;
  align-items: stretch !important;
  gap: 0 !important;
  padding: 0 20px !important;
}

/* §94a — Tablet: stats QS conservan paridad — Home en tablet usa
   wrap a 3+2 / 2 cols; replicamos via flex-wrap */
@media (max-width: 1024px) {
  html body.page-id-87 .elementor-element[data-id="qs-stats-row"] {
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 16px 0 !important;
  }
  html body.page-id-87 .elementor-element[data-id="qs-stat-1"],
  html body.page-id-87 .elementor-element[data-id="qs-stat-2"],
  html body.page-id-87 .elementor-element[data-id="qs-stat-3"],
  html body.page-id-87 .elementor-element[data-id="qs-stat-4"],
  html body.page-id-87 .elementor-element[data-id="qs-stat-5"] {
    flex: 0 0 33.333% !important;
    padding: 16px 20px !important;
  }
}
@media (max-width: 767px) {
  html body.page-id-87 .elementor-element[data-id="qs-stat-1"],
  html body.page-id-87 .elementor-element[data-id="qs-stat-2"],
  html body.page-id-87 .elementor-element[data-id="qs-stat-3"],
  html body.page-id-87 .elementor-element[data-id="qs-stat-4"],
  html body.page-id-87 .elementor-element[data-id="qs-stat-5"] {
    flex: 0 0 50% !important;
    padding: 12px 16px !important;
  }
  html body.page-id-87 .elementor-element[data-id="qs-stat-1"] .elementor-image-box-title,
  html body.page-id-87 .elementor-element[data-id="qs-stat-2"] .elementor-image-box-title,
  html body.page-id-87 .elementor-element[data-id="qs-stat-3"] .elementor-image-box-title,
  html body.page-id-87 .elementor-element[data-id="qs-stat-4"] .elementor-image-box-title,
  html body.page-id-87 .elementor-element[data-id="qs-stat-5"] .elementor-image-box-title {
    font-size: 28px !important;
  }
  html body.page-id-87 .elementor-element[data-id="qs-stat-1"] .elementor-image-box-description,
  html body.page-id-87 .elementor-element[data-id="qs-stat-2"] .elementor-image-box-description,
  html body.page-id-87 .elementor-element[data-id="qs-stat-3"] .elementor-image-box-description,
  html body.page-id-87 .elementor-element[data-id="qs-stat-4"] .elementor-image-box-description,
  html body.page-id-87 .elementor-element[data-id="qs-stat-5"] .elementor-image-box-description {
    font-size: 15px !important;
  }
  html body.page-id-87 .elementor-element[data-id="qs-stat-1"] .elementor-image-box-img img,
  html body.page-id-87 .elementor-element[data-id="qs-stat-2"] .elementor-image-box-img img,
  html body.page-id-87 .elementor-element[data-id="qs-stat-3"] .elementor-image-box-img img,
  html body.page-id-87 .elementor-element[data-id="qs-stat-4"] .elementor-image-box-img img,
  html body.page-id-87 .elementor-element[data-id="qs-stat-5"] .elementor-image-box-img img {
    height: 48px !important;
  }
}

/* ============================================================
   §94b — DOTS UNIFORMES (todos los carruseles del sitio)
   ------------------------------------------------------------
   Inventario pre-fix:
     .qs-team-dot   inactive 20×20 verde solido / active 20×20 BLANCO con border verde  (INVERTIDO!)
     .qs-tl-dot     inactive 11×11 white50%   / active 14×14 verde solido
     .ayc-carousel- 12×12 (§92d, paginas internas)
     .ayc-svc-dot   12×12 (§92d)
     .swiper-pag.   default Swiper
   Estandar nuevo (TODOS):
     base 16×16, fondo BLANCO, border 2px solid var(--ayc-green)
     active fondo verde solido, mismo border, mismo tamaño
   Override de tokens §91 + reglas con specificity nuclear.
   ============================================================ */
:root {
  --ayc-dot-size:          16px;
  --ayc-dot-active-size:   16px;
  --ayc-dot-bg:            #ffffff;
  --ayc-dot-border:        2px solid var(--ayc-green);
  --ayc-dot-bg-active:     var(--ayc-green);
  --ayc-dot-active-border: 2px solid var(--ayc-green);
}

html body .ayc-carousel-dot,
html body .qs-team-dot,
html body .qs-tl-dot,
html body .ayc-svc-dot,
html body .acc-dot,
html body .adv-dot,
html body .ayc-card-dot,
html body .swiper-pagination-bullet,
html body button.ayc-carousel-dot,
html body button.qs-team-dot,
html body button.qs-tl-dot,
html body button.ayc-svc-dot,
html body button.acc-dot,
html body button.adv-dot,
html body button.ayc-card-dot {
  width: var(--ayc-dot-size) !important;
  height: var(--ayc-dot-size) !important;
  min-width: var(--ayc-dot-size) !important;
  min-height: var(--ayc-dot-size) !important;
  background: var(--ayc-dot-bg) !important;
  background-color: var(--ayc-dot-bg) !important;
  border: var(--ayc-dot-border) !important;
  border-radius: 50% !important;
  padding: 0 !important;
  margin: 0 !important;
  cursor: pointer !important;
  transform: none !important;
  opacity: 1 !important;
  box-shadow: none !important;
  transition: background-color .2s ease, border-color .2s ease, transform .2s ease !important;
}

/* Activos: verde solido con el mismo border y mismo tamaño */
html body .ayc-carousel-dot.active,
html body .qs-team-dot.is-active,
html body .qs-team-dot.active,
html body .qs-tl-dot.is-active,
html body .qs-tl-dot.active,
html body .ayc-svc-dot.active,
html body .acc-dot.active,
html body .adv-dot.active,
html body .ayc-card-dot.active,
html body .swiper-pagination-bullet-active,
html body button.ayc-carousel-dot.active,
html body button.qs-team-dot.is-active,
html body button.qs-team-dot.active,
html body button.qs-tl-dot.is-active,
html body button.qs-tl-dot.active,
html body button.ayc-svc-dot.active,
html body button.acc-dot.active,
html body button.adv-dot.active,
html body button.ayc-card-dot.active {
  width: var(--ayc-dot-active-size) !important;
  height: var(--ayc-dot-active-size) !important;
  background: var(--ayc-dot-bg-active) !important;
  background-color: var(--ayc-dot-bg-active) !important;
  border: var(--ayc-dot-active-border) !important;
  transform: none !important;
}

/* Container de dots: gap consistente */
html body .ayc-carousel-dots,
html body .qs-team-dots,
html body .qs-tl-dots,
html body .ayc-svc-dots,
html body .swiper-pagination,
html body .ayc-card-dots {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 10px !important;
}

/* Mobile: dots ligeramente mas pequeños pero aun visibles */
@media (max-width: 767px) {
  :root {
    --ayc-dot-size:        14px;
    --ayc-dot-active-size: 14px;
  }
}

/* ============================================================
   §94b-mobile — DOTS NUCLEAR OVERRIDE (gana overrides.css legacy)
   ------------------------------------------------------------
   Problema: overrides.css L6749-6760 declara .ayc-carousel-dot
   con width:28px !important sin media query (specificity 0,1,0)
   y responsive.css L2690 declaraba 12px en @media 1024 (legacy).
   Esta regla aplica :not(#x) — pseudo-clase con argumento ID
   inyecta peso ID (1,0,0) elevando specificity a 1,1,3 que
   vence overrides.css (0,1,0) y cualquier .class !important rival.
   Tamaño objetivo mobile: 14×14 inactive (blanco/borde verde),
   14×14 active (verde solido).
   Desktop (>1024): §94b base sigue mandando 16×16.
   ============================================================ */
@media (max-width: 1024px) {
  html body .ayc-carousel-dot:not(#x),
  html body .ayc-svc-dot:not(#x),
  html body .qs-team-dot:not(#x),
  html body .qs-tl-dot:not(#x),
  html body .acc-dot:not(#x),
  html body .adv-dot:not(#x),
  html body .ayc-card-dot:not(#x),
  html body .swiper-pagination-bullet:not(#x),
  html body button.ayc-carousel-dot:not(#x),
  html body button.ayc-svc-dot:not(#x),
  html body button.qs-team-dot:not(#x),
  html body button.qs-tl-dot:not(#x),
  html body button.acc-dot:not(#x),
  html body button.adv-dot:not(#x),
  html body button.ayc-card-dot:not(#x) {
    width: 14px !important;
    height: 14px !important;
    min-width: 14px !important;
    min-height: 14px !important;
    background: #ffffff !important;
    background-color: #ffffff !important;
    border: 2px solid var(--ayc-green, #9dc41a) !important;
    border-radius: 50% !important;
    padding: 0 !important;
    margin: 0 !important;
    transform: none !important;
    opacity: 1 !important;
    box-shadow: none !important;
  }
  html body .ayc-carousel-dot.active:not(#x),
  html body .ayc-svc-dot.active:not(#x),
  html body .qs-team-dot.is-active:not(#x),
  html body .qs-team-dot.active:not(#x),
  html body .qs-tl-dot.is-active:not(#x),
  html body .qs-tl-dot.active:not(#x),
  html body .acc-dot.active:not(#x),
  html body .adv-dot.active:not(#x),
  html body .ayc-card-dot.active:not(#x),
  html body .swiper-pagination-bullet-active:not(#x),
  html body button.ayc-carousel-dot.active:not(#x),
  html body button.ayc-svc-dot.active:not(#x),
  html body button.qs-team-dot.is-active:not(#x),
  html body button.qs-team-dot.active:not(#x),
  html body button.qs-tl-dot.is-active:not(#x),
  html body button.qs-tl-dot.active:not(#x),
  html body button.acc-dot.active:not(#x),
  html body button.adv-dot.active:not(#x),
  html body button.ayc-card-dot.active:not(#x) {
    width: 14px !important;
    height: 14px !important;
    min-width: 14px !important;
    min-height: 14px !important;
    background: var(--ayc-green, #9dc41a) !important;
    background-color: var(--ayc-green, #9dc41a) !important;
    border: 2px solid var(--ayc-green, #9dc41a) !important;
    transform: none !important;
  }
}

/* ============================================================
   §95-anim — DESKTOP ANIMATIONS LAYER (≥1025px)
   ------------------------------------------------------------
   Implementa la capa "viva" para escritorio: reveals con stagger,
   parallax suave, hover-lift en cards, magnetic buttons,
   counter animations. Trabaja en conjunto con
   aycDesktopInteractivity() en animations.js.
   Respeta prefers-reduced-motion y nunca afecta mobile/tablet.
   ============================================================ */
@media (min-width: 1025px) {

  /* — Reveal base classes — opacity:1 DEFAULT (visible incluso si JS no dispara) */
  .ayc-d-reveal {
    transition: opacity .85s cubic-bezier(.2,.7,.2,1),
                transform .85s cubic-bezier(.2,.7,.2,1);
    will-change: opacity, transform;
  }
  /* Solo si JS marca ayc-d-prepared antes de observer, el elemento esconde */
  .ayc-d-reveal.ayc-d-prepared:not(.is-visible) { opacity: 0; }
  .ayc-d-reveal.ayc-d-prepared.ayc-d-fade-up:not(.is-visible)   { transform: translate3d(0, 36px, 0); }
  .ayc-d-reveal.ayc-d-prepared.ayc-d-fade-left:not(.is-visible) { transform: translate3d(-36px, 0, 0); }
  .ayc-d-reveal.ayc-d-prepared.ayc-d-fade-right:not(.is-visible){ transform: translate3d( 36px, 0, 0); }
  .ayc-d-reveal.ayc-d-prepared.ayc-d-scale-up:not(.is-visible)  { transform: scale(.94) translate3d(0, 18px, 0); }

  .ayc-d-reveal.is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }

  /* — Stagger por data-d-stagger — */
  .ayc-d-reveal[data-d-stagger="1"] { transition-delay: .05s; }
  .ayc-d-reveal[data-d-stagger="2"] { transition-delay: .15s; }
  .ayc-d-reveal[data-d-stagger="3"] { transition-delay: .25s; }
  .ayc-d-reveal[data-d-stagger="4"] { transition-delay: .35s; }
  .ayc-d-reveal[data-d-stagger="5"] { transition-delay: .45s; }

  /* — Card hover lift (universal) — */
  .ayc-d-lift,
  .elementor-post__card,
  .elementor-widget-testimonial,
  .ayc-card,
  .ayc-service-card,
  .qs-team-card {
    transition: transform .35s cubic-bezier(.2,.7,.2,1),
                box-shadow .35s ease,
                border-color .35s ease !important;
    will-change: transform, box-shadow;
  }
  .ayc-d-lift:hover,
  .elementor-post__card:hover,
  .elementor-widget-testimonial:hover,
  .ayc-card:hover,
  .ayc-service-card:hover,
  .qs-team-card:hover {
    transform: translate3d(0, -6px, 0) !important;
    box-shadow: 0 18px 38px -16px rgba(20, 40, 80, .22),
                0 8px 16px -10px rgba(20, 40, 80, .14) !important;
  }

  /* — Image-box scale on reveal — */
  .ayc-d-reveal.ayc-d-scale-up.is-visible img,
  .ayc-d-reveal.ayc-d-scale-up.is-visible .elementor-image-box-img img {
    transition: transform .55s ease;
  }
  .elementor-widget-image-box .elementor-image-box-img,
  .elementor-widget-image .elementor-widget-container img {
    transition: transform .45s cubic-bezier(.2,.7,.2,1);
    will-change: transform;
  }
  .elementor-widget-image-box:hover .elementor-image-box-img img,
  .elementor-widget-image:hover .elementor-widget-container img {
    transform: scale(1.035);
  }

  /* — Botones: micro hover + magnetic (var --ayc-mag-x/y) — */
  .ayc-d-btn,
  .elementor-button,
  a.elementor-button,
  .ayc-btn {
    transition: transform .25s cubic-bezier(.2,.7,.2,1),
                box-shadow .25s ease,
                background-color .25s ease,
                color .25s ease,
                filter .25s ease !important;
    will-change: transform, box-shadow;
  }
  .ayc-d-btn:hover,
  .elementor-button:hover,
  a.elementor-button:hover,
  .ayc-btn:hover {
    transform: translate3d(var(--ayc-mag-x, 0px), calc(var(--ayc-mag-y, 0px) - 2px), 0) !important;
    box-shadow: 0 14px 28px -10px rgba(20, 40, 80, .25),
                0 4px 10px -4px rgba(20, 40, 80, .15) !important;
    filter: brightness(1.06);
  }
  .ayc-d-btn:active,
  .elementor-button:active,
  a.elementor-button:active {
    transform: translate3d(0, 0, 0) scale(.98) !important;
    filter: brightness(.96);
    transition-duration: .08s !important;
  }

  /* — Parallax: shift background-position con --ayc-parallax-y — */
  .ayc-d-parallax {
    background-position: center var(--ayc-parallax-y, 0px) !important;
    transition: background-position .12s linear;
  }

  /* — Counter element subtle pop on reveal — */
  .ayc-d-counter.is-visible .elementor-image-box-title {
    animation: ayc-d-counter-pop .6s cubic-bezier(.2,.7,.2,1);
  }
  @keyframes ayc-d-counter-pop {
    0%   { transform: scale(.85); }
    60%  { transform: scale(1.06); }
    100% { transform: scale(1); }
  }

  /* — Section "rise" animation when not already revealed — */
  @keyframes ayc-d-section-rise {
    0%   { opacity: 0; transform: translate3d(0, 28px, 0); }
    100% { opacity: 1; transform: translate3d(0, 0, 0); }
  }

  /* — Smooth scroll behavior (CSS fallback) — */
  html { scroll-behavior: smooth; }

  /* — Header sticky con suave blur al scroll (no toca layout) — */
  body.scrolled .elementor-location-header,
  body.scrolled #hdr_sec1,
  body.scrolled header {
    box-shadow: 0 8px 26px -18px rgba(20, 40, 80, .25);
    transition: box-shadow .25s ease;
  }

  /* — Link underline animado en menú — */
  .elementor-location-header a:not(.elementor-button):not(.ayc-btn) {
    position: relative;
    transition: color .25s ease;
  }
  .elementor-location-header a:not(.elementor-button):not(.ayc-btn)::after {
    content: "";
    position: absolute;
    left: 0; right: 0; bottom: -4px;
    height: 2px;
    background: var(--ayc-green, #9dc41a);
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform .35s cubic-bezier(.2,.7,.2,1);
  }
  .elementor-location-header a:not(.elementor-button):not(.ayc-btn):hover::after,
  .elementor-location-header a:not(.elementor-button):not(.ayc-btn).is-current::after {
    transform: scaleX(1);
    transform-origin: left center;
  }

  /* — Imagen widget zoom-on-reveal + tilt micro — */
  .elementor-widget-image .elementor-widget-container,
  .elementor-widget-image-box .elementor-image-box-wrapper {
    overflow: hidden;
    border-radius: inherit;
  }

  /* — Hero (primer e-con-full grande con background) ligero zoom — */
  body.elementor-page #vrz9flip,
  body.elementor-page > .elementor > [data-id]:first-child,
  body.elementor-page .elementor-section:first-of-type {
    overflow: hidden;
  }
  body.elementor-page #vrz9flip > .elementor-element[data-element_type="image"] img,
  body.elementor-page #vrz9flip img.elementor-bg,
  body.elementor-page .elementor-section:first-of-type .elementor-bg {
    transition: transform 8s ease-out;
  }
  body.elementor-page.is-loaded #vrz9flip img.elementor-bg,
  body.elementor-page.is-loaded .elementor-section:first-of-type .elementor-bg {
    transform: scale(1.04);
  }

  /* — Focus visible accesible (no destruir el visual) — */
  .ayc-d-btn:focus-visible,
  .elementor-button:focus-visible {
    outline: 3px solid var(--ayc-green, #9dc41a);
    outline-offset: 3px;
    transform: translate3d(0, -2px, 0) !important;
  }
}

/* — Reduce motion: anular movimientos — */
@media (min-width: 1025px) and (prefers-reduced-motion: reduce) {
  .ayc-d-reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
  .ayc-d-lift:hover,
  .elementor-post__card:hover,
  .elementor-widget-testimonial:hover,
  .ayc-card:hover,
  .ayc-service-card:hover,
  .qs-team-card:hover { transform: none !important; }
  .ayc-d-btn:hover,
  .elementor-button:hover,
  a.elementor-button:hover { transform: none !important; filter: none !important; }
  html { scroll-behavior: auto !important; }
  .ayc-d-parallax { background-position: center !important; }
}

/* ============================================================
   §95-fixes — HOME PDF MATCH (desktop ≥1025px)
   ------------------------------------------------------------
   Pequeñas correcciones puntuales: stats nunca opacas, dots
   testimoniales visibles, secciones hero/promesa con padding
   PDF, footer alineado.
   ============================================================ */
@media (min-width: 1025px) {
  /* Garantiza que stats numbers nunca queden ocultos por reveal */
  body.page-id-13 .elementor-element-zgzick0h,
  body.page-id-13 .elementor-element-ya4wbjti,
  body.page-id-13 .elementor-element-c8ql1y3s,
  body.page-id-13 .elementor-element-0h5qmaso,
  body.page-id-13 .elementor-element-ur1nztr5 {
    /* Si JS no inicializa por algún motivo, no quedar invisible >2s */
    animation: ayc-d-stat-failsafe .01s linear 3s forwards;
  }
  @keyframes ayc-d-stat-failsafe {
    to { opacity: 1; transform: none; }
  }

  /* Hero overlay: gradiente sutil para legibilidad del texto */
  body.page-id-13 #vrz9flip {
    position: relative;
  }
  body.page-id-13 #vrz9flip::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0,20,60,.18) 0%, rgba(0,20,60,.42) 100%);
    pointer-events: none;
    z-index: 1;
  }
  body.page-id-13 #vrz9flip > * { position: relative; z-index: 2; }

  /* Card de testimonial: dejarlo más alto y centrado como en PDF */
  body.page-id-13 .elementor-widget-testimonial .elementor-testimonial {
    padding: 28px 28px !important;
    background: #ffffff;
    border-radius: 14px;
    border: 1px solid rgba(157, 196, 26, .35);
    box-shadow: 0 4px 16px -8px rgba(20, 40, 80, .14);
  }

  /* Number stats: color marca + size — alinea con PDF */
  body.page-id-13 .elementor-element-zgzick0h .elementor-image-box-title,
  body.page-id-13 .elementor-element-ya4wbjti .elementor-image-box-title,
  body.page-id-13 .elementor-element-c8ql1y3s .elementor-image-box-title,
  body.page-id-13 .elementor-element-0h5qmaso .elementor-image-box-title,
  body.page-id-13 .elementor-element-ur1nztr5 .elementor-image-box-title {
    color: var(--ayc-green, #9dc41a) !important;
    font-weight: 700 !important;
    font-size: 42px !important;
    line-height: 1.1 !important;
  }
}

/* =====================================================================
   §97 — DESKTOP ANIMATIONS LAYER (≥1025px only)
   ===================================================================== */
@media (min-width: 1025px) {

  /* §97a — Scroll reveal base — opacity:1 DEFAULT, anima sólo si JS marca .ayc-d-prepared */
  .ayc-d-reveal { transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
  .ayc-d-reveal.ayc-d-prepared:not(.is-revealed) { opacity: 0; transform: translateY(40px); }
  .ayc-d-reveal.is-revealed { opacity: 1; transform: translateY(0); }

  /* Stagger */
  .e-con-full > .elementor-element.ayc-d-reveal:nth-child(2).is-revealed { transition-delay: 80ms; }
  .e-con-full > .elementor-element.ayc-d-reveal:nth-child(3).is-revealed { transition-delay: 160ms; }
  .e-con-full > .elementor-element.ayc-d-reveal:nth-child(4).is-revealed { transition-delay: 240ms; }
  .e-con-full > .elementor-element.ayc-d-reveal:nth-child(5).is-revealed { transition-delay: 320ms; }

  /* §97b — Slide-left/right variants — solo si .ayc-d-prepared */
  .ayc-d-reveal-left { transition: all 0.8s cubic-bezier(0.16,1,0.3,1); }
  .ayc-d-reveal-right { transition: all 0.8s cubic-bezier(0.16,1,0.3,1); }
  .ayc-d-reveal-left.ayc-d-prepared:not(.is-revealed) { opacity: 0; transform: translateX(-50px); }
  .ayc-d-reveal-right.ayc-d-prepared:not(.is-revealed) { opacity: 0; transform: translateX(50px); }
  .ayc-d-reveal-left.is-revealed,
  .ayc-d-reveal-right.is-revealed { opacity: 1; transform: translateX(0); }

  /* §97c — Scale-in variant — solo si .ayc-d-prepared */
  .ayc-d-reveal-scale { transition: all 0.7s cubic-bezier(0.34, 1.56, 0.64, 1); }
  .ayc-d-reveal-scale.ayc-d-prepared:not(.is-revealed) { opacity: 0; transform: scale(0.92); }
  .ayc-d-reveal-scale.is-revealed { opacity: 1; transform: scale(1); }

  /* §97d — Card hover lift */
  .elementor-widget-image-box,
  .elementor-widget-testimonial,
  .ayc-service-card,
  .ayc-card,
  .qs-team-card,
  .qs-value-card,
  .qs-diff-card {
    transition: transform 0.4s ease, box-shadow 0.4s ease;
    will-change: transform;
  }
  .elementor-widget-image-box:hover,
  .elementor-widget-testimonial:hover,
  .ayc-service-card:hover,
  .ayc-card:hover,
  .qs-team-card:hover,
  .qs-value-card:hover,
  .qs-diff-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 16px 40px rgba(0, 51, 102, 0.15);
  }

  /* §97e — Button micro-animation */
  a.elementor-button,
  button.elementor-button {
    transition: transform 0.25s ease, box-shadow 0.25s ease, background-color 0.25s ease;
  }
  a.elementor-button:hover,
  button.elementor-button:hover {
    transform: translateY(-2px) scale(1.02);
    box-shadow: 0 10px 24px rgba(157, 196, 26, 0.35);
  }
  a.elementor-button:active,
  button.elementor-button:active {
    transform: translateY(0) scale(0.98);
  }

  /* §97f — Parallax hero (CSS-only background-attachment fixed) */
  body.home .elementor-section.elementor-section-stretched[style*="background-image"],
  .ayc-parallax-bg {
    background-attachment: fixed !important;
    background-size: cover !important;
  }

  /* §97g — REMOVED: Heading underline draw causaba líneas verdes innecesarias */

  /* §97h — Smooth scroll */
  html { scroll-behavior: smooth; }

  /* §97i — Image zoom on hover (cards con imagen) */
  .elementor-image-box-img img,
  .elementor-image-box-img,
  .ayc-card-image {
    overflow: hidden;
    transition: transform 0.6s ease;
  }
  .elementor-widget-image-box:hover .elementor-image-box-img img,
  .ayc-service-card:hover .ayc-card-image {
    transform: scale(1.08);
  }

  /* §97j — Dots animate on active change */
  .ayc-carousel-dot,
  .qs-team-dot,
  .qs-tl-dot,
  .ayc-svc-dot {
    transition: all 0.3s ease;
  }
  .ayc-carousel-dot.active,
  .qs-team-dot.is-active,
  .qs-tl-dot.is-active,
  .ayc-svc-dot.active {
    transform: scale(1.15);
  }

  /* §97k — prefers-reduced-motion respect */
  @media (prefers-reduced-motion: reduce) {
    .ayc-d-reveal,
    .ayc-d-reveal-left,
    .ayc-d-reveal-right,
    .ayc-d-reveal-scale {
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
    }
    html { scroll-behavior: auto; }
  }
}

/* §98-home — REVERTIDO: el agente rompió la página. Mantener home como estaba antes. */


/* ============================================================
   §99-shape — Shape-outside: texto envuelve imágenes circulares
   Desktop only. Opt-in via .has-circular-image / .ayc-shape-wrap
   wrappers, plus selective auto-application sobre patrones donde
   visualmente aplica (NO testimonials column-stacked, NO qs-diff
   stacked porque la columna es <200px).
   ============================================================ */
@media (min-width: 1025px) {

  /* Base — opt-in: cualquier imagen / div circular dentro de un
     wrapper con .has-circular-image o .ayc-shape-wrap flota para
     que el texto envuelva la curva. */
  .has-circular-image > img,
  .has-circular-image > picture > img,
  .has-circular-image .ayc-circ-img,
  .ayc-shape-wrap > img,
  .ayc-shape-wrap > .ayc-circ-img {
    float: left;
    border-radius: 50%;
    shape-outside: circle(50%);
    -webkit-shape-outside: circle(50%);
    shape-margin: 14px;
    -webkit-shape-margin: 14px;
    margin: 0 16px 8px 0;
  }
  .has-circular-image.is-right > img,
  .has-circular-image.is-right > picture > img,
  .has-circular-image.is-right .ayc-circ-img,
  .ayc-shape-wrap.is-right > img,
  .ayc-shape-wrap.is-right > .ayc-circ-img {
    float: right;
    margin: 0 0 8px 16px;
  }

  /* Genérico — cualquier elemento con clase que contenga "round"
     y dimensión >= 140px, dentro de un contenedor con texto
     adyacente: flota para envolver. Aplicado conservadoramente
     solo cuando el elemento tiene la utility class .ayc-float-wrap. */
  [class*="round"].ayc-float-wrap,
  img.ayc-circ-float {
    float: left;
    shape-outside: circle(50%);
    -webkit-shape-outside: circle(50%);
    shape-margin: 14px;
    margin: 0 16px 8px 0;
  }
  [class*="round"].ayc-float-wrap.is-right,
  img.ayc-circ-float.is-right {
    float: right;
    margin: 0 0 8px 16px;
  }

  /* Reset shape-outside dentro de flex/grid (donde NO debe activarse
     porque rompería el layout): forzar shape-outside:none salvo
     cuando el parent tenga clase .ayc-shape-allow. */
  .elementor-widget-testimonial .elementor-testimonial-image img {
    /* Evitar regresión: avatares <100px no se beneficiarian y romperian
       flex-column stacking actual de Elementor. NO floatear. */
    shape-outside: none;
  }
}

/* ============================================================
   §99-skeleton — Skeleton loading universal (desktop)
   Pulse animation para <img> que aún no cargaron y secciones con
   background-image grande (heros). Limpieza automática vía JS al
   evento load. NUNCA aplica a imágenes ya completas.
   ============================================================ */
@media (min-width: 1025px) {

  /* Keyframe único reutilizable */
  @keyframes aycSkeletonPulse {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
  }

  /* Base skeleton class — puede aplicarse a cualquier placeholder */
  .ayc-skeleton {
    background: linear-gradient(90deg, #e9ecef 25%, #f4f5f7 50%, #e9ecef 75%);
    background-size: 200% 100%;
    animation: aycSkeletonPulse 1.4s ease-in-out infinite;
  }

  /* IMG que aún no terminó de cargar — JS aplica esta clase */
  img.ayc-img-loading {
    background: linear-gradient(90deg, #e9ecef 25%, #f4f5f7 50%, #e9ecef 75%);
    background-size: 200% 100%;
    animation: aycSkeletonPulse 1.4s ease-in-out infinite;
    /* Preserva dimensiones: si la img tiene width/height attrs el
       espacio ya está reservado; si no, min-height evita colapso. */
    min-height: 40px;
    color: transparent; /* oculta alt-text mientras carga */
  }
  /* Una vez cargada, JS reemplaza la clase y removemos animación */
  img.ayc-img-loaded {
    animation: none !important;
    background: none !important;
    color: inherit;
    min-height: 0;
  }
  /* Si hubo error, limpiar igualmente */
  img.ayc-img-error {
    animation: none !important;
    background: none !important;
  }

  /* Heros y secciones con background-image grandes:
     mientras la imagen de fondo no esté "cargada" (JS marca
     .ayc-bg-loaded), pintar un pulse encima vía pseudo-element. */
  .elementor-section[style*="background-image"]:not(.ayc-bg-loaded):not(.ayc-bg-skip),
  .elementor-element[style*="background-image"].ayc-bg-skel:not(.ayc-bg-loaded) {
    position: relative;
  }
  .elementor-section[style*="background-image"]:not(.ayc-bg-loaded):not(.ayc-bg-skip)::before,
  .elementor-element[style*="background-image"].ayc-bg-skel:not(.ayc-bg-loaded)::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(233,236,239,0.85) 25%, rgba(244,245,247,0.85) 50%, rgba(233,236,239,0.85) 75%);
    background-size: 200% 100%;
    animation: aycSkeletonPulse 1.4s ease-in-out infinite;
    z-index: 0;
    pointer-events: none;
    opacity: 1;
    transition: opacity 0.35s ease;
  }
  /* Cuando ya cargó, fade-out limpio */
  .elementor-section[style*="background-image"].ayc-bg-loaded::before,
  .elementor-element[style*="background-image"].ayc-bg-skel.ayc-bg-loaded::before {
    opacity: 0;
    animation: none;
    content: none;
  }

  /* prefers-reduced-motion: desactiva el pulse */
  @media (prefers-reduced-motion: reduce) {
    .ayc-skeleton,
    img.ayc-img-loading,
    .elementor-section[style*="background-image"]:not(.ayc-bg-loaded)::before {
      animation: none !important;
    }
  }
}

/* ============================================================
   §99-qs-tl — QUIENES SOMOS: Timeline scroll-driven pin (FIX)
   ------------------------------------------------------------
   BUG: el carrusel ".qs-tl-carousel" usa position:fixed cuando
   esta `.is-pinned` para quedar pegado al viewport mientras el
   usuario hace scroll dentro de [data-id="qs-tl-sec"] (height:400vh).
   Sin embargo, el widget contenedor [data-id="qs-tl-html"] recibe
   la clase `.ayc-d-reveal.is-visible` (§95-anim) que aplica
   `transform: translate3d(0,0,0) scale(1)`. CUALQUIER `transform`
   (incluso identidad) en un ancestro convierte ese ancestro en el
   "containing block" de los descendientes con `position:fixed`
   (spec CSS), de modo que el "fixed" deja de ser relativo al
   viewport y pasa a ser relativo al ancestro transformado. Por eso
   el carrusel "bajaba con la sección" en lugar de quedar pineado:
   el `top:0` era relativo al ancestro, no al viewport.
   FIX: neutralizar transform/will-change en ese contenedor +
   marcarlo con isolation:auto, sin tocar el reveal del resto de
   la página. Solo desktop (≥1025px): en mobile §11 ya gestiona
   un slider clásico sin pin.
   ============================================================ */
@media (min-width: 1025px) {

  /* 1) Neutralizar transform en el wrapper para que position:fixed
        del .qs-tl-carousel resuelva contra el viewport, no contra
        el ancestro con transform identidad. Specificity nuclear. */
  html body.page-id-87 [data-id="qs-tl-html"],
  html body.page-id-87 [data-id="qs-tl-html"].ayc-d-reveal,
  html body.page-id-87 [data-id="qs-tl-html"].ayc-d-reveal.is-visible,
  html body.page-id-87 [data-id="qs-tl-html"].ayc-d-reveal.is-revealed,
  html body.page-id-87 [data-id="qs-tl-html"].is-visible,
  html body.page-id-87 [data-id="qs-tl-html"].is-revealed {
    transform: none !important;
    -webkit-transform: none !important;
    will-change: auto !important;
    perspective: none !important;
    filter: none !important;
    backdrop-filter: none !important;
    contain: none !important;
    isolation: auto !important;
    opacity: 1 !important;
  }

  /* 2) Mismo trato preventivo a la propia sección (defensivo) para
        que ningún animation layer rompa el sticky en el futuro. */
  html body.page-id-87 [data-id="qs-tl-sec"],
  html body.page-id-87 [data-id="qs-tl-sec"].ayc-d-reveal,
  html body.page-id-87 [data-id="qs-tl-sec"].ayc-d-reveal.is-visible {
    transform: none !important;
    -webkit-transform: none !important;
    will-change: auto !important;
    perspective: none !important;
    filter: none !important;
    contain: none !important;
    isolation: auto !important;
  }

  /* 3) Garantizar altura de scroll (4 slides × 100vh + offsets) y
        que el carrusel ocupe 100vh exactos cuando esté pineado.
        Reafirma valores de quienes-somos.css por si una regla
        posterior los machacara. */
  html body.page-id-87 [data-id="qs-tl-sec"] {
    height: 400vh !important;
    min-height: 400vh !important;
    position: relative !important;
    display: block !important;
    overflow: visible !important;
  }
  html body.page-id-87 .qs-tl-carousel {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100vh !important;
    overflow: hidden !important;
  }
  html body.page-id-87 .qs-tl-carousel.is-pinned {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
  }
  html body.page-id-87 .qs-tl-carousel.is-end {
    position: absolute !important;
    top: auto !important;
    bottom: 0 !important;
  }
}

/* ============================================================
   §99-qs-diff — QUIENES SOMOS: "Qué nos hace diferentes" (PDF match)
   ------------------------------------------------------------
   Diferencias clave detectadas vs PDF "Sobre Nosotros copia.pdf":
   - Círculos: actualmente WHITE fill + navy icon. PDF: GREEN solid
     (#9dc41a) con icono BLANCO. Borde verde-oliva interno y arc
     blanco/navy en top-left.
   - Zigzag invertido: actualmente items 2,4 bajan (+60px). PDF
     muestra items 2,4 ARRIBA (los items 1,3,5 son los que bajan).
   - Bullets: PDF muestra viñetas "•" visibles dentro del body,
     texto centrado horizontalmente pero con marcadores.
   - Body color: navy más oscuro y line-height más generoso.
   ============================================================ */
html body.page-id-87 [data-id="qs-diff-sec"] {
  background: #f4f5f7 !important;
  padding: 70px 40px 110px !important;
}

html body.page-id-87 [data-id="qs-diff-title"] .elementor-heading-title {
  font-family: 'Futura Bold', 'Montserrat', sans-serif !important;
  font-weight: 700 !important;
  font-size: 34px !important;
  color: #15296A !important;
  text-align: center !important;
  margin: 0 0 56px 0 !important;
}

html body.page-id-87 [data-id="qs-diff-row"] {
  width: 100% !important;
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: flex-start !important;
  justify-content: center !important;
  gap: 28px !important;
  padding: 30px 10px 30px !important;
}

/* Reset previo zigzag desde quienes-somos.css (items 2,4 bajaban) */
html body.page-id-87 [data-id="qs-diff-2"],
html body.page-id-87 [data-id="qs-diff-4"] {
  transform: none !important;
}

/* NUEVO zigzag (PDF): items 1, 3, 5 bajan; items 2, 4 quedan arriba */
@media (min-width: 1025px) {
  html body.page-id-87 [data-id="qs-diff-1"],
  html body.page-id-87 [data-id="qs-diff-3"],
  html body.page-id-87 [data-id="qs-diff-5"] {
    transform: translateY(60px) !important;
  }
  html body.page-id-87 [data-id="qs-diff-2"],
  html body.page-id-87 [data-id="qs-diff-4"] {
    transform: translateY(0) !important;
  }
}

/* Card item dimensions */
html body.page-id-87 [data-id^="qs-diff-"][data-id$="-1"],
html body.page-id-87 [data-id^="qs-diff-"][data-id$="-2"],
html body.page-id-87 [data-id^="qs-diff-"][data-id$="-3"],
html body.page-id-87 [data-id^="qs-diff-"][data-id$="-4"],
html body.page-id-87 [data-id^="qs-diff-"][data-id$="-5"] {
  width: calc(20% - 24px) !important;
  max-width: 220px !important;
  padding: 0 6px !important;
}

/* CIRCLE: green solid (#9dc41a) + WHITE icon + decorative arc */
html body.page-id-87 .qs-diff-circle {
  width: 110px !important;
  height: 110px !important;
  border-radius: 50% !important;
  background: #9dc41a !important;
  border: none !important;
  margin: 0 auto 20px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-shadow: 0 6px 18px rgba(157, 196, 26, 0.30) !important;
  position: relative !important;
  overflow: visible !important;
}

/* Outer decorative arc (top-left, navy) — mimics PDF accent */
html body.page-id-87 .qs-diff-circle::before {
  content: '' !important;
  position: absolute !important;
  inset: -8px !important;
  border-radius: 50% !important;
  border: 3px solid transparent !important;
  border-top-color: #15296A !important;
  border-left-color: #15296A !important;
  transform: rotate(-35deg) !important;
  pointer-events: none !important;
}

/* Inner light ring (PDF has a subtle inner highlight) */
html body.page-id-87 .qs-diff-circle::after {
  content: '' !important;
  position: absolute !important;
  inset: 6px !important;
  border-radius: 50% !important;
  border: 2px solid rgba(255, 255, 255, 0.45) !important;
  pointer-events: none !important;
}

/* Icon: white, large, centered */
html body.page-id-87 .qs-diff-circle i,
html body.page-id-87 .qs-diff-circle svg {
  font-family: 'Font Awesome 5 Free', 'Font Awesome 6 Free' !important;
  font-weight: 900 !important;
  font-size: 42px !important;
  color: #FFFFFF !important;
  line-height: 1 !important;
  z-index: 2 !important;
  position: relative !important;
}

/* TITLE under circle: navy bold, centered, comfortable */
html body.page-id-87 .qs-diff-title {
  font-family: 'Futura Bold', 'Montserrat', sans-serif !important;
  font-weight: 700 !important;
  font-size: 19px !important;
  line-height: 1.25 !important;
  color: #15296A !important;
  text-align: center !important;
  margin: 0 0 14px 0 !important;
}

/* BODY: navy text, centered with visible bullets */
html body.page-id-87 .qs-diff-body {
  font-family: 'Futura Medium', 'Open Sans', sans-serif !important;
  font-weight: 500 !important;
  font-size: 14px !important;
  line-height: 1.55 !important;
  color: #1e2751 !important;
  text-align: center !important;
}

html body.page-id-87 .qs-diff-body ul {
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  align-items: center !important;
}

html body.page-id-87 .qs-diff-body ul li {
  position: relative !important;
  margin: 0 !important;
  padding: 0 0 0 14px !important;
  text-align: left !important;
  max-width: 200px !important;
  font-size: 13.5px !important;
  line-height: 1.5 !important;
  color: #1e2751 !important;
}

/* Visible green bullet "•" before each item — PDF style */
html body.page-id-87 .qs-diff-body ul li::before {
  content: '\2022' !important; /* • */
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  color: #9dc41a !important;
  font-weight: 900 !important;
  font-size: 16px !important;
  line-height: 1.5 !important;
}

/* Single-line items (1 li): keep them visually balanced */
html body.page-id-87 .qs-diff-body ul:has(li:only-child) li {
  text-align: left !important;
}

/* TABLET (≤1024px): cancel zigzag, wrap to 3-up grid */
@media (max-width: 1024px) {
  html body.page-id-87 [data-id="qs-diff-row"] {
    flex-wrap: wrap !important;
    gap: 24px 16px !important;
  }
  html body.page-id-87 [data-id^="qs-diff-"]:not([data-id="qs-diff-sec"]):not([data-id="qs-diff-inner"]):not([data-id="qs-diff-title"]):not([data-id="qs-diff-row"]) {
    width: calc(33.33% - 12px) !important;
    max-width: none !important;
    transform: none !important;
  }
  html body.page-id-87 .qs-diff-circle {
    width: 96px !important;
    height: 96px !important;
  }
  html body.page-id-87 .qs-diff-circle i,
  html body.page-id-87 .qs-diff-circle svg {
    font-size: 36px !important;
  }
}

/* MOBILE (≤767px): 1-up vertical stack */
@media (max-width: 767px) {
  html body.page-id-87 [data-id^="qs-diff-"]:not([data-id="qs-diff-sec"]):not([data-id="qs-diff-inner"]):not([data-id="qs-diff-title"]):not([data-id="qs-diff-row"]) {
    width: 100% !important;
    max-width: 320px !important;
    margin: 0 auto !important;
  }
  html body.page-id-87 [data-id="qs-diff-title"] .elementor-heading-title {
    font-size: 26px !important;
    margin: 0 0 32px 0 !important;
  }
}

/* =====================================================================
   §100-qs-val — FIX: "Nuestros Valores" cards (page-id-87)
   ---------------------------------------------------------------------
   DIAGNÓSTICO:
   El badge circular verde (.qs-value-icon) es position:absolute con
   top:-26px y 54px de alto. Su contenedor de posicionamiento NO es la
   card .qs-val-N sino el widget interno .qs-val-N-content (el text-
   editor que ganó un containing-block por will-change/transform de la
   animación §97d / .ayc-d-reveal). Por eso el icono se ancla al widget
   de contenido y su mitad inferior (27px) invade los primeros píxeles
   donde arranca el título .qs-value-title — overlap medido: ~21-28px.
   Subir padding-top de la card NO lo resuelve: empuja icono Y título
   por igual (ambos cuelgan del mismo widget).
   FIX: el icono se ancla al widget de contenido => empujamos el TÍTULO
   hacia abajo con margin-top suficiente para despejar la mitad inferior
   del badge (27px + holgura). Card con padding-top moderado.
   Scope nuclear page-id-87 + data-id. Aplica en todos los anchos
   (el overlap existe a cualquier ancho).
   ===================================================================== */
html body.page-id-87 .elementor-element[data-id="qs-val-1"],
html body.page-id-87 .elementor-element[data-id="qs-val-2"],
html body.page-id-87 .elementor-element[data-id="qs-val-3"],
html body.page-id-87 .elementor-element[data-id="qs-val-4"] {
  padding-top: 30px !important;
  overflow: visible !important;
}
/* Icono: re-afirmar badge top-center */
html body.page-id-87 .elementor-element[data-id="qs-val-1"] .qs-value-icon,
html body.page-id-87 .elementor-element[data-id="qs-val-2"] .qs-value-icon,
html body.page-id-87 .elementor-element[data-id="qs-val-3"] .qs-value-icon,
html body.page-id-87 .elementor-element[data-id="qs-val-4"] .qs-value-icon {
  position: absolute !important;
  top: -27px !important;
  left: 50% !important;
  transform: translateX(-50%) !important;
  z-index: 4 !important;
}
/* Título: margin-top que despeja la mitad inferior del badge (27px)
   más holgura visual. El badge ocupa de -27px a +27px sobre el widget
   de contenido => título a 40px deja ~13px de aire bajo el icono. */
html body.page-id-87 .elementor-element[data-id="qs-val-1"] .qs-value-title,
html body.page-id-87 .elementor-element[data-id="qs-val-2"] .qs-value-title,
html body.page-id-87 .elementor-element[data-id="qs-val-3"] .qs-value-title,
html body.page-id-87 .elementor-element[data-id="qs-val-4"] .qs-value-title {
  margin-top: 40px !important;
  position: relative !important;
  z-index: 2 !important;
}

/* =====================================================================
   §100-svc-text — FIX: texto sobre imagen con color roto (page-id-27)
   ---------------------------------------------------------------------
   DIAGNÓSTICO:
   Las service cards (svc-card-a/b/c — AYC Advisors, Ayuda Center,
   AYC Accountants) tienen una imagen de fondo (.ayc-card-image) con un
   overlay navy oscuro .ayc-card-overlay rgba(19,28,64,.56). El título
   .ayc-card-title es blanco (OK) pero la descripción .ayc-card-desc
   computaba rgb(55,65,81) (#374151 gris oscuro) => contraste roto,
   texto casi invisible sobre el overlay oscuro.
   CAUSA: la regla §92b-color
     @media(min-width:1025px){
       html body .elementor-widget-text-editor p:not([style*="color"])
         { color: var(--ayc-text-body); } }  // = #374151
   El párrafo de la descripción vive dentro de un .elementor-widget-
   text-editor sin color inline, así que §92b-color lo pisa. La regla
   de servicios.css (rgba(255,255,255,.92), sin !important) pierde por
   orden de cascada / specificity.
   FIX: forzar texto BLANCO en .ayc-card-desc cuando está dentro del
   overlay oscuro de las cards de servicios. Scope nuclear page-id-27 +
   .ayc-card-overlay. NO afecta otras descripciones ni otras páginas.
   ===================================================================== */
html body.page-id-27 .ayc-service-card .ayc-card-overlay .ayc-card-desc,
html body.page-id-27 .ayc-service-card .ayc-card-overlay .ayc-card-desc p,
html body.page-id-27 .elementor-element[data-id="svc-card-a"] .ayc-card-overlay .ayc-card-desc,
html body.page-id-27 .elementor-element[data-id="svc-card-b"] .ayc-card-overlay .ayc-card-desc,
html body.page-id-27 .elementor-element[data-id="svc-card-c"] .ayc-card-overlay .ayc-card-desc,
html body.page-id-27 .ayc-card-image .ayc-card-overlay .ayc-card-desc,
html body.page-id-27 .ayc-card-overlay .elementor-widget-text-editor p:not([style*="color"]) {
  color: #FFFFFF !important;
}
/* Re-afirmar también el título blanco por consistencia (ya lo era) */
html body.page-id-27 .ayc-service-card .ayc-card-overlay .ayc-card-title,
html body.page-id-27 .ayc-card-image .ayc-card-overlay .ayc-card-title {
  color: #FFFFFF !important;
}

/* =====================================================================
   §101-footer-fixes — Footer (template post-id 6) — Fase 1
   ---------------------------------------------------------------------
   §101a — O2: TELÉFONO DEL FOOTER NO VISIBLE
   DIAGNÓSTICO (confirmado con Playwright getComputedStyle + DevTools):
   El widget de dirección/teléfono/horario [data-id="ftr_addr"] vive
   dentro del contenedor footer [data-id="ftr_main"]. Conflicto de
   cascada en el background de ese contenedor — 4 reglas compiten:
     · style.css      => background #002244 !important   (spec 0,2,0)
     · post-6.css     => background #002244               (sin !imp)
     · overrides.css  => background #F7F9FC !important     (spec 0,4,0)
     · overrides.css  => background #FFFFFF !important     (spec 0,4,0) <= GANA
   => el footer se RENDERIZA CLARO/BLANCO, no navy. Pero el texto del
   footer sí quedó configurado para fondo oscuro: style.css fuerza
   ".elementor-element[data-id=ftr_main] * { color:rgba(255,255,255,.85)
   !important }". El enlace del teléfono usa inline color:inherit y
   heredaba ese BLANCO => texto blanco sobre footer blanco = teléfono
   "+1 305-971-5232" totalmente invisible. (La dirección sí se veía
   porque otra regla de overrides.css la pintaba en gris #6B7280.)
   FIX: dado que el footer se ve claro, forzar el texto del widget
   ftr_addr a NAVY corporativo #002244 — alto contraste sobre el fondo
   claro y coherente con la marca. Para ganarle a la regla blanca de
   style.css ("[data-id=ftr_main] *", spec 0,2,0) y a las de overrides
   (.elementor-6 ..., spec 0,4,1) se usa "html body .elementor-6
   .elementor-element[data-id=ftr_addr] <hijo>" => spec 0,5,2. Scope
   nuclear al data-id del widget => no afecta nada más del footer.
   ===================================================================== */
html body .elementor-6 .elementor-element[data-id="ftr_addr"],
html body .elementor-6 .elementor-element[data-id="ftr_addr"] p,
html body .elementor-6 .elementor-element[data-id="ftr_addr"] span,
html body .elementor-6 .elementor-element[data-id="ftr_addr"] div,
html body .elementor-6 .elementor-element[data-id="ftr_addr"] a,
html body .elementor-6 .elementor-element[data-id="ftr_addr"] a:link,
html body .elementor-6 .elementor-element[data-id="ftr_addr"] a:visited,
html body .elementor-6 .elementor-element[data-id="ftr_addr"] a:hover,
html body .elementor-6 .elementor-element[data-id="ftr_addr"] a:focus {
  color: #002244 !important;
}

/* ---------------------------------------------------------------------
   §101b — O3: HORARIO DE OFICINA (icono)
   El bloque "Nuestro horario de oficina..." se añadió al JSON de
   ftr_addr con un SVG inline de reloj (fill #9dc41a). NO se usó <i
   class="fas fa-clock"> porque "Font Awesome 5 Free" está unloaded en
   el sitio (solo carga FA Brands) => el glyph saldría vacío. El SVG no
   depende de ninguna fuente y siempre renderiza.

   §101c — O3 mobile: el texto del horario es largo y overrides.css
   fuerza white-space:nowrap en ftr_addr span/div/p (regla "body
   .elementor-6 ...", spec 0,4,1, fuera de media query) => el horario
   se desbordaba/cortaba en pantallas estrechas. FIX: en ≤768px permitir
   que el texto del widget ftr_addr envuelva. Specificity 0,5,1 para
   ganarle a la regla nowrap de overrides.
   --------------------------------------------------------------------- */
@media (max-width: 768px) {
  html body .elementor-6 .elementor-element[data-id="ftr_addr"],
  html body .elementor-6 .elementor-element[data-id="ftr_addr"] p,
  html body .elementor-6 .elementor-element[data-id="ftr_addr"] span,
  html body .elementor-6 .elementor-element[data-id="ftr_addr"] div {
    white-space: normal !important;
  }
}

/* =====================================================================
   §102 — CONTRASTE LEGIBILIDAD
   ---------------------------------------------------------------------
   Correcciones de contraste reportadas por el cliente. NO toca botones
   (texto blanco sobre verde es diseño intencional), ni el verde de marca,
   ni el estado activo del menú. Solo color / text-shadow puntuales.
   Colores usados: navy #131C40, blanco #ffffff, gris neutro rgb(75,85,99)
   (ya presente en el sistema como --ayc-text-soft #4b5563 ≈ rgb(75,85,99)).
   =====================================================================
   §102a — Card descriptions de servicio (Ayuda Center / Accountants /
   Advisors): .ayc-card-desc computa gris rgb(55,65,81) sobre el overlay
   navy oscuro rgb(19,28,64) => contraste 1.61, ilegible. Forzar BLANCO.
   Cubre las 10 cards vía .ayc-card-desc (scope page-id 29/69/78) + los
   data-id como respaldo. Specificity: html body.page-id-XX [data-id] ...
   o html body.page-id-XX .ayc-service-card .ayc-card-desc => alto, bate
   las reglas page-CSS y el §92b-color de overrides.
   --------------------------------------------------------------------- */
html body.page-id-29 .ayc-service-card .ayc-card-desc,
html body.page-id-29 .ayc-service-card .ayc-card-desc p,
html body.page-id-29 .ayc-card-overlay .ayc-card-desc,
html body.page-id-29 .ayc-card-overlay .ayc-card-desc p,
html body.page-id-69 .ayc-service-card .ayc-card-desc,
html body.page-id-69 .ayc-service-card .ayc-card-desc p,
html body.page-id-69 .ayc-card-overlay .ayc-card-desc,
html body.page-id-69 .ayc-card-overlay .ayc-card-desc p,
html body.page-id-78 .ayc-service-card .ayc-card-desc,
html body.page-id-78 .ayc-service-card .ayc-card-desc p,
html body.page-id-78 .ayc-card-overlay .ayc-card-desc,
html body.page-id-78 .ayc-card-overlay .ayc-card-desc p,
/* Respaldo por data-id de cada card (10 cards) */
html body .elementor-element[data-id="accs41f88c"] .ayc-card-desc,
html body .elementor-element[data-id="accs41f88c"] .ayc-card-desc p,
html body .elementor-element[data-id="accsf366a2"] .ayc-card-desc,
html body .elementor-element[data-id="accsf366a2"] .ayc-card-desc p,
html body .elementor-element[data-id="accs45aa9c"] .ayc-card-desc,
html body .elementor-element[data-id="accs45aa9c"] .ayc-card-desc p,
html body .elementor-element[data-id="acc-card-text-4-new"] .ayc-card-desc,
html body .elementor-element[data-id="acc-card-text-4-new"] .ayc-card-desc p,
html body .elementor-element[data-id="acc-card-text-5"] .ayc-card-desc,
html body .elementor-element[data-id="acc-card-text-5"] .ayc-card-desc p,
html body .elementor-element[data-id="advs41f88c"] .ayc-card-desc,
html body .elementor-element[data-id="advs41f88c"] .ayc-card-desc p,
html body .elementor-element[data-id="advsf366a2"] .ayc-card-desc,
html body .elementor-element[data-id="advsf366a2"] .ayc-card-desc p,
html body .elementor-element[data-id="advs45aa9c"] .ayc-card-desc,
html body .elementor-element[data-id="advs45aa9c"] .ayc-card-desc p,
html body .elementor-element[data-id="adv-card-text-4-new"] .ayc-card-desc,
html body .elementor-element[data-id="adv-card-text-4-new"] .ayc-card-desc p,
html body .elementor-element[data-id="ac-card3"] .ayc-card-desc,
html body .elementor-element[data-id="ac-card3"] .ayc-card-desc p,
/* También el data-id del propio nodo .ayc-card-desc si lo lleva */
html body .elementor-element[data-id="accs41f88c"],
html body .elementor-element[data-id="accsf366a2"],
html body .elementor-element[data-id="accs45aa9c"],
html body .elementor-element[data-id="acc-card-text-4-new"],
html body .elementor-element[data-id="acc-card-text-5"],
html body .elementor-element[data-id="advs41f88c"],
html body .elementor-element[data-id="advsf366a2"],
html body .elementor-element[data-id="advs45aa9c"],
html body .elementor-element[data-id="adv-card-text-4-new"],
html body .elementor-element[data-id="ac-card3"] {
  color: #ffffff !important;
}
/* Asegura los párrafos internos de esos data-id (si el data-id es del
   contenedor y la descripción es un <p> dentro de text-editor) */
html body .elementor-element[data-id="accs41f88c"] p,
html body .elementor-element[data-id="accsf366a2"] p,
html body .elementor-element[data-id="accs45aa9c"] p,
html body .elementor-element[data-id="acc-card-text-4-new"] p,
html body .elementor-element[data-id="acc-card-text-5"] p,
html body .elementor-element[data-id="advs41f88c"] p,
html body .elementor-element[data-id="advsf366a2"] p,
html body .elementor-element[data-id="advs45aa9c"] p,
html body .elementor-element[data-id="adv-card-text-4-new"] p,
html body .elementor-element[data-id="ac-card3"] p {
  color: #ffffff !important;
}

/* ---------------------------------------------------------------------
   §102b — Hero title spans VERDES sobre foto (Contacto ct-hero-title /
   Quiénes Somos qs-hero-title): contraste 2.03. NO se recolorea — se
   conserva el acento verde de marca — solo se añade sombra oscura fuerte
   para legibilidad del texto sobre la fotografía.
   --------------------------------------------------------------------- */
html body .elementor-element[data-id="ct-hero-title"] span,
html body .elementor-element[data-id="ct-hero-title"] p span,
html body .elementor-element[data-id="qs-hero-title"] span,
html body .elementor-element[data-id="qs-hero-title"] p span {
  text-shadow: 0 2px 12px rgba(0,0,0,.85), 0 1px 4px rgba(0,0,0,.7);
}

/* ---------------------------------------------------------------------
   §102c — Subtítulos / disclaimers de hero en blanco translúcido
   (rgba(255,255,255,0.75–0.96)) => a blanco opacidad total. Conserva
   tamaño y todo lo demás (solo cambia color).
   --------------------------------------------------------------------- */
html body .elementor-element[data-id="svc-hero-legal"],
html body .elementor-element[data-id="svc-hero-legal"] p,
html body .elementor-element[data-id="ac-hero-sub"],
html body .elementor-element[data-id="ac-hero-sub"] p,
html body .elementor-element[data-id="ac-hero-legal"],
html body .elementor-element[data-id="ac-hero-legal"] p,
html body .elementor-element[data-id="acch41e73b"],
html body .elementor-element[data-id="acch41e73b"] p,
html body .elementor-element[data-id="acch41e73b"] .elementor-heading-title,
html body .elementor-element[data-id="acc-esencia-content"],
html body .elementor-element[data-id="acc-esencia-content"] p,
html body .elementor-element[data-id="advh41e73b"],
html body .elementor-element[data-id="advh41e73b"] p,
html body .elementor-element[data-id="advh41e73b"] .elementor-heading-title,
html body .elementor-element[data-id="advhc46abe"],
html body .elementor-element[data-id="advhc46abe"] p,
html body .elementor-element[data-id="adv-esencia-content"],
html body .elementor-element[data-id="adv-esencia-content"] p,
html body .elementor-element[data-id="ct-hero-legal"],
html body .elementor-element[data-id="ct-hero-legal"] p,
html body .elementor-element[data-id="qs-hero-legal"],
html body .elementor-element[data-id="qs-hero-legal"] p,
html body .elementor-element[data-id="faq-hero-sub"],
html body .elementor-element[data-id="faq-hero-sub"] p,
html body .elementor-element[data-id="faq-hero-legal"],
html body .elementor-element[data-id="faq-hero-legal"] p {
  color: #ffffff !important;
}
/* NOTA: pxr2o2bu y 4x0jnkpu se EXCLUYEN de §102c — son texto gris
   (#6B7280) sobre el fondo claro #F7F9FC de la sección de testimonios
   del Home, NO texto blanco sobre imagen. Ponerlos en blanco los
   volvería invisibles. La auditoría los clasificó mal. */

/* ---------------------------------------------------------------------
   §102e — Quiénes Somos qs-philo-graphic: texto blanco sobre fondo casi
   blanco rgb(244,245,247) => contraste 1.09, invisible. Texto a navy.
   Y disclaimer del footer ftr_disclaimer: gris demasiado claro
   rgb(156,163,175) => oscurecer a rgb(75,85,99).
   --------------------------------------------------------------------- */
html body.page-id-87 .elementor-element[data-id="qs-philo-graphic"],
html body.page-id-87 .elementor-element[data-id="qs-philo-graphic"] p,
html body.page-id-87 .elementor-element[data-id="qs-philo-graphic"] span,
html body.page-id-87 .elementor-element[data-id="qs-philo-graphic"] div,
html body.page-id-87 .qs-philo-graphic,
html body.page-id-87 .qs-philo-graphic p,
html body.page-id-87 .qs-philo-graphic span,
html body.page-id-87 .qs-philo-graphic div {
  color: #131C40 !important;
}

html body .elementor-6 .elementor-element[data-id="ftr_disclaimer"],
html body .elementor-6 .elementor-element[data-id="ftr_disclaimer"] p,
html body .elementor-6 .elementor-element[data-id="ftr_disclaimer"] span,
html body .elementor-6 .elementor-element.elementor-element-ftr_disclaimer p,
html body .elementor-element[data-id="ftr_disclaimer"] p {
  color: rgb(75,85,99) !important;
}

/* =====================================================================
   §103 — ESCALA TIPOGRAFICA +15% (DESKTOP + PORTATIL)
   ---------------------------------------------------------------------
   El cliente reporta que el texto se ve excesivamente pequeño. Aumento
   homogéneo de +15% sobre la tipografía de DESKTOP (≥1025px). SOLO se
   cambia font-size (y line-height proporcional cuando hace falta). NO se
   toca padding/margin/width ni dimensiones de contenedor.
   ÁMBITO: desktop grande (≥1025px). El rango portátil 1025-1599px que
   gestiona §90 sigue funcionando — aquí se re-escala +15% sobre los
   valores ya normalizados por §90/§89/§93, manteniendo proporción.
   Mobile/tablet (≤1024px, tokens --fs-* de typography.css) NO se toca.
   Tamaños de auditoría -> +15%:
     párrafo body 18 -> 21   |  H2 sección 28 -> 32   |  H2 home 38 -> 44
     H3 card 24 -> 28        |  H3 default 22 -> 25    |  H1 hero 40 -> 46
     ítems lista/check 16 -> 18  |  menú 15 -> 17.25
     testimonio nombre/rol 15 -> 17  |  footer links 14 -> 16
     legal/disclaimer 11-12 -> mínimo forzado 14 (un 11px*1.15=12.6 sigue
       siendo demasiado pequeño => piso 14px).
   Las reglas §89/§93 fuerzan 18px en párrafos con !important y alta
   specificity; §103 se carga DESPUES y usa specificity ≥ con !important
   para re-pisarlas a 21px.
   =====================================================================
   §103a — Párrafos / cuerpo de texto: 18px -> 21px (desktop ≥1025px).
   Re-pisa §89a y §93a (que fijan 18px). line-height 1.6 se conserva. */
@media (min-width: 1025px) {
  html body p,
  html body .elementor-widget-text-editor p,
  html body .elementor-widget-text-editor li,
  html body .elementor-icon-box-description,
  html body .elementor-image-box-description,
  html body .elementor-widget-icon-list .elementor-icon-list-text,
  html body .elementor-testimonial-content,
  html body .elementor-tab-content,
  html body .elementor-tab-content p,
  html body .elementor-accordion .elementor-tab-content p,
  html body .ayc-card-desc,
  html body .ayc-card-desc p,
  html body .ayc-card-footer-text {
    font-size: 21px !important;
    line-height: 1.6 !important;
  }

  /* §103a-bis — Párrafos page-specific que §93a fija a 18px con
     :not(#x). Specificity (0,4,3+) para re-pisar a 21px. */
  html body.page-id-13 .elementor-element[data-id="6r9y102e"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="5jn6nn5b"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="vumj2cdv"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="ptfe26dd"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="krzy8fuz"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="pxr2o2bu"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="33wqgkfg"] p:not(#x),
  html body.page-id-27 .ayc-card-desc:not(#x),
  html body.page-id-27 .elementor-element .ayc-card-desc:not(#x),
  html body.page-id-27 .elementor-element[data-id="svc-intro-title"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="ac-que-desc"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="ac-que-foot"] p:not(#x),
  html body.page-id-29 .ayc-card-desc:not(#x),
  html body.page-id-29 .elementor-element[data-id="pxr2o2bu"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p:not(#x),
  html body.page-id-69 .elementor-element[data-id="acc-esencia-content"] p:not(#x),
  html body.page-id-69 .ayc-card-desc:not(#x),
  html body.page-id-69 .ayc-card-footer-text:not(#x),
  html body.page-id-69 .elementor-icon-box-description:not(#x),
  html body.page-id-69 .elementor-element .elementor-icon-box-description:not(#x),
  html body.page-id-78 .elementor-icon-box-description:not(#x),
  html body.page-id-78 .elementor-element .elementor-icon-box-description:not(#x),
  html body.page-id-78 .ayc-card-desc:not(#x),
  html body.page-id-78 .elementor-element[data-id="adv-esencia-content"] p:not(#x),
  html body.page-id-87 .elementor-element[data-id="qs-intro-text2"] p:not(#x),
  html body.page-id-87 .elementor-element[data-id="qs-cta-sub"] p:not(#x),
  html body.page-id-87 [data-id="qs-intro-text1"] p:not(#x),
  html body.page-id-87 [data-id="qs-philo-text"] p:not(#x),
  html body.page-id-87 [data-id="qs-stats-foot"] p:not(#x),
  html body.page-id-87 [data-id="qs-team-text"] p:not(#x),
  html body.page-id-87 [data-id="qs-team-foot"] p:not(#x),
  html body.page-id-87 .qs-diff-body:not(#x),
  html body.page-id-87 .qs-diff-body p:not(#x),
  html body.page-id-87 .qs-value-body:not(#x),
  html body.page-id-87 .qs-value-body p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-intro-text"] p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-cta-sub"] p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-form-sub"] p:not(#x),
  html body.page-id-90 .faq-a:not(#x),
  html body.page-id-90 .faq-a p:not(#x),
  html body.page-id-90 .faq-a li:not(#x),
  html body.page-id-90 .elementor-widget-text-editor p:not(#x) {
    font-size: 21px !important;
    line-height: 1.6 !important;
  }
}

/* §103b — Headings: +15% sobre los valores normalizados por §90a.
   H1 40->46, H2 default 38->44, H2 alt 28->32, H3 default 22->25,
   H3 card 24->28, H3 counter (stats) 34->39 — counter incluido para
   conservar paridad de jerarquía (NO cambia las cifras numéricas en sí,
   solo su tamaño tipográfico de display, igual que el resto de texto).
   Specificity replica la cadena de §90a para re-pisarla. */
@media (min-width: 1025px) {
  /* H1 hero principal */
  html body[class] .elementor-element .elementor-widget-heading h1.elementor-heading-title,
  html body[class] .elementor-element.elementor-widget-heading h1.elementor-heading-title,
  html body[class] .elementor-widget-heading h1.elementor-heading-title.elementor-size-default {
    font-size: 46px !important;
    line-height: 1.1 !important;
  }
  /* H2 secciones default = 44px */
  html body[class] .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body[class] .elementor-element.elementor-widget-heading h2.elementor-heading-title,
  html body[class] .elementor-widget-heading h2.elementor-heading-title.elementor-size-default {
    font-size: 44px !important;
    line-height: 1.18 !important;
  }
  /* Páginas internas con H2 base 28px -> 32px */
  html body.page-id-27 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-87 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-69 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-78 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-29 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-90 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-86 .elementor-element .elementor-widget-heading h2.elementor-heading-title {
    font-size: 32px !important;
    line-height: 1.2 !important;
  }
  /* H3 default 22px -> 25px */
  html body[class] .elementor-element .elementor-widget-heading h3.elementor-heading-title,
  html body[class] .elementor-element.elementor-widget-heading h3.elementor-heading-title,
  html body[class] .elementor-widget-heading h3.elementor-heading-title.elementor-size-default {
    font-size: 25px !important;
    line-height: 1.25 !important;
  }
  /* Servicios H3 24px -> 28px */
  html body.page-id-27 .elementor-element .elementor-widget-heading h3.elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.25 !important;
  }
  /* H3 stats counter (Home) 34px -> 39px — tamaño de display, NO altera
     el valor de la cifra */
  html body[class] .ayc-stat-card h3,
  html body[class] [class*="counter"] h3,
  html body[class] .elementor-counter-number,
  html body[class] .elementor-element .elementor-image-box-wrapper h3.elementor-image-box-title,
  html body[class] .elementor-element .elementor-image-box-content h3.elementor-image-box-title,
  html body[class] .elementor-widget-image-box h3.elementor-image-box-title {
    font-size: 39px !important;
    line-height: 1.15 !important;
  }
  /* Tabs h3 20px -> 23px */
  html body[class] .elementor-element .elementor-tabs .elementor-tab-content h3 {
    font-size: 23px !important;
    line-height: 1.25 !important;
  }
  /* Card titles custom 24px -> 28px */
  html body[class] .ayc-card-overlay h3.ayc-card-title,
  html body[class] .ayc-card-body h3.ayc-card-title,
  html body[class] .ayc-service-card h3.ayc-card-title,
  html body.page-id-27 .ayc-card-title,
  html body.page-id-29 .ayc-card-title,
  html body.page-id-69 .ayc-card-title,
  html body.page-id-78 .ayc-card-title {
    font-size: 28px !important;
    line-height: 1.25 !important;
  }
  /* QS custom titles 22px -> 25px */
  html body.page-id-87 h3.qs-value-title,
  html body.page-id-87 h3.qs-diff-title,
  html body.page-id-87 h3.qs-stat-title,
  html body.page-id-87 h3.qs-team-title {
    font-size: 25px !important;
    line-height: 1.25 !important;
  }
  /* QS hero headline 34px -> 39px */
  html body[class] .elementor-element .qs-hero-headline,
  html body.page-id-87 .qs-hero-headline {
    font-size: 39px !important;
    line-height: 1.2 !important;
  }
  /* QS timeline title 26px -> 30px */
  html body.page-id-87 .elementor-element .elementor-widget-heading h3.qs-tl-title,
  html body.page-id-87 .qs-tl-block h3.qs-tl-title {
    font-size: 30px !important;
    line-height: 1.2 !important;
  }
}

/* §103c — Ítems de lista / checklist 16px -> 18px (desktop ≥1025px). */
@media (min-width: 1025px) {
  html body .ayc-check-item,
  html body .ayc-check-item p,
  html body .ayc-check-list li,
  html body .elementor-widget-icon-list .elementor-icon-list-item > .elementor-icon-list-text {
    font-size: 18px !important;
  }
}

/* §103d — Menú de navegación 15px -> 17.25px (+15%). NO toca color ni
   el estado activo. */
@media (min-width: 1025px) {
  html body .elementor-5 .elementor-element.elementor-element-hdr_nav .elementor-nav-menu--main .elementor-item,
  html body .elementor-nav-menu--main .elementor-item {
    font-size: 17.25px !important;
  }
}

/* §103e — Testimonios: nombre / rol 15px -> 17px. El contenido del
   testimonio ya escala a 21px en §103a. */
@media (min-width: 1025px) {
  html body .elementor-testimonial-name,
  html body .elementor-testimonial-job {
    font-size: 17px !important;
  }
}

/* §103f — Enlaces / texto fino del footer 14px -> 16px.
   El copyright (.ftr_copy / .ayc-footer-fine) sube 14 -> 16. */
@media (min-width: 1025px) {
  html body .elementor-6 .elementor-element .elementor-widget-text-editor p,
  html body .elementor-6 .elementor-element .elementor-icon-list-text,
  html body .elementor-6 .elementor-element li > a,
  html body footer .ayc-footer-fine,
  html body footer .elementor-widget-text-editor p.ayc-footer-fine,
  html body .elementor-element[data-id="ftr_copy"] p {
    font-size: 16px !important;
  }
}

/* §103g — Texto legal / disclaimer / microcopy: tras +15% un 11px queda
   en ~12.6px, aún demasiado pequeño => PISO de 14px forzado.
   Cubre todos los disclaimers de hero, el footer disclaimer, footer
   copyright fine y las clases de utilidad legal. */
@media (min-width: 1025px) {
  html body .elementor-element[data-id="qt1e2jbl"] p,
  html body .elementor-element[data-id="qs-hero-legal"] p,
  html body .elementor-element[data-id="svc-hero-legal"] p,
  html body .elementor-element[data-id="ac-hero-legal"] p,
  html body .elementor-element[data-id="ct-hero-legal"] p,
  html body .elementor-element[data-id="faq-hero-legal"] p,
  html body.page-id-90 .elementor-element[data-id="faq-hero-legal"] p,
  html body .elementor-element[data-id="advhc46abe"] p,
  html body .elementor-element[data-id="acchc46abe"] p,
  html body .qs-hero-legal-text,
  html body .ayc-disclaimer,
  html body .ayc-legal,
  html body .elementor-6 .elementor-element[data-id="ftr_disclaimer"] p,
  html body .elementor-element[data-id="ftr_disclaimer"] p,
  html body .elementor-element[data-id="ftr_disclaimer"] span {
    font-size: 14px !important;
    line-height: 1.5 !important;
  }
}

/* §103h — Rango PORTATIL 1025-1599px (§90): mantener proporción.
   §90a normaliza headings a valores fijos en este rango. §103b ya
   re-escala +15% para todo ≥1025px, así que el portátil hereda el +15%
   de §103b. Esta sub-sección NO añade reglas nuevas: documenta que la
   escala +15% del portátil está cubierta por §103a/§103b (que aplican a
   ≥1025px e incluyen el rango 1025-1599). Los portátiles no quedan
   sobredimensionados porque parten de los valores reducidos de §90a y
   solo suben un 15% homogéneo. */

/* §103i — Monitores grandes (≥1600px): el H1 hero NO debe encogerse.
   §103b fija H1 = 46px para todo ≥1025px (correcto en el rango portátil
   1025-1599 donde §90a normaliza el H1 a 40px). Pero en ≥1600px Elementor
   entrega H1 más grandes (hasta ~50px) y 46px los encogería — lo contrario
   de "agrandar". Aquí el H1 sube a 54px en ≥1600px: mayor que cualquier
   valor original y homogéneo (todos los H1 iguales en pantalla grande). */
@media (min-width: 1600px) {
  html body[class] .elementor-element .elementor-widget-heading h1.elementor-heading-title,
  html body[class] .elementor-element.elementor-widget-heading h1.elementor-heading-title,
  html body[class] .elementor-widget-heading h1.elementor-heading-title.elementor-size-default {
    font-size: 54px !important;
    line-height: 1.1 !important;
  }
}

/* =====================================================================
   §104 — CORRECCIONES QA (regresiones detectadas en revisión visual)
   ===================================================================== */

/* §104a — Quiénes Somos: el texto central del gráfico de filosofía
   (.qs-philo-center-text) va ENCIMA del arco azul oscuro .qs-philo-arc
   (rgb(21,41,106)) => debe ser BLANCO. El §102e lo volvió navy por error
   (la auditoría confundió el fondo claro exterior con el arco oscuro).
   Especificidad (0,3,3) con div.clase para vencer al §102e (0,3,2). */
@media (min-width: 1025px) {
  html body.page-id-87 .qs-philo-graphic div.qs-philo-center-text,
  html body.page-id-87 .qs-philo-graphic .qs-philo-center .qs-philo-center-text,
  html body.page-id-87 .qs-philo-graphic .qs-philo-center-text {
    color: #FFFFFF !important;
  }
}

/* §104b — Disclaimer legal del HERO: forzar mínimo 14px. Las CSS de
   página (servicios/ayuda-center/advisors) fijan 11px. La versión previa
   de §104b NO ganaba porque el <p> del disclaimer no siempre cuelga de
   .elementor-widget-container (estructura distinta por página). Aquí se
   usa el hack :not(#x) — cada :not(#x) suma especificidad de ID — y se
   apunta al <p> como descendiente directo del data-id => gana con
   seguridad sobre cualquier regla page-specific sin ID. */
@media (min-width: 1025px) {
  html body.page-id-27 .elementor-element[data-id="svc-hero-legal"]:not(#x) p:not(#x),
  html body.page-id-29 .elementor-element[data-id="ac-hero-legal"]:not(#x) p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-hero-legal"]:not(#x) p:not(#x),
  html body.page-id-87 .elementor-element[data-id="qs-hero-legal"]:not(#x) p:not(#x),
  html body.page-id-90 .elementor-element[data-id="faq-hero-legal"]:not(#x) p:not(#x),
  html body.page-id-69 .elementor-element[data-id="acchc46abe"]:not(#x) p:not(#x),
  html body.page-id-78 .elementor-element[data-id="advhc46abe"]:not(#x) p:not(#x) {
    font-size: 14px !important;
    line-height: 1.5 !important;
  }
}

/* =====================================================================
   §105 — TIPOGRAFIA: 2do incremento del cuerpo (punto 5 del cliente).
   El cliente reporta que los párrafos AÚN se ven pequeños tras §103.
   - Párrafos / cuerpo de texto: 21px -> 23px
   - Ítems de lista / checklist: 18px -> 21px
   - Subtítulos (H3, tabs, títulos de card, títulos QS): re-escalados
     para mantener jerarquía CLARA por encima de los 23px de párrafo.
   - H2 de secciones internas: 32 -> 36px.
   §105 se carga después de §103/§104: misma especificidad => gana por
   orden de cascada. NO toca H1, H2 grande del Home, contadores de
   estadística ni el chrome (menú, footer, disclaimers legales).
   ===================================================================== */
@media (min-width: 1025px) {
  /* §105a — Párrafos / cuerpo 21 -> 23 (re-pisa §103a) */
  html body p,
  html body .elementor-widget-text-editor p,
  html body .elementor-widget-text-editor li,
  html body .elementor-icon-box-description,
  html body .elementor-image-box-description,
  html body .elementor-widget-icon-list .elementor-icon-list-text,
  html body .elementor-testimonial-content,
  html body .elementor-tab-content,
  html body .elementor-tab-content p,
  html body .elementor-accordion .elementor-tab-content p,
  html body .ayc-card-desc,
  html body .ayc-card-desc p,
  html body .ayc-card-footer-text {
    font-size: 23px !important;
    line-height: 1.6 !important;
  }

  /* §105a-bis — Párrafos page-specific (re-pisa §103a-bis) */
  html body.page-id-13 .elementor-element[data-id="6r9y102e"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="5jn6nn5b"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="vumj2cdv"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="ptfe26dd"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="krzy8fuz"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="4x0jnkpu"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="pxr2o2bu"] p:not(#x),
  html body.page-id-13 .elementor-element[data-id="33wqgkfg"] p:not(#x),
  html body.page-id-27 .ayc-card-desc:not(#x),
  html body.page-id-27 .elementor-element .ayc-card-desc:not(#x),
  html body.page-id-27 .elementor-element[data-id="svc-intro-title"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="ac-que-desc"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="ac-que-foot"] p:not(#x),
  html body.page-id-29 .ayc-card-desc:not(#x),
  html body.page-id-29 .elementor-element[data-id="pxr2o2bu"] p:not(#x),
  html body.page-id-29 .elementor-element[data-id="4x0jnkpu"] p:not(#x),
  html body.page-id-69 .elementor-element[data-id="acc-esencia-content"] p:not(#x),
  html body.page-id-69 .ayc-card-desc:not(#x),
  html body.page-id-69 .ayc-card-footer-text:not(#x),
  html body.page-id-69 .elementor-icon-box-description:not(#x),
  html body.page-id-69 .elementor-element .elementor-icon-box-description:not(#x),
  html body.page-id-78 .elementor-icon-box-description:not(#x),
  html body.page-id-78 .elementor-element .elementor-icon-box-description:not(#x),
  html body.page-id-78 .ayc-card-desc:not(#x),
  html body.page-id-78 .elementor-element[data-id="adv-esencia-content"] p:not(#x),
  html body.page-id-87 .elementor-element[data-id="qs-intro-text2"] p:not(#x),
  html body.page-id-87 .elementor-element[data-id="qs-cta-sub"] p:not(#x),
  html body.page-id-87 [data-id="qs-intro-text1"] p:not(#x),
  html body.page-id-87 [data-id="qs-philo-text"] p:not(#x),
  html body.page-id-87 [data-id="qs-stats-foot"] p:not(#x),
  html body.page-id-87 [data-id="qs-team-text"] p:not(#x),
  html body.page-id-87 [data-id="qs-team-foot"] p:not(#x),
  html body.page-id-87 .qs-diff-body:not(#x),
  html body.page-id-87 .qs-diff-body p:not(#x),
  html body.page-id-87 .qs-value-body:not(#x),
  html body.page-id-87 .qs-value-body p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-intro-text"] p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-cta-sub"] p:not(#x),
  html body.page-id-86 .elementor-element[data-id="ct-form-sub"] p:not(#x),
  html body.page-id-90 .faq-a:not(#x),
  html body.page-id-90 .faq-a p:not(#x),
  html body.page-id-90 .faq-a li:not(#x),
  html body.page-id-90 .elementor-widget-text-editor p:not(#x) {
    font-size: 23px !important;
    line-height: 1.6 !important;
  }

  /* §105c — Ítems de lista / checklist 18 -> 21 (piso = tamaño referencia) */
  html body .ayc-check-item,
  html body .ayc-check-item p,
  html body .ayc-check-list li,
  html body .elementor-widget-icon-list .elementor-icon-list-item > .elementor-icon-list-text {
    font-size: 21px !important;
  }

  /* §105b — Subtítulos / títulos de sección: re-escalados para mantener
     jerarquía clara sobre los 23px de párrafo. H1 y H2 grande del Home
     NO se tocan (ya son 46-54 / 44). */
  /* H2 secciones internas 32 -> 36 */
  html body.page-id-27 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-87 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-69 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-78 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-29 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-90 .elementor-element .elementor-widget-heading h2.elementor-heading-title,
  html body.page-id-86 .elementor-element .elementor-widget-heading h2.elementor-heading-title {
    font-size: 36px !important;
    line-height: 1.2 !important;
  }
  /* H3 default 25 -> 29 */
  html body[class] .elementor-element .elementor-widget-heading h3.elementor-heading-title,
  html body[class] .elementor-element.elementor-widget-heading h3.elementor-heading-title,
  html body[class] .elementor-widget-heading h3.elementor-heading-title.elementor-size-default {
    font-size: 29px !important;
    line-height: 1.25 !important;
  }
  /* Servicios H3 28 -> 32 */
  html body.page-id-27 .elementor-element .elementor-widget-heading h3.elementor-heading-title {
    font-size: 32px !important;
    line-height: 1.25 !important;
  }
  /* Tabs h3 23 -> 28 */
  html body[class] .elementor-element .elementor-tabs .elementor-tab-content h3 {
    font-size: 28px !important;
    line-height: 1.25 !important;
  }
  /* Títulos de card custom 28 -> 32 */
  html body[class] .ayc-card-overlay h3.ayc-card-title,
  html body[class] .ayc-card-body h3.ayc-card-title,
  html body[class] .ayc-service-card h3.ayc-card-title,
  html body.page-id-27 .ayc-card-title,
  html body.page-id-29 .ayc-card-title,
  html body.page-id-69 .ayc-card-title,
  html body.page-id-78 .ayc-card-title {
    font-size: 32px !important;
    line-height: 1.25 !important;
  }
  /* Títulos custom QS 25 -> 29 */
  html body.page-id-87 h3.qs-value-title,
  html body.page-id-87 h3.qs-diff-title,
  html body.page-id-87 h3.qs-stat-title,
  html body.page-id-87 h3.qs-team-title {
    font-size: 29px !important;
    line-height: 1.25 !important;
  }
}


/* =====================================================================
   §106 — CORRECCIONES QA (auditoría universal — contraste + tamaños).
   Las CSS de página tienen reglas que vencen a §103/§105; aquí se usa
   el hack :not(#x):not(#y) (especificidad de 2 IDs) para ganar seguro.
   ===================================================================== */
@media (min-width: 1025px) {

  /* §106a — .ayc-card-footer-text: era texto BLANCO sobre fondo gris
     claro rgb(244,245,247) => invisible (puntos 1 y 5 del cliente:
     "Enfoque humano", "llegues tranquilo", "varios años sin declarar").
     Color -> navy #1E2751 (color ya usado en los títulos de card, no
     inventado) y tamaño unificado a 23px (hoy mezcla 16/18/20/22/23). */
  html body .ayc-card-footer-text:not(#x):not(#y),
  html body .ayc-card-footer-text:not(#x):not(#y) p,
  html body.page-id-69 .ayc-card-footer-text:not(#x):not(#y),
  html body.page-id-78 .ayc-card-footer-text:not(#x):not(#y),
  html body.page-id-29 .ayc-card-footer-text:not(#x):not(#y),
  html body.page-id-69 .ayc-card-footer-text:not(#x):not(#y) p,
  html body.page-id-78 .ayc-card-footer-text:not(#x):not(#y) p,
  html body.page-id-29 .ayc-card-footer-text:not(#x):not(#y) p {
    color: #1E2751 !important;
    font-size: 23px !important;
    line-height: 1.55 !important;
  }

  /* §106c — Quiénes Somos: homogeneizar párrafos del cuerpo a 23px
     (la auditoría halló mezcla de 14/15/18/23px). El disclaimer legal
     queda protegido por §104b y el timeline por §106b (más específicos). */
  html body.page-id-87 .elementor-widget-text-editor p:not(#x):not(#y) {
    font-size: 23px !important;
    line-height: 1.6 !important;
  }

  /* §106b — Quiénes Somos: texto del carrusel de línea de tiempo
     (.qs-tl-desc, "Inicio de actividades con servicios de peticiones
     migratorias...") era 15px => 23px (piso tipográfico exigido). */
  html body.page-id-87 .qs-tl-block p.qs-tl-desc:not(#x):not(#y),
  html body.page-id-87 [data-id="qs-tl-html"] .qs-tl-block p.qs-tl-desc:not(#x):not(#y),
  html body.page-id-87 .elementor-widget-text-editor .qs-tl-block p.qs-tl-desc:not(#x):not(#y) {
    font-size: 23px !important;
    line-height: 1.5 !important;
  }

  /* §106f — FAQ: título de pregunta del acordeón (.faq-q) era 19px
     => 24px (subtítulo, por encima de los 23px de párrafo). */
  html body.page-id-90 .faq-q:not(#x):not(#y) {
    font-size: 24px !important;
  }
}

/* §106d — Home: el hero vrz9flip tenía background-size:100% 100% que
   DEFORMABA (estiraba) la foto. Se fuerza a cover en todos los anchos. */
html body.page-id-13 .elementor-element[data-id="vrz9flip"]:not(#x):not(#y),
html body.page-id-13 .elementor-element.elementor-element-vrz9flip:not(#x):not(#y) {
  background-size: cover !important;
  background-position: center center !important;
}

/* =====================================================================
   §107 — .ayc-card-footer-text: el COLOR navy debe aplicar en TODOS los
   breakpoints. El §106a quedó dentro de @media (min-width:1025px), así
   que en tablet/móvil el texto seguía BLANCO e ilegible. El color va
   sin media query; el tamaño (23px) sigue siendo solo desktop en §106a.
   ===================================================================== */
html body .ayc-card-footer-text:not(#x):not(#y),
html body .ayc-card-footer-text:not(#x):not(#y) p,
html body.page-id-69 .ayc-card-footer-text:not(#x):not(#y),
html body.page-id-78 .ayc-card-footer-text:not(#x):not(#y),
html body.page-id-29 .ayc-card-footer-text:not(#x):not(#y) {
  color: #1E2751 !important;
}

/* =====================================================================
   §108 — PISO TIPOGRÁFICO 23px (desktop ≥1025px). El cliente exige que
   NINGÚN texto de cuerpo/contenido sea menor a 23px (referencia: el
   párrafo del Home "Analizamos tu situación con claridad y sin falsas
   expectativas"). Las CSS de página (servicios/accountants/advisors/
   ayuda-center.css) fijan 15-20px con especificidad (0,2,1)-(0,3,2) y
   vencían a §105/§106. Aquí se usa :not(#x):not(#y) (2 IDs) para ganar
   sobre cualquier regla page-specific (0 IDs). La §108e (debajo, 3 IDs)
   re-protege footer y disclaimers legales para que NO suban a 23px.
   ===================================================================== */
@media (min-width: 1025px) {
  /* §108a — Párrafos / descripciones de card / texto de carrusel /
     descripciones de icon-box e image-box / contenido de tabs.
     NO incluye .elementor-icon-list-text (lo usa el menú footer/header). */
  html body[class] .elementor-widget-text-editor p:not(#x):not(#y),
  html body[class] .elementor-widget-text-editor li:not(#x):not(#y),
  html body[class] .elementor-icon-box-description:not(#x):not(#y),
  html body[class] .elementor-image-box-description:not(#x):not(#y),
  html body[class] .elementor-tab-content:not(#x):not(#y),
  html body[class] .elementor-tab-content p:not(#x):not(#y),
  html body[class] .elementor-tab-content li:not(#x):not(#y),
  html body[class] .elementor-testimonial-content:not(#x):not(#y),
  html body[class] .ayc-card-desc:not(#x):not(#y),
  html body[class] .ayc-card-desc p:not(#x):not(#y),
  html body[class] .ayc-card-footer-text:not(#x):not(#y),
  html body[class] .ayc-card-footer-text p:not(#x):not(#y) {
    font-size: 23px !important;
    line-height: 1.6 !important;
  }
  /* §108b — Ítems de checklist "Lo que incluye" de las páginas de servicio */
  html body[class] .ayc-check-item:not(#x):not(#y),
  html body[class] .ayc-check-item span:not(#x):not(#y),
  html body[class] .ayc-check-item p:not(#x):not(#y),
  html body[class] .ayc-check-list li:not(#x):not(#y),
  html body[class] .ayc-card-features li:not(#x):not(#y) {
    font-size: 23px !important;
    line-height: 1.5 !important;
  }
}

/* §108e — GUARDA: el piso de 23px de §108 NO debe subir el footer ni los
   disclaimers legales. 3x :not(#x) (3 IDs) => vencen al §108 (2 IDs) y
   van después en la cascada. Footer 16px, legales 14px. */
@media (min-width: 1025px) {
  html body[class] .elementor-6 .elementor-widget-text-editor p:not(#x):not(#y):not(#z),
  html body[class] .elementor-6 .elementor-widget-text-editor li:not(#x):not(#y):not(#z) {
    font-size: 16px !important;
  }
  html body[class] .elementor-element[data-id="qt1e2jbl"] p:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="svc-hero-legal"] p:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="ac-hero-legal"] p:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="ct-hero-legal"] p:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="qs-hero-legal"] p:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="faq-hero-legal"] p:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="acchc46abe"] p:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="advhc46abe"] p:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="ftr_disclaimer"] p:not(#x):not(#y):not(#z),
  html body[class] .elementor-widget-text-editor p.ayc-disclaimer:not(#x):not(#y):not(#z),
  html body[class] .elementor-widget-text-editor p.ayc-legal:not(#x):not(#y):not(#z),
  html body[class] .ayc-disclaimer:not(#x):not(#y):not(#z),
  html body[class] .ayc-legal:not(#x):not(#y):not(#z),
  html body[class] .qs-hero-legal-text:not(#x):not(#y):not(#z) {
    font-size: 14px !important;
  }
}

/* =====================================================================
   §109 — Títulos de icon-box: estaban a 18-20px, por DEBAJO del cuerpo
   de 23px => inversión de jerarquía (el título más pequeño que su propia
   descripción). Se suben a 28px (nivel subtítulo, por encima de 23px).
   NO afecta a las cifras de estadísticas: son widgets image-box
   (.elementor-image-box-title), que quedan intactas (~39px). El menú y
   el footer no usan icon-box, así que no se ven afectados.
   ===================================================================== */
@media (min-width: 1025px) {
  html body[class] .elementor-icon-box-title:not(#x):not(#y),
  html body[class] .elementor-widget-icon-box .elementor-icon-box-title:not(#x):not(#y) {
    font-size: 28px !important;
    line-height: 1.3 !important;
  }
}

/* =====================================================================
   §110 — Color de párrafos/descripciones unificado al GRIS de los check
   items (#6B7280 = rgb(107,114,128)). Aplica a .ayc-card-footer-text
   (estaba navy) y a las descripciones de icon-box (proceso/features).
   3x :not(#x) para vencer al §106a/§107 (que fijaban navy con 2 IDs).
   NO toca .ayc-card-desc (texto blanco sobre card oscura) ni el texto
   blanco de secciones oscuras. ===================================== */
html body[class] .ayc-card-footer-text:not(#x):not(#y):not(#z),
html body[class] .ayc-card-footer-text:not(#x):not(#y):not(#z) p,
html body[class] .elementor-icon-box-description:not(#x):not(#y):not(#z) {
  color: #6B7280 !important;
}

/* =====================================================================
   §111 — Filtro azul de los hero: el pseudo ::before del overlay tenía
   opacity:0.5, dejando el filtro rgba(0,15,40,0.65) a media fuerza
   (efectivo ~0.32) — por eso el cliente lo percibía "ausente". Se fuerza
   opacity:1 para que el filtro azul se vea a fuerza completa. ======== */
html body[class] .elementor-element[data-id="vrz9flip"]:not(#x)::before,
html body[class] .elementor-element[data-id="svc-hero-sec"]:not(#x)::before,
html body[class] .elementor-element[data-id="ac-hero-sec"]:not(#x)::before,
html body[class] .elementor-element[data-id="acc-hero-sec"]:not(#x)::before,
html body[class] .elementor-element[data-id="adv-hero-sec"]:not(#x)::before,
html body[class] .elementor-element[data-id="ct-hero-sec"]:not(#x)::before,
html body[class] .elementor-element[data-id="qs-hero-sec"]:not(#x)::before,
html body[class] .elementor-element[data-id="faq-hero-sec"]:not(#x)::before {
  opacity: 1 !important;
}

/* =====================================================================
   §112 — Hero de Quiénes Somos: el titular p.qs-hero-headline estaba
   a 23px base / 42px en spans (mezcla rara, mucho menor al estándar de
   hero). Se unifica a 46px (tamaño de titular de hero estándar del
   sitio). Especificidad (2,4,3+) para vencer al §106c. ============== */
@media (min-width: 1025px) {
  html body.page-id-87 .elementor-element[data-id="qs-hero-title"] p.qs-hero-headline:not(#x):not(#y),
  html body.page-id-87 .elementor-element[data-id="qs-hero-title"] p.qs-hero-headline:not(#x):not(#y) span {
    font-size: 46px !important;
    line-height: 1.22 !important;
  }
}

/* =====================================================================
   §113 — PISO DE TÍTULOS/SUBTÍTULOS 28px (desktop ≥1025px). El cuerpo
   del sitio mide 23px (piso §108). Un título SIEMPRE debe ser claramente
   más grande que el cuerpo, pero múltiples CSS de página fijaban títulos
   y subtítulos a 18-26px (por debajo o apenas igual al cuerpo) => error
   de jerarquía. El caso más visible: los títulos de las cards de proceso
   "Cómo trabajamos" / "Conoce nuestro proceso" eran más pequeños que sus
   propios párrafos.

   Jerarquía objetivo del sitio:
     · Párrafos / cuerpo ................... 23px  (§108, NO se toca)
     · Subtítulos / títulos de card ........ 28-32px
     · Títulos de sección H2 ............... 36px+ (ya correctos)
     · H1 .................................. 46-54px (ya correctos)

   Las CSS de página usan selectores de 0 IDs
   (`body.page-id-XX [data-id="..."] .elementor-heading-title`,
   `body.page-id-XX .qs-value-title`, etc.). Aquí se usa el patrón
   `html body[class] <selector>:not(#x):not(#y)` (2 IDs) para vencerlas.
   NO toca: párrafos/cuerpo, footer, menú, textos legales, ni las CIFRAS
   de estadísticas (.elementor-image-box-title, widgets image-box ~39px).
   Solo AGRANDA títulos pequeños; nunca reduce.
   ===================================================================== */
@media (min-width: 1025px) {

  /* §113a — Títulos de las cards de proceso "Cómo trabajamos" /
     "Conoce nuestro proceso" y de "Por qué elegirnos" (widgets icon-box).
     Las CSS de página los fijaban a 18-20px; §109 ya los subía a 28px,
     pero como son TÍTULOS DE CARD deben destacar => 30px. Aplica a los
     grids de proceso (ac-/acc-/adv-proc-grid, ids ac-p*/acc-p*/adv-p*) y
     a los grids "por qué elegirnos" (ac-why-grid, accw-grid, advw-grid). */
  html body[class] .elementor-element[data-id="ac-proc-grid"] .elementor-icon-box-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="ac-proc-grid"] .elementor-icon-box-title:not(#x):not(#y) span,
  html body[class] .elementor-element[data-id="acc-proc-grid"] .elementor-icon-box-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="acc-proc-grid"] .elementor-icon-box-title:not(#x):not(#y) span,
  html body[class] .elementor-element[data-id="adv-proc-grid"] .elementor-icon-box-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="adv-proc-grid"] .elementor-icon-box-title:not(#x):not(#y) span,
  html body[class] .elementor-element[data-id="ac-why-grid"] .elementor-icon-box-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="ac-why-grid"] .elementor-icon-box-title:not(#x):not(#y) span,
  html body[class] .elementor-element[data-id="accw-grid"] .elementor-icon-box-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="accw-grid"] .elementor-icon-box-title:not(#x):not(#y) span,
  html body[class] .elementor-element[data-id="advw-grid"] .elementor-icon-box-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="advw-grid"] .elementor-icon-box-title:not(#x):not(#y) span,
  html body[class] .elementor-element[data-id="ac-que-grid"] .elementor-icon-box-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="ac-que-grid"] .elementor-icon-box-title:not(#x):not(#y) span {
    font-size: 30px !important;
    line-height: 1.3 !important;
  }

  /* §113b — Títulos de las cards de proceso "Cómo trabajamos" del Home
     (widgets heading h3: "Atendemos tu caso", "Diseñamos tu estrategia",
     "Acompañamos todo el proceso"). overrides.css los dejaba a 22px. */
  html body[class] .elementor-element[data-id="ojot1sgd"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="qc6hehwt"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="njio8v9u"] .elementor-heading-title:not(#x):not(#y) {
    font-size: 30px !important;
    line-height: 1.3 !important;
  }

  /* §113c — Subtítulos de HERO (widgets heading h2 bajo el H1 del hero).
     Las CSS de página los fijaban a 22px (igual al cuerpo). Suben a 28px
     (nivel subtítulo, claramente por encima de los 23px de párrafo). */
  html body[class] .elementor-element[data-id="svc-hero-sub"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="ac-hero-sub"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="acch41e73b"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="advh41e73b"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="faq-hero-sub"] .elementor-heading-title:not(#x):not(#y) {
    font-size: 28px !important;
    line-height: 1.4 !important;
  }

  /* §113d — Subtítulos de SECCIÓN (widgets heading h3, bajo el H2 de cada
     sección: "Así te acompañamos:", "Te ayudamos a identificar tu ruta",
     "Estamos aquí para ayudarte", etc.). Estaban a 18-22px => 28px. */
  html body[class] .elementor-element[data-id="svc-cta-sub"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="ac-proc-sub"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="ac-que-sub"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="ac-cta-sub"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="acc-proc-sub"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="adv-proc-sub"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="qs-philo-sub"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="qs-team-sub"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="faq-cta-sub"] .elementor-heading-title:not(#x):not(#y) {
    font-size: 28px !important;
    line-height: 1.4 !important;
  }

  /* §113e — Subtítulos h3 de las tarjetas de info de Contacto
     ("Datos de contacto", "Visítanos"): estaban a 26px => 28px. */
  html body[class] .elementor-element[data-id="ct-info-left-title"] .elementor-heading-title:not(#x):not(#y),
  html body[class] .elementor-element[data-id="ct-info-right-title"] .elementor-heading-title:not(#x):not(#y) {
    font-size: 28px !important;
    line-height: 1.25 !important;
  }

  /* §113f — Títulos de card basados en clase de Quiénes Somos:
       · .qs-value-title  — títulos de las cards de "Nuestros Valores" (20px)
       · .qs-diff-title   — títulos de las cards de "Qué nos hace
                            diferentes" (18px); NO confundir con el H2 de
                            sección [data-id="qs-diff-title"] (32px, intacto)
       · .qs-team-name    — nombre (título) de cada card del equipo (18px)
     Todos suben a 30px (título de card). */
  html body[class] .qs-value-title:not(#x):not(#y),
  html body[class] h3.qs-value-title:not(#x):not(#y),
  html body[class] .qs-diff-title:not(#x):not(#y),
  html body[class] h3.qs-diff-title:not(#x):not(#y),
  html body[class] .qs-team-name:not(#x):not(#y),
  html body[class] h3.qs-team-name:not(#x):not(#y) {
    font-size: 30px !important;
    line-height: 1.25 !important;
  }

  /* §113g — FAQ: título de pregunta del acordeón (.faq-q). El §106f lo
     había subido a 24px, todavía por debajo del piso de 28px de un
     título/subtítulo. Es el título de cada item => 28px. */
  html body[class] .faq-q:not(#x):not(#y),
  html body[class].page-id-90 .faq-q:not(#x):not(#y) {
    font-size: 28px !important;
    line-height: 1.4 !important;
  }
}

/* =====================================================================
   §114 — Títulos de icon-box de las secciones de proceso ("Cómo
   trabajamos" / "Conoce nuestro proceso") y "Por qué elegir" en las
   páginas de servicio: el §113 quedó vencido por el §109 (28px),
   dejándolos inconsistentes con las cards "Cómo trabajamos" del Home
   (30px). Aquí se fuerzan a 30px con 3x :not(#x) (3 IDs) para ganar
   definitivamente sobre §109 y homogeneizar con el Home.
   ===================================================================== */
@media (min-width: 1025px) {
  html body[class] .elementor-element[data-id="acc-proc-grid"] .elementor-icon-box-title:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="adv-proc-grid"] .elementor-icon-box-title:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="ac-proc-grid"] .elementor-icon-box-title:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="accw-grid"] .elementor-icon-box-title:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="advw-grid"] .elementor-icon-box-title:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="ac-why-grid"] .elementor-icon-box-title:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="ac-que-grid"] .elementor-icon-box-title:not(#x):not(#y):not(#z) {
    font-size: 30px !important;
    line-height: 1.3 !important;
  }
}

/* =====================================================================
   §115 — FIX CRÍTICO: el texto VISIBLE de los .elementor-icon-box-title
   vive en un <span> hijo, gobernado por reglas page-specific
   (body.page-id-XX .elementor-icon-box-title span) a 15-20px. Las
   §109/§113/§114 solo tocaban el <h3> contenedor, NO el <span>, así que
   los títulos de icon-box se veían más pequeños que el cuerpo (23px).
   Aquí se fuerza el <span> con 3x :not(#x) (3 IDs) para vencer.
   ===================================================================== */
@media (min-width: 1025px) {
  /* Global: texto de cualquier título de icon-box >= 28px */
  html body[class] .elementor-icon-box-title span:not(#x):not(#y):not(#z) {
    font-size: 28px !important;
    line-height: 1.3 !important;
  }
  /* Grids de proceso "Cómo trabajamos" y "Por qué elegir": span a 30px */
  html body[class] .elementor-element[data-id="acc-proc-grid"] .elementor-icon-box-title span:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="adv-proc-grid"] .elementor-icon-box-title span:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="ac-proc-grid"] .elementor-icon-box-title span:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="accw-grid"] .elementor-icon-box-title span:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="advw-grid"] .elementor-icon-box-title span:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="ac-why-grid"] .elementor-icon-box-title span:not(#x):not(#y):not(#z),
  html body[class] .elementor-element[data-id="ac-que-grid"] .elementor-icon-box-title span:not(#x):not(#y):not(#z) {
    font-size: 30px !important;
  }
}
