/* ============================================================
   Blue Foundations — header y footer globales
   Se aplican sobre las plantillas del Divi Theme Builder.
   Las clases se asignan desde Advanced > CSS Class de cada
   módulo; ninguna depende de IDs generados por Divi, así que
   rehacer un módulo no rompe el estilo.
   ============================================================ */

/* ------------------------------------------------------------
   HEADER
   ------------------------------------------------------------ */

.bf-header{
  background:#fff;
  box-shadow:0 1px 0 rgba(2,14,50,.07);
}


/* ------------------------------------------------------------
   HEADER FIJO
   El sticky va en `.et-l--header`, el <header> que envuelve la
   plantilla del Theme Builder, y no en la sección: una caja
   `position:sticky` solo se desplaza dentro de su contenedor, y
   la sección mide exactamente lo mismo que el header, así que
   ahí no tendría recorrido. `.et-l--header` cuelga de `.et-boc`,
   que abarca toda la página.

   Comprobado en el sitio el 2026-09-01: ningún ancestro recorta el
   overflow —requisito para que sticky funcione— y el borde superior
   del header se mantiene en 0 con la página desplazada a 1600,
   2400 y 3200 px.
   ------------------------------------------------------------ */

.et-l--header{
  position:sticky;
  top:0;
  z-index:9999;
  background:#fff;
  box-shadow:0 1px 0 rgba(2,14,50,.07), 0 6px 20px rgba(2,14,50,.06);
}

/* Con la barra de administración de WordPress el header quedaría
   por debajo. Solo lo ven los usuarios conectados, pero es el
   estado en el que trabaja el cliente. */
.admin-bar .et-l--header{ top:32px; }
@media screen and (max-width:782px){ .admin-bar .et-l--header{ top:46px; } }
@media screen and (max-width:600px){ .admin-bar .et-l--header{ top:0; } }

/* Con el header fijo, un ancla llevaría el destino justo debajo de
   él. `scroll-padding-top` reserva su altura más un respiro. */
html{ scroll-padding-top:96px; }
@media (prefers-reduced-motion:no-preference){
  html{ scroll-behavior:smooth; }
}

/* ------------------------------------------------------------
   SIN DESPLEGABLES
   Decisión del cliente (2026-09-01): Services y Solutions llevan
   directamente a su página, sin submenú.

   Esto es la red de seguridad visual; lo correcto es borrar los
   ítems hijos en Apariencia → Menús para que no queden en el
   marcado. Los ocho anclas de cada página siguen siendo
   alcanzables desde el footer y desde las tarjetas.
   ------------------------------------------------------------ */

.bf-header .et_pb_menu__menu > nav > ul > li > ul.sub-menu,
.bf-header .et_mobile_menu .sub-menu{ display:none !important; }

.bf-header .et_pb_menu__menu > nav > ul > li.menu-item-has-children > a{
  padding:6px 0 !important;   /* ya no hace falta hueco para la flecha */
}
.bf-header .et_pb_menu__menu > nav > ul > li.menu-item-has-children > a::after{
  display:none !important;
  content:none !important;
}

/* ------------------------------------------------------------
   Cabecera: logo y alineación del menú
   El contenedor del módulo Menu no está forzado a una sola fila,
   así que con el logo a 52px el menú se partía en dos filas.
   Se fija el contenedor como flex, se reduce el logo y el menú
   se ancla a la derecha.
   ------------------------------------------------------------ */

.bf-header .et_pb_menu_inner_container{
  display:flex;
  align-items:center;
  flex-wrap:nowrap;      /* una sola fila, pase lo que pase */
}

.bf-header .et_pb_menu__logo-wrap{ flex:0 0 auto; margin-right:30px; }
.bf-header .et_pb_menu__logo{ display:flex; align-items:center; }

/* Altura del logo del header. Para cambiarla, solo esta línea.
   44px ≈ 173px de ancho con la proporción 902×230 del archivo. */
:root{ --bf-header-logo-h:44px; }

/* El !important no es pereza. El módulo Menu de Divi no expone un
   control de tamaño para el logo, y Divi emite en el <head> esta
   regla propia para este módulo concreto:

     .et_pb_menu_0_tb_header .et_pb_menu_inner_container
       > .et_pb_menu__logo-wrap .et_pb_menu__logo img
     { height:auto; max-height:none; }

   Misma especificidad que la nuestra (cuatro clases + elemento) y
   además va después, porque es un <style> en línea posterior a las
   hojas encoladas. Sin !important gana ella, `max-height` queda en
   `none`, y el logo se dibuja a su tamaño natural: 902×230 px, que
   tapa el menú y dispara el alto del header a 150 px.

   Verificado en el sitio de desarrollo el 2026-09-01: con esta
   regla el logo queda en 38×149 y el header baja de 150 a 79 px. */
.bf-header .et_pb_menu__logo img{
  max-height:var(--bf-header-logo-h) !important;
  height:auto !important;
  width:auto !important;
  max-width:none !important;
}

.bf-header .et_pb_menu__wrap{
  flex:1 1 auto;
  display:flex;
  align-items:center;
  justify-content:flex-end;   /* menú pegado a la derecha */
  min-width:0;
}
.bf-header .et_pb_menu__menu{ margin-left:auto; }
.bf-header .et_pb_menu__menu > nav > ul{
  display:flex;
  flex-wrap:nowrap;
  align-items:center;
  justify-content:flex-end;
  margin:0; padding:0; list-style:none;
}
.bf-header .et_pb_menu__menu > nav > ul > li{
  padding-left:11px;
  padding-right:11px;
  white-space:nowrap;    /* "About Blue Foundations" no se parte */
  float:none;
}
.bf-header .et_pb_menu__menu > nav > ul > li:last-child{ padding-right:0; }

/* ------------------------------------------------------------
   Los desplegables NO deben heredar el nowrap de arriba.
   Es la causa del scroll horizontal que apareció al alinear el
   menú a la derecha: `white-space:nowrap` en el <li> de primer
   nivel se hereda al <ul.sub-menu>, y como Divi maqueta los ítems
   del desplegable en `display:inline-block`, dejaban de apilarse
   y se colocaban en una sola fila horizontal de ~240px cada uno.
   Nueve ítems así empujaban el documento a 2630px de ancho.

   Medido en el sitio de desarrollo el 2026-09-01: con este bloque
   el scrollWidth pasa de 2630 a 1265, exactamente el ancho de la
   ventana.

   Reponer `white-space` en el <li> no bastaba: quien decide si las
   cajas en línea se parten es el contenedor, así que hay que
   reponerlo en el <ul>, y de paso forzar los ítems a bloque.
   ------------------------------------------------------------ */
.bf-header .et_pb_menu__menu > nav > ul > li > ul.sub-menu{
  white-space:normal;
  /* Con el menú pegado a la derecha, un desplegable anclado a la
     izquierda del padre se sale por el borde derecho. Anclándolo a
     la derecha del padre, crece hacia dentro. */
  left:auto !important;
  right:0 !important;
  max-width:calc(100vw - 32px);
}
.bf-header .et_pb_menu__menu .sub-menu li{
  display:block;
  float:none;
  white-space:normal;
  width:100%;
}

/* Entre 981 y 1180px el conjunto va justo: se aprieta un punto
   en lugar de dejar que se parta. */
@media (min-width:981px) and (max-width:1180px){
  .bf-header .et_pb_menu__logo img{ max-height:32px !important; }
  .bf-header .et_pb_menu__logo-wrap{ margin-right:18px; }
  .bf-header .et_pb_menu__menu > nav > ul > li{ padding-left:8px; padding-right:8px; }
  .bf-header .et_pb_menu__menu > nav > ul > li > a{ font-size:.875rem; }
  .bf-header .et_pb_menu__menu > nav > ul > li.bf-nav-cta > a{ padding:10px 15px; }
}

/* Enlaces de primer nivel */
.bf-header .et_pb_menu__menu > nav > ul > li{ align-items:center; }

/* Padding simétrico arriba y abajo. Antes solo llevaba abajo, para
   separar el subrayado del texto, y eso dejaba el texto por encima
   del centro de su propia caja: al centrar los ítems, los enlaces
   quedaban unos píxeles más altos que el texto del botón del CTA.
   Con 6px arriba y abajo el texto queda centrado en su caja y todo
   alinea, sin recurrir a desplazamientos negativos —que dependen de
   que la caja del enlace tenga altura, y no siempre la tiene. */
.bf-header .et_pb_menu__menu > nav > ul > li > a{
  font-family:var(--bf-font);
  font-size:.9375rem;
  font-weight:600;
  color:var(--bf-navy);
  letter-spacing:-.005em;
  padding:6px 0 !important;
  line-height:1.35 !important;
  position:relative;
  transition:color .2s ease;
}
.bf-header .et_pb_menu__menu > nav > ul > li > a:hover{ color:var(--bf-blue-cta); }

/* Página activa: azul con subrayado, como en el mockup. El
   subrayado se dibuja con ::after y no con border-bottom para
   que no empuje el resto del menú al aparecer. */
.bf-header .et_pb_menu__menu > nav > ul > li.current-menu-item > a,
.bf-header .et_pb_menu__menu > nav > ul > li.current-menu-ancestor > a{
  color:var(--bf-blue-cta);
}
/* Divi ya usa el ::after de estos enlaces para la flecha del
   desplegable, y le deja puesto `top:16.125px`. Al añadir aquí
   `bottom` y `height` sin anular ese `top`, la caja quedaba
   sobredefinida —top + bottom + height a la vez— y en ese empate
   manda `top`: la línea azul se dibujaba a media altura, cruzando
   el texto. Por eso `top:auto` es imprescindible.
   Medido en el sitio el 2026-09-01: con `top:auto` el valor usado
   pasa de 16.1px a 30.25px, es decir justo debajo del texto. */
.bf-header .et_pb_menu__menu > nav > ul > li.current-menu-item > a::after,
.bf-header .et_pb_menu__menu > nav > ul > li.current-menu-ancestor > a::after{
  content:"";
  position:absolute;
  left:0; right:0;
  top:auto !important;
  bottom:0 !important;
  height:2px !important;
  background:var(--bf-blue-cta);
  border-radius:2px;
}

/* Flecha del desplegable de Services y Solutions.
   Divi la coloca con un `top` fijo calibrado para su propio padding
   de 31px. Al normalizar el padding a 6px, ese top caía sobre el
   texto. Se centra de verdad con top:50% y translateY. El padding
   derecho de 20px es el hueco que ocupa la flecha. */
.bf-header .et_pb_menu__menu > nav > ul > li.menu-item-has-children > a{
  padding:6px 20px 6px 0 !important;
}
.bf-header .et_pb_menu__menu > nav > ul > li.menu-item-has-children > a::after{
  top:50% !important;
  bottom:auto !important;
  right:0 !important;
  transform:translateY(-50%);
  line-height:1 !important;
}

/* Desplegables de Services y Solutions */
.bf-header .et_pb_menu__menu > nav > ul > li > ul.sub-menu{
  background:#fff;
  border:1px solid var(--bf-blue-100);
  border-radius:10px;
  box-shadow:0 12px 32px rgba(2,14,50,.12);
  padding:8px 0;
  min-width:290px;
}
.bf-header .et_pb_menu__menu > nav > ul > li > ul.sub-menu li a{
  font-size:.875rem;
  font-weight:500;
  color:var(--bf-text-muted);
  padding:9px 20px;
  transition:color .2s ease, background-color .2s ease;
}
.bf-header .et_pb_menu__menu > nav > ul > li > ul.sub-menu li a:hover{
  color:var(--bf-blue-cta);
  background:rgba(4,54,234,.05);
}
/* El primer ítem del desplegable ("All Services") mantiene el
   padre alcanzable en móvil, donde tocarlo abre el submenú en
   lugar de navegar. */
.bf-header .sub-menu li.bf-submenu-all a{
  font-weight:600;
  color:var(--bf-navy);
}

/* CTA del header: es un ítem de menú con la clase bf-nav-cta,
   no un módulo Button. Así hereda el comportamiento responsive
   del menú de Divi en lugar de pelearse con él. */
.bf-header .et_pb_menu__menu > nav > ul > li.bf-nav-cta{ margin-left:14px; }
/* Divi impone el color de texto del menú (navy) sobre todos los
   enlaces, incluido el del botón. Sin !important el CTA salía
   con texto navy sobre fondo azul. */
.bf-header .et_pb_menu__menu > nav > ul > li.bf-nav-cta > a{
  background:var(--bf-blue-cta);
  color:#fff !important;
  padding:10px 20px !important;
  line-height:1.35 !important;
  border-radius:8px;
  transition:background-color .2s ease;
}
.bf-header .et_pb_menu__menu > nav > ul > li.bf-nav-cta > a:hover{
  background:var(--bf-blue-hover);
  color:#fff !important;
}
.bf-header .et_pb_menu__menu > nav > ul > li.bf-nav-cta > a::after{ display:none; }

/* Menú móvil */
.bf-header .et_mobile_menu{
  border-top:3px solid var(--bf-blue-cta);
  border-radius:0 0 10px 10px;
  box-shadow:0 12px 32px rgba(2,14,50,.12);
  padding:8px 0;
}
.bf-header .et_mobile_menu li a{
  font-family:var(--bf-font);
  font-weight:600;
  color:var(--bf-navy);
  border-bottom:1px solid rgba(2,14,50,.06);
}
.bf-header .et_mobile_menu li.bf-nav-cta a{
  color:var(--bf-blue-cta);
  border-bottom:none;
}

/* ------------------------------------------------------------
   FOOTER
   ------------------------------------------------------------ */

.bf-footer{ background:var(--bf-navy-footer); }

.bf-footer .bf-footer__logo img{ max-height:44px; width:auto; }

.bf-footer__brandline{
  font-weight:700;
  font-size:1.0625rem;
  line-height:1.45;
  color:#fff;
  margin:20px 0 22px;
}

/* Título de cada columna */
.bf-footer__col-title{
  font-size:.75rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:#fff;
  margin-bottom:18px;
}

/* Listas de enlaces */
.bf-footer-links{ margin:0; padding:0; list-style:none; }
.bf-footer-links li{ margin-bottom:11px; }
.bf-footer-links a{
  font-size:.9375rem;
  line-height:1.4;
  color:#B9C6E0;
  text-decoration:none;
  transition:color .2s ease;
}
.bf-footer-links a:hover{ color:#fff; }

/* Separadores verticales entre columnas. Se dibujan con un
   pseudo-elemento en lugar de border-left porque Divi colapsa
   las columnas en móvil y ahí el filete sobra. */
@media (min-width:981px){
  .bf-footer__col{ position:relative; }
  .bf-footer__col::before{
    content:"";
    position:absolute;
    left:-8%; top:0; bottom:0;
    width:1px;
    background:rgba(255,255,255,.10);
  }
}

/* Bloque de contacto */
.bf-footer__email{
  display:flex;
  align-items:center;
  gap:12px;
  color:#B9C6E0;
  font-size:.9375rem;
  margin-bottom:26px;
}
.bf-footer__email a{ color:#B9C6E0; text-decoration:none; }
.bf-footer__email a:hover{ color:#fff; }

/* Redes sociales */
.bf-footer__social{ display:flex; gap:14px; align-items:center; }
.bf-footer__social a{
  display:inline-flex;
  color:rgba(255,255,255,.62);
  transition:color .2s ease, transform .2s ease;
}
.bf-footer__social a:hover{ color:#fff; transform:translateY(-1px); }

/* Barra inferior */
.bf-footer__bottom{
  border-top:1px solid rgba(255,255,255,.10);
  padding-top:22px;
  margin-top:34px;
}
.bf-footer__bottom,
.bf-footer__bottom a{
  font-size:.8125rem;
  color:rgba(255,255,255,.55);
  text-decoration:none;
}
.bf-footer__bottom a:hover{ color:#fff; }
/* UAT GLOBAL-07: los dos enlaces legales juntos en la esquina inferior
   derecha. La regla sencilla `text-align:right` perdía contra Divi, que
   marca el módulo con et_pb_text_align_left y le pone
   `text-align:left !important` —el mismo problema que tenían las
   cabeceras de sección—; se resuelve igual, con doble clase. */
.et_pb_text.bf-footer__legal,
.et_pb_text.bf-footer__legal .et_pb_text_inner,
.bf-footer__legal p{ text-align:right !important; }
.bf-footer__legal p{ margin:0; white-space:nowrap; }
.bf-footer__legal .bf-sep{ margin:0 14px; color:rgba(255,255,255,.25); }

/* UAT GLOBAL-06: sin redes sociales en el footer. Se retiró el módulo
   del Theme Builder; esta regla lo oculta además por si la plantilla
   aún no se ha actualizado, para que el cambio sea efectivo al subir
   el tema. */
.bf-footer__social,
.et-l--footer .et_pb_social_media_follow{ display:none !important; }

@media (max-width:980px){
  .et_pb_text.bf-footer__legal,
  .et_pb_text.bf-footer__legal .et_pb_text_inner,
  .bf-footer__legal p{ text-align:left !important; }
  .bf-footer__legal{ margin-top:10px; }
  .bf-footer__bottom{ margin-top:24px; }
}

@media (prefers-reduced-motion:reduce){
  .bf-footer__social a:hover{ transform:none; }
}
