/* ==========================================================================
   BIENESTAR FINANCIERO — Design System
   Estructura, tipografía y métricas replicadas de bancoestado.cl (medidas
   tomadas a 1440px). Paleta derivada del logo de Bienestar Financiero.
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,300;0,6..12,400;0,6..12,600;0,6..12,700;0,6..12,800;1,6..12,400&display=swap');

/* --------------------------------------------------------------------------
   1. TOKENS
   -------------------------------------------------------------------------- */
:root {
  /* Marca — extraídos del logo (#1A6B9A globo/wordmark, #55B247 flecha)
     ---------------------------------------------------------------------
     PUENTE CON ELEMENTOR: cada color consume la Global Color equivalente
     de Elementor si existe, y cae al valor de marca si no. Así el cliente
     cambia la paleta desde Site Settings → Global Colors y se propaga a
     todo el sitio, incluidos los componentes estilados por este archivo.

       Elementor Global Color   →  variable de marca
       Primary                  →  --bf-blue     (azul del logo)
       Secondary                →  --bf-green    (verde del logo)
       Text                     →  --ink
       Accent                   →  --bf-blue-deep (azul de los CTA)
     --------------------------------------------------------------------- */
  --bf-blue:        var(--e-global-color-primary,   #1A6B9A);
  --bf-blue-deep:   var(--e-global-color-accent,    #12527A);  /* rol del #004F9E */
  --bf-blue-dark:   #0E4160;
  --bf-blue-soft:   #E8F1F7;
  --bf-green:       var(--e-global-color-secondary, #55B247);
  --bf-green-dark:  #3E9A33;   /* verde para texto sobre blanco (contraste) */
  --bf-green-light: #6BC45C;
  --bf-green-soft:  #EDF7EA;

  /* Gradiente del header — rol del linear-gradient(70deg,#FF9100,#E83420) */
  --grad-header: linear-gradient(70deg, var(--bf-green) 0%, var(--bf-blue) 100%);
  --grad-band:   linear-gradient(70deg, var(--bf-green) 0%, var(--bf-blue) 100%);

  /* Neutros — idénticos a la referencia */
  --ink:        var(--e-global-color-text, #2C3038);
  --ink-soft:   #5A606B;
  --grey-100:   #F7F7F7;
  --grey-200:   #F0F0F0;
  --grey-300:   #E3E5E8;
  --grey-400:   #C7CBD1;
  --white:      #FFFFFF;
  --dark:       #2C3038;

  /* Métricas de la referencia */
  --topbar-h:   40px;
  --nav-h:      80px;
  --container:  1232px;
  --gutter:     16px;
  --hero-h:     448px;
  --radius-pill: 100px;
  --radius-card: 20px;
  --radius-sm:   12px;

  --shadow-card: 0 4px 20px rgba(44, 48, 56, .10);
  --shadow-pop:  0 12px 32px rgba(44, 48, 56, .16);

  --ease: cubic-bezier(.4, 0, .2, 1);
}

/* Puente con Elementor — segunda mitad.
   Elementor declara sus Global Colors en `.elementor-kit-N`, que vive en
   <body>, no en :root. Como :root está por encima de body, las declaraciones
   de arriba no pueden verlas y siempre caerían al fallback. Se rebindean aquí,
   donde sí son visibles. En el sitio HTML suelto esto es inocuo: sin Elementor,
   las variables no existen y se usa el mismo fallback. */
body {
  --bf-blue:      var(--e-global-color-primary,   #1A6B9A);
  --bf-blue-deep: var(--e-global-color-accent,    #12527A);
  --bf-green:     var(--e-global-color-secondary, #55B247);
  --ink:          var(--e-global-color-text,      #2C3038);
}

/* --------------------------------------------------------------------------
   2. RESET
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: 'Nunito Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  color: var(--ink);
  background: var(--white);
  overflow-x: hidden;
}

img, svg { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
/* Los selectores de atributo tienen especificidad (0,1,0) y le ganan a `button`
   (0,0,1). Hello Elementor aprovecha eso en su reset.css para dar a los botones
   `border: 1px solid #CC3366`, que salía como un borde rosa en las mini-cards
   del hero. Se igualan aquí los tres selectores. */
button,
[type="button"],
[type="submit"],
[type="reset"] {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  border-radius: 0;
  cursor: pointer;
}
ul, ol { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4, h5, p { margin: 0; }

:focus-visible { outline: 3px solid var(--bf-green); outline-offset: 2px; border-radius: 4px; }

/* --------------------------------------------------------------------------
   3. LAYOUT
   -------------------------------------------------------------------------- */
.container {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.section { padding-block: 64px; }
.section--tight { padding-block: 48px; }
.section--grey { background: var(--grey-100); }
.section--soft { background: var(--bf-blue-soft); }

/* --------------------------------------------------------------------------
   4. TIPOGRAFÍA — escala de la referencia
   -------------------------------------------------------------------------- */
.h-display { font-size: 40px; font-weight: 700; line-height: 1.15; letter-spacing: -.5px; }
.h1        { font-size: 32px; font-weight: 700; line-height: 1.2; }
.h2        { font-size: 32px; font-weight: 600; line-height: 1.25; }
.h3        { font-size: 16px; font-weight: 700; line-height: 1.4; }
.lead      { font-size: 20px; font-weight: 400; line-height: 1.55; color: var(--ink); }
.body      { font-size: 16px; font-weight: 400; line-height: 1.6; }
.small     { font-size: 14px; line-height: 1.55; }
.eyebrow   { font-size: 13px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--bf-green-dark); }

.txt-green { color: var(--bf-green-dark); }
.txt-blue  { color: var(--bf-blue); }
.txt-white { color: var(--white); }
.txt-muted { color: var(--ink-soft); }
.txt-center { text-align: center; }

/* Título de sección con la métrica de la referencia (H2 32px/600) */
.section-title { font-size: 32px; font-weight: 600; line-height: 1.25; margin-bottom: 8px; }
.section-title--accent { color: var(--bf-green-dark); }
.section-intro { font-size: 16px; line-height: 1.6; color: var(--ink-soft); max-width: 720px; }
.section-head { margin-bottom: 32px; }
.section-head--center { text-align: center; }
.section-head--center .section-intro { margin-inline: auto; }

/* --------------------------------------------------------------------------
   5. BOTONES — 44px alto, radius 100px, 16px/700, padding 0 18px
   -------------------------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding: 0 24px;
  border-radius: var(--radius-pill);
  font-size: 16px;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  border: 1.6px solid transparent;
  transition: background-color .2s var(--ease), color .2s var(--ease),
              border-color .2s var(--ease), transform .2s var(--ease);
}
.btn:hover { transform: translateY(-1px); }

.btn--primary { background: var(--bf-blue-deep); color: var(--white); }
.btn--primary:hover { background: var(--bf-blue-dark); }

.btn--green { background: var(--bf-green); color: var(--white); }
.btn--green:hover { background: var(--bf-green-dark); }

.btn--outline { background: transparent; color: var(--bf-blue-deep); border-color: var(--bf-blue-deep); }
.btn--outline:hover { background: var(--bf-blue-deep); color: var(--white); }

.btn--white { background: var(--white); color: var(--bf-blue-deep); }
.btn--white:hover { background: var(--grey-200); }

.btn--ghost-white { background: transparent; color: var(--white); border-color: var(--white); }
.btn--ghost-white:hover { background: var(--white); color: var(--bf-blue-deep); }

.btn--sm { min-height: 36px; padding: 0 18px; font-size: 14px; }
.btn--block { width: 100%; }

.link-arrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 16px;
  font-weight: 700;
  color: var(--bf-blue-deep);
}
.link-arrow svg { width: 16px; height: 16px; transition: transform .2s var(--ease); }
.link-arrow:hover svg { transform: translateX(3px); }

/* --------------------------------------------------------------------------
   6. HEADER — topbar 40px (#F7F7F7) + nav 80px (gradiente)
   -------------------------------------------------------------------------- */
.site-header { position: sticky; top: 0; z-index: 900; }

/* --- 6.1 Topbar --- */
.topbar {
  height: var(--topbar-h);
  background: var(--grey-100);
  border-bottom: 1px solid var(--grey-300);
}
.topbar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100%;
  gap: 24px;
}
.topbar__links { display: flex; align-items: center; gap: 20px; }
.topbar__links a { font-size: 13px; font-weight: 700; color: var(--ink); }
.topbar__links a:hover { color: var(--bf-blue); }
.topbar__right { display: flex; align-items: center; gap: 18px; }
.topbar__contact { display: flex; align-items: center; gap: 16px; }
.topbar__contact a {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 700; color: var(--ink);
}
.topbar__contact svg { width: 14px; height: 14px; flex: none; color: var(--bf-green-dark); }
.topbar__contact a:hover { color: var(--bf-blue); }

.social {
  display: flex; align-items: center; gap: 8px;
  padding-left: 18px;
  border-left: 1px solid var(--grey-400);
}
.social a {
  display: grid; place-items: center;
  width: 24px; height: 24px;
  border-radius: 50%;
  color: var(--bf-blue);
  transition: background-color .2s var(--ease), color .2s var(--ease);
}
.social a:hover { background: var(--bf-blue); color: var(--white); }
.social svg { width: 15px; height: 15px; }

/* --- 6.2 Navbar --- */
.navbar {
  height: var(--nav-h);
  /* Color solido de base: sobrevive al lazy-load de fondos de Elementor,
     que anula background-image. El gradiente queda como mejora. */
  background-color: var(--bf-blue);
  background-image: var(--grad-header);
}
.navbar__inner {
  display: flex;
  align-items: center;
  height: 100%;
  gap: 24px;
}
.navbar__logo { display: flex; align-items: center; gap: 12px; flex: none; }
.navbar__logo img { height: 52px; width: auto; }
.navbar__logo-text { color: var(--white); line-height: 1.05; }
.navbar__logo-text strong { display: block; font-size: 17px; font-weight: 800; letter-spacing: .02em; }
.navbar__logo-text span { display: block; font-size: 9px; font-weight: 600; letter-spacing: .14em; opacity: .92; }

.navbar__nav { display: flex; align-items: center; margin-left: auto; }
.navbar__nav > li > a,
.navbar__nav > li > button {
  display: flex; align-items: center; gap: 5px;
  height: var(--nav-h);
  padding: 0 12px;
  font-size: 14px;
  font-weight: 700;
  color: var(--white);
  position: relative;
}
.navbar__nav > li > a::after,
.navbar__nav > li > button::after {
  content: '';
  position: absolute; left: 12px; right: 12px; bottom: 22px;
  height: 2px; background: var(--white);
  transform: scaleX(0); transform-origin: left;
  transition: transform .22s var(--ease);
}
.navbar__nav > li > a:hover::after,
.navbar__nav > li.is-open > button::after,
.navbar__nav > li > a[aria-current="page"]::after { transform: scaleX(1); }
.navbar__nav .caret { width: 10px; height: 10px; transition: transform .22s var(--ease); }
.navbar__nav > li.is-open .caret { transform: rotate(180deg); }

.navbar__actions { display: flex; align-items: center; gap: 12px; flex: none; margin-left: 16px; }
.navbar__actions .btn { min-height: 44px; padding: 0 18px; width: 153px; }

.navbar__burger { display: none; width: 44px; height: 44px; place-items: center; margin-left: auto; color: var(--white); }
.navbar__burger svg { width: 26px; height: 26px; }

/* --- 6.3 Mega-menú (patrón de 4 columnas de la referencia) --- */
.mega {
  position: absolute;
  left: 0; right: 0; top: 100%;
  background: var(--white);
  box-shadow: var(--shadow-pop);
  opacity: 0; visibility: hidden;
  transform: translateY(-8px);
  transition: opacity .22s var(--ease), transform .22s var(--ease), visibility .22s;
}
.navbar__nav > li { position: static; }
.navbar { position: relative; }
li.is-open > .mega { opacity: 1; visibility: visible; transform: translateY(0); }

.mega__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 32px 40px;
  padding: 40px 0 32px;
}
.mega__col-title {
  display: flex; align-items: center; gap: 10px;
  font-size: 17px; font-weight: 700; color: var(--ink);
  margin-bottom: 14px;
}
.mega__col-title svg { width: 26px; height: 26px; flex: none; color: var(--bf-blue); }
.mega__col-title a:hover { color: var(--bf-blue); }
.mega__links li + li { margin-top: 9px; }
.mega__links a { font-size: 14px; color: var(--ink-soft); }
.mega__links a:hover { color: var(--bf-blue); text-decoration: underline; }
.mega__more { display: inline-block; margin-top: 12px; font-size: 14px; font-weight: 700; color: var(--bf-blue-deep); }
.mega__more:hover { text-decoration: underline; }

.mega__foot { background: var(--grey-100); border-top: 1px solid var(--grey-300); }
.mega__foot-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; padding: 18px 0; }
.mega__foot-grid a { display: flex; align-items: center; gap: 10px; font-size: 15px; font-weight: 700; color: var(--bf-blue-deep); }
.mega__foot-grid svg { width: 20px; height: 20px; flex: none; }
.mega__foot-grid a:hover { text-decoration: underline; }

/* --------------------------------------------------------------------------
   7. HERO CARRUSEL — 448px, split 50/50, texto con padding-left 72px
   -------------------------------------------------------------------------- */
.hero { position: relative; background: var(--white); }
.hero__viewport { position: relative; overflow: hidden; }
.hero__track { display: flex; }
.hero__slide {
  flex: 0 0 100%;
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: var(--hero-h);
  opacity: 0;
  transition: opacity .5s var(--ease);
}
.hero__slide.is-active { opacity: 1; }

.hero__media { position: relative; overflow: hidden; background: var(--grey-200); }
.hero__media img { width: 100%; height: 100%; object-fit: cover; }
/* Barra de acento vertical de la referencia (naranja/azul → verde/azul) */
.hero__media::after {
  content: '';
  position: absolute; top: 0; right: 0; bottom: 0;
  width: 10px;
  background: linear-gradient(180deg, var(--bf-green) 0 62%, var(--bf-blue) 62% 100%);
}

.hero__body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 20px;
  padding: 48px 72px;
  background: var(--grey-100);
}
.hero__eyebrow { font-size: 13px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--bf-green-dark); }
.hero__title { font-size: 38px; font-weight: 700; line-height: 1.15; color: var(--ink); letter-spacing: -.4px; }
.hero__title em { font-style: normal; color: var(--bf-green-dark); }
.hero__text { font-size: 17px; line-height: 1.55; color: var(--ink-soft); max-width: 52ch; }
.hero__cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 4px; }

.hero__arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  z-index: 3;
  display: grid; place-items: center;
  width: 56px; height: 56px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .92);
  color: var(--bf-green-dark);
  box-shadow: var(--shadow-card);
  transition: background-color .2s var(--ease);
}
.hero__arrow:hover { background: var(--white); }
.hero__arrow svg { width: 22px; height: 22px; }
.hero__arrow--prev { left: 24px; }
.hero__arrow--next { right: 24px; }

/* Tira de mini-cards que actúan de selector (patrón de la referencia) */
.hero__minicards { background: var(--white); border-bottom: 1px solid var(--grey-300); }
.hero__minicards-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 16px;
  padding: 20px 0 24px;
}
.minicard {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 16px;
  min-height: 72px;
  border-radius: var(--radius-sm);
  background: var(--bf-green-soft);
  text-align: left;
  transition: background-color .22s var(--ease), color .22s var(--ease);
}
.minicard__icon {
  display: grid; place-items: center;
  width: 42px; height: 42px; flex: none;
  border-radius: 8px;
  background: var(--white);
  color: var(--bf-green-dark);
}
.minicard__icon svg { width: 24px; height: 24px; }
.minicard__label { font-size: 14px; font-weight: 700; line-height: 1.3; color: var(--ink-soft); }
.minicard:hover { background: #DFF0DA; }
.minicard.is-active { background: var(--bf-green); }
.minicard.is-active .minicard__label { color: var(--white); }
.minicard.is-active .minicard__icon { background: rgba(255, 255, 255, .22); color: var(--white); }

/* --------------------------------------------------------------------------
   8. HERO INTERNO (páginas de servicio)
   -------------------------------------------------------------------------- */
.page-hero { background-color: var(--bf-blue); background-image: var(--grad-header); color: var(--white); }
.page-hero__grid {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 48px;
  align-items: center;
  padding-block: 56px;
}
.page-hero__eyebrow {
  display: inline-block;
  padding: 5px 14px;
  border-radius: var(--radius-pill);
  background: rgba(255, 255, 255, .18);
  font-size: 12px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;
  margin-bottom: 16px;
}
.page-hero__title { font-size: 40px; font-weight: 700; line-height: 1.15; letter-spacing: -.5px; }
.page-hero__sub { font-size: 20px; font-weight: 400; line-height: 1.5; margin-top: 14px; opacity: .95; }
.page-hero__cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }
.page-hero__media {
  border-radius: var(--radius-card);
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: rgba(255, 255, 255, .16);
}
.page-hero__media img { width: 100%; height: 100%; object-fit: cover; }

/* Breadcrumb */
.crumbs { padding-block: 14px; background: var(--grey-100); border-bottom: 1px solid var(--grey-300); }
.crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 13px; color: var(--ink-soft); }
.crumbs a { font-weight: 700; color: var(--bf-blue); }
.crumbs a:hover { text-decoration: underline; }
.crumbs svg { width: 12px; height: 12px; opacity: .6; }

/* --------------------------------------------------------------------------
   9. BANDAS DE COLOR — rol del #FF600A y del #2C3038 de la referencia
   -------------------------------------------------------------------------- */
.band-accent { background: var(--bf-green); color: var(--white); padding-block: 48px; }
.band-accent .section-title { color: var(--white); }
.band-dark { background: var(--dark); color: var(--white); padding-block: 56px; }
.band-dark .section-title { color: var(--white); }
.band-blue { background: var(--bf-blue); color: var(--white); padding-block: 56px; }
.band-blue .section-title { color: var(--white); }
.band-grad { background-color: var(--bf-blue); background-image: var(--grad-band); color: var(--white); padding-block: 56px; }
.band-grad .section-title { color: var(--white); }

/* Grid de accesos rápidos (8 columnas de 158px en la referencia) */
.quicklinks { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 28px; }
.quicklink {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px;
  padding: 22px 14px;
  min-height: 140px;
  border-radius: var(--radius-sm);
  background: var(--white);
  color: var(--ink);
  text-align: center;
  transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
.quicklink:hover { transform: translateY(-4px); box-shadow: var(--shadow-pop); }
.quicklink svg { width: 34px; height: 34px; color: var(--bf-green-dark); }
.quicklink span,
.quicklink .quicklink__label { font-size: 15px; font-weight: 700; line-height: 1.35; color: var(--ink); }

/* Enlace estirado: en el sitio HTML la tarjeta entera es un <a>; en Elementor
   el enlace es la etiqueta, así que se extiende su área de clic a toda la
   tarjeta con un ::after absoluto. */
.quicklink { position: relative; }
.quicklink a.quicklink__label::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
}

/* --------------------------------------------------------------------------
   10. CARDS
   -------------------------------------------------------------------------- */
.card {
  background: var(--white);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform .22s var(--ease), box-shadow .22s var(--ease);
}
.card:hover { transform: translateY(-4px); box-shadow: var(--shadow-pop); }
.card__media { aspect-ratio: 523 / 256; background: var(--grey-200); overflow: hidden; }
.card__media img { width: 100%; height: 100%; object-fit: cover; }
.card__body { padding: 24px 30px 30px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.card__date { font-size: 14px; font-weight: 700; color: var(--bf-green-dark); }
.card__title { font-size: 18px; font-weight: 700; line-height: 1.35; }
.card__text { font-size: 15px; line-height: 1.6; color: var(--ink-soft); flex: 1; }

.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 30px; }

/* Card de servicio (grid de pilares en Inicio) */
.pillar {
  display: flex; flex-direction: column; gap: 14px;
  padding: 30px;
  border-radius: var(--radius-card);
  background: var(--white);
  border: 1px solid var(--grey-300);
  transition: border-color .22s var(--ease), transform .22s var(--ease), box-shadow .22s var(--ease);
}
.pillar:hover { border-color: var(--bf-green); transform: translateY(-4px); box-shadow: var(--shadow-card); }
.pillar__icon {
  display: grid; place-items: center;
  width: 56px; height: 56px;
  border-radius: 14px;
  background: var(--bf-green-soft);
  color: var(--bf-green-dark);
}
.pillar__icon svg { width: 30px; height: 30px; }
.pillar__title { font-size: 20px; font-weight: 700; line-height: 1.3; }
.pillar__text { font-size: 15px; line-height: 1.6; color: var(--ink-soft); flex: 1; }

/* --------------------------------------------------------------------------
   11. LISTA DE BENEFICIOS (✔ del Excel)
   -------------------------------------------------------------------------- */
.checks { display: grid; gap: 12px; }
.checks li { display: flex; gap: 12px; font-size: 16px; line-height: 1.55; }
.checks svg { width: 20px; height: 20px; flex: none; margin-top: 2px; color: var(--bf-green); }
.checks--2col { grid-template-columns: repeat(2, 1fr); gap: 12px 32px; }
.band-dark .checks svg, .band-blue .checks svg, .band-accent .checks svg { color: var(--white); }

/* Variante para listas escritas en el editor (Elementor / WordPress), donde el
   <li> es texto plano sin SVG. El check se dibuja con ::before enmascarado,
   así una lista con viñetas normal se ve igual que la versión con SVG inline. */
.checks--plain li { position: relative; padding-left: 32px; display: block; }
.checks--plain li::before {
  content: '';
  position: absolute; left: 0; top: 3px;
  width: 20px; height: 20px;
  background-color: var(--bf-green);
  -webkit-mask: var(--check-mask) center / contain no-repeat;
          mask: var(--check-mask) center / contain no-repeat;
}
:root {
  --check-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m8 12 3 3 5-6'/%3E%3C/svg%3E");
}
.band-dark .checks--plain li::before,
.band-blue .checks--plain li::before,
.band-accent .checks--plain li::before { background-color: var(--white); }

.benefit-box {
  padding: 30px;
  border-radius: var(--radius-card);
  background: var(--bf-green-soft);
  border-left: 5px solid var(--bf-green);
}
.benefit-box__title { font-size: 20px; font-weight: 700; margin-bottom: 18px; }

/* --------------------------------------------------------------------------
   12. ACORDEÓN DE SUBSERVICIOS
   -------------------------------------------------------------------------- */
.accordion { display: grid; gap: 12px; }
.acc {
  border: 1px solid var(--grey-300);
  border-radius: var(--radius-sm);
  background: var(--white);
  overflow: hidden;
  transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.acc.is-open { border-color: var(--bf-green); box-shadow: var(--shadow-card); }
.acc__head {
  display: flex; align-items: center; gap: 16px;
  width: 100%;
  padding: 20px 24px;
  text-align: left;
  /* El reset `button { color: inherit }` tiene especificidad (0,0,1) y
     cualquier hoja del tema o de WordPress lo pisa, dejando el título del
     acordeón con el color de sistema del <button>. Se reafirma aquí. */
  color: inherit;
}
.acc__num {
  display: grid; place-items: center;
  width: 34px; height: 34px; flex: none;
  border-radius: 50%;
  background: var(--bf-green-soft);
  color: var(--bf-green-dark);
  font-size: 14px; font-weight: 800;
}
.acc.is-open .acc__num { background: var(--bf-green); color: var(--white); }
.acc__title { flex: 1; font-size: 18px; font-weight: 700; line-height: 1.35; }
.acc__chev { width: 20px; height: 20px; flex: none; color: var(--bf-blue); transition: transform .22s var(--ease); }
.acc.is-open .acc__chev { transform: rotate(180deg); }
.acc__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .28s var(--ease); }
.acc.is-open .acc__panel { grid-template-rows: 1fr; }
.acc__panel-inner { overflow: hidden; }
.acc__content { padding: 0 24px 26px 74px; display: grid; gap: 18px; }
.acc__desc { font-size: 16px; line-height: 1.6; color: var(--ink-soft); }
.acc__benefits-title { font-size: 14px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--bf-green-dark); }

/* --------------------------------------------------------------------------
   13. PROCESO DE 6 PASOS
   -------------------------------------------------------------------------- */
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.step {
  position: relative;
  padding: 28px 26px;
  border-radius: var(--radius-card);
  background: var(--white);
  border: 1px solid var(--grey-300);
}
.step__num {
  display: grid; place-items: center;
  width: 44px; height: 44px;
  border-radius: 50%;
  background-color: var(--bf-blue);
  background-image: var(--grad-header);
  color: var(--white);
  font-size: 18px; font-weight: 800;
  margin-bottom: 16px;
}
.step__title { font-size: 17px; font-weight: 700; line-height: 1.35; margin-bottom: 8px; }
.step__text { font-size: 15px; line-height: 1.6; color: var(--ink-soft); }

/* --------------------------------------------------------------------------
   14. MENSAJE DIFERENCIADOR / QUOTE
   -------------------------------------------------------------------------- */
.quote-band { background: var(--bf-blue); color: var(--white); padding-block: 56px; }
.quote-band__inner { max-width: 900px; margin-inline: auto; text-align: center; }
.quote-band__mark { width: 44px; height: 44px; margin: 0 auto 20px; opacity: .55; }
.quote-band__text { font-size: 24px; font-weight: 400; line-height: 1.5; }
.quote-band__text strong { font-weight: 700; }
.quote-band__by { margin-top: 20px; font-size: 14px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; opacity: .85; }

/* Sello recurrente de Bienestar Financiero */
.seal {
  display: grid; grid-template-columns: auto 1fr; gap: 22px;
  align-items: start;
  padding: 32px;
  border-radius: var(--radius-card);
  background: var(--bf-blue-soft);
  border-left: 5px solid var(--bf-blue);
}
.seal svg { width: 40px; height: 40px; color: var(--bf-blue); }
.seal p { font-size: 17px; line-height: 1.6; }

/* --------------------------------------------------------------------------
   15. CARRUSEL GENÉRICO (beneficios / novedades)
   -------------------------------------------------------------------------- */
.carousel { position: relative; }
.carousel__viewport { overflow: hidden; }
.carousel__track { display: flex; gap: 24px; transition: transform .4s var(--ease); }
.carousel__item { flex: 0 0 calc((100% - 48px) / 3); }
.carousel__nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  display: grid; place-items: center;
  width: 44px; height: 44px;
  border-radius: 50%;
  background: var(--white);
  color: var(--bf-green-dark);
  box-shadow: var(--shadow-card);
  z-index: 2;
}
.carousel__nav:hover { color: var(--bf-blue); }
.carousel__nav svg { width: 20px; height: 20px; }
.carousel__nav--prev { left: -22px; }
.carousel__nav--next { right: -22px; }
.carousel__nav[disabled] { opacity: .35; cursor: default; }
.carousel__dots { display: flex; justify-content: center; gap: 8px; margin-top: 28px; }
.carousel__dots button {
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--grey-400);
  transition: background-color .2s var(--ease), width .2s var(--ease);
}
.carousel__dots button.is-active { background: var(--bf-green); width: 26px; border-radius: var(--radius-pill); }

/* --------------------------------------------------------------------------
   16. CONTADORES DE IMPACTO
   -------------------------------------------------------------------------- */
.counters { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.counter { text-align: center; padding: 26px 18px; }
.counter__value { font-size: 44px; font-weight: 800; line-height: 1; color: var(--white); }
.counter__label { font-size: 15px; font-weight: 600; line-height: 1.4; margin-top: 10px; opacity: .92; }

/* --------------------------------------------------------------------------
   17. LOGOS DE CLIENTES
   -------------------------------------------------------------------------- */
.logo-wall { display: grid; grid-template-columns: repeat(6, 1fr); gap: 20px; }
.logo-wall__item {
  display: grid; place-items: center;
  aspect-ratio: 3 / 2;
  border-radius: var(--radius-sm);
  background: var(--grey-100);
  border: 1px dashed var(--grey-400);
  color: var(--grey-400);
  font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
}

/* --------------------------------------------------------------------------
   18. VALORES (Quiénes Somos)
   -------------------------------------------------------------------------- */
.values { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.value {
  padding: 28px 26px;
  border-radius: var(--radius-card);
  background: var(--white);
  border: 1px solid var(--grey-300);
  border-top: 4px solid var(--bf-green);
}
.value__icon { width: 40px; height: 40px; color: var(--bf-green-dark); margin-bottom: 16px; }
.value__title { font-size: 18px; font-weight: 700; margin-bottom: 8px; }
.value__text { font-size: 15px; line-height: 1.6; color: var(--ink-soft); }

.mv-card {
  padding: 40px;
  border-radius: var(--radius-card);
  color: var(--white);
  display: flex; flex-direction: column; gap: 16px;
}
.mv-card--vision { background: var(--bf-blue); }
.mv-card--mision { background: var(--bf-green-dark); }
.mv-card__icon { width: 46px; height: 46px; }
.mv-card__title { font-size: 26px; font-weight: 700; letter-spacing: .02em; }
.mv-card__text { font-size: 17px; line-height: 1.6; }

/* --------------------------------------------------------------------------
   19. FORMULARIO
   -------------------------------------------------------------------------- */
.form { display: grid; gap: 18px; }
.form__row { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.field { display: grid; gap: 7px; }
.field label { font-size: 14px; font-weight: 700; }
.field input, .field select, .field textarea {
  font: inherit;
  padding: 12px 14px;
  border: 1.6px solid var(--grey-400);
  border-radius: 10px;
  background: var(--white);
  color: var(--ink);
  transition: border-color .2s var(--ease);
}
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--bf-green); outline: none; }
.field textarea { min-height: 130px; resize: vertical; }
.field__hint { font-size: 13px; color: var(--ink-soft); }
.check-line { display: flex; align-items: start; gap: 10px; font-size: 14px; color: var(--ink-soft); }
.check-line input { margin-top: 3px; }

.info-list { display: grid; gap: 22px; }
.info-item { display: grid; grid-template-columns: auto 1fr; gap: 16px; }
.info-item__icon {
  display: grid; place-items: center;
  width: 44px; height: 44px;
  border-radius: 12px;
  background: var(--bf-green-soft);
  color: var(--bf-green-dark);
}
.info-item__icon svg { width: 22px; height: 22px; }
.info-item__title { font-size: 15px; font-weight: 800; margin-bottom: 3px; }
.info-item__text { font-size: 15px; line-height: 1.55; color: var(--ink-soft); }

.map-placeholder {
  aspect-ratio: 16 / 10;
  border-radius: var(--radius-card);
  background: var(--grey-100);
  border: 1px dashed var(--grey-400);
  display: grid; place-items: center;
  gap: 10px;
  color: var(--ink-soft);
  text-align: center;
  padding: 24px;
}
.map-placeholder svg { width: 42px; height: 42px; color: var(--grey-400); }

/* --------------------------------------------------------------------------
   20. FAQ / AYUDA
   -------------------------------------------------------------------------- */
.faq { display: grid; gap: 10px; }
.faq__item { border-bottom: 1px solid var(--grey-300); }
.faq__head { display: flex; align-items: center; justify-content: space-between; gap: 16px; width: 100%; padding: 20px 0; text-align: left; font-size: 18px; font-weight: 700; }
.faq__head svg { width: 20px; height: 20px; flex: none; color: var(--bf-green-dark); transition: transform .22s var(--ease); }
.faq__item.is-open .faq__head svg { transform: rotate(45deg); }
.faq__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .28s var(--ease); }
.faq__item.is-open .faq__panel { grid-template-rows: 1fr; }
.faq__panel-inner { overflow: hidden; }
.faq__panel p { padding-bottom: 22px; font-size: 16px; line-height: 1.65; color: var(--ink-soft); max-width: 80ch; }

/* --------------------------------------------------------------------------
   21. CTA FINAL
   -------------------------------------------------------------------------- */
.cta-final { background: var(--dark); color: var(--white); }
.cta-final__grid { display: grid; grid-template-columns: 1.3fr .7fr; gap: 40px; align-items: center; padding-block: 56px; }
.cta-final__title { font-size: 32px; font-weight: 600; line-height: 1.25; }
.cta-final__text { font-size: 17px; line-height: 1.6; margin-top: 12px; opacity: .88; }
.cta-final__actions { display: flex; flex-direction: column; gap: 12px; }

/* --------------------------------------------------------------------------
   22. FOOTER — azul #1A6B9A + franja legal #2C3038
   -------------------------------------------------------------------------- */
.site-footer { background: var(--bf-blue); color: #F3F4F5; }
.site-footer__grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: 40px;
  padding-block: 56px;
}
.site-footer__brand img { height: 64px; width: auto; background: var(--white); border-radius: 12px; padding: 8px; }
.site-footer__tagline { font-size: 15px; line-height: 1.6; margin-top: 16px; opacity: .9; max-width: 34ch; }
.footer-col__title { font-size: 17.6px; font-weight: 800; margin-bottom: 16px; color: #F3F4F5; }
.footer-col li + li { margin-top: 10px; }
.footer-col a { font-size: 15px; opacity: .9; }
.footer-col a:hover { opacity: 1; text-decoration: underline; }

.footer-social { margin-top: 22px; }
.footer-social__title { font-size: 12px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; margin-bottom: 12px; }
.footer-social__row { display: flex; gap: 10px; }
.footer-social__row a {
  display: grid; place-items: center;
  width: 38px; height: 38px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .14);
  color: var(--white);
  transition: background-color .2s var(--ease);
}
.footer-social__row a:hover { background: var(--bf-green); }
.footer-social__row svg { width: 19px; height: 19px; }

.legal { background: var(--dark); color: #B9BDC4; }
.legal__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; padding-block: 22px; }
.legal p { font-size: 13px; line-height: 1.6; }
.legal ul { display: flex; flex-wrap: wrap; gap: 20px; }
.legal a { font-size: 13px; }
.legal a:hover { color: var(--white); text-decoration: underline; }

/* --------------------------------------------------------------------------
   23. BOTÓN FLOTANTE DE WHATSAPP
   -------------------------------------------------------------------------- */
.wa-float {
  position: fixed; right: 22px; bottom: 22px;
  z-index: 800;
  display: grid; place-items: center;
  width: 58px; height: 58px;
  border-radius: 50%;
  background: #25D366;
  color: var(--white);
  box-shadow: 0 6px 20px rgba(37, 211, 102, .45);
  transition: transform .2s var(--ease);
}
.wa-float:hover { transform: scale(1.07); }
.wa-float svg { width: 30px; height: 30px; }

/* --------------------------------------------------------------------------
   24. PLACEHOLDERS DE CONTENIDO PENDIENTE
   -------------------------------------------------------------------------- */
.ph-img {
  background:
    repeating-linear-gradient(45deg, var(--grey-200) 0 12px, var(--grey-100) 12px 24px);
  display: grid; place-items: center;
  width: 100%; height: 100%;
  min-height: 140px;
  color: var(--grey-400);
}
.ph-img svg { width: 44px; height: 44px; }
.ph-note {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 6px 14px;
  border-radius: var(--radius-pill);
  background: #FFF6E0;
  border: 1px dashed #E0B44A;
  color: #8A6410;
  font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase;
}
.ph-note svg { width: 14px; height: 14px; }

/* --------------------------------------------------------------------------
   25. UTILIDADES
   -------------------------------------------------------------------------- */
.mt-0 { margin-top: 0; }
.mt-8 { margin-top: 8px; }
.mt-16 { margin-top: 16px; }
.mt-24 { margin-top: 24px; }
.mt-32 { margin-top: 32px; }
.mt-40 { margin-top: 40px; }
.mb-24 { margin-bottom: 24px; }
.mb-32 { margin-bottom: 32px; }
.center-actions { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; }
.center-actions--left { justify-content: flex-start; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.no-scroll { overflow: hidden; }

/* --------------------------------------------------------------------------
   26. RESPONSIVE — breakpoints de la referencia (1200 / 992 / 768 / 576)
   -------------------------------------------------------------------------- */
@media (max-width: 1200px) {
  .navbar__nav > li > a, .navbar__nav > li > button { padding: 0 9px; font-size: 13px; }
  .navbar__actions .btn { width: auto; padding: 0 14px; font-size: 14px; }
  .mega__grid { gap: 28px; }
  .hero__body { padding: 40px 48px; }
  .hero__title { font-size: 32px; }
  .logo-wall { grid-template-columns: repeat(4, 1fr); }
}

@media (max-width: 992px) {
  .navbar__nav, .navbar__actions { display: none; }
  .navbar__burger { display: grid; }
  .navbar__logo { margin-right: auto; }

  .hero__slide { grid-template-columns: 1fr; }
  .hero__media { aspect-ratio: 16 / 9; }
  .hero__media::after { top: auto; left: 0; right: 0; bottom: 0; width: auto; height: 8px;
    background: linear-gradient(90deg, var(--bf-green) 0 62%, var(--bf-blue) 62% 100%); }
  .hero__body { padding: 32px 24px 40px; }
  .hero__arrow { width: 44px; height: 44px; }
  .hero__arrow--prev { left: 12px; }
  .hero__arrow--next { right: 12px; }
  .hero__minicards-grid { grid-template-columns: repeat(3, 1fr); }

  .page-hero__grid { grid-template-columns: 1fr; gap: 32px; padding-block: 40px; }
  .page-hero__title { font-size: 32px; }

  .grid-3, .grid-4, .steps, .counters, .values { grid-template-columns: repeat(2, 1fr); }
  .quicklinks { grid-template-columns: repeat(2, 1fr); }
  .carousel__item { flex: 0 0 calc((100% - 24px) / 2); }
  .carousel__nav--prev { left: 6px; }
  .carousel__nav--next { right: 6px; }
  .site-footer__grid { grid-template-columns: repeat(2, 1fr); gap: 32px; }
  .cta-final__grid { grid-template-columns: 1fr; }
  .checks--2col { grid-template-columns: 1fr; }
  .topbar__links { display: none; }
}

@media (max-width: 768px) {
  .section { padding-block: 48px; }
  .section-title, .h2, .cta-final__title { font-size: 26px; }
  .hero__title { font-size: 28px; }
  .page-hero__title { font-size: 28px; }
  .page-hero__sub { font-size: 17px; }
  .grid-2, .grid-3, .grid-4, .steps, .values { grid-template-columns: 1fr; }
  .counters { grid-template-columns: repeat(2, 1fr); }
  .counter__value { font-size: 34px; }
  .hero__minicards-grid { grid-template-columns: repeat(2, 1fr); }
  .form__row { grid-template-columns: 1fr; }
  .acc__content { padding-left: 24px; }
  .quote-band__text { font-size: 20px; }
  .mv-card { padding: 28px; }
  .logo-wall { grid-template-columns: repeat(3, 1fr); }
  .seal { grid-template-columns: 1fr; gap: 14px; padding: 24px; }
  .topbar__contact a span { display: none; }
}

@media (max-width: 576px) {
  :root { --gutter: 16px; }
  .navbar__logo img { height: 44px; }
  .navbar__logo-text strong { font-size: 15px; }
  .navbar__logo-text span { font-size: 8px; }
  .hero__minicards-grid { grid-template-columns: 1fr; }
  .counters { grid-template-columns: 1fr; }
  .logo-wall { grid-template-columns: repeat(2, 1fr); }
  .carousel__item { flex: 0 0 100%; }
  .site-footer__grid { grid-template-columns: 1fr; }
  .legal__inner { flex-direction: column; align-items: flex-start; }
}

/* --------------------------------------------------------------------------
   27. MENÚ MÓVIL
   -------------------------------------------------------------------------- */
.mobile-menu {
  position: fixed; inset: 0;
  z-index: 950;
  background: var(--white);
  transform: translateX(100%);
  transition: transform .3s var(--ease);
  display: flex; flex-direction: column;
  overflow-y: auto;
}
.mobile-menu.is-open { transform: translateX(0); }
.mobile-menu__head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px;
  padding: 16px;
  background-color: var(--bf-blue);
  background-image: var(--grad-header);
  color: var(--white);
  position: sticky; top: 0;
}
.mobile-menu__head img { height: 42px; }
.mobile-menu__close { width: 44px; height: 44px; display: grid; place-items: center; color: var(--white); }
.mobile-menu__close svg { width: 26px; height: 26px; }
.mobile-menu__body { padding: 8px 16px 40px; }
.mobile-menu__group { border-bottom: 1px solid var(--grey-300); }
.mobile-menu__link,
.mobile-menu__toggle {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  width: 100%;
  padding: 16px 4px;
  font-size: 16px; font-weight: 700;
  text-align: left;
}
.mobile-menu__toggle svg { width: 18px; height: 18px; color: var(--bf-blue); transition: transform .22s var(--ease); }
.mobile-menu__group.is-open .mobile-menu__toggle svg { transform: rotate(180deg); }
.mobile-menu__sub { display: none; padding: 0 4px 16px 4px; }
.mobile-menu__group.is-open .mobile-menu__sub { display: block; }
.mobile-menu__sub li + li { margin-top: 12px; }
.mobile-menu__sub a { font-size: 15px; color: var(--ink-soft); }
.mobile-menu__actions { display: grid; gap: 12px; margin-top: 24px; }
.mobile-menu__social { display: flex; gap: 10px; margin-top: 26px; }
.mobile-menu__social a {
  display: grid; place-items: center; width: 40px; height: 40px;
  border-radius: 50%; background: var(--bf-blue-soft); color: var(--bf-blue);
}
.mobile-menu__social svg { width: 19px; height: 19px; }

@media (min-width: 993px) { .mobile-menu { display: none; } }

/* --------------------------------------------------------------------------
   28. COMPATIBILIDAD CON ELEMENTOR
   --------------------------------------------------------------------------
   Elementor envuelve cada widget en un <div> y coloca ahí las clases del campo
   «Clases CSS», mientras el elemento visible va dentro:

     <div class="elementor-widget-button btn btn--white">   <- wrapper
       <a class="elementor-button">Conozca más</a>          <- lo que se ve

   El plugin bf-core (BF_Elementor_Compat) copia nuestras clases al elemento
   interior, pero no puede quitarlas del wrapper porque su hook actúa después
   de que Elementor calcule los atributos. Sin este bloque, el wrapper pinta
   una segunda pastilla alrededor de la real.

   Aquí se neutraliza el wrapper cuando la clase describe un ELEMENTO (botón,
   pastilla, título) y no un contenedor. La especificidad (0,2,0) basta para
   ganar a la clase sola (0,1,0), sin necesidad de !important.

   Este bloque es inocuo en el sitio HTML suelto: allí no existe ningún
   .elementor-widget-*, así que ninguna de estas reglas llega a aplicarse.
   -------------------------------------------------------------------------- */

/* --- 28.1 Wrappers de botón: no deben pintar nada --- */
.elementor-widget-button.btn,
.elementor-widget-button.page-hero__eyebrow,
.elementor-widget-button.step__num,
.elementor-widget-button.mega__more,
.elementor-widget-button.link-arrow,
.elementor-widget-button.quicklink__label {
  display: block;
  background: none;
  border: 0;
  padding: 0;
  min-height: 0;
  width: auto;
  height: auto;
  border-radius: 0;
  box-shadow: none;
  place-items: normal;
  transform: none;
}
.elementor-widget-button.btn--block { width: 100%; }

/* --- 28.2 El Kit de Elementor fuerza el color y la tipografía de TODO
       título con esta misma regla:

         .elementor-widget-heading .elementor-heading-title {
           font-family: var(--e-global-typography-primary-font-family);
           font-weight: var(--e-global-typography-primary-font-weight);
           color:       var(--e-global-color-primary);
         }

       Por eso los títulos salían azules en vez de blancos sobre el gradiente.

       OJO CON EL ORDEN DE CARGA: esa regla no vive solo en el CSS del Kit
       (que carga antes que esta hoja), sino también en el CSS por página
       `post-<id>.css`, que carga DESPUÉS. Igualar la especificidad no basta.
       Se añade `.elementor-widget` para llegar a (0,3,0) y ganar siempre,
       sin recurrir a !important.

       Con `inherit`, el título adopta lo que diga su contenedor, que es lo
       que controla el design system. --- */
.elementor-widget.elementor-widget-heading .elementor-heading-title {
  color: inherit;
  font-family: inherit;
  font-weight: inherit;
  font-size: inherit;
  line-height: inherit;
  letter-spacing: inherit;
}

/* Sin doble margen: el wrapper conserva el tamaño, el título lo hereda. */
.elementor-widget-heading.page-hero__title,
.elementor-widget-heading.section-title,
.elementor-widget-heading.cta-final__title,
.elementor-widget-heading.benefit-box__title,
.elementor-widget-heading.step__title,
.elementor-widget-heading.footer-col__title,
.elementor-widget-heading.mv-card__title,
.elementor-widget-heading.card__title,
.elementor-widget-heading.pillar__title,
.elementor-widget-heading.value__title,
.elementor-widget-heading.counter__value { margin-block: 0; }

/* El texto de un text-editor hereda el COLOR del wrapper, pero NO el tamaño:
   forzar `font-size: inherit` aquí pisaba reglas legítimas como `.seal p`,
   que fija 17px. El tamaño ya se hereda por cascada natural. */
.elementor-widget.elementor-widget-text-editor > .elementor-widget-container,
.elementor-widget.elementor-widget-text-editor p { color: inherit; }

/* --- 28.2b Texto sobre bandas de color -----------------------------------
   Elementor fija el color de cada widget desde la tipografía del Kit, lo que
   deja el texto oscuro sobre los fondos de color. Dentro de una banda de
   color todo debe heredar el color de la banda, así que se fuerza con
   especificidad (0,3,0) —suficiente para ganar a `post-<id>.css`— y limitado
   a esos contenedores, donde no puede pisar ningún color intencionado. */
.page-hero   .elementor-widget.elementor-element,
.quote-band  .elementor-widget.elementor-element,
.cta-final   .elementor-widget.elementor-element,
.band-accent .elementor-widget.elementor-element,
.band-blue   .elementor-widget.elementor-element,
.band-grad   .elementor-widget.elementor-element,
.site-footer .elementor-widget.elementor-element,
.legal       .elementor-widget.elementor-element,
.mv-card     .elementor-widget.elementor-element { color: inherit; }

/* --- 28.3 El botón real de Elementor adopta nuestro diseño --------------
   `.elementor-button` trae `background-color:#69727d; border-radius:3px;
   font-size:15px; padding:12px 24px`. Nuestras clases ya están en el <a>
   gracias al plugin y esta hoja carga después, así que basta con neutralizar
   lo que Elementor fija y que nuestras reglas .btn hagan el resto. */
a.elementor-button.btn,
a.elementor-button.page-hero__eyebrow,
a.elementor-button.step__num,
span.elementor-button.btn {
  background-color: transparent;
  border-radius: inherit;
  font-size: inherit;
  line-height: inherit;
  padding: 0;
  text-align: inherit;
  fill: currentColor;
}
/* Y se reafirma el relleno y la forma propios de cada variante, en el mismo
   nivel de especificidad que la neutralización de arriba. */
a.elementor-button.btn,
span.elementor-button.btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: 8px; width: auto;
  min-height: 44px; padding: 0 24px;
  border-radius: var(--radius-pill);
  font-size: 16px; font-weight: 700; line-height: 1;
}
a.elementor-button.btn--sm { min-height: 36px; padding: 0 18px; font-size: 14px; }
a.elementor-button.btn--block { width: 100%; }

/* La pastilla del pre-título: pequeña y ajustada al texto, no al 100 %. */
/* La etiqueta de un acceso rápido es un enlace, pero debe verse como texto. */
a.elementor-button.quicklink__label {
  display: inline-block; width: auto;
  background-color: transparent;
  padding: 0;
  border-radius: 0;
  font-size: 15px; font-weight: 700; line-height: 1.35;
  color: var(--ink);
  text-align: center;
}
a.elementor-button.quicklink__label:hover { color: var(--bf-blue-deep); }

a.elementor-button.page-hero__eyebrow {
  display: inline-block; width: auto;
  padding: 5px 14px;
  border-radius: var(--radius-pill);
  font-size: 12px; font-weight: 800; line-height: 1.4;
  letter-spacing: .1em; text-transform: uppercase;
}
a.elementor-button.btn--primary { background-color: var(--bf-blue-deep); }
a.elementor-button.btn--primary:hover { background-color: var(--bf-blue-dark); }
a.elementor-button.btn--green { background-color: var(--bf-green); }
a.elementor-button.btn--green:hover { background-color: var(--bf-green-dark); }
a.elementor-button.btn--white { background-color: var(--white); }
a.elementor-button.btn--white:hover { background-color: var(--grey-200); }
a.elementor-button.btn--outline { background-color: transparent; }
a.elementor-button.btn--outline:hover { background-color: var(--bf-blue-deep); }
a.elementor-button.btn--ghost-white { background-color: transparent; }
a.elementor-button.btn--ghost-white:hover { background-color: var(--white); }
a.elementor-button.page-hero__eyebrow { background-color: rgba(255, 255, 255, .18); }
a.elementor-button.step__num {
  background-color: var(--bf-blue);
  background-image: var(--grad-header);
  border-radius: 50%;
  padding: 0;
}
/* El <span> interno del texto no debe alterar la tipografía del botón. */
.elementor-button.btn .elementor-button-text,
.elementor-button.page-hero__eyebrow .elementor-button-text,
.elementor-button.step__num .elementor-button-text { font: inherit; letter-spacing: inherit; }

/* --- 28.4 Elementor pone `display:flex` en el contenido del botón --- */
.elementor-button.btn .elementor-button-content-wrapper,
.elementor-button.page-hero__eyebrow .elementor-button-content-wrapper,
.elementor-button.step__num .elementor-button-content-wrapper {
  display: inline-flex; align-items: center; gap: 8px;
}

/* --- 28.5 Listas de beneficios dentro de un text-editor --------------- */
.elementor-widget-text-editor.checks .elementor-widget-container > ul { display: grid; gap: 12px; }

/* --- 28.5b FOOTER: colores del HTML original --------------------------
   Los enlaces salían oscuros sobre el azul porque Elementor los pinta con el
   color de enlace del Kit. Aquí se devuelven a los valores del diseño:
   texto #F3F4F5 sobre el azul de marca, y blanco puro al pasar el ratón.
   La especificidad (0,3,0) es necesaria porque el CSS de la plantilla de
   footer (`post-<id>.css`) carga después de esta hoja. */
.site-footer .elementor-widget a,
.site-footer .elementor-widget.elementor-element a,
.site-footer .footer-col a,
.site-footer .footer-col li a {
  color: #F3F4F5;
  opacity: .9;
}
.site-footer .elementor-widget a:hover,
.site-footer .footer-col a:hover { color: var(--white); opacity: 1; text-decoration: underline; }

.site-footer .elementor-widget.elementor-element,
.site-footer .footer-col,
.site-footer .footer-col li,
.site-footer .site-footer__tagline,
.site-footer .site-footer__tagline p { color: #F3F4F5; }

.site-footer .footer-col__title,
.site-footer .elementor-widget-heading.footer-col__title .elementor-heading-title {
  color: #F3F4F5;
  font-size: 17.6px;
  font-weight: 800;
}

/* Iconos de redes del footer: círculo translúcido, verde al pasar. */
.site-footer .footer-social__row .elementor-social-icon {
  background-color: rgba(255, 255, 255, .14);
  color: var(--white);
}
.site-footer .footer-social__row .elementor-social-icon:hover { background-color: var(--bf-green); }
.site-footer .footer-social__row .elementor-social-icon svg { fill: var(--white); }

/* Franja legal: fondo oscuro y texto atenuado, como en el HTML. */
.legal,
.legal .elementor-widget.elementor-element,
.legal .elementor-widget-text-editor p { color: #B9BDC4; font-size: 13px; }
.legal .elementor-widget a { color: #B9BDC4; }
.legal .elementor-widget a:hover { color: var(--white); text-decoration: underline; }

/* --- 28.6 Widget Mega Menu ---------------------------------------------
   Elementor pinta los enlaces del menú con el color de enlace del Kit (de ahí
   el cian del ítem activo y el gris oscuro del resto) y deja su contenedor en
   `flex-wrap: wrap`, lo que partía los 6 ítems en dos filas dentro de un
   navbar de 80 px. La especificidad (0,3,0) es necesaria porque el CSS de la
   plantilla de header (`post-<id>.css`) carga después de esta hoja. */
.navbar .elementor-widget-n-menu .e-n-menu-heading {
  flex-wrap: nowrap;
  gap: 0;
  justify-content: center;
}
/* El widget y sus capas internas deben poder encogerse dentro del flex del
   navbar; si no, el contenido se desborda sobre los botones. */
.navbar .elementor-widget-n-menu,
.navbar .elementor-widget-n-menu .e-n-menu,
.navbar .elementor-widget-n-menu .e-n-menu-wrapper,
.navbar .elementor-widget-n-menu .e-n-menu-heading { min-width: 0; max-width: 100%; }
/* Padding más ajustado: deja margen para que los 6 ítems entren holgados. */
.navbar .elementor-widget-n-menu .e-n-menu-title { padding-inline: 9px; }
/* Los botones del navbar no deben crecer ni partirse. */
.navbar__actions { flex-shrink: 0; }
.navbar__actions .elementor-widget-button { flex: 0 0 auto; }
.navbar__actions a.elementor-button.btn { padding: 0 18px; white-space: nowrap; }
/* El color del enlace lo fija Elementor con
     .elementor-widget-n-menu .e-n-menu-title:not(.e-current):not(:hover) .e-n-menu-title-text
   que tiene especificidad (0,5,0). En lugar de competir, se asignan sus
   propias variables CSS, que es el punto de extensión previsto. */
.navbar .elementor-widget-n-menu {
  --n-menu-title-color-normal: var(--white);
  --n-menu-title-color-hover:  var(--white);
  --n-menu-title-color-active: var(--white);
}
.navbar .elementor-widget-n-menu .e-n-menu-title,
.navbar .elementor-widget-n-menu .e-n-menu-title-text,
.navbar .elementor-widget-n-menu .e-n-menu-title-container {
  font-size: 14px;
  font-weight: 700;
  white-space: nowrap;
}
/* El icono de despliegue también en blanco. */
.navbar .elementor-widget-n-menu .e-n-menu-dropdown-icon svg,
.navbar .elementor-widget-n-menu .e-n-menu-toggle-button svg { fill: var(--white); color: var(--white); }

/* El desplegable: fondo blanco y sombra como en el HTML. Se limita la altura
   porque con los 42 subservicios el panel llegaba a 1487 px, más que la propia
   pantalla; así queda alcanzable con scroll interno. */
.navbar .elementor-widget-n-menu .e-n-menu-content > .e-con {
  background-color: var(--white);
  box-shadow: var(--shadow-pop);
  max-height: calc(100vh - 140px);
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* Listas compactas: con 11 enlaces por columna cada punto cuenta. */
.navbar .mega__group { padding-block: 0; }
.navbar .mega__links li + li { margin-top: 7px; }
.navbar .mega__links a { font-size: 13.5px; line-height: 1.35; }
.navbar .mega__col-title { font-size: 15px; margin-bottom: 10px; }

/* --- 28.7 Reparto de anchos del navbar --------------------------------
   Elementor reparte los hijos de un container flex a un tercio cada uno,
   así que el menú se quedaba con 218 px y sus ítems invadían los botones.
   Los controles `_element_width` / `width` no existen para containers en
   4.2, de modo que el reparto se hace aquí: logo y botones al tamaño de su
   contenido, y el menú ocupando el resto. */
.navbar__inner > .navbar__logo    { flex: 0 0 auto; width: auto; }
.navbar__inner > .navbar__nav     { flex: 1 1 auto; width: auto; min-width: 0; }
.navbar__inner > .navbar__actions { flex: 0 0 auto; width: auto; }

/* Logo: alto fijo y ancho automático (Elementor fijaba el ancho). */
.navbar__logo img { height: 52px; width: auto; max-width: none; }

/* Wordmark al lado del logo, emitido por un text-editor. */
.navbar__logo-text,
.navbar__logo-text p { color: var(--white); line-height: 1.05; margin: 0; }
.navbar__logo-text strong { display: block; font-size: 17px; font-weight: 800; letter-spacing: .02em; }
.navbar__logo-text span { display: block; font-size: 9px; font-weight: 600; letter-spacing: .14em; opacity: .92; }
@media (max-width: 1200px) { .navbar__logo-text { display: none; } }

/* --------------------------------------------------------------------------
   29. PREFERENCIAS DE MOVIMIENTO
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}
