/**
 * Estilos Públicos (Frontend) - Creación Landing Asociados
 */
.lhb-frontend-hero * { box-sizing: border-box; }
.lhb-frontend-hero {
	position: relative; width: 100%; min-height: 88vh; display: flex;
	align-items: center; justify-content: center; background-size: cover !important;
	background-position: top center !important; background-repeat: no-repeat !important;
	padding: 90px 24px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; overflow: hidden;
}
/* Capa de imagen de fondo del Hero (nítida por defecto; difuminado opcional) */
.lhb-hero-bg {
	position: absolute; inset: 0; z-index: 0;
	background-size: cover; background-position: top center; background-repeat: no-repeat;
}
.lhb-frontend-hero.hero-blur-on .lhb-hero-bg {
	filter: blur(var(--hero-blur, 6px));
	transform: scale(1.08); transform-origin: center;
}

/* Logos asociados (izquierda / derecha) en el Hero */
.lhb-hero-logos {
	position: absolute; top: 26px; left: 0; right: 0; z-index: 4;
	display: flex; align-items: center; justify-content: space-between; gap: 16px;
	padding: 0 44px; pointer-events: none;
}
.lhb-hero-logo { display: flex; align-items: center; }
.lhb-hero-logo--right { justify-content: flex-end; }
.lhb-hero-logos img { max-height: 72px; max-width: 230px; width: auto; height: auto; object-fit: contain; display: block; }
@media (max-width: 768px) {
	.lhb-hero-logos { top: 16px; padding: 0 18px; gap: 10px; }
	.lhb-hero-logos img { max-height: 42px; max-width: 130px; }
}

.lhb-frontend-glow { position: absolute; top: 32%; left: 50%; transform: translateX(-50%); width: 750px; height: 450px; border-radius: 50%; filter: blur(95px); z-index: 2; pointer-events: none; }
.glow-amber  { background: radial-gradient(circle, rgba(245,158,11,0.38) 0%, rgba(217,119,6,0.12) 60%, transparent 100%); }
.glow-cyan   { background: radial-gradient(circle, rgba(6,182,212,0.38) 0%, rgba(59,130,246,0.12) 60%, transparent 100%); }
.glow-purple { background: radial-gradient(circle, rgba(168,85,247,0.38) 0%, rgba(139,92,246,0.12) 60%, transparent 100%); }
.glow-none   { background: none !important; }
.lhb-hero-overlay {
	position: absolute; inset: 0; z-index: 1;
	-webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.55) 20%, rgba(0,0,0,1) 40%, rgba(0,0,0,1) 100%);
	mask-image: linear-gradient(to bottom, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.55) 20%, rgba(0,0,0,1) 40%, rgba(0,0,0,1) 100%);
}
.lhb-hero-container { position: relative; z-index: 3; max-width: 1100px; width: 100%; margin: 0 auto; }
.lhb-hero-content { width: 100%; }
.lhb-frontend-overtitle { font-size: 1.05rem; font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase; color: #94a3b8; margin-bottom: 18px; }
.lhb-hero-title { font-family: 'Outfit', sans-serif; line-height: 1.15; margin: 0 0 24px 0; letter-spacing: -0.02em; text-shadow: 0 4px 15px rgba(0,0,0,0.35); }
.gradient-white-silver { background: linear-gradient(180deg, #FFFFFF 0%, #94A3B8 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-shadow: none !important; }
.gradient-white-blue   { background: linear-gradient(180deg, #FFFFFF 0%, #38BDF8 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-shadow: none !important; }
.gradient-gold-warm    { background: linear-gradient(180deg, #FDE047 0%, #F59E0B 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-shadow: none !important; }
.gradient-solid        { -webkit-text-fill-color: unset; background: none; }
.lhb-hero-subtitle { font-size: 1.38rem; line-height: 1.68; margin: 0 auto 38px auto; opacity: 0.94; max-width: 860px; display: inline-block; text-shadow: 0 2px 8px rgba(0,0,0,0.35); }
.lhb-frontend-actions-dual { display: flex; gap: 18px; align-items: center; justify-content: inherit; flex-wrap: wrap; margin-top: 10px; }
.lhb-btn-dual-1,.lhb-btn-dual-2 { display: inline-flex; align-items: center; justify-content: center; padding: 16px 36px; font-size: 1.08rem; font-weight: 700; text-decoration: none; transition: all 0.3s cubic-bezier(0.16,1,0.3,1); cursor: pointer; }
.lhb-btn1-style-glowing-pill { background: rgba(15,23,42,0.88); color: #fff !important; border: 1px solid rgba(245,158,11,0.65); border-radius: 50px; box-shadow: 0 0 30px rgba(245,158,11,0.38),inset 0 0 15px rgba(245,158,11,0.18); backdrop-filter: blur(12px); }
.lhb-btn1-style-glowing-pill:hover { transform: translateY(-3px) scale(1.02); box-shadow: 0 0 45px rgba(245,158,11,0.55),inset 0 0 22px rgba(245,158,11,0.28); border-color: rgba(245,158,11,0.95); }
.lhb-btn1-style-solid { background: #f59e0b; color: #fff !important; border: 1px solid #f59e0b; border-radius: 12px; box-shadow: 0 12px 25px -5px rgba(245,158,11,0.45); }
.lhb-btn1-style-solid:hover { transform: translateY(-3px); }
.lhb-btn1-style-outline { background: transparent; color: #fff !important; border: 2px solid rgba(255,255,255,0.75); border-radius: 50px; }
.lhb-btn1-style-outline:hover { border-color: #fff; background: rgba(255,255,255,0.1); }
.lhb-btn2-style-arrow-link { background: transparent; color: #e2e8f0 !important; padding: 16px 24px; }
.lhb-btn2-style-arrow-link:hover { color: #fff !important; transform: translateX(6px); }
.lhb-btn2-style-glass-pill { background: rgba(255,255,255,0.14); color: #fff !important; border: 1px solid rgba(255,255,255,0.28); border-radius: 50px; backdrop-filter: blur(12px); }
.lhb-btn2-style-glass-pill:hover { background: rgba(255,255,255,0.22); transform: translateY(-2px); }
.lhb-btn2-style-outline { background: transparent; color: #94a3b8 !important; border: 1.5px solid rgba(148,163,184,0.5); border-radius: 50px; }
.lhb-btn2-style-outline:hover { color: #fff !important; border-color: #fff; }
@media (max-width: 768px) {
	.lhb-frontend-hero { min-height: 78vh; padding: 60px 20px; }
	.lhb-hero-title { font-size: 2.5rem !important; }
	.lhb-hero-subtitle { font-size: 1.12rem; margin-bottom: 32px; }
	.lhb-frontend-actions-dual { flex-direction: column; width: 100%; }
	.lhb-btn-dual-1,.lhb-btn-dual-2 { width: 100%; max-width: 340px; }
}
@media (max-width: 480px) { .lhb-hero-title { font-size: 2.1rem !important; } .lhb-hero-subtitle { font-size: 1rem; } }
.lhb-landing-body-container { max-width: 1200px; margin: 0 auto; padding: 60px 24px; }
.lhb-section-anchor { scroll-margin-top: 0; }
.lhb-page-content-block { font-size: 1.1rem; line-height: 1.8; color: #334155; margin-bottom: 40px; }

/* ======================================================
   SECCION PROGRAMAS — Transiciones Pro Refinadas + Tarjetas
   ====================================================== */
@keyframes cla-blur-reveal {
	from { opacity:0; filter:blur(9px); transform:scale3d(0.99,0.99,1); }
	to   { opacity:1; filter:blur(0); transform:scale3d(1,1,1); }
}

/* Hidden initial states */
.lhb-programs-section[data-transition="blur-reveal"] { opacity:0; filter:blur(9px); transform:scale3d(0.99,0.99,1); }

/* Animated active states */
.lhb-programs-section.transition-active {
	animation-fill-mode:both;
	animation-timing-function:cubic-bezier(0.25, 0.8, 0.3, 1);
	animation-duration:0.85s;
	will-change:opacity,transform,filter;
}
.lhb-programs-section[data-transition="blur-reveal"].transition-active { animation-name:cla-blur-reveal; animation-duration:0.9s; }

/* Cinematic: glow line sweep effect */

/* =========================================================================
   CHOREOGRAPHED HERO-TO-PROGRAMS TRANSITIONS (Al pulsar botón CTA)
   ========================================================================= */
.lhb-hero-section, #lhb_live_canvas {
	transition: filter 0.8s cubic-bezier(0.16, 1, 0.3, 1), 
	            opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), 
	            transform 0.8s cubic-bezier(0.16, 1, 0.3, 1), 
	            clip-path 0.9s cubic-bezier(0.77, 0, 0.175, 1);
	will-change: filter, opacity, transform;
}

.lhb-programs-section {
	width:100%; padding:100px 32px; position:relative; z-index:5; box-sizing:border-box;
	font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
}
/* Único modo visual del sistema: Mercado Universitario Institucional (Clean Academic Light).
   Ya no hay temas alternativos: el estilo claro es el estilo base. */
.lhb-programs-section,
.lhb-programs-section.theme-market-light-academic { background:linear-gradient(180deg,#f8fafc 0%,#f1f5f9 100%); color:#0f172a; }

.lhb-programs-header { max-width:760px; margin:0 auto 64px; text-align:center; }
.lhb-programs-title  { font-family:'Outfit',sans-serif; font-size:clamp(2rem,4.5vw,3rem); font-weight:800; margin:0 0 16px; line-height:1.15; letter-spacing:-0.02em; }
.lhb-programs-title { color:#0f172a; -webkit-text-fill-color:#0f172a; }
.lhb-programs-subtitle { font-size:1.08rem; line-height:1.7; opacity:0.95; margin:0 auto; max-width:620px; }
.lhb-programs-subtitle { color:#334155; opacity:1; }

/* =======================================================
   FILTRO POR FACULTAD / TAXONOMÍA — Tabs Horizontales Pro
   ======================================================= */
.lhb-faculty-filter {
	display:flex;
	align-items:center;
	justify-content:center;
	gap:10px;
	flex-wrap:wrap;
	margin:0 auto 48px;
	max-width:1240px;
	padding:0 16px;
}

.lhb-faculty-tab {
	display:inline-flex;
	align-items:center;
	gap:6px;
	padding:10px 22px;
	border-radius:50px;
	font-size:0.88rem;
	font-weight:600;
	cursor:pointer;
	border:1px solid rgba(255,255,255,0.12);
	background:rgba(255,255,255,0.04);
	color:#94a3b8;
	transition:all 0.35s cubic-bezier(0.16,1,0.3,1);
	white-space:nowrap;
	text-decoration:none;
	backdrop-filter:blur(4px);
	user-select:none;
}
.lhb-faculty-tab:hover {
	background:rgba(56,189,248,0.1);
	border-color:rgba(56,189,248,0.35);
	color:#e2e8f0;
	transform:translateY(-2px);
	box-shadow:0 4px 12px rgba(56,189,248,0.15);
}
.lhb-faculty-tab.active {
	background:linear-gradient(135deg, rgba(56,189,248,0.18) 0%, rgba(245,158,11,0.12) 100%);
	border-color:rgba(56,189,248,0.5);
	color:#ffffff;
	box-shadow:0 0 20px rgba(56,189,248,0.2), 0 4px 16px rgba(0,0,0,0.2);
}
.lhb-faculty-tab .lhb-tab-count {
	display:inline-flex;
	align-items:center;
	justify-content:center;
	min-width:22px;
	height:22px;
	padding:0 6px;
	border-radius:11px;
	font-size:0.72rem;
	font-weight:700;
	background:rgba(255,255,255,0.1);
	color:#94a3b8;
	transition:all 0.3s ease;
}
.lhb-faculty-tab.active .lhb-tab-count {
	background:rgba(56,189,248,0.25);
	color:#38bdf8;
}

/* Light theme overrides for filter tabs */
.lhb-faculty-tab {
	background:rgba(15,23,42,0.04);
	border-color:#cbd5e1;
	color:#64748b;
}
.lhb-faculty-tab:hover {
	background:rgba(2,132,199,0.08);
	border-color:rgba(2,132,199,0.4);
	color:#0f172a;
}
.lhb-faculty-tab.active {
	background:linear-gradient(135deg, rgba(2,132,199,0.12) 0%, rgba(217,119,6,0.08) 100%);
	border-color:#0284c7;
	color:#0f172a;
	box-shadow:0 0 16px rgba(2,132,199,0.15), 0 4px 12px rgba(0,0,0,0.08);
}
.lhb-faculty-tab .lhb-tab-count {
	background:rgba(15,23,42,0.08);
	color:#475569;
}
.lhb-faculty-tab.active .lhb-tab-count {
	background:rgba(2,132,199,0.15);
	color:#0284c7;
}

/* Card filter animation states */
.lhb-program-card.filter-hidden {
	opacity:0 !important;
	transform:scale(0.92) translateY(16px) !important;
	pointer-events:none !important;
	position:absolute !important;
	visibility:hidden !important;
}
.lhb-program-card.filter-visible {
	opacity:1 !important;
	transform:scale(1) translateY(0) !important;
	pointer-events:auto !important;
	position:relative !important;
	visibility:visible !important;
}
.lhb-programs-grid.filtering {
	transition:height 0.4s cubic-bezier(0.16,1,0.3,1);
}

/* No results message */
.lhb-no-results {
	grid-column:1/-1;
	text-align:center;
	padding:60px 24px;
	color:#64748b;
	font-size:1rem;
	display:none;
}
.lhb-no-results.visible { display:block; }
.lhb-no-results .dashicons {
	font-size:48px;
	width:48px;
	height:48px;
	color:#334155;
	margin-bottom:16px;
	display:block;
}
.lhb-no-results { color:#94a3b8; }
.lhb-no-results .dashicons { color:#cbd5e1; }

/* BLINDAJE E INMUNIDAD CONTRA ELEMENTOR Y TEMAS ACTIVOS (GRILLA BASE UNIVERSAL) */
.lhb-programs-section * { box-sizing:border-box !important; }
.lhb-programs-grid { display:grid !important; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)) !important; gap:26px !important; max-width:1240px !important; margin:0 auto !important; width:100% !important; }

/* Card cascade with refined easing */
.program-card-item {
	opacity:1;
	transform:translate3d(0,0,0);
	transition:opacity 0.55s cubic-bezier(0.25,0.8,0.3,1), transform 0.55s cubic-bezier(0.25,0.8,0.3,1), box-shadow 0.35s ease, border-color 0.35s ease;
	will-change:opacity,transform;
}
.program-card-item.is-visible { opacity:1 !important; transform:translate3d(0,0,0) !important; }

/* BASE DE TARJETA UNIVERSAL */
.lhb-program-card { position:relative !important; border-radius:20px !important; overflow:hidden !important; display:flex !important; flex-direction:column !important; cursor:pointer; background:#fff !important; border:1px solid #cbd5e1 !important; box-shadow:0 6px 24px rgba(15,23,42,0.08) !important; color:#0f172a !important; transition:all 0.35s cubic-bezier(0.22,1,0.36,1); width:100% !important; min-width:0 !important; }

/* ESTILO 1: Glass Cards */
.lhb-programs-grid.style_grid_cards { grid-template-columns:repeat(auto-fit,minmax(320px,1fr)) !important; }
.style_grid_cards .lhb-program-card:hover { transform:translateY(-10px) !important; box-shadow:0 32px 64px rgba(0,0,0,0.45) !important; border-color:rgba(56,189,248,0.5) !important; }
.style_grid_cards .lhb-program-card:hover { box-shadow:0 24px 48px rgba(15,23,42,0.16) !important; }

/* ESTILO 2: Magazine Editorial */

/* ESTILO 3: Dark Neon Glow */

/* Componentes comunes blindados de las tarjetas */
.lhb-program-img-wrapper { position:relative !important; height:220px !important; overflow:hidden !important; flex-shrink:0 !important; width:100% !important; display:block !important; }
.lhb-program-img { width:100% !important; height:100% !important; object-fit:cover !important; display:block !important; position:absolute !important; inset:0 !important; transition:transform 0.6s cubic-bezier(0.22,1,0.36,1) !important; max-width:none !important; margin:0 !important; }
.lhb-program-card:hover .lhb-program-img { transform:scale(1.09) !important; }
/* ---- Globo de promoción para egresados (meta porcentaje_promo_alumni) ---- */
.lhb-promo-globe { position:absolute !important; top:12px !important; right:12px !important; z-index:16 !important; display:flex !important; flex-direction:column !important; align-items:center !important; justify-content:center !important; width:66px !important; height:66px !important; border-radius:50% !important; background:linear-gradient(135deg,#10b981 0%,#059669 100%) !important; color:#fff !important; box-shadow:0 6px 18px rgba(5,150,105,0.45) !important; border:2px solid rgba(255,255,255,0.35) !important; text-align:center !important; line-height:1.05 !important; padding:0 !important; margin:0 !important; }
.lhb-promo-globe-num { font-family:'Outfit',sans-serif !important; font-size:1.06rem !important; font-weight:800 !important; letter-spacing:-0.4px !important; }
.lhb-promo-globe-label { font-size:0.47rem !important; font-weight:700 !important; text-transform:uppercase !important; letter-spacing:0.2px !important; opacity:0.95 !important; white-space:nowrap !important; max-width:58px !important; overflow:hidden !important; text-overflow:ellipsis !important; }
/* En las tarjetas de Magíster la esquina superior izquierda ya la ocupa su insignia. */
.lhb-magister-premium-card .lhb-promo-globe { top:12px !important; right:12px !important; }

/* ---- Bloque de promoción dentro del modal ---- */

.lhb-pm-promo { display:flex; align-items:center; gap:16px; background:linear-gradient(135deg, #d1fae5 0%, #ecfdf5 100%); border:1px solid rgba(5,150,105,0.4); border-radius:14px; padding:16px 20px; margin-bottom:22px; }
.lhb-pm-promo-globe { flex-shrink:0; display:flex; align-items:center; justify-content:center; width:62px; height:62px; border-radius:50%; background:linear-gradient(135deg,#10b981,#059669); color:#fff; font-family:'Outfit',sans-serif; font-size:1.1rem; font-weight:800; box-shadow:0 4px 12px rgba(5,150,105,0.4); }
.lhb-pm-promo-text { display:flex; flex-direction:column; gap:3px; font-size:0.88rem; line-height:1.45; color:#065f46; }
.lhb-pm-promo-text strong { font-size:0.8rem; text-transform:uppercase; letter-spacing:0.8px; color:#047857; font-weight:700; }

.lhb-hp-field { position:absolute !important; left:-9999px !important; width:1px !important; height:1px !important; overflow:hidden !important; }

.lhb-program-img--placeholder { background:linear-gradient(135deg,#e2e8f0 0%,#cbd5e1 100%) !important; }
.lhb-pm-cover--placeholder { background:linear-gradient(135deg,#e2e8f0 0%,#cbd5e1 100%) !important; }

/* Velo sobre la foto: no es "modo oscuro", da legibilidad a la insignia de fecha. */
.lhb-program-img-wrapper::after { content:'' !important; position:absolute !important; inset:0 !important; background:linear-gradient(to top,rgba(15,23,42,0.65) 0%,transparent 60%) !important; pointer-events:none !important; z-index:5 !important; }

.lhb-program-badge { position:absolute !important; bottom:12px !important; left:14px !important; background:rgba(15,23,42,0.88) !important; backdrop-filter:blur(10px); color:#fff !important; padding:6px 14px !important; border-radius:999px !important; font-size:0.77rem !important; font-weight:600 !important; border:1px solid rgba(255,255,255,0.2) !important; z-index:15 !important; display:inline-flex !important; align-items:center !important; gap:6px !important; white-space:nowrap !important; max-width:90% !important; overflow:hidden !important; text-overflow:ellipsis !important; line-height:1.2 !important; height:auto !important; margin:0 !important; }
.lhb-program-badge .dashicons { font-size:14px !important; line-height:1 !important; color:#f59e0b !important; width:14px !important; height:14px !important; flex-shrink:0 !important; display:inline-block !important; position:relative !important; vertical-align:middle !important; }

.lhb-program-body { padding:24px !important; display:flex !important; flex-direction:column !important; flex:1 1 auto !important; position:relative !important; z-index:10 !important; width:100% !important; }
.lhb-program-meta-top { display:flex !important; justify-content:space-between !important; align-items:center !important; margin-bottom:10px !important; gap:8px !important; flex-wrap:wrap !important; }
.lhb-program-category { font-size:0.7rem !important; text-transform:uppercase !important; letter-spacing:1.3px !important; font-weight:700 !important; color:#38bdf8 !important; flex-shrink:0 !important; margin:0 !important; }
.lhb-program-category { color:#0284c7 !important; }
.lhb-program-mode { font-size:0.68rem !important; background:rgba(56,189,248,0.12) !important; color:#7dd3fc !important; padding:3px 10px !important; border-radius:999px !important; font-weight:600 !important; border:1px solid rgba(56,189,248,0.25) !important; white-space:nowrap !important; margin:0 !important; }
.lhb-program-mode { background:rgba(2,132,199,0.1) !important; color:#0369a1 !important; border-color:rgba(2,132,199,0.25) !important; }

.lhb-program-title-h3 { font-family:'Outfit',sans-serif !important; font-size:1.15rem !important; font-weight:700 !important; margin:0 0 10px !important; line-height:1.4 !important; letter-spacing:-0.01em !important; }
.lhb-program-title-h3 { color:#0f172a !important; }

.lhb-program-desc { font-size:0.88rem !important; line-height:1.68 !important; margin:0 0 16px !important; flex:1 !important; }
.lhb-program-desc { color:#475569 !important; }

.lhb-program-target { background:rgba(245,158,11,0.06) !important; border-left:3px solid #f59e0b !important; padding:10px 14px !important; border-radius:0 8px 8px 0 !important; margin-bottom:18px !important; font-size:0.82rem !important; line-height:1.55 !important; }
.lhb-program-target { background:#fef9ec !important; border-left-color:#d97706 !important; color:#334155 !important; }
.lhb-target-label { display:inline-flex !important; align-items:center !important; gap:4px !important; font-weight:700 !important; color:#f59e0b !important; margin-right:4px !important; }
.lhb-target-label { color:#b45309 !important; }
.lhb-target-label .dashicons { font-size:14px !important; width:14px !important; height:14px !important; flex-shrink:0 !important; display:inline-block !important; }
.lhb-target-text { color:#78350f !important; }

.lhb-program-footer { border-top:1px solid rgba(255,255,255,0.08) !important; padding-top:16px !important; margin-top:auto !important; display:flex !important; justify-content:flex-end !important; }
.lhb-program-footer { border-top-color:#cbd5e1 !important; }
.lhb-program-cta { font-size:0.88rem !important; font-weight:700 !important; color:#38bdf8 !important; text-decoration:none !important; display:inline-flex !important; align-items:center !important; gap:5px !important; transition:color 0.25s ease,gap 0.25s ease !important; }
.lhb-program-cta { color:#0284c7 !important; }
.lhb-program-card:hover .lhb-program-cta { color:#f59e0b !important; gap:10px !important; }
.lhb-program-card:hover .lhb-program-cta { color:#b45309 !important; }

@media (max-width:1100px) {
	.lhb-programs-grid.style_grid_cards { grid-template-columns:repeat(2,1fr) !important; }
}
@media (max-width:740px) {
	.lhb-programs-section { padding:60px 16px !important; }
	.lhb-programs-grid { grid-template-columns:1fr !important; }
	.lhb-programs-grid.style_grid_cards { grid-template-columns:1fr !important; }
	.lhb-programs-title { font-size:1.85rem !important; }
	.lhb-faculty-filter { gap:8px; }
	.lhb-faculty-tab { padding:8px 16px; font-size:0.82rem; }
}

/* =========================================================================
   MODAL "VER PROGRAMA" — Detalle del programa + Formulario JetForms
   ========================================================================= */
body.lhb-pm-lock { overflow: hidden !important; position: fixed !important; width: 100% !important; }

/* El CTA "Ver Programa" ahora es un <button>: neutralizar estilos nativos */
button.lhb-program-cta {
	background: none !important; border: none !important; padding: 0 !important;
	cursor: pointer !important; font-family: inherit !important; appearance: none; -webkit-appearance: none;
}

.lhb-pm-overlay {
	position: fixed !important; inset: 0 !important; top: 0 !important; left: 0 !important;
	right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important;
	z-index: 2147483000 !important; margin: 0 !important;
	display: none; align-items: flex-start; justify-content: center;
	padding: 40px 20px;
	background: rgba(15, 23, 42, 0.55);
	-webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
	overflow-y: auto;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 16px; line-height: 1.5;
}
.lhb-pm-overlay, .lhb-pm-overlay * { box-sizing: border-box; }
.lhb-pm-overlay.is-open { display: flex !important; animation: cla-pm-fade 0.3s ease both; }
@keyframes cla-pm-fade { from { opacity: 0; } to { opacity: 1; } }

.lhb-pm-panel {
	position: relative;
	width: 100%; max-width: 1040px;
	background: #ffffff;
	border: 1px solid #e2e8f0;
	border-radius: 22px;
	box-shadow: 0 40px 90px rgba(15, 23, 42, 0.25);
	overflow: hidden;
	animation: cla-pm-rise 0.4s cubic-bezier(0.16, 1, 0.3, 1) both;
	margin: auto;
}
@keyframes cla-pm-rise { from { opacity: 0; transform: translateY(30px) scale(0.98); } to { opacity: 1; transform: none; } }

.lhb-pm-close {
	position: absolute; top: 14px; right: 14px; z-index: 10;
	width: 40px; height: 40px; border-radius: 50%;
	display: inline-flex; align-items: center; justify-content: center;
	font-size: 26px; line-height: 1; color: #334155;
	background: rgba(255, 255, 255, 0.92); border: 1px solid #cbd5e1;
	cursor: pointer; transition: all 0.25s ease; backdrop-filter: blur(6px);
}
.lhb-pm-close:hover { background: rgba(239, 68, 68, 0.9); border-color: rgba(239, 68, 68, 0.9); color: #fff; transform: rotate(90deg); }

.lhb-pm-layout { display: grid !important; grid-template-columns: 1.05fr 0.95fr; max-height: 90vh; }

/* ---- Columna Detalle ---- */
.lhb-pm-details { overflow-y: auto; max-height: 90vh; }
.lhb-pm-details::-webkit-scrollbar, .lhb-pm-form::-webkit-scrollbar { width: 8px; }
.lhb-pm-details::-webkit-scrollbar-thumb, .lhb-pm-form::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }

.lhb-pm-cover {
	position: relative; height: 190px;
	background-size: cover; background-position: center;
}
.lhb-pm-cover::after {
	content: ''; position: absolute; inset: 0;
	background: linear-gradient(to top, #ffffff 2%, rgba(255, 255, 255, 0.35) 55%, transparent 100%);
}
.lhb-pm-cover-cat {
	position: absolute; bottom: 14px; left: 20px; z-index: 2;
	font-size: 0.72rem; text-transform: uppercase; letter-spacing: 1.2px; font-weight: 700;
	color: #0369a1; background: rgba(255, 255, 255, 0.94); padding: 6px 14px; border-radius: 999px;
	border: 1px solid rgba(2, 132, 199, 0.3);
}
.lhb-pm-details-body { padding: 24px 28px 30px; }
.lhb-pm-title {
	font-family: 'Outfit', sans-serif; font-size: 1.6rem !important; font-weight: 800; line-height: 1.2 !important;
	letter-spacing: -0.02em; margin: 0 0 18px !important; padding: 0 !important; text-transform: none !important;
	color: #0f172a; -webkit-text-fill-color: #0f172a;
}
.lhb-pm-facts { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; }
.lhb-pm-fact {
	display: inline-flex; align-items: center; gap: 7px;
	font-size: 0.82rem; color: #475569;
	background: #f1f5f9; border: 1px solid #e2e8f0;
	padding: 8px 13px; border-radius: 10px;
}
.lhb-pm-fact strong { color: #0f172a; font-weight: 700; }
.lhb-pm-fact .dashicons { font-size: 16px; width: 16px; height: 16px; color: #0284c7; flex-shrink: 0; }

.lhb-pm-price {
	display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
	background: linear-gradient(135deg, #fef3c7 0%, #fef9ec 100%);
	border: 1px solid rgba(217, 119, 6, 0.35); border-radius: 14px;
	padding: 16px 20px; margin-bottom: 22px;
}
.lhb-pm-price-label { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.8px; font-weight: 600; color: #b45309; }
.lhb-pm-price-value { font-family: 'Outfit', sans-serif; font-size: 1.5rem; font-weight: 800; color: #0f172a; }

/* Con descuento: el original tachado y discreto, el rebajado grande y en verde. */
.lhb-pm-price-values { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.lhb-pm-price-old {
	font-family: 'Outfit', sans-serif; font-size: 1.02rem; font-weight: 600;
	/* Sobre el degradado verde del recuadro con descuento, #64748b no llega a AA. */
	color: #475569; text-decoration: line-through; text-decoration-thickness: 2px;
	text-decoration-color: rgba(71,85,105,0.85);
}
.lhb-pm-price.has-discount .lhb-pm-price-value { font-size: 1.85rem; color: #047857; }
.lhb-pm-price-off {
	font-size: 0.78rem; font-weight: 800; letter-spacing: 0.4px;
	color: #ffffff; background: linear-gradient(135deg, #10b981, #059669);
	padding: 4px 10px; border-radius: 999px; white-space: nowrap;
	box-shadow: 0 2px 8px rgba(5,150,105,0.3);
}
.lhb-pm-price.has-discount {
	background: linear-gradient(135deg, #d1fae5 0%, #ecfdf5 100%);
	border-color: rgba(5,150,105,0.35);
}
.lhb-pm-price.has-discount .lhb-pm-price-label { color: #047857; }

/* Promoción terminada: se retira el precio rebajado y el original vuelve a ser
   el precio vigente, sin tachar.
   Solo aplica a la promoción vencida: con la campaña aún sin empezar el descuento
   SÍ se muestra, porque es lo que se está comunicando. */
body.cla-promo-expired .lhb-pm-price-value,
body.cla-promo-expired .lhb-pm-price-off { display: none !important; }
body.cla-promo-expired .lhb-pm-price-old {
	text-decoration: none !important; font-size: 1.5rem !important;
	font-weight: 800 !important; color: #0f172a !important;
}
body.cla-promo-expired .lhb-pm-price.has-discount {
	background: linear-gradient(135deg, #fef3c7 0%, #fef9ec 100%) !important;
	border-color: rgba(217,119,6,0.35) !important;
}
body.cla-promo-expired .lhb-pm-price.has-discount .lhb-pm-price-label { color: #b45309 !important; }

.lhb-pm-block { margin-bottom: 20px; }
.lhb-pm-brochure-wrap { margin-bottom: 22px; }
.lhb-pm-brochure-wrap + .lhb-pm-block { margin-top: 0; }
.lhb-pm-block-title {
	display: flex; align-items: center; gap: 8px;
	font-family: 'Outfit', sans-serif; font-size: 0.95rem !important; font-weight: 700; color: #0f172a;
	margin: 0 0 8px !important; padding: 0 !important; line-height: 1.3 !important; text-transform: none !important;
	clear: both;
}
.lhb-pm-block-title .dashicons { font-size: 18px; width: 18px; height: 18px; color: #d97706; }
.lhb-pm-block-text, .lhb-pm-block-text p { font-size: 0.9rem; line-height: 1.7; color: #475569; margin: 0 0 8px; }
.lhb-pm-block-text :last-child { margin-bottom: 0; }

.lhb-pm-brochure {
	display: flex; align-items: center; justify-content: center; gap: 10px;
	width: 100%; box-sizing: border-box;
	background: linear-gradient(135deg, #fef3c7 0%, #fef9ec 100%);
	color: #b45309 !important; text-decoration: none !important;
	border: 1px solid rgba(217, 119, 6, 0.55); border-radius: 14px;
	padding: 14px 20px;
	font-family: 'Outfit', sans-serif; font-size: 0.97rem; font-weight: 700; letter-spacing: 0.3px;
	box-shadow: 0 2px 8px rgba(217, 119, 6, 0.12);
	transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.lhb-pm-brochure:hover {
	background: linear-gradient(135deg, #fde68a 0%, #fef3c7 100%);
	border-color: rgba(217, 119, 6, 0.9);
	box-shadow: 0 6px 16px rgba(217, 119, 6, 0.25);
	transform: translateY(-1px);
	color: #92400e !important;
}
.lhb-pm-brochure .dashicons { font-size: 20px; width: 20px; height: 20px; flex-shrink: 0; }

/* --- Magíster Premium Card --- */
.lhb-magister-premium-card {
	border: 1px solid rgba(245, 158, 11, 0.4) !important;
	box-shadow: 0 10px 30px rgba(245, 158, 11, 0.15), inset 0 0 20px rgba(245, 158, 11, 0.05) !important;
	position: relative;
}
.lhb-magister-premium-card::before {
	content: '';
	position: absolute; top: 0; left: 0; right: 0; height: 4px;
	background: linear-gradient(90deg, #f59e0b, #fbbf24);
	z-index: 2;
}
.lhb-magister-premium-badge {
	position: absolute; top: 12px; left: 12px;
	background: linear-gradient(135deg, #f59e0b, #d97706);
	color: #fff; padding: 5px 14px; border-radius: 25px;
	font-size: 0.75rem; font-weight: 700; text-transform: uppercase;
	display: flex; align-items: center; gap: 6px;
	box-shadow: 0 4px 10px rgba(0,0,0,0.4); z-index: 5; letter-spacing: 0.5px;
}
.lhb-magister-premium-badge .dashicons { font-size: 14px; width: 14px; height: 14px; }
.lhb-program-card.lhb-magister-premium-card .lhb-program-cta { background: #f59e0b !important; color: #fff !important; border-color: #f59e0b !important; }
.lhb-program-card.lhb-magister-premium-card .lhb-program-cta:hover { background: #d97706 !important; border-color: #d97706 !important; box-shadow: 0 5px 15px rgba(245, 158, 11, 0.4) !important; }

/* ---- Columna Formulario ---- */
.lhb-pm-form {
	background: #f8fafc;
	border-left: 1px solid #e2e8f0;
	padding: 30px 28px; overflow-y: auto; max-height: 90vh;
}
.lhb-pm-form-title { font-family: 'Outfit', sans-serif; font-size: 1.3rem !important; font-weight: 800; color: #0f172a; margin: 0 0 6px !important; padding: 0 !important; line-height: 1.2 !important; text-transform: none !important; }
.lhb-pm-form-sub { font-size: 0.86rem; line-height: 1.6; color: #64748b; margin: 0 0 20px; }
.lhb-pm-form-note {
	font-size: 0.85rem; color: #b91c1c; background: #fef2f2;
	border: 1px dashed rgba(220, 38, 38, 0.4); border-radius: 10px; padding: 14px 16px;
}

/* Estilizado de los campos del formulario JetFormBuilder embebido */
.lhb-pm-form .jet-form-builder__field-wrap,
.lhb-pm-form .jet-form-builder__row { margin-bottom: 14px; }
.lhb-pm-form label,
.lhb-pm-form .jet-form-builder__label {
	/* Sobre #f8fafc, el #cbd5e1 heredado del modo oscuro daba 1.42:1: ilegible. */
	display: block; font-size: 0.82rem; font-weight: 600; color: #475569; margin-bottom: 6px;
}
.lhb-pm-form input[type="text"],
.lhb-pm-form input[type="email"],
.lhb-pm-form input[type="tel"],
.lhb-pm-form input[type="number"],
.lhb-pm-form input[type="date"],
.lhb-pm-form select,
.lhb-pm-form textarea {
	width: 100%; box-sizing: border-box;
	background: #ffffff; color: #0f172a;
	border: 1px solid #cbd5e1; border-radius: 10px;
	padding: 12px 14px; font-size: 0.92rem; font-family: inherit;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.lhb-pm-form input::placeholder, .lhb-pm-form textarea::placeholder { color: #64748b; }
.lhb-pm-form input:focus, .lhb-pm-form select:focus, .lhb-pm-form textarea:focus {
	outline: none; border-color: #0284c7; box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.18);
}
.lhb-pm-form select option { background: #ffffff; color: #0f172a; }
.lhb-pm-form .jet-form-builder__field-wrap--type-checkbox label,
.lhb-pm-form .checkbox-wrap, .lhb-pm-form .jet-form-builder-row__field label {
	display: flex; align-items: flex-start; gap: 8px; font-weight: 500; font-size: 0.8rem; color: #475569;
}
.lhb-pm-form input[type="checkbox"], .lhb-pm-form input[type="radio"] {
	width: 18px; height: 18px; accent-color: #0284c7; margin-top: 1px; flex-shrink: 0;
}
.lhb-pm-form a { color: #0284c7; }
.lhb-pm-form .jet-form-builder__action-button,
.lhb-pm-form button[type="submit"],
.lhb-pm-form input[type="submit"] {
	width: 100%; margin-top: 6px;
	background: #f59e0b; color: #fff; border: 1px solid #f59e0b; border-radius: 50px;
	padding: 14px 28px; font-size: 1.02rem; font-weight: 700; cursor: pointer;
	box-shadow: 0 12px 25px -5px rgba(245, 158, 11, 0.45);
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.lhb-pm-form .jet-form-builder__action-button:hover,
.lhb-pm-form button[type="submit"]:hover,
.lhb-pm-form input[type="submit"]:hover { transform: translateY(-2px); box-shadow: 0 16px 32px -6px rgba(245, 158, 11, 0.6); }

/* Formulario nativo "Solicitar Información" */
.lhb-lead-field { margin-bottom: 13px; }
.lhb-req { color: #f59e0b; }
.lhb-pm-form label.lhb-lead-check {
	display: flex; align-items: flex-start; gap: 9px;
	font-size: 0.8rem; font-weight: 500; color: #475569; cursor: pointer;
	margin: 4px 0 18px;
}
.lhb-lead-check a { color: #0284c7; }
.lhb-lead-submit.is-loading { opacity: 0.65; cursor: wait; transform: none !important; }
.lhb-lead-msg { margin-top: 12px; font-size: 0.85rem; line-height: 1.5; }
.lhb-lead-msg.is-error { color: #b91c1c; }
.lhb-lead-success { text-align: center; padding: 24px 12px; }
.lhb-lead-success:focus { outline: none !important; }
.lhb-lead-success .dashicons { font-size: 54px; width: 54px; height: 54px; color: #059669; margin-bottom: 12px; }
.lhb-lead-success p { color: #0f172a; font-size: 0.95rem; line-height: 1.6; margin: 0; }

/* =========================================================================
   FOOTER PUCV
   ========================================================================= */
.lhb-site-footer {
	background: #2e5a98; color: #ffffff;
	padding: 44px 24px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
.lhb-footer-inner {
	max-width: 1140px; margin: 0 auto;
	display: flex; align-items: center; justify-content: center; gap: 60px; flex-wrap: wrap;
}
.lhb-footer-brand { flex: 0 0 auto; display: flex; align-items: center; }
.lhb-footer-logo { max-height: 96px; width: auto; display: block; }
.lhb-footer-brand-text {
	display: flex; flex-direction: column; line-height: 1.12;
	font-family: 'Outfit', 'Times New Roman', serif; letter-spacing: 1.5px;
	padding-left: 20px; border-left: 2px solid rgba(255, 255, 255, 0.4);
}
.lhb-footer-brand-text strong { font-size: 1.15rem; font-weight: 700; }
.lhb-footer-brand-text strong span { font-weight: 400; font-size: 0.8rem; }
.lhb-footer-info { flex: 0 1 480px; }
.lhb-footer-info p {
	margin: 0 0 16px; font-size: 1rem; line-height: 1.4;
	display: flex; align-items: center; gap: 12px; color: #eef2f8;
}
.lhb-footer-info p:last-child { margin-bottom: 0; }
.lhb-footer-info .dashicons { font-size: 19px; width: 19px; height: 19px; opacity: 0.75; flex-shrink: 0; }
.lhb-footer-org { font-weight: 600 !important; font-size: 1.05rem !important; }
.lhb-footer-info a { color: #ffffff; text-decoration: none; }
.lhb-footer-info a:hover { text-decoration: underline; }
@media (max-width: 720px) {
	.lhb-footer-inner { flex-direction: column; align-items: flex-start; gap: 28px; }
	.lhb-footer-info { flex-basis: auto; }
	.lhb-site-footer { padding: 36px 20px; }
}

/* Responsive */
@media (max-width: 860px) {
	.lhb-pm-layout { grid-template-columns: 1fr; max-height: none; }
	.lhb-pm-panel { max-height: none; }
	.lhb-pm-details, .lhb-pm-form { max-height: none; overflow-y: visible; }
	.lhb-pm-form { border-left: none; border-top: 1px solid rgba(255, 255, 255, 0.07); }
	.lhb-pm-overlay { padding: 16px; }
}
@media (max-width: 480px) {
	.lhb-pm-title { font-size: 1.35rem; }
	.lhb-pm-details-body, .lhb-pm-form { padding: 20px; }
	.lhb-pm-price { flex-direction: column; align-items: flex-start; gap: 6px; }
	.lhb-pm-price-values { justify-content: flex-start; }
}

@media (max-width: 600px) {
	.lhb-promo-globe { width:56px !important; height:56px !important; top:10px !important; right:10px !important; }
	.lhb-pm-promo { flex-direction:column; align-items:flex-start; gap:12px; }
	.lhb-promo-globe-num { font-size:0.92rem !important; }
	.lhb-promo-globe-label { font-size:0.42rem !important; letter-spacing:0.1px !important; max-width:48px !important; }
}

/* =========================================================================
   OPTIMIZACIÓN MÓVIL
   Bloque consolidado al final para que gane a las reglas anteriores.
   ========================================================================= */

/* Nada debe provocar scroll horizontal en móvil. */
@media (max-width: 768px) {
	.lhb-frontend-hero, .lhb-programs-section, .lhb-site-footer { max-width: 100vw !important; overflow-x: hidden !important; }
	.lhb-frontend-hero img, .lhb-programs-section img { max-width: 100% !important; height: auto; }
}

@media (max-width: 768px) {
	/* Altura del hero: dvh evita el salto al aparecer/ocultarse la barra del navegador.
	   La regla vh queda como respaldo para navegadores sin soporte de dvh. */
	.lhb-frontend-hero { min-height: 78vh; }
	.lhb-frontend-hero { min-height: 78dvh; }

	/* Título fluido entre móvil pequeño y tablet, en vez de dos saltos bruscos. */
	.lhb-hero-title { font-size: clamp(1.95rem, 7.6vw, 2.6rem) !important; }
	.lhb-hero-subtitle { font-size: 1.05rem; line-height: 1.6; margin-bottom: 28px; }
	.lhb-frontend-overtitle { font-size: 0.82rem; letter-spacing: 0.9px; margin-bottom: 14px; }

	/* Con logos superpuestos hace falta más aire arriba para que no se solapen. */
	.lhb-frontend-hero.hero-has-logos { padding-top: 108px; }

	/* Área táctil mínima cómoda en los CTA del hero. */
	.lhb-btn-dual-1, .lhb-btn-dual-2 { min-height: 48px; padding: 14px 26px; font-size: 1rem; }

	/* Tarjetas: menos separación para aprovechar el ancho. */
	.lhb-programs-grid { gap: 18px !important; }
	.lhb-program-img-wrapper { height: 190px !important; }
	.lhb-programs-subtitle { font-size: 0.95rem !important; }

	/* El CTA de la tarjeta debe ser tocable, no solo un texto. */
	.lhb-program-cta { min-height: 44px !important; padding: 10px 4px !important; align-items: center !important; }

	/* Filtro de facultades: una fila deslizable en lugar de varias filas apiladas. */
	.lhb-faculty-filter {
		flex-wrap: nowrap !important;
		justify-content: flex-start !important;
		overflow-x: auto !important;
		-webkit-overflow-scrolling: touch;
		scroll-snap-type: x proximity;
		padding-bottom: 6px;
		scrollbar-width: none;
	}
	.lhb-faculty-filter::-webkit-scrollbar { display: none; }
	.lhb-faculty-tab { flex: 0 0 auto !important; scroll-snap-align: start; min-height: 40px; }

	/* Modal a pantalla casi completa. */
	.lhb-pm-overlay { padding: 10px !important; }
	.lhb-pm-panel { border-radius: 16px; }
	.lhb-pm-close { width: 44px !important; height: 44px !important; top: 10px; right: 10px; }

	/* iOS hace zoom automático al enfocar un campo con letra menor de 16px.
	   Este es el ajuste que más se nota al rellenar el formulario en el móvil. */
	.lhb-pm-form input[type="text"],
	.lhb-pm-form input[type="email"],
	.lhb-pm-form input[type="tel"],
	.lhb-pm-form input[type="number"],
	.lhb-pm-form input[type="date"],
	.lhb-pm-form select,
	.lhb-pm-form textarea { font-size: 16px !important; padding: 13px 14px !important; }
	.lhb-pm-form button[type="submit"] { min-height: 50px; }
	.lhb-pm-form label.lhb-lead-check { font-size: 0.85rem; }
	.lhb-pm-form input[type="checkbox"] { width: 22px !important; height: 22px !important; }
}

@media (max-width: 480px) {
	.lhb-frontend-hero { padding: 54px 18px; }
	.lhb-frontend-hero.hero-has-logos { padding-top: 96px; }
	.lhb-hero-logos { padding: 0 14px; }
	.lhb-hero-logos img { max-height: 34px; max-width: 104px; }

	.lhb-programs-section { padding: 46px 14px !important; }
	.lhb-programs-title { font-size: 1.6rem !important; }
	.lhb-program-img-wrapper { height: 170px !important; }
	.lhb-program-body { padding: 18px !important; }

	/* La portada del modal ocupaba demasiada pantalla antes del contenido útil. */
	.lhb-pm-cover { height: 150px; }
	.lhb-pm-facts { gap: 8px; }
	.lhb-site-footer { padding: 30px 18px; }
}

/* =========================================================================
   CUENTA REGRESIVA DE PROMOCIÓN Y ESTADO "FINALIZADA"
   ========================================================================= */
.lhb-countdown {
	display:inline-flex; flex-direction:column; align-items:center; gap:10px;
	margin:0 0 30px; padding:18px 26px;
	background:rgba(15,23,42,0.55); border:1px solid rgba(245,158,11,0.45);
	border-radius:16px; backdrop-filter:blur(10px);
	box-shadow:0 8px 28px rgba(0,0,0,0.25);
}
.lhb-countdown-label {
	font-size:0.78rem; font-weight:700; text-transform:uppercase; letter-spacing:1.4px;
	color:#fcd34d;
}
.lhb-countdown-units { display:flex; align-items:flex-start; gap:8px; }
.lhb-countdown-unit { display:flex; flex-direction:column; align-items:center; min-width:56px; }
.lhb-countdown-unit b {
	font-family:'Outfit',sans-serif; font-size:2.1rem; font-weight:800; line-height:1;
	color:#ffffff; font-variant-numeric:tabular-nums;
}
.lhb-countdown-unit i {
	font-style:normal; font-size:0.66rem; font-weight:600; text-transform:uppercase;
	letter-spacing:0.8px; color:#cbd5e1; margin-top:6px;
}
.lhb-countdown-sep {
	font-family:'Outfit',sans-serif; font-size:1.7rem; font-weight:700; line-height:1;
	color:rgba(245,158,11,0.7); margin-top:2px;
}

/* Promoción terminada: se oculta el marcador y queda solo el aviso. */
.lhb-countdown.is-expired { border-color:rgba(148,163,184,0.5); background:rgba(15,23,42,0.5); }
.lhb-countdown.is-expired .lhb-countdown-label { color:#e2e8f0; }
.lhb-countdown.is-expired .lhb-countdown-units { display:none; }

/* La landing entera en gris cuando la promoción expira.
   El filtro se aplica a cada bloque por separado, nunca a <body>: un filter en un
   ancestro rompe el position:fixed de los modales. */
body.cla-promo-expired .lhb-frontend-hero,
body.cla-promo-expired .lhb-landing-body-container,
body.cla-promo-expired .lhb-programs-section,
body.cla-promo-expired .lhb-site-footer,
body.cla-promo-expired .lhb-pm-overlay {
	filter:grayscale(1);
	transition:filter 0.8s ease;
}

/* --- Promoción terminada: ocultar el descuento y cerrar el listado --- */

/* Se ocultan, no se atenúan: dejar "-45%" legible sería anunciar un beneficio
   que ya no se honra, y el modal llegaba a calcular el precio rebajado. */
body.cla-promo-expired .lhb-promo-globe,
body.cla-promo-expired .lhb-pm-promo { display:none !important; }

/* El listado deja de ser interactivo. Es una red de seguridad por si la página
   sigue publicada tras el cierre, así que se refuerza en CSS y en JavaScript. */
body.cla-promo-expired .lhb-program-card { cursor:default !important; }
body.cla-promo-expired .lhb-program-card:hover { transform:none !important; box-shadow:0 6px 24px rgba(15,23,42,0.08) !important; }
body.cla-promo-expired .lhb-open-program-modal[disabled] {
	opacity:0.45 !important; cursor:not-allowed !important; pointer-events:none !important;
}
body.cla-promo-expired .lhb-program-card:hover .lhb-program-cta { color:#0284c7 !important; gap:5px !important; }

@media (max-width: 600px) {
	.lhb-countdown { padding:14px 18px; margin-bottom:24px; width:100%; }
	.lhb-countdown-unit { min-width:44px; }
	.lhb-countdown-unit b { font-size:1.6rem; }
	.lhb-countdown-unit i { font-size:0.58rem; }
	.lhb-countdown-sep { font-size:1.3rem; }
}

/* =========================================================================
   BANNER DE INICIO DE CAMPAÑA
   Se muestra solo con la landing desactivada. Queda fuera del filtro gris a
   propósito: es lo único que debe destacar sobre la página apagada.
   ========================================================================= */
.lhb-campaign-banner {
	display: flex; align-items: center; justify-content: center; gap: 12px;
	width: 100%; box-sizing: border-box;
	min-height: 72px; padding: 20px 24px;
	background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
	color: #ffffff;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	font-size: 1.05rem; font-weight: 600; line-height: 1.4; text-align: center;
	box-shadow: 0 4px 16px rgba(217, 119, 6, 0.4);
	/* Acompaña al visitante durante todo el scroll: es el aviso que explica por
	   qué la página está en gris y sin acciones. */
	position: -webkit-sticky; position: sticky; top: 0;
	z-index: 100;
}
.lhb-campaign-banner .dashicons { font-size: 24px; width: 24px; height: 24px; flex-shrink: 0; }
.lhb-campaign-banner strong { font-weight: 800; }

/* Con el banner fijo arriba, los anclajes deben parar por debajo de él para que
   el título de la sección no quede tapado al pulsar los botones del hero. */
body.cla-landing-inactive .lhb-section-anchor { scroll-margin-top: 76px; }

@media (max-width: 600px) {
	.lhb-campaign-banner { font-size: 0.92rem; min-height: 60px; padding: 15px 16px; gap: 9px; }
	.lhb-campaign-banner .dashicons { font-size: 20px; width: 20px; height: 20px; }
	body.cla-landing-inactive .lhb-section-anchor { scroll-margin-top: 64px; }
}

/* =========================================================================
   MODAL EN PREAPERTURA — Campaña comunicada pero aún sin empezar
   Sustituye al formulario. El programa se consulta con normalidad; lo único
   que no se puede hacer todavía es postular.
   ========================================================================= */
.lhb-pm-soon {
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	text-align: center; gap: 4px; padding: 28px 8px; min-height: 320px;
}
.lhb-pm-soon-icon {
	font-size: 46px !important; width: 46px !important; height: 46px !important;
	color: #d97706; margin-bottom: 10px;
}
.lhb-pm-soon-title {
	font-family: 'Outfit', sans-serif; font-size: 1.25rem !important; font-weight: 800;
	color: #0f172a; margin: 0 0 6px !important; padding: 0 !important; line-height: 1.25 !important;
	text-transform: none !important;
}
.lhb-pm-soon-text {
	font-size: 0.95rem; line-height: 1.6; color: #475569; margin: 0 0 22px; max-width: 34ch;
}
.lhb-pm-soon-text strong { color: #b45309; font-weight: 800; }

.lhb-pm-cal-label {
	font-size: 0.82rem; font-weight: 700; color: #334155;
	text-transform: uppercase; letter-spacing: 0.6px; margin: 0 0 12px;
}
.lhb-pm-cal-buttons {
	display: flex; flex-direction: column; gap: 9px; width: 100%; max-width: 320px;
}
.lhb-pm-cal-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 9px;
	width: 100%; box-sizing: border-box; min-height: 48px; padding: 12px 20px;
	background: #ffffff; color: #0f172a !important;
	border: 1.5px solid #cbd5e1; border-radius: 12px;
	font-family: inherit; font-size: 0.94rem; font-weight: 700;
	text-decoration: none !important; cursor: pointer;
	transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.lhb-pm-cal-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 18px -6px rgba(15,23,42,0.25); }
.lhb-pm-cal-btn:focus-visible { outline: 3px solid rgba(2,132,199,0.5); outline-offset: 2px; }
.lhb-pm-cal-btn .dashicons { font-size: 19px; width: 19px; height: 19px; flex-shrink: 0; }

/* Un acento por marca, suficiente para distinguirlas sin imitar sus logotipos. */
.lhb-pm-cal-btn.is-google  { border-color: #d1d5db; }
.lhb-pm-cal-btn.is-google:hover  { border-color: #ea4335; }
.lhb-pm-cal-btn.is-google .dashicons  { color: #ea4335; }
.lhb-pm-cal-btn.is-apple:hover   { border-color: #0f172a; }
.lhb-pm-cal-btn.is-apple .dashicons   { color: #334155; }
.lhb-pm-cal-btn.is-outlook:hover { border-color: #0078d4; }
.lhb-pm-cal-btn.is-outlook .dashicons { color: #0078d4; }

/* Alternativas para quien no tenga app de calendario asociada a webcal://
   (típicamente usuarios de Google Calendar en escritorio). */
.lhb-pm-soon-alt {
	font-size: 0.78rem; color: #64748b; margin: 14px 0 0; line-height: 1.6; max-width: 34ch;
}
.lhb-pm-soon-alt a { color: #0284c7; text-decoration: underline; }
.lhb-pm-soon-alt a:hover { color: #b45309; }
.lhb-pm-soon-alt span { margin: 0 4px; color: #cbd5e1; }

/* Botón WhatsApp directo al ejecutivo — se pinta con el verde de la marca
   para que no se confunda con los botones de calendario, y separado por una
   línea sutil que actúa como quiebre visual entre "recordar" y "contactar". */
.lhb-pm-wa-label {
	font-size: 0.82rem; font-weight: 700; color: #334155;
	text-transform: uppercase; letter-spacing: 0.6px;
	margin: 22px 0 12px; padding-top: 18px; border-top: 1px solid #e5e7eb; max-width: 320px;
}
.lhb-pm-wa-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 10px;
	width: 100%; max-width: 320px; box-sizing: border-box; min-height: 48px; padding: 12px 20px;
	background: #25D366; color: #ffffff !important;
	border: 1.5px solid #25D366; border-radius: 12px;
	font-family: inherit; font-size: 0.94rem; font-weight: 700;
	text-decoration: none !important; cursor: pointer;
	box-shadow: 0 4px 12px -4px rgba(37,211,102,0.5);
	transition: background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.lhb-pm-wa-btn:hover { background: #1FAE55; border-color: #1FAE55; transform: translateY(-2px); box-shadow: 0 8px 18px -6px rgba(37,211,102,0.55); color: #ffffff !important; }
.lhb-pm-wa-btn:focus-visible { outline: 3px solid rgba(37,211,102,0.5); outline-offset: 2px; }
.lhb-pm-wa-btn svg { flex-shrink: 0; }

@media (max-width: 860px) {
	.lhb-pm-soon { min-height: 0; padding: 26px 8px; }
}
