/* ==========================================================================
   Softecan · Cabecera de Bridge (todas las páginas)
   - Menú en DM Sans con "píldora viajera": marca la opción activa, se desliza
     hasta la opción sobre la que pasa el ratón y vuelve al salir del menú.
   - Al pasar el ratón, el texto cambia a azul y sube 2 px.
   - Botón "Cuéntanos tu proyecto" como llamada a la acción.
   La píldora la añade assets/js/softecan-header.js;
   sin JS el menú se ve con la tipografía nueva y la opción activa en azul.
   ========================================================================== */

:root {
	--sft-h-navy: #072952;
	--sft-h-blue: #007db2;
	--sft-h-sky: #80c2ea;
	--sft-h-amber: #f59e0b;
	--sft-h-ease: cubic-bezier(.16, 1, .3, 1);
	--sft-h-spring: cubic-bezier(.34, 1.36, .64, 1);
	--sft-h-font: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
}

/* ---------- Tipografía del menú ---------- */
header.page_header nav.main_menu > ul > li > a,
header.page_header nav.main_menu > ul > li.active > a,
header.page_header nav.main_menu > ul > li > a:hover {
	font-family: var(--sft-h-font) !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	color: var(--sft-h-navy) !important;
	padding: 0 16px !important;
}

header.page_header nav.main_menu > ul > li.active > a,
header.page_header nav.main_menu > ul > li.sft-cur > a { color: var(--sft-h-blue) !important; }

/* Con el JS activo manda .sft-cur (Bridge marca "active" también en anclas) */
header.page_header nav.main_menu.sft-menu-ready > ul > li.active:not(.sft-cur) > a { color: var(--sft-h-navy) !important; }

/* La línea fija de Bridge se sustituye por la píldora */
header.page_header nav.main_menu > ul > li > a .underline_dash { display: none !important; }
header.page_header nav.main_menu > ul > li > a .plus { display: none; }

/* ---------- Píldora viajera ---------- */
header.page_header nav.main_menu > ul { position: relative; }

.sft-pill {
	position: absolute;
	top: 50%;
	left: 0;
	height: 40px;
	width: 0;
	margin-top: -20px;
	border-radius: 999px;
	background: rgba(0, 125, 178, .09);
	box-shadow: inset 0 0 0 1px rgba(0, 125, 178, .16);
	pointer-events: none;
	overflow: hidden;
	opacity: 0;
	z-index: 0;
	transition:
		transform .55s var(--sft-h-spring),
		width .55s var(--sft-h-spring),
		opacity .3s ease,
		background-color .3s ease;
}

.sft-pill.is-ready { opacity: 1; }
.sft-pill.is-instant { transition: none; }
.sft-pill.is-away { background: rgba(0, 125, 178, .06); }

/* Brillo que recorre la píldora cada pocos segundos */
.sft-pill::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: -60%;
	width: 50%;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .85), transparent);
	transform: skewX(-18deg);
	animation: sft-pill-shine 4.5s ease-in-out 1.2s infinite;
}

@keyframes sft-pill-shine {
	0%, 62% { left: -60%; }
	100% { left: 130%; }
}

header.page_header nav.main_menu > ul > li { position: relative; z-index: 1; }

/* ---------- Punto ámbar que late en la opción activa ---------- */
header.page_header nav.main_menu > ul > li > a > span:first-of-type { position: relative; }

header.page_header nav.main_menu > ul > li.sft-cur > a > span:first-of-type::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 100%;
	width: 5px;
	height: 5px;
	margin: 3px 0 0 -2.5px;
	border-radius: 50%;
	background: var(--sft-h-amber);
	animation: sft-dot 2.2s ease-out infinite;
}

@keyframes sft-dot {
	0% { box-shadow: 0 0 0 0 rgba(245, 158, 11, .55); }
	70%, 100% { box-shadow: 0 0 0 7px rgba(245, 158, 11, 0); }
}

/* ---------- Al pasar el ratón: color y elevación mínima ---------- */
header.page_header nav.main_menu > ul > li > a > span:first-of-type {
	display: inline-block;
	vertical-align: middle;
	line-height: 1.35;
	transition: color .25s ease, transform .35s var(--sft-h-ease);
}

header.page_header nav.main_menu > ul > li > a:hover > span:first-of-type,
header.page_header nav.main_menu > ul > li > a:focus-visible > span:first-of-type {
	color: var(--sft-h-blue);
	transform: translateY(-2px);
}

header.page_header nav.main_menu > ul > li > a:focus-visible { outline: none; }
header.page_header nav.main_menu > ul > li > a:focus-visible > span:first-of-type { outline: 2px solid var(--sft-h-blue); outline-offset: 6px; border-radius: 4px; }

/* ---------- Botón "Cuéntanos tu proyecto" ---------- */
header.page_header .qode_button_widget .qbutton {
	position: relative;
	overflow: hidden;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	height: 44px;
	line-height: 44px;
	padding: 0 22px !important;
	border: 0 !important;
	border-radius: 999px !important;
	background: var(--sft-h-amber) !important;
	color: var(--sft-h-navy) !important;
	font-family: var(--sft-h-font) !important;
	font-size: 15px !important;
	font-weight: 700 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	box-shadow: 0 10px 24px -12px rgba(245, 158, 11, .9);
	transition: transform .3s var(--sft-h-ease), box-shadow .3s var(--sft-h-ease), background-color .3s;
}

header.page_header .qode_button_widget .qbutton::before {
	content: "→";
	order: 2;
	font-weight: 700;
	transition: transform .3s var(--sft-h-ease);
}

header.page_header .qode_button_widget .qbutton::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: -70%;
	width: 45%;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .6), transparent);
	transform: skewX(-18deg);
	animation: sft-pill-shine 5.5s ease-in-out 2s infinite;
}

header.page_header .qode_button_widget .qbutton:hover {
	background: #ffb020 !important;
	color: var(--sft-h-navy) !important;
	transform: translateY(-1px);
	box-shadow: 0 14px 28px -12px rgba(245, 158, 11, 1);
}

header.page_header .qode_button_widget .qbutton:hover::before { transform: translateX(3px); }

/* El teléfono del widget de la cabecera ya está en el pie y en la sección de contacto */
body header.page_header .header_bottom_right_widget_holder .widget_text { display: none !important; }

/* ---------- Distribución en escritorio: logo · menú · botón ---------- */
@media (min-width: 1001px) {
	body header.page_header .header_bottom_right_widget_holder {
		display: flex !important;
		align-items: center;
		height: 100%;
	}

	body header.page_header .header_bottom_right_widget_holder .qode_button_widget { margin: 0 !important; padding: 0 !important; }

	body header.page_header .side_menu_button_wrapper.right { display: flex; align-items: center; height: 100%; }

	body header.page_header nav.main_menu.drop_down {
		left: auto !important;
		right: calc(45px + var(--sft-cta-w, 230px) + 20px) !important;
		width: auto !important;
		transform: none !important;
	}

	body header.page_header nav.main_menu.drop_down > ul { display: flex !important; flex-wrap: nowrap !important; }
	body header.page_header nav.main_menu.drop_down > ul > li { float: none !important; }
}

/* Pantallas medianas: menú más compacto para que quepa todo */
@media (min-width: 1001px) and (max-width: 1240px) {
	header.page_header nav.main_menu > ul > li > a,
	header.page_header nav.main_menu > ul > li.active > a,
	header.page_header nav.main_menu > ul > li > a:hover { padding: 0 10px !important; font-size: 14px !important; }
	header.page_header .qode_button_widget .qbutton { padding: 0 16px !important; font-size: 14px !important; }
}

/* En tablet y móvil el logo va centrado y no cabe el botón: el menú ya incluye «Contacto» */
@media (max-width: 1000px) {
	body header.page_header .header_bottom_right_widget_holder .qode_button_widget { display: none !important; }
}

/* ---------- Menú móvil ---------- */
nav.mobile_menu ul li a,
nav.mobile_menu ul li h3 {
	font-family: var(--sft-h-font) !important;
	font-size: 17px !important;
	font-weight: 600 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	color: var(--sft-h-navy) !important;
}

nav.mobile_menu ul li.active > a,
nav.mobile_menu ul li.current-menu-item > a,
nav.mobile_menu ul li.sft-cur > a { color: var(--sft-h-blue) !important; }

nav.mobile_menu ul li.sft-cur > a > span,
nav.mobile_menu ul li.current-menu-item > a > span { position: relative; padding-left: 16px; }

nav.mobile_menu ul li.sft-cur > a > span::before,
nav.mobile_menu ul li.current-menu-item > a > span::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	width: 6px;
	height: 6px;
	margin-top: -3px;
	border-radius: 50%;
	background: var(--sft-h-amber);
	animation: sft-dot 2.2s ease-out infinite;
}

nav.mobile_menu.sft-open > ul > li { animation: sft-menu-in .5s var(--sft-h-ease) both; animation-delay: calc(var(--i, 0) * 45ms); }

@keyframes sft-menu-in {
	from { opacity: 0; transform: translateX(-14px); }
}

/* ---------- Movimiento reducido ---------- */
@media (prefers-reduced-motion: reduce) {
	.sft-pill { transition: opacity .2s; }
	.sft-pill::after,
	header.page_header .qode_button_widget .qbutton::after,
	header.page_header nav.main_menu > ul > li.sft-cur > a > span:first-of-type::after,
	nav.mobile_menu ul li > a > span::before { animation: none; }
	header.page_header nav.main_menu > ul > li > a > span:first-of-type { transition: none; }
	header.page_header nav.main_menu > ul > li > a:hover > span:first-of-type { transform: none; }
	nav.mobile_menu.sft-open > ul > li { animation: none; }
}

/* ---------- Textos que Elementor y Bridge dejaban en Roboto u Open Sans ----------
   Esas fuentes ya no se cargan de Google: se igualan a la tipografía de la web. */
body .elementor-widget-icon-box .elementor-icon-box-title,
body .elementor-widget-icon-box .elementor-icon-box-title a,
body .elementor-widget-icon-box .elementor-icon-box-description,
body footer .qode-footer-copyright,
body footer .qode-footer-copyright a {
	font-family: var(--sft-h-font);
}

/* ---------- Banner de cookies (Complianz) con los colores de la web ----------
   «Aceptar» y «Rechazar» tienen el mismo peso visual, como recomienda la AEPD. */
.cmplz-cookiebanner,
#cmplz-manage-consent .cmplz-manage-consent {
	--cmplz_banner_background_color: #ffffff;
	--cmplz_banner_border_radius: 16px;
	--cmplz_text_color: #33465c;
	--cmplz_hyperlink_color: var(--sft-h-blue);
	--cmplz_text_font_size: 13px;
	--cmplz_link_font_size: 13px;
	--cmplz_category_body_font_size: 13px;
	--cmplz_title_font_size: 17px;
	--cmplz_button_accept_background_color: var(--sft-h-navy);
	--cmplz_button_accept_border_color: var(--sft-h-navy);
	--cmplz_button_accept_text_color: #ffffff;
	--cmplz_button_deny_background_color: var(--sft-h-navy);
	--cmplz_button_deny_border_color: var(--sft-h-navy);
	--cmplz_button_deny_text_color: #ffffff;
	--cmplz_button_settings_background_color: #ffffff;
	--cmplz_button_settings_border_color: rgba(7, 41, 82, .25);
	--cmplz_button_settings_text_color: var(--sft-h-navy);
	--cmplz_button_border_radius: 999px;
	--cmplz_button_font_size: 14px;
	--cmplz_slider_active_color: var(--sft-h-blue);
	--cmplz_category_header_always_active_color: var(--sft-h-blue);
	font-family: var(--sft-h-font);
}

.cmplz-cookiebanner {
	box-shadow: 0 24px 60px -24px rgba(7, 41, 82, .45), 0 0 0 1px rgba(7, 41, 82, .06) !important;
}

.cmplz-cookiebanner *,
#cmplz-manage-consent .cmplz-manage-consent { font-family: var(--sft-h-font) !important; }

.cmplz-cookiebanner .cmplz-title { font-weight: 700; color: var(--sft-h-navy); }

.cmplz-cookiebanner .cmplz-title::before {
	content: "";
	display: inline-block;
	width: 7px;
	height: 7px;
	margin: 0 9px 2px 0;
	border-radius: 50%;
	background: var(--sft-h-amber);
	vertical-align: middle;
}

.cmplz-cookiebanner .cmplz-btn {
	font-weight: 600 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	transition: transform .25s var(--sft-h-ease), background-color .25s, box-shadow .25s;
}

.cmplz-cookiebanner .cmplz-btn.cmplz-accept:hover,
.cmplz-cookiebanner .cmplz-btn.cmplz-deny:hover {
	background-color: var(--sft-h-blue) !important;
	border-color: var(--sft-h-blue) !important;
	transform: translateY(-1px);
}

.cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences:hover,
.cmplz-cookiebanner .cmplz-btn.cmplz-save-preferences:hover {
	border-color: var(--sft-h-blue) !important;
	color: var(--sft-h-blue) !important;
}

.cmplz-cookiebanner .cmplz-links a { font-weight: 600; text-underline-offset: 3px; }

#cmplz-manage-consent .cmplz-manage-consent {
	background: var(--sft-h-navy) !important;
	color: #ffffff !important;
	border-radius: 10px 10px 0 0 !important;
	font-weight: 600 !important;
	font-size: 13px !important;
}

@media (prefers-reduced-motion: reduce) {
	.cmplz-cookiebanner .cmplz-btn { transition: none; }
	.cmplz-cookiebanner .cmplz-btn:hover { transform: none; }
}

/* Política de cookies: opciones de consentimiento de Complianz dentro del texto */
.sft-cmplz-manage { margin: 6px 0 18px; }
.sft-cmplz-manage .cmplz-categories { display: grid; gap: 8px; }
.sft-cmplz-manage .cmplz-category { border-radius: 12px; background: #f1f6fa !important; box-shadow: inset 0 0 0 1px rgba(7, 41, 82, .08); overflow: hidden; }
.sft-cmplz-manage .cmplz-category .cmplz-category-header { padding: 12px 16px !important; }
.sft-cmplz-manage .cmplz-category-title { font-family: var(--sft-h-font); font-weight: 700; color: var(--sft-h-navy); }
.sft-cmplz-manage .cmplz-always-active { color: var(--sft-h-blue) !important; font-weight: 600; }
.sft-cmplz-manage input[type=checkbox] { accent-color: var(--sft-h-blue); width: 18px; height: 18px; }
.sft-cmplz-manage .cmplz-description { padding: 0 16px 14px; font-size: 14px; }

/* Formulario de contacto: los avisos de error no descolocan los campos */
.sft-cf7 { row-gap: 22px !important; align-items: start; }
.sft-cf7 .sft-f { align-content: start; }
.sft-cf7 .wpcf7-form-control-wrap { position: relative; display: block; }
.sft-cf7 .wpcf7-not-valid-tip {
	position: absolute;
	left: 2px;
	top: 100%;
	margin-top: 3px;
	font-size: 12px;
	line-height: 15px;
	white-space: nowrap;
	pointer-events: none;
}
.sft-cf7 .wpcf7-not-valid { box-shadow: 0 0 0 2px rgba(220, 50, 50, .35) !important; }

/* ---------- Pie: iconos de redes sociales bajo el logotipo ---------- */
.sft-footer .sft-social { --grid-column-gap: 10px; margin: 4px 0 6px; }
.sft-footer .sft-social .elementor-social-icons-wrapper { display: flex !important; flex-wrap: wrap; justify-content: flex-start !important; gap: 10px; }
.sft-footer .sft-social .elementor-grid-item { margin: 0 !important; }
.sft-footer .sft-social .elementor-social-icon {
	position: relative;
	overflow: hidden;
	width: 42px;
	height: 42px;
	padding: 0 !important;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: rgba(128, 194, 234, .08) !important;
	box-shadow: inset 0 0 0 1px rgba(128, 194, 234, .3);
	color: var(--sft-h-sky) !important;
	font-size: 17px;
	transition: background-color .3s ease, box-shadow .3s ease, transform .35s var(--sft-h-ease), color .3s ease;
}
.sft-footer .sft-social .elementor-social-icon i,
.sft-footer .sft-social .elementor-social-icon svg { position: relative; z-index: 1; color: inherit !important; fill: currentColor !important; width: 1em; height: 1em; font-size: 17px; }
.sft-footer .sft-social .elementor-social-icon::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: -80%;
	width: 50%;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .45), transparent);
	transform: skewX(-18deg);
	transition: left .6s var(--sft-h-ease);
}
.sft-footer .sft-social .elementor-social-icon:hover,
.sft-footer .sft-social .elementor-social-icon:focus-visible {
	background: var(--sft-h-blue) !important;
	box-shadow: inset 0 0 0 1px var(--sft-h-blue), 0 10px 22px -10px rgba(0, 125, 178, .9);
	color: #ffffff !important;
	transform: translateY(-2px);
}
.sft-footer .sft-social .elementor-social-icon:hover::after { left: 130%; }
.sft-footer .sft-social .elementor-social-icon:focus-visible { outline: 2px solid var(--sft-h-sky); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) {
	.sft-footer .sft-social .elementor-social-icon,
	.sft-footer .sft-social .elementor-social-icon::after { transition: none; }
	.sft-footer .sft-social .elementor-social-icon:hover { transform: none; }
}

/* ---------- Botón «volver arriba» de Bridge: visible sobre fondo claro y oscuro ---------- */
#back_to_top { width: 46px !important; height: 46px !important; border-radius: 50%; }
#back_to_top > span.fa-stack {
	width: 46px !important;
	height: 46px !important;
	line-height: 46px !important;
	display: flex !important;
	align-items: center;
	justify-content: center;
	border: 0 !important;
	border-radius: 50% !important;
	background: var(--sft-h-sky) !important;
	box-shadow: 0 10px 24px -12px rgba(7, 41, 82, .55), inset 0 0 0 1px rgba(255, 255, 255, .25);
	transition: background-color .3s ease, box-shadow .3s ease, transform .35s var(--sft-h-ease);
}
#back_to_top > span.fa-stack i {
	width: auto !important;
	height: auto !important;
	line-height: 1 !important;
	font-size: 22px !important;
	color: var(--sft-h-navy) !important;
	transition: color .3s ease, transform .35s var(--sft-h-ease);
}
#back_to_top:hover > span.fa-stack,
#back_to_top:focus-visible > span.fa-stack {
	background: var(--sft-h-blue) !important;
	box-shadow: 0 14px 28px -12px rgba(0, 125, 178, .9);
	transform: translateY(-2px);
}
#back_to_top:hover > span.fa-stack i,
#back_to_top:focus-visible > span.fa-stack i { color: #ffffff !important; transform: translateY(-1px); }
#back_to_top:focus-visible { outline: 2px solid var(--sft-h-sky); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) {
	#back_to_top > span.fa-stack, #back_to_top > span.fa-stack i { transition: none; }
	#back_to_top:hover > span.fa-stack, #back_to_top:hover > span.fa-stack i { transform: none; }
}
