/* =========================================================================
   Custom LCPtracker main navigation — supplemental styles
   -------------------------------------------------------------------------
   El markup reutiliza las clases de ElementsKit y va envuelto en la cadena
   de wrappers del widget original, así que el CSS de ElementsKit y el que
   Elementor generó para ese widget ya hacen casi todo el trabajo.

   ESTRUCTURA IMPORTANTE:

   La Sección 1 va dentro de @layer lcp-fallback. Una regla dentro de una
   capa SIEMPRE pierde contra una regla normal (sin capa), sin importar
   especificidad ni orden de carga. Eso es exactamente lo que queremos:

     - Con ElementsKit activo  -> mandan sus estilos y los del widget.
     - Con ElementsKit apagado -> entra mi respaldo y el menú sigue usable.

   Las Secciones 2 y 3 van FUERA de la capa a propósito, porque sí deben
   ganar: son los estados que maneja mi JS y el drawer móvil.

   Todo está limitado a .lcp-static-menu, así que nada se filtra a otros
   menús del sitio.
   ========================================================================= */

/* Variables (fuera de la capa: nadie más las define).
   Se declaran también en el wrapper del widget porque --lcp-bar-offset se
   usa en .ekit-wid-con, que es ANCESTRO de .lcp-static-menu, y las
   variables CSS solo heredan hacia abajo. */
.lcp-static-menu,
.lcp-menu-skin,
.elementor-shortcode:has(.lcp-static-menu) {
	--lcp-panel-bg: #ffffff;
	--lcp-panel-hover-bg: #f4f7fa;
	--lcp-panel-border: #e3e9ef;
	--lcp-panel-shadow: 0 10px 30px rgba(16, 33, 51, 0.12);
	--lcp-panel-width: 250px;
	--lcp-panel-radius: 4px;
	--lcp-panel-link-color: #1d2b3a;
	--lcp-panel-link-hover-color: #0a5ca8;
	--lcp-panel-link-padding: 10px 20px;
	--lcp-transition: 200ms ease;

	/* Nudge vertical de la barra. Positivo = baja, negativo = sube. */
	--lcp-bar-offset: 0px;

	/* Aire entre el item de primer nivel y su panel. El puente invisible
	   del hover se calcula con este mismo valor, así que puedes cambiarlo
	   sin que el dropdown se cierre al bajar el mouse. */
	--lcp-panel-offset: 12px;

	/* --- Drawer móvil ------------------------------------------------
	   OJO: el fondo del drawer lo pinta el CSS generado de Elementor para
	   el widget original, y es AZUL MARINO OSCURO. No lo controlamos desde
	   aquí (--lcp-panel-bg se declara blanco y pierde contra su selector
	   por ID). Así que todo lo que va dentro del drawer tiene que estar
	   pensado para fondo oscuro, no para fondo blanco.

	   Ese fue el bug de la primera versión de los CTA: heredaban
	   --lcp-panel-link-hover-color (#0a5ca8, azul oscuro) para borde y
	   texto, que sobre azul marino no contrasta y se veía lavado. */
	--lcp-cta-primary-bg: #0a5ca8;
	--lcp-cta-primary-hover-bg: #ffffff;
	--lcp-cta-primary-color: #ffffff;
	--lcp-cta-primary-hover-color: #10243a;

	--lcp-cta-ghost-border: rgba(255, 255, 255, 0.55);
	--lcp-cta-ghost-color: #ffffff;
	--lcp-cta-ghost-hover-bg: #ffffff;
	--lcp-cta-ghost-hover-color: #10243a;

	/* Botón de cerrar del drawer. */
	--lcp-close-color: rgba(255, 255, 255, 0.85);
	--lcp-close-hover-color: #ffffff;

	/* Aire lateral del drawer. Un solo valor para los items del menú, los
	   CTA y el panel de identidad, así todo queda alineado en la misma
	   columna. */
	--lcp-drawer-pad-x: 22px;

	/* Hueco superior del drawer: reserva el sitio del panel de identidad
	   (logo + cerrar), que va en position:absolute a top:14px y mide unos
	   40px de alto. 54px lo deja justo debajo; el aire visual lo aporta el
	   padding-top de los propios items del menú.
	   Si cambias el logo por uno más alto y el primer item queda pegado,
	   este es el número a subir. */
	--lcp-drawer-pad-top: 54px;

	/* Separación entre los hijos directos del drawer (la lista y el bloque
	   de CTA). Elementor declara gap:14px en .elementskit-menu-container
	   desde su CSS generado; antes era inofensivo porque el contenedor no
	   era flex, pero al forzarlo a flex column pasó a contar. Se replica
	   aquí para que el espaciado sea nuestro y no dependa de un ajuste del
	   widget que alguien pueda cambiar sin darse cuenta. */
	--lcp-drawer-gap: 14px;

	/* Tipografía de los items del drawer. El widget original los pinta en
	   un peso muy grueso que sobre azul saturado cuesta leer; 500 mantiene
	   la jerarquía sin cansar. Si tu familia tipográfica no trae 500, prueba
	   400 — con 600+ vuelve el problema. */
	--lcp-drawer-link-weight: 500;
	--lcp-drawer-link-size: 15px;

	/* Flecha del acordeón. Blanca porque el fondo del drawer es azul
	   saturado; Elementor la pinta con --e-global-color-accent (azul) y
	   ahí casi no se distingue. */
	--lcp-drawer-indicator-color: #ffffff;
}

/* =========================================================================
   1. RESPALDO — solo aplica si ElementsKit no está definiendo lo mismo
   ========================================================================= */

@layer lcp-fallback {

	.lcp-static-menu {
		position: relative;
		z-index: 99;
	}

	/* --- Barra de primer nivel ---------------------------------------- */

	.lcp-static-menu .elementskit-navbar-nav {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		margin: 0;
		padding: 0;
		list-style: none;
	}

	.lcp-static-menu .elementskit-navbar-nav.elementskit-menu-po-center {
		justify-content: center;
	}

	.lcp-static-menu .elementskit-navbar-nav li {
		margin: 0;
		padding: 0;
		list-style: none;
	}

	.lcp-static-menu .elementskit-navbar-nav > li {
		position: relative;
	}

	.lcp-static-menu .elementskit-navbar-nav > li > a {
		display: flex;
		align-items: center;
		gap: 6px;
		padding: 12px 15px;
		color: inherit;
		font: inherit;
		line-height: 1.3;
		text-decoration: none;
		white-space: nowrap;
		cursor: pointer;
		transition: color var(--lcp-transition);
	}

	/* --- Paneles ------------------------------------------------------ */

	.lcp-static-menu .elementskit-submenu-panel {
		position: absolute;
		top: 100%;
		left: 0;
		z-index: 100;
		min-width: var(--lcp-panel-width);
		margin: 0;
		padding: 8px 0;
		list-style: none;
		background: var(--lcp-panel-bg);
		border: 1px solid var(--lcp-panel-border);
		border-radius: var(--lcp-panel-radius);
		box-shadow: var(--lcp-panel-shadow);
		opacity: 0;
		visibility: hidden;
		transform: translateY(-8px);
		transition: opacity var(--lcp-transition), transform var(--lcp-transition), visibility var(--lcp-transition);
	}

	/* El puente invisible del hover vive fuera de la capa, en la Sección 2,
	   junto a la regla que separa el panel: los dos dependen de
	   --lcp-panel-offset y tienen que moverse siempre juntos. */

	.lcp-static-menu .elementskit-submenu-panel > li > a {
		display: block;
		padding: var(--lcp-panel-link-padding);
		color: var(--lcp-panel-link-color);
		font: inherit;
		font-size: 15px;
		line-height: 1.4;
		text-decoration: none;
		cursor: pointer;
		transition: background-color var(--lcp-transition), color var(--lcp-transition);
	}

	.lcp-static-menu .elementskit-submenu-panel > li > a:hover,
	.lcp-static-menu .elementskit-submenu-panel > li > a:focus {
		background: var(--lcp-panel-hover-bg);
		color: var(--lcp-panel-link-hover-color);
	}

	.lcp-static-menu .elementskit-submenu-panel > li.elementskit-dropdown-has > a {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 10px;
	}

	/* --- Segundo y tercer nivel abren hacia el costado ---------------- */

	.lcp-static-menu .elementskit-submenu-panel .elementskit-submenu-panel {
		top: -8px;
		left: 100%;
		transform: translateX(-8px);
	}

	/* --- Apertura por hover (solo punteros de escritorio) ------------- */

	@media (hover: hover) and (pointer: fine) {
		.lcp-static-menu .elementskit-dropdown-has:hover > .elementskit-submenu-panel {
			opacity: 1;
			visibility: visible;
			transform: translateY(0);
		}

		.lcp-static-menu .elementskit-submenu-panel .elementskit-dropdown-has:hover > .elementskit-submenu-panel {
			transform: translateX(0);
		}
	}

	/* --- Flecha del submenú ------------------------------------------- */

	.lcp-static-menu .elementskit-submenu-indicator {
		flex: none;
		line-height: 1;
		transition: transform var(--lcp-transition);
	}

	/* Las anidadas apuntan a la derecha, igual que en producción. Si
	   ElementsKit ya define su propia rotación, la suya gana (está fuera de
	   la capa) y tampoco pasa nada. */
	.lcp-static-menu .elementskit-submenu-panel .elementskit-submenu-indicator {
		transform: rotate(-90deg);
	}

	/* NO añadir aquí un caret de respaldo con ::before. Se intentó y rompía
	   el icono real: las capas solo resuelven declaraciones en conflicto, así
	   que ElementsKit ganaba el "content" pero border/width/height/transform
	   del respaldo seguían aplicándose sobre el glifo bueno. */
}

/* =========================================================================
   2. ESTADOS Y AÑADIDOS — estos SÍ deben ganar (fuera de la capa)
   ========================================================================= */

/* Apertura por teclado (:focus-within) y por JS (.lcp-submenu-open). */
.lcp-static-menu .elementskit-dropdown-has:focus-within > .elementskit-submenu-panel,
.lcp-static-menu .elementskit-dropdown-has.lcp-submenu-open > .elementskit-submenu-panel {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.lcp-static-menu .elementskit-submenu-panel .elementskit-dropdown-has:focus-within > .elementskit-submenu-panel,
.lcp-static-menu .elementskit-submenu-panel .elementskit-dropdown-has.lcp-submenu-open > .elementskit-submenu-panel {
	transform: translateX(0);
}

/* --- Separación del panel respecto al item padre ----------------------
   Va fuera de la capa porque tiene que ganarle al posicionamiento de
   ElementsKit. El ::before es un puente invisible que cubre exactamente el
   hueco creado: sin él, al mover el mouse del item al panel se cruza una
   zona muerta y el dropdown se cierra. Ambos usan --lcp-panel-offset, así
   que se mantienen sincronizados si cambias el valor. */
.lcp-static-menu .elementskit-navbar-nav > li > .elementskit-submenu-panel {
	margin-top: var(--lcp-panel-offset, 12px);
}

.lcp-static-menu .elementskit-navbar-nav > li > .elementskit-submenu-panel::before {
	position: absolute;
	top: calc(var(--lcp-panel-offset, 12px) * -1);
	left: 0;
	right: 0;
	height: var(--lcp-panel-offset, 12px);
	content: "";
}

/* Los padres sin href se renderizan como role="button". */
.lcp-static-menu a[role="button"] {
	cursor: pointer;
}

.lcp-static-menu a:focus-visible,
.lcp-static-menu button:focus-visible {
	outline: 2px solid var(--lcp-panel-link-hover-color);
	outline-offset: 2px;
}

/* Que los paneles nunca queden recortados por un contenedor del header. */
.lcp-static-menu,
.lcp-static-menu .elementskit-navbar-nav {
	overflow: visible;
}

/* --- Separación de widget de Elementor -------------------------------
   Elementor mete margin-block-end: var(--kit-widget-spacing, 20px) a todo
   widget que cumpla .elementor-widget:not(:last-child). Nuestro Shortcode
   NO es el último hijo (el widget de ElementsKit oculto va después) y
   display:none no lo saca de :not(:last-child), así que se llevaba 20px de
   margen inferior: esa era la banda blanca sobre el header.

   Especificidad 0,3,0 a propósito, para ganarle a .elementor-widget:not(
   :last-child) (0,2,0) sin recurrir a !important.

   Nota: si algún día quieres darle margen inferior desde el panel de
   Elementor, esta regla lo va a pisar. Bórrala si ese caso llega. */
.elementor-element.elementor-widget-shortcode:has(.lcp-static-menu) {
	margin-block-end: 0;
}

/* --- Centrado vertical dentro del widget Shortcode --------------------
   El widget Shortcode envuelve todo en un <div class="elementor-shortcode">
   que el widget original de ElementsKit no tenía, y ese div no estira ni
   centra su contenido: por eso el menú queda pegado arriba en vez de
   alineado con el logo. Estiramos toda la cadena y centramos.

   Solo en escritorio: en móvil el contenedor pasa a position:fixed y este
   centrado no aplica (además movería la hamburguesa al centro).

   Si el menú queda unos píxeles alto o bajo, ajusta --lcp-bar-offset
   (ej. 2px o -3px) en el bloque de variables de arriba. Se usa "top" y no
   "transform" a propósito: un transform en un ancestro convierte el
   position:fixed del drawer móvil en absolute y lo rompe. */
@media (min-width: 1025px) {

	/* El :not([class*="elementor-hidden"]) NO es decorativo.
	   Sin él, este display:flex (0,2,0) le gana a .elementor-hidden-desktop
	   de Elementor (0,1,0), que no lleva !important. Consecuencia real: si
	   alguien oculta el widget Shortcode desde Elementor, seguía
	   mostrándose igual, y el header terminaba con DOS menús.
	   Solo hace falta en el wrapper externo: si ese queda en display:none,
	   lo de dentro no se pinta pase lo que pase con su display. */
	.elementor-widget-shortcode:has(.lcp-static-menu):not([class*="elementor-hidden"]),
	.elementor-shortcode:has(.lcp-static-menu),
	.elementor-shortcode:has(.lcp-static-menu) > .elementor-element,
	.elementor-shortcode:has(.lcp-static-menu) > .elementor-element > .elementor-widget-container,
	.elementor-shortcode:has(.lcp-static-menu) .ekit-wid-con {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 100%;
		height: 100%;
	}

	.elementor-shortcode:has(.lcp-static-menu) .ekit-wid-con {
		position: relative;
		top: var(--lcp-bar-offset, 0);
	}
}

/* --- Banda apretada: 1025px–1499px -----------------------------------
   DECISIÓN DE PRODUCTO: en laptops pequeños se muestra el menú horizontal
   completo, no la hamburguesa. Si no cabe en una fila, se acepta que pase
   a dos. Esconderlo por debajo de 1200px se probó y se descartó: dejaba
   el header vacío en pantallas de 1198px, que es peor.

   Los 7 items de primer nivel ocupan ~1150px con el padding y la letra de
   escritorio, así que UNA sola fila solo es posible por encima de
   ~1500px. Aquí el padding y la letra se comprimen con el viewport para
   estirar ese punto lo más abajo posible y, cuando ya no alcanza, para
   que las dos filas queden compactas en vez de inflar el header.

   Si quieren una sola fila también en laptops pequeños, el CSS ya no da
   más: la palanca es acortar los labels en lcp_menu_items() ("Events" en
   vez de "Events & Webinars", "Partners" en vez de "Preferred
   Providers"). Es decisión de contenido, no técnica.

   Los !important son necesarios, no pereza: el CSS generado de
   ElementsKit apunta con #ekit-megamenu-menu1 (especificidad 1,1,0) y un
   ID le gana a cualquier cantidad de clases, así que 0,3,0 no alcanza.
   Es el mismo motivo documentado en el acordeón móvil más abajo.

   Las interpolaciones son lineales entre los extremos de la banda, no un
   vw suelto (un vw suelto casi no comprime en el extremo bajo):

     padding:   4px @1025px  ->  15px @1500px  =  calc(2.32vw - 19.8px)
     font-size: 13px @1025px ->  17px @1500px  =  calc(0.84vw + 4.4px)

   El clamp fija esos topes para que nada se salga de rango si el @media
   cambia. Para calibrar: si quieren estirar la fila única un poco más
   abajo, baja el mínimo del font-size (13px); por debajo de 12px el nav
   se vuelve difícil de leer y no vale la pena. */
@media (min-width: 1025px) and (max-width: 1499px) {

	.lcp-static-menu .elementskit-navbar-nav > li > a {
		padding-right: clamp(4px, calc(2.32vw - 19.8px), 15px) !important;
		padding-left: clamp(4px, calc(2.32vw - 19.8px), 15px) !important;
		/* Vertical más corto: con dos filas, 12px arriba y abajo por fila
		   estiraban el header casi al doble de alto. */
		padding-top: 8px !important;
		padding-bottom: 8px !important;
		font-size: clamp(13px, calc(0.84vw + 4.4px), 17px) !important;
	}

	/* La segunda fila es un estado esperado en esta banda, no un
	   accidente: se centra igual que la primera (lo hace justify-content
	   del contenedor) y lleva un poco de aire entre filas. */
	.lcp-static-menu .elementskit-navbar-nav {
		flex-wrap: wrap !important;
		row-gap: 2px !important;
	}
}

/* Hamburguesa y panel offcanvas: ocultos en escritorio. */
.lcp-static-menu-hamburger {
	display: none;
}

/* Los CTA del drawer solo existen en móvil (en escritorio los pinta
   Elementor en el header). Ver sección 3. */
.lcp-static-menu-cta {
	display: none;
}

.lcp-static-menu .elementskit-nav-identity-panel {
	display: none;
}

@media (prefers-reduced-motion: reduce) {
	.lcp-static-menu .elementskit-submenu-panel,
	.lcp-static-menu .elementskit-submenu-indicator {
		transition: none;
	}
}

/* =========================================================================
   3. MÓVIL — drawer offcanvas
   -------------------------------------------------------------------------
   Breakpoint: 1024px. Coincide a propósito con el
   data-responsive-breakpoint="1024" del widget original, así el CSS de
   ElementsKit conmuta en el mismo punto que el nuestro y no hay una banda
   donde él crea que es escritorio y nosotros estemos pintando el drawer.

   Se probó subirlo a 1199px para que la hamburguesa llegara antes de que
   la barra se partiera en dos filas, y se DESCARTÓ: dejaba el header sin
   navegación en pantallas de ~1198px. En laptops pequeños se prefiere el
   menú horizontal completo, aunque ocupe dos filas. La compresión de la
   sección 2 es lo que mantiene esas dos filas presentables.

   Si algún día mueves el breakpoint, cámbialo en TRES lugares:
     - este @media
     - el @media (min-width: 1025px) de la sección 2
     - MOBILE_QUERY en custom-lcp-menu.js
   ...y sube también el "responsive breakpoint" del widget ElementsKit
   oculto en Elementor, o su CSS de escritorio se peleará con el drawer.
   ========================================================================= */

@media (max-width: 1024px) {

	.lcp-static-menu-hamburger {
		display: inline-flex;
		flex-direction: column;
		justify-content: center;
		gap: 5px;
		width: 44px;
		height: 44px;
		padding: 10px;
		border: 0;
		background: none;
		color: inherit;
		cursor: pointer;
	}

	.lcp-static-menu-hamburger .elementskit-menu-hamburger-icon {
		display: block;
		width: 100%;
		height: 2px;
		background: currentColor;
		border-radius: 2px;
	}

	/* El contenedor se convierte en panel deslizante. */
	.lcp-static-menu.elementskit-menu-offcanvas-elements {
		position: fixed;
		top: 0;
		left: 0;
		z-index: 9999;
		width: min(320px, 85vw);
		height: 100%;
		/* El hueco de arriba reserva el sitio del panel de identidad (logo +
		   cerrar), que va en position:absolute. Se pone en el padding del
		   drawer y no como margin del primer hijo a propósito: así el hueco
		   existe sin importar QUÉ hijo quede primero.

		   !important obligatorio: ElementsKit define el padding del
		   offcanvas desde #ekit-megamenu-menu1 (1,1,0) y le ganaba a este
		   selector (0,2,0). Por eso los items del menú y los botones se
		   veían pegados al borde, a unos 8px, en vez de a 22px. */
		padding: var(--lcp-drawer-pad-top) var(--lcp-drawer-pad-x) 24px !important;
		overflow-y: auto;

		/* Contenido ANCLADO ARRIBA.
		   ElementsKit hace de este contenedor un flex con la columna
		   INVERTIDA y además deja que el <ul> crezca para llenar el alto.
		   Resultado: los items arriba, el bloque de CTA clavado al fondo y
		   un hueco azul enorme en medio. Aquí se normaliza la columna a su
		   orden natural y se empaqueta todo arriba; el alto sobrante queda
		   abajo, que es lo correcto en un drawer.

		   Al dejar de estar invertida, el order de los hijos vuelve a
		   leerse como uno espera (ver .elementskit-navbar-nav y
		   .lcp-static-menu-cta más abajo). */
		display: flex !important;
		flex-direction: column !important;
		flex-wrap: nowrap !important;
		justify-content: flex-start !important;
		gap: var(--lcp-drawer-gap) !important;
		background: var(--lcp-panel-bg);
		box-shadow: var(--lcp-panel-shadow);
		transform: translateX(-100%);
		transition: transform 300ms ease;
	}

	.lcp-static-menu.elementskit-menu-offcanvas-elements.active {
		transform: translateX(0);
	}

	/* La admin bar de WordPress es position:fixed con z-index 99999, o sea
	   por encima del drawer (9999), y el drawer arranca en top:0: se le
	   montaba encima del logo y del botón de cerrar. Solo lo ven usuarios
	   logueados, pero es justo lo que se veía mal en las capturas.
	   La admin bar mide 32px, y 46px por debajo de 782px. */
	body.admin-bar .lcp-static-menu.elementskit-menu-offcanvas-elements {
		top: 32px;
		height: calc(100% - 32px);
	}

	.lcp-static-menu .elementskit-navbar-nav {
		flex-direction: column;
		align-items: stretch;
		/* El hueco del panel de identidad ahora lo da el padding-top del
		   drawer, no este margen. */
		margin-top: 0;

		/* Primer hijo en el flujo, justo debajo del logo. */
		order: 1;

		/* Que la lista mida lo que miden sus items y nada más.
		   flex:0 0 auto NO alcanza por sí solo: ElementsKit le fija una
		   ALTURA al <ul> (mismo patrón que con los paneles del acordeón,
		   ver MOBILE_PANEL_OVERRIDES en custom-lcp-menu.js). Con altura
		   fija el <ul> ocupaba todo el panel, sus items quedaban arriba y
		   los CTA caían debajo de ese vacío — el drawer terminaba con
		   scroll y los botones fuera de vista. */
		flex: 0 0 auto !important;
		height: auto !important;
		min-height: 0 !important;
		max-height: none !important;
	}

	.lcp-static-menu .elementskit-navbar-nav.elementskit-menu-po-center {
		justify-content: flex-start;
	}

	.lcp-static-menu .elementskit-navbar-nav > li {
		border-bottom: 1px solid var(--lcp-panel-border);
	}

	/* El font-weight/size/letter-spacing van con !important porque la
	   tipografía de los items la define el CSS generado del widget por ID
	   (1,1,0). Sin ellos el peso grueso original se mantiene y sobre el
	   azul saturado del drawer cuesta leerlo. El color NO lleva
	   !important a propósito: el blanco que pone ElementsKit sobre su
	   fondo azul es el correcto, y forzar --lcp-panel-link-color (oscuro)
	   lo dejaría ilegible. */
	.lcp-static-menu .elementskit-navbar-nav > li > a {
		display: flex;
		justify-content: space-between;
		align-items: center;
		gap: 12px;
		padding: 15px 0;
		/* Sin !important: con ElementsKit activo gana su blanco sobre el
		   fondo azul (correcto), y si algún día se apaga, este oscuro sobre
		   el fondo blanco del respaldo también es correcto. */
		color: var(--lcp-panel-link-color);
		font-size: var(--lcp-drawer-link-size) !important;
		font-weight: var(--lcp-drawer-link-weight) !important;
		letter-spacing: 0.2px !important;
		line-height: 1.35 !important;
		white-space: normal;
	}

	/* Los paneles pasan a acordeón; el hover ya no debe abrirlos.
	   Los !important de aquí son necesarios, no pereza: ElementsKit posiciona
	   los paneles desde su CSS generado usando el ID #ekit-megamenu-menu1
	   (especificidad 1,1,0), que le gana a cualquier selector de clases
	   nuestro. Sin esto el panel sigue en position:absolute y los hijos se
	   dibujan ENCIMA de los items siguientes en vez de empujarlos hacia
	   abajo. Solo llevan !important las propiedades imprescindibles para que
	   el acordeón ocupe su espacio en el flujo. */
	.lcp-static-menu .elementskit-submenu-panel,
	.lcp-static-menu .elementskit-submenu-panel .elementskit-submenu-panel {
		position: static !important;
		top: auto !important;
		left: auto !important;
		right: auto !important;
		display: none;
		width: auto !important;
		min-width: 0 !important;
		max-width: none !important;
		margin-top: 0 !important;
		padding: 0 0 8px 14px;
		border: 0;
		border-radius: 0;
		background: none;
		box-shadow: none;
		opacity: 1 !important;
		visibility: visible !important;
		transform: none !important;
		transition: none;
	}

	/* Sin hueco en el acordeón, no hace falta puente — y si se quedara,
	   sería una franja transparente capaz de robarse los taps del padre. */
	.lcp-static-menu .elementskit-navbar-nav > li > .elementskit-submenu-panel::before {
		display: none;
	}

	.lcp-static-menu .elementskit-dropdown-has:hover > .elementskit-submenu-panel {
		display: none;
	}

	.lcp-static-menu .elementskit-dropdown-has.lcp-submenu-open > .elementskit-submenu-panel {
		display: block;
	}

	/* Los hijos van un peso por debajo del padre: refuerza la jerarquía del
	   acordeón sin depender solo de la sangría. */
	.lcp-static-menu .elementskit-submenu-panel > li > a {
		padding: 11px 0;
		font-size: 14px !important;
		font-weight: 400 !important;
		letter-spacing: 0.2px !important;
		line-height: 1.35 !important;
	}

	/* Flecha del acordeón en blanco, en TODOS los niveles (el selector es
	   descendente a propósito: también los submenús anidados como "Labor
	   Compliance" dentro de Solutions).

	   Va DENTRO de este @media a propósito. La regla de Elementor que
	   pinta la flecha con --e-global-color-accent NO está en un media
	   query, así que aplica también en escritorio — y ahí la barra tiene
	   fondo claro, donde una flecha blanca sería invisible. Scopearlo al
	   drawer es lo que evita romper el menú de desktop.

	   !important porque el selector de Elementor es de especificidad
	   0,5,2 y un media query no aporta especificidad.

	   Se declaran color y fill porque el indicador puede venir como
	   fuente de iconos (usa color) o como SVG (usa fill), según cómo lo
	   renderice ElementsKit. */
	.lcp-static-menu .elementskit-navbar-nav .elementskit-submenu-indicator {
		color: var(--lcp-drawer-indicator-color) !important;
		fill: var(--lcp-drawer-indicator-color) !important;
	}

	.lcp-static-menu .elementskit-submenu-panel .elementskit-submenu-indicator {
		transform: none;
	}

	.lcp-static-menu .elementskit-dropdown-has.lcp-submenu-open > a > .elementskit-submenu-indicator {
		transform: rotate(180deg);
	}

	/* Panel de identidad (logo + cerrar) arriba del drawer. */
	/* left/right con la misma variable que el padding del drawer, para que
	   el logo arranque en la misma columna que los items del menú. */
	.lcp-static-menu .elementskit-nav-identity-panel {
		display: flex;
		position: absolute;
		top: 14px;
		left: var(--lcp-drawer-pad-x);
		right: var(--lcp-drawer-pad-x);
		align-items: center;
		justify-content: space-between;
		gap: 12px;
	}

	.lcp-static-menu .elementskit-nav-logo img {
		display: block;
		max-width: 150px;
		height: auto;
	}

	/* Botón de cerrar.
	   ElementsKit le pinta un recuadro azul claro y le mete su propio
	   tamaño desde un selector por ID, así que se veía como una caja
	   celeste recortada al borde del drawer en vez de un icono. Los
	   !important son para desarmar eso: fondo fuera, glifo blanco.
	   El carácter es × (U+00D7), no una "X" mayúscula — ver el <button>
	   en custom-lcp-menu.php. */
	.lcp-static-menu .elementskit-menu-close {
		display: flex;
		align-items: center;
		justify-content: center;
		flex: none;
		width: 36px;
		height: 36px;
		padding: 0 !important;
		border: 0 !important;
		border-radius: 0 !important;
		background: none !important;
		box-shadow: none !important;
		color: var(--lcp-close-color) !important;
		font-size: 30px !important;
		line-height: 1 !important;
		cursor: pointer;
		transition: color var(--lcp-transition);
	}

	.lcp-static-menu .elementskit-menu-close:hover,
	.lcp-static-menu .elementskit-menu-close:focus {
		background: none !important;
		color: var(--lcp-close-hover-color) !important;
	}

	/* Fondo oscuro, lo inyecta custom-lcp-menu.js como hermano del drawer.
	   pointer-events:none es deliberado y no negociable: así este velo no
	   puede interceptar taps aunque el apilamiento del header lo deje por
	   encima del menú. El cierre al tocar fuera lo maneja el JS. */
	.lcp-menu-backdrop {
		position: fixed;
		inset: 0;
		z-index: 9998;
		background: rgba(16, 33, 51, 0.5);
		pointer-events: none;
	}

	body.lcp-menu-drawer-open {
		overflow: hidden;
	}

	/* --- CTAs dentro del drawer --------------------------------------
	   Login y Request Demo son widgets de Elementor en el header; el
	   drawer los tapa y en móvil el usuario se quedaba sin ellos. Se
	   repiten al final de la lista. Solo aparecen si lcp_menu_defaults()
	   tiene la clave 'cta' poblada. */
	.lcp-static-menu-cta {
		display: flex;
		flex-direction: column;
		gap: 10px;
		/* Separación del último item del menú. El aire lateral y el de abajo
		   los da el padding del drawer, así que los botones quedan alineados
		   con los items en vez de ir de canto a canto. */
		margin-top: 26px;

		/* Después del menú. Ya no hace falta el order:-1 contraintuitivo de
		   antes: al forzar flex-direction:column en el contenedor, la
		   columna dejó de estar invertida y el order se lee normal.
		   Ponlo en 0 si algún día los quieres ARRIBA del menú. */
		order: 2;
	}

	/* Los !important de los CTA no son pereza: ElementsKit estiliza los
	   <a> del menú con selectores por ID (#ekit-megamenu-menu1 a, 1,1,0) y
	   un ID le gana a cualquier cantidad de clases. Sin ellos el color y el
	   fondo que definimos aquí no llegan a aplicarse — era justo lo que
	   hacía que se vieran lavados y sin pegar con el resto del drawer. */
	.lcp-static-menu-cta-btn {
		display: block;
		padding: 13px 16px;
		border: 2px solid transparent;
		border-radius: var(--lcp-panel-radius);
		font: inherit;
		font-size: 15px;
		font-weight: 600;
		line-height: 1.2;
		text-align: center;
		text-decoration: none !important;
		transition: background-color var(--lcp-transition), border-color var(--lcp-transition), color var(--lcp-transition);
	}

	/* Primario (Request Demo): relleno azul de marca sobre el marino. */
	.lcp-static-menu-cta-solid {
		background: var(--lcp-cta-primary-bg) !important;
		border-color: var(--lcp-cta-primary-bg) !important;
		color: var(--lcp-cta-primary-color) !important;
	}

	.lcp-static-menu-cta-solid:hover,
	.lcp-static-menu-cta-solid:focus {
		background: var(--lcp-cta-primary-hover-bg) !important;
		border-color: var(--lcp-cta-primary-hover-bg) !important;
		color: var(--lcp-cta-primary-hover-color) !important;
	}

	/* Secundario (Login): fantasma con borde blanco. Sobre fondo oscuro
	   esto contrasta y jerarquiza — el CTA principal sigue siendo el azul. */
	.lcp-static-menu-cta-outline {
		background: transparent !important;
		border-color: var(--lcp-cta-ghost-border) !important;
		color: var(--lcp-cta-ghost-color) !important;
	}

	.lcp-static-menu-cta-outline:hover,
	.lcp-static-menu-cta-outline:focus {
		background: var(--lcp-cta-ghost-hover-bg) !important;
		border-color: var(--lcp-cta-ghost-hover-bg) !important;
		color: var(--lcp-cta-ghost-hover-color) !important;
	}
}

/* La admin bar pasa a 46px y deja de ser fixed por debajo de 782px, pero
   sigue empujando el layout, así que el drawer necesita el mismo offset. */
@media (max-width: 782px) {

	body.admin-bar .lcp-static-menu.elementskit-menu-offcanvas-elements {
		top: 46px;
		height: calc(100% - 46px);
	}
}

/* =========================================================================
   4. SKIN PARA EL MENÚ NATIVO  (.lcp-menu-skin)
   -------------------------------------------------------------------------
   PARA QUÉ: conservar el aspecto que pulimos en el drawer móvil y la
   compresión de la barra en laptops, pero usando el widget NATIVO de
   ElementsKit alimentado por el menú de WordPress. O sea, con
   LCP_STATIC_MENU_ENABLED en false.

   CÓMO SE ACTIVA (dos pasos, los dos obligatorios):
     1. lcp-menu.php (el plugin) -> define( 'LCP_MENU_SKIN_ENABLED', true );
        (eso hace que este CSS se cargue aunque el menú estático esté off)
     2. Elementor -> widget ElementsKit Nav Menu -> Advanced -> CSS Classes
        -> escribir:  lcp-menu-skin

   POR QUÉ UNA CLASE APARTE Y NO REUSAR .lcp-static-menu:
   Las secciones 1 a 3 mezclan cosmética con COMPORTAMIENTO, y el
   comportamiento depende de custom-lcp-menu.js. El caso que lo rompe todo:
   los paneles del acordeón están en display:none y solo los abre la clase
   .lcp-submenu-open, que la añade MI JS. Con el menú nativo manda el JS de
   ElementsKit, que usa su propio mecanismo, así que esa clase nunca
   llegaría y LOS SUBMENÚS NO ABRIRÍAN. Por eso aquí solo van reglas
   cosméticas: cero posicionamiento de paneles, cero display, cero
   transform del drawer. El acordeón y el offcanvas los maneja ElementsKit
   de principio a fin.

   LO QUE ESTE SKIN NO PUEDE DAR:
     - Los botones Login / Request Demo dentro del drawer. Ese markup lo
       genera lcp_menu_render() en PHP; el widget nativo no tiene dónde
       ponerlos. Se pierden.
     - El logo blanco. Aquí solo se le limita el tamaño; la imagen se elige
       en los ajustes del propio widget en Elementor.

   Si alguna regla de abajo se pelea con ElementsKit, coméntala sola: son
   independientes entre sí a propósito.
   ========================================================================= */

/* --- Compresión de la barra en laptops (1025px–1499px) ----------------
   El mismo problema y la misma solución que la sección 2: con 7 items de
   primer nivel la fila no cabe y se parte en dos. Ver el comentario largo
   de esa sección para la fórmula y cómo calibrarla. */
@media (min-width: 1025px) and (max-width: 1499px) {

	.lcp-menu-skin .elementskit-navbar-nav > li > a {
		padding-right: clamp(4px, calc(2.32vw - 19.8px), 15px) !important;
		padding-left: clamp(4px, calc(2.32vw - 19.8px), 15px) !important;
		padding-top: 8px !important;
		padding-bottom: 8px !important;
		font-size: clamp(13px, calc(0.84vw + 4.4px), 17px) !important;
	}

	.lcp-menu-skin .elementskit-navbar-nav {
		flex-wrap: wrap !important;
		row-gap: 2px !important;
	}
}

/* --- Drawer móvil: solo cosmética ------------------------------------- */
@media (max-width: 1024px) {

	/* Aire lateral. SOLO horizontal a propósito: el padding de arriba lo
	   deja ElementsKit, porque su panel de identidad (logo + cerrar) está
	   posicionado por su propio CSS y forzar un padding-top calculado para
	   NUESTRO markup abriría un hueco o lo solaparía. */
	/* Doble forma a propósito: el campo "CSS Classes" de Elementor escribe
	   la clase en el WRAPPER del widget (.elementor-element ...), no en el
	   contenedor del menú, que está varios niveles más adentro. Con solo la
	   forma compuesta (.a.b, las dos clases en el mismo elemento) esta
	   regla no hacía match nunca.
	   Se dejan ambas para que funcione tanto si la clase cae en el wrapper
	   (caso normal en Elementor) como si algún día acaba en el contenedor. */
	.lcp-menu-skin.elementskit-menu-offcanvas-elements,
	.lcp-menu-skin .elementskit-menu-offcanvas-elements {
		padding-right: var(--lcp-drawer-pad-x) !important;
		padding-left: var(--lcp-drawer-pad-x) !important;
	}

	/* La admin bar es fixed con z-index por encima del drawer y le tapaba
	   el logo y el botón de cerrar. Solo afecta a usuarios logueados. */
	body.admin-bar .lcp-menu-skin.elementskit-menu-offcanvas-elements,
	body.admin-bar .lcp-menu-skin .elementskit-menu-offcanvas-elements {
		top: 32px;
		height: calc(100% - 32px);
	}

	/* Tipografía legible sobre el azul del drawer. */
	.lcp-menu-skin .elementskit-navbar-nav > li > a {
		padding-top: 15px !important;
		padding-bottom: 15px !important;
		font-size: var(--lcp-drawer-link-size) !important;
		font-weight: var(--lcp-drawer-link-weight) !important;
		letter-spacing: 0.2px !important;
		line-height: 1.35 !important;
	}

	/* Los hijos, un escalón por debajo del padre. */
	.lcp-menu-skin .elementskit-submenu-panel > li > a {
		font-size: 14px !important;
		font-weight: 400 !important;
		letter-spacing: 0.2px !important;
		line-height: 1.35 !important;
	}

	/* Flecha del acordeón en blanco, en todos los niveles. Elementor la
	   pinta con --e-global-color-accent (azul) desde una regla que NO está
	   en un media query, así que sobre el azul del drawer no se distingue.
	   color y fill porque puede venir como icon font o como SVG. */
	.lcp-menu-skin .elementskit-navbar-nav .elementskit-submenu-indicator {
		color: var(--lcp-drawer-indicator-color) !important;
		fill: var(--lcp-drawer-indicator-color) !important;
	}

	/* Tope de tamaño del logo. La imagen se elige en el widget. */
	.lcp-menu-skin .elementskit-nav-logo img {
		max-width: 150px;
		height: auto;
	}
}
