.elementor-kit-8{--e-global-color-primary:#26529C;--e-global-color-secondary:#173257;--e-global-color-text:#222B3A;--e-global-color-accent:#A2C049;--e-global-color-udscielo:#EAF1FB;--e-global-color-udsgris:#F6F8FB;--e-global-color-udsborde:#E1E8F2;--e-global-color-udstexto2:#5B6880;--e-global-color-udsblanco:#FFFFFF;--e-global-typography-primary-font-family:"Heebo";--e-global-typography-primary-font-weight:700;--e-global-typography-primary-letter-spacing:-0.5px;--e-global-typography-secondary-font-family:"Heebo";--e-global-typography-secondary-font-weight:600;--e-global-typography-text-font-family:"Heebo";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Heebo";--e-global-typography-accent-font-weight:600;color:#222B3A;font-family:"Heebo", Sans-serif;font-size:16px;font-weight:400;line-height:1.65em;}.elementor-kit-8 button,.elementor-kit-8 input[type="button"],.elementor-kit-8 input[type="submit"],.elementor-kit-8 .elementor-button{background-color:#26529C;font-family:"Heebo", Sans-serif;font-size:15px;font-weight:600;color:#FFFFFF;border-radius:8px 8px 8px 8px;padding:14px 26px 14px 26px;}.elementor-kit-8 button:hover,.elementor-kit-8 button:focus,.elementor-kit-8 input[type="button"]:hover,.elementor-kit-8 input[type="button"]:focus,.elementor-kit-8 input[type="submit"]:hover,.elementor-kit-8 input[type="submit"]:focus,.elementor-kit-8 .elementor-button:hover,.elementor-kit-8 .elementor-button:focus{background-color:#173257;color:#FFFFFF;}.elementor-kit-8 e-page-transition{background-color:#FFBC7D;}.elementor-kit-8 h1{font-family:"Heebo", Sans-serif;font-weight:700;line-height:1.06em;letter-spacing:-1px;}.elementor-kit-8 h2{font-family:"Heebo", Sans-serif;font-weight:700;line-height:1.1em;letter-spacing:-0.8px;}.elementor-kit-8 h3{font-family:"Heebo", Sans-serif;font-weight:700;}.elementor-kit-8 h4{font-family:"Heebo", Sans-serif;font-weight:700;}.elementor-kit-8 h5{font-family:"Heebo", Sans-serif;font-weight:600;}.elementor-kit-8 h6{font-family:"Heebo", Sans-serif;font-weight:700;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1180px;}.e-con{--container-max-width:1180px;}.elementor-widget:not(:last-child){--kit-widget-spacing:0px;}.elementor-element{--widgets-spacing:0px 0px;--widgets-spacing-row:0px;--widgets-spacing-column:0px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* ============================================================
   UDS · CSS personalizado del Kit
   ------------------------------------------------------------
   Cómo está organizado
   ------------------------------------------------------------
   1-6    Piezas sueltas: listado de programas, tarjetas con foto,
          vídeo del hero, desplazamiento suave, acordeones, contadores.
   7-13   Cabecera transparente, mega menú de escritorio, hero
          (slider y barra de cristal), WhatsApp, .elementor-kit-8 de oferta,
          FAQ y tarjetas de actualidad.
   14-21  Responsive de base: sin scroll horizontal, cabecera móvil
          y de tablet, márgenes laterales.
   25-28  Limpieza visual y capas: sin sombras, botón de inscripción,
          panel del menú por encima del hero, barra del hero en una
          línea en móvil.
   26,30  Menú móvil: panel a pantalla completa en flujo (26) y su
          movimiento y contraste (30).
   31-38  Ajustes finos de móvil: aplanado selectivo de sangrías (31),
          ritmo vertical y pie (32), aire dentro de bloques con fondo
          (33), botón abierto sobre estado de scroll (34), cabeceras a
          la izquierda (35), sin sombras y actualidad editorial (36),
          separación única cabecera-contenido y rejilla del pie (37),
          caja del Aula Virtual (38).

   Clases que pone el JS (Elementor > Código personalizado, snippet
   "UDS · Cabecera, menú móvil y accesibilidad"). El CSS solo reacciona
   a ellas; si el JS falla, la web sigue siendo legible:
     .uds-plano        contenedor sin fondo ni filete: se le quita la
                       sangría heredada para que todo alinee igual.
     .uds-interior     contenido de un bloque con fondo SIN sangría
                       propia (banda azul de UDS FC, tarjetas):
                       recupera sus 20px. Excluye las secciones de
                       primer nivel, que ya tienen su margen.
     .uds-con-filete   lleva un borde decorativo a la izquierda:
                       separa el texto del filete.
     .uds-cabecera     contenedor que abre con el antetítulo numerado.
     .uds-lista-contacto  lista de contacto del pie (una sola columna).
     .uds-scrolled / .uds-menu-abierto  estados que van en <body>.

   AVISOS antes de tocar esto
   ------------------------------------------------------------
   · Los márgenes laterales en móvil se deciden entre el bloque 31 y
     sus restauraciones (33 y 38): pelean por especificidad y ya han
     dado varios sustos. Comprobar siempre con la web abierta a 375px.
   · Evitar reglas generales del tipo "todos los bloques con fondo":
     se probaron y descuadraron las cabeceras. Para un caso único,
     apuntar a su elementor-element-XXX (así se hizo con el Aula
     Virtual, bloque 38).
   · Al editar este CSS por script, validar que las llaves quedan
     equilibradas: un .elementor-kit-8 partido hace que el navegador fusione
     reglas y aplique estilos donde no toca.
   ============================================================ */

/* ==========================================================================
   UDS · CSS GLOBAL DEL SITIO  (Kit de Elementor)
   Solo lo que Elementor nativo no resuelve. Todo lo demas se controla
   desde los ajustes del propio widget/contenedor.
   ========================================================================== */

/* 1 · LISTADO DE PROGRAMAS (panel derecho del .elementor-kit-8 de oferta) */
.uds-programas{list-style:none;margin:0;padding:0}
.uds-programas li{display:flex;align-items:center;gap:16px;padding:19px 6px;border-top:1px solid #EDF1F7}
.uds-programas li:first-child{border-top:none;padding-top:4px}
.uds-prog-txt{flex:1;display:flex;flex-direction:column;gap:2px;min-width:180px}
.uds-prog-nombre{font-family:"Heebo",sans-serif;font-weight:700;font-size:17px;color:#173257;line-height:1.3}
.uds-prog-rvoe{font-size:12px;color:#98A2B5}
.uds-prog-nivel{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#26529C;
  background:#EAF1FB;padding:5px 11px;border-radius:6px;white-space:nowrap}
.uds-prog-ir{width:42px;height:42px;border:1.5px solid #E1E8F2;border-radius:50%;display:flex;align-items:center;
  justify-content:center;color:#26529C;flex:0 0 auto;transition:background .2s,border-color .2s,color .2s}
.uds-programas li:hover .uds-prog-ir{background:#A2C049;border-color:#A2C049;color:#173257}
/* 2 · TARJETAS CON FOTOGRAFIA (campus, modalidades, noticias) */
.uds-card-hover{transition:transform .35s ease, box-shadow .35s ease}
.uds-card-hover:hover{transform:translateY(-5px)}

/* 3 · VIDEO DEL HERO — encuadre correcto en pantallas anchas y altas */
.elementor-background-video-container video{object-fit:cover}

/* 4 · DESPLAZAMIENTO SUAVE ENTRE SECCIONES */
html{scroll-behavior:smooth}

/* 5 · ACORDEONES — separacion entre items */
.elementor-accordion .elementor-accordion-item{margin-bottom:10px;border-radius:12px;overflow:hidden}

/* 6 · CONTADORES — el signo + hereda el tamano del numero */
.elementor-counter .elementor-counter-number-suffix{font-family:Heebo,sans-serif;color:#A2C049}

/* 7 · CABECERA TRANSPARENTE SOBRE EL HERO
   El header del Theme Builder se superpone al contenido; al hacer scroll
   Elementor añade body.uds-scrolled y pasa a fondo blanco solido. */
.uds-topbar,.uds-navbar{position:relative;z-index:99}
.uds-navbar{transition:background-color .35s ease, box-shadow .35s ease}
body:not(.elementor-editor-active) [data-elementor-type="header"]{margin-bottom:-119px}
@media(max-width:767px){body:not(.elementor-editor-active) [data-elementor-type="header"]{margin-bottom:-72px}}

/* Estado pegado: fondo blanco, logo azul y textos oscuros */
body.uds-scrolled .uds-navbar,
body.uds-scrolled .uds-navbar.e-con{background-color:#fff!important;box-shadow:0 4px 24px rgba(23,50,87,.10)!important}
.uds-logo-dark{display:none}
/* el logo navy sale tanto al bajar como con el menu movil abierto:
   en ambos casos la barra es blanca y el logo blanco no se veria */
body.uds-scrolled .uds-navbar .uds-logo-dark,
body.uds-menu-abierto .uds-navbar .uds-logo-dark{display:block}
body.uds-scrolled .uds-navbar .uds-logo-light,
body.uds-menu-abierto .uds-navbar .uds-logo-light{display:none}
body.uds-scrolled .uds-navbar .uds-navlink a,
body.uds-scrolled .uds-navbar .uds-navlink{color:#173257!important}
body.uds-scrolled .uds-navbar .uds-btn-aula .elementor-button{color:#26529C!important;border-color:#C6D2E4!important}

/* 8 · MEGA MENU Y DESPLEGABLES (apertura al pasar el cursor) */
.uds-menu{position:static}
.uds-nav-item{position:relative}
.uds-navlink{cursor:pointer}
.uds-navlink a,.uds-navlink .elementor-heading-title{color:inherit;transition:color .2s}
.uds-nav-item:hover .uds-navlink,.uds-nav-item:hover .uds-navlink a{color:#A2C049!important}

/* Panel del mega menu: ocupa todo el ancho bajo la cabecera */
.uds-has-mega{position:static}
.uds-mega,.uds-drop{
  opacity:0;visibility:hidden;transform:translateY(10px);
  transition:opacity .25s ease, transform .25s ease, visibility .25s;
  pointer-events:none;
}
.uds-mega{position:absolute;left:0;right:0;top:100%;width:100%;max-width:100vw}
.uds-drop{position:absolute;top:100%;left:-14px;min-width:250px;z-index:120}
.uds-has-mega:hover .uds-mega,.uds-has-drop:hover .uds-drop{
  opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto;
}
/* Puente invisible para que el cursor pueda bajar al panel */
.uds-nav-item::after{content:"";position:absolute;left:0;right:0;top:100%;height:18px}

/* 9 · HERO: SLIDER DE 3 ESCENAS (las escenas rotan con el JS "UDS slider hero"
   guardado en Elementor → Codigo personalizado) */
.uds-hero{position:relative}
.uds-slider{position:relative;z-index:2}
/* Las 3 escenas comparten una sola celda de rejilla: se funden por
   opacidad sin pisarse ni cambiar la altura del hero. Antes la activa
   era 'relative' y las otras 'absolute', y en pleno cambio se veian los
   botones de dos escenas a la vez. */
.e-con-inner:has(> .uds-slide){display:grid}
.uds-slide{grid-area:1 / 1;position:relative;transition:opacity .5s ease, transform .5s ease}
.uds-slide:not(.uds-activa){opacity:0;visibility:hidden;pointer-events:none;transform:translateY(14px)}
.uds-slide.uds-activa{opacity:1;transform:none}
/* la hoja de widget de Elementor se carga DESPUES que este CSS: en empate de
   especificidad gana ella y se comia el relleno, dejando el texto pegado al
   filete verde. Se cualifica con .elementor-widget para ganar el empate. */
.elementor-widget.uds-chips .elementor-icon-list-item{border-left:2px solid #A2C049;padding-left:14px}

/* 10 · HERO: BARRA DE CRISTAL INFERIOR (datos + contador + progreso + flechas) */
.uds-herobar{position:absolute;left:0;right:0;bottom:0;z-index:3;
  background:rgba(9,20,38,.38);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-top:1px solid rgba(255,255,255,.14)}
.uds-hero-track{width:120px;height:2px;background:rgba(255,255,255,.2);border-radius:2px;overflow:hidden}
.uds-hero-fill{height:2px;width:100%;background:#A2C049;transform:translateX(-100%)}
.uds-hero-fill.uds-run{animation:udsHeroRun 6.5s linear forwards}
@keyframes udsHeroRun{to{transform:translateX(0)}}
.uds-hero-prev .elementor-button,.uds-hero-next .elementor-button{
  background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff;transition:.2s;
  width:42px;height:42px;padding:0;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center}
.uds-hero-prev .elementor-button .elementor-button-content-wrapper,
.uds-hero-next .elementor-button .elementor-button-content-wrapper{margin:0}
.uds-hero-prev .elementor-button:hover,.uds-hero-next .elementor-button:hover{
  background:#A2C049;color:#173257;border-color:#A2C049}

/* 11 · BOTON FLOTANTE DE WHATSAPP + guion verde de los antetitulos del hero */
.uds-wa{position:fixed;right:26px;bottom:26px;z-index:400}
.uds-wa .elementor-icon{box-shadow:0 12px 30px rgba(37,211,102,.45);transition:transform .25s;
  width:54px!important;height:54px!important;display:inline-flex!important;
  align-items:center!important;justify-content:center!important;border-radius:50%!important;padding:0!important}
.uds-wa .elementor-icon:hover{transform:scale(1.1)}
.uds-eyebrow .elementor-heading-title{display:inline-flex;align-items:center;gap:12px}
.uds-eyebrow .elementor-heading-title::before{content:"";width:34px;height:2px;background:#A2C049;display:inline-block;flex:0 0 auto}

/* 12 · SELECTOR DE OFERTA EDUCATIVA (modalidad → campus → panel foto+programas).
   El cambio lo hace el snippet "UDS · Selector de oferta" de Codigo personalizado.
   Para AÑADIR un campus: duplicar su panel (clase uds-p-nuevo), añadir una pill
   con clase uds-va-nuevo, y listo. Sin JS, se muestra el primer campus fijo. */
.uds-oculto{display:none!important}
.uds-mod-btn{cursor:pointer;border-bottom:2.5px solid transparent;padding-bottom:14px;margin-bottom:-1px;transition:border-color .2s}
.uds-mod-btn .elementor-heading-title{color:#8A94A8!important;transition:color .2s}
.uds-mod-btn:hover .elementor-heading-title{color:#173257!important}
.uds-mod-btn.uds-activa{border-bottom-color:#A2C049}
.uds-mod-btn.uds-activa .elementor-heading-title{color:#173257!important}
.uds-pill{cursor:pointer;border-radius:10px;padding:9px 18px;transition:background .2s}
.uds-pill .elementor-heading-title{color:#5B6880!important;transition:color .2s}
.uds-pill:hover .elementor-heading-title{color:#173257!important}
.uds-pill.uds-activa{background:#173257}
.uds-pill.uds-activa .elementor-heading-title{color:#fff!important}
.uds-of-panel{display:none!important}
.uds-of-panel.uds-activa{display:flex!important}

/* 13 · FAQ Y TARJETAS DE ACTUALIDAD */
.uds-faq .elementor-tab-content p{margin:0}
.uds-faq .elementor-tab-title{transition:color .2s}
.uds-faq .elementor-accordion-icon,.uds-faq .elementor-accordion-icon svg{color:#A2C049!important;fill:#A2C049!important}
.uds-noticia{transition:transform .3s ease, box-shadow .3s ease}
.uds-noticia:hover{transform:translateY(-5px);box-shadow:0 18px 46px rgba(23,50,87,.13)!important}
.uds-noticia:hover .uds-leermas .elementor-heading-title{text-decoration:underline;text-underline-offset:4px}
.uds-noticia img{transition:transform .5s ease}
.uds-noticia:hover img{transform:scale(1.04)}

/* 14 · RESPONSIVE: UN UNICO MENU (el mega menu) EN TODOS LOS TAMAÑOS */
/* 15 · SIN SCROLL HORIZONTAL EN NINGUN TAMAÑO
   Las listas en linea de Elementor usan margenes negativos que asoman
   fuera de su contenedor en tablet/movil. */
.elementor-icon-list-items{max-width:100%}
.elementor-icon-list--layout-inline .elementor-icon-list-items{margin-left:0!important;margin-right:0!important}
html,body{overflow-x:hidden}

/* 16 · FAQ: ancho de lectura comodo en escritorio */
.elementor-widget.uds-faq{max-width:860px!important;margin-left:auto!important;margin-right:auto!important}

/* 17 · MOVIL: CABECERA EN UNA SOLA FILA Y RITMO VERTICAL
   OJO estructura: .uds-navbar > .e-con-boxed > .e-con-inner > [logo | menu | acciones].
   El bloque de acciones se apilaba en dos lineas y empujaba la cabecera. */
@media(max-width:767px){
  .uds-navbar .e-con-inner{
    flex-wrap:nowrap!important;align-items:center!important;justify-content:space-between!important;
    padding-left:18px!important;padding-right:18px!important;gap:12px!important}
  .uds-navbar .e-con-inner > .e-con{width:auto!important;flex:0 0 auto!important;padding:0!important}
  .uds-navbar .e-con-inner > .e-con:last-child{
    flex-direction:row!important;flex-wrap:nowrap!important;align-items:center!important;
    justify-content:flex-end!important;gap:10px!important}
  .uds-btn-cta .elementor-button{padding:9px 15px!important;font-size:13px!important;white-space:nowrap}
  .uds-nav-movil .elementor-menu-toggle{padding:4px!important}
  /* el widget de menu solo debe ocupar lo que mide su icono */
  .uds-nav-movil{width:auto!important;flex:0 0 auto!important;max-width:44px}
  .uds-nav-movil .elementor-widget-container{width:auto!important}

  /* el hero arranca justo bajo la cabecera: sin franja blanca.
     Mismo criterio que el panel del menu: se usa la altura real medida
     por el JS, no un numero escrito a mano. */
  body:not(.elementor-editor-active) [data-elementor-type="header"]{margin-bottom:calc(var(--uds-cab, 64px) * -1)!important}

  /* ritmo vertical mas corto en pantallas pequeñas */
  body:not(.elementor-editor-active) [data-elementor-type="wp-page"] > .e-con.e-parent,
  body:not(.elementor-editor-active) [data-elementor-type="single-post"] > .e-con.e-parent{
    padding-top:54px!important;padding-bottom:54px!important}
  .uds-hero{padding-top:100px!important;padding-bottom:92px!important}

  /* boton de WhatsApp mas discreto para que no tape textos */
  .uds-wa{right:14px!important;bottom:14px!important}
  .uds-wa .elementor-icon{font-size:21px!important;width:46px!important;height:46px!important}
}

/* 18 · TABLET (768-1024): misma cabecera compacta que en movil */
@media(min-width:768px) and (max-width:1024px){
  .uds-navbar .e-con-inner{
    flex-wrap:nowrap!important;align-items:center!important;justify-content:space-between!important;
    padding-left:24px!important;padding-right:24px!important;gap:14px!important}
  .uds-navbar .e-con-inner > .e-con{width:auto!important;flex:0 0 auto!important;padding:0!important}
  .uds-navbar .e-con-inner > .e-con:last-child{
    flex-direction:row!important;flex-wrap:nowrap!important;align-items:center!important;gap:12px!important}
  .uds-nav-movil{width:auto!important;flex:0 0 auto!important;max-width:44px}
  .uds-nav-movil .elementor-widget-container{width:auto!important}
  .uds-topbar .e-con-inner{padding-left:24px!important;padding-right:24px!important}
  body:not(.elementor-editor-active) [data-elementor-type="header"]{margin-bottom:-119px!important}
  body:not(.elementor-editor-active) [data-elementor-type="wp-page"] > .e-con.e-parent,
  body:not(.elementor-editor-active) [data-elementor-type="single-post"] > .e-con.e-parent{
    padding-top:66px!important;padding-bottom:66px!important}
}

/* 20 · MARGENES LATERALES EN PANTALLAS PEQUEÑAS
   Los contenedores "boxed" de Elementor no reservan margen lateral por
   debajo del ancho de contenido (1180px), asi que el texto quedaba pegado
   a los bordes. Se aplica un unico margen de seguridad global. */
@media(max-width:1024px){
  .e-con-boxed > .e-con-inner{padding-left:24px!important;padding-right:24px!important}
  .uds-herobar .e-con-inner{padding-right:96px!important}
}
@media(max-width:767px){
  .e-con-boxed > .e-con-inner{padding-left:20px!important;padding-right:20px!important}
  /* la cabecera ya tiene su propio margen: no duplicar */
  .uds-navbar .e-con-inner{padding-left:18px!important;padding-right:18px!important}
  .uds-herobar .e-con-inner{padding-left:20px!important;padding-right:88px!important}
}

/* 21 · CIERRE DE DESBORDES RESIDUALES EN MOVIL
   1) las escenas ocultas del hero se quedaban desplazadas a la derecha;
   2) el circulo-flecha de la lista de programas asomaba 2px. */
/* (la regla de posicion de las escenas ocultas se retiro: con la rejilla
   del bloque 9 ya no se desplazan) */
@media(max-width:767px){
  .uds-programas li{max-width:100%!important;padding-right:2px!important}
  .uds-prog-txt{min-width:0!important;flex:1 1 auto!important}
  .uds-of-panel{max-width:100%!important}
}

/* 25 · LIMPIEZA VISUAL: SIN SOMBRAS, HAMBURGUESA Y CTA MEJORADOS */

/* fuera sombras: se sustituyen por filetes finos */
.uds-menu,.uds-mega,.uds-drop,.uds-noticia,.campus-card,.paso,.news-card,.uds-dir{box-shadow:none!important}
/* el borde inferior del menu era del panel movil, que ya no existe:
   en escritorio dibujaba una linea bajo toda la navegacion */
.uds-noticia,.paso{border:1px solid #E9EEF5!important}

/* boton Inscribete: mas solido y proporcionado */
.uds-btn-cta .elementor-button{
  border-radius:10px!important;font-weight:700!important;letter-spacing:.2px!important;
  padding:12px 22px!important;box-shadow:none!important}
@media(max-width:767px){
  .uds-btn-cta .elementor-button{padding:10px 16px!important;font-size:13.5px!important}
}

/* === 28 · Panel del menu por ENCIMA del hero + barra de cristal
   del hero en una sola linea en movil === */
/* la barra de navegacion tenia z-index 99 y el hero tapaba el panel
   desplegado del menu movil: se sube por encima de todo el contenido */
.uds-navbar { z-index: 999 !important; }

@media (max-width: 767px) {
  /* fila del cristal: contador + linea + flechas, todo en una linea */
  .uds-herobar .e-con-inner > .e-con {
    width: 100% !important;
    flex-wrap: nowrap !important;
    align-items: center;
    column-gap: 12px;
  }
  /* la linea de progreso se estira para ocupar el hueco (tenia 120px fijos) */
  .uds-herobar .uds-hero-track {
    flex: 1 1 auto !important;
    min-width: 0;
    width: auto !important;
  }
  /* nada mas se encoge: contador y flechas mantienen su tamano */
  .uds-herobar .elementor-widget { flex-shrink: 0; }
}

/* === 26 · MENU MOVIL Y TABLET (pantalla completa, en flujo) ===
   Sustituye a los antiguos bloques 19, 22, 23, 24, 27 y 29.
   Es el widget NATIVO Nav Menu de Elementor (.uds-nav-movil), alimentado
   por el menu de WordPress "Menu principal UDS" (Apariencia > Menus), asi
   que editar el menu alli cambia movil y escritorio a la vez.

   Criterio de diseno:
   - El panel ocupa TODA la pantalla bajo la cabecera, con scroll propio.
   - Ningun submenu flota: todos van en flujo, empujando el contenido, para
     que abrir un apartado nunca tape los de arriba.
   - Areas de toque de 56px (apartados) y 48px (programas).
   ============================================================ */
@media (max-width: 1024px) {

  /* -- el mega menu de escritorio no participa en movil -- */
  .uds-menu { display: none !important; }

  /* -- 1. Boton hamburguesa / cerrar -- */
  .uds-nav-movil .elementor-menu-toggle {
    width: 44px; height: 44px;
    display: inline-flex; align-items: center; justify-content: center;
    border: none; border-radius: 10px; box-shadow: none !important;
    transition: background-color .2s, color .2s;
  }

  /* -- 2. El panel: pantalla completa bajo la cabecera -- */
  .uds-nav-movil nav.elementor-nav-menu--dropdown {
    position: fixed !important;
    /* el panel arranca EXACTAMENTE donde acaba la cabecera. Antes iba clavado
       a 67px y la cabecera mide 64: quedaban 3px por los que se veia el fondo.
       --uds-cab la calcula el JS midiendo la cabecera de verdad. */
    top: var(--uds-cab, 64px) !important; left: 0 !important; right: 0 !important; bottom: 0 !important;
    width: 100vw !important;
    height: calc(100vh - var(--uds-cab, 64px)) !important;
    max-height: none !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    margin: 0 !important;
    padding: 0 0 48px !important;
    background: #ffffff !important;
    border-top: 3px solid #A2C049;
    border-radius: 0 !important;
    box-shadow: none !important;
    z-index: 9998;
  }
  /* abierto/cerrado animado: el panel siempre existe (es fixed, no ocupa
     sitio) y entra con un desplazamiento suave. No se usa display:none
     porque display no se puede animar. */
  .uds-nav-movil nav.elementor-nav-menu--dropdown {
    display: block !important;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-12px);
    pointer-events: none;
    transition: opacity .26s ease, transform .34s cubic-bezier(.16, 1, .3, 1), visibility .26s;
  }
  .uds-nav-movil .elementor-menu-toggle.elementor-active + nav.elementor-nav-menu--dropdown {
    opacity: 1;
    visibility: visible;
    transform: none;
    pointer-events: auto;
  }
  /* la barra horizontal del widget nunca se muestra (solo hamburguesa) */
  .uds-nav-movil nav.elementor-nav-menu--main { display: none !important; }
  /* el widget solo ocupa lo que mide su icono */
  .elementor-element.uds-nav-movil { width: auto; }

  /* -- 3. Todos los niveles EN FLUJO: nada se superpone -- */
  .uds-nav-movil .elementor-nav-menu--dropdown ul,
  .uds-nav-movil .elementor-nav-menu--dropdown ul.sub-menu {
    position: static !important;
    top: auto !important; left: auto !important;
    width: 100% !important; min-width: 0 !important; max-width: none !important;
    max-height: none !important;
    transform: none !important;
    opacity: 1 !important;
    box-shadow: none !important;
    border: 0 !important;
    background: transparent !important;
    margin: 0 !important; padding: 0 !important;
  }
  /* al abrir un apartado se ve su bloque entero (grupos + programas),
     sin obligar a un tercer toque por grupo */
  .uds-nav-movil .elementor-nav-menu--dropdown ul.sub-menu ul.sub-menu { display: block !important; }

  /* -- 4. Jerarquia visual -- */
  /* nivel 1 · apartados */
  .uds-nav-movil .elementor-nav-menu--dropdown > ul > li > a {
    min-height: 56px;
    display: flex; align-items: center;
    padding: 0 22px !important;
    font-family: 'Heebo', sans-serif;
    font-size: 17px !important; font-weight: 700 !important;
    color: #173257 !important;
    background: #ffffff !important;
    border-bottom: 1px solid #EEF2F8;
  }
  /* nivel 2 · grupos de la oferta: etiqueta, no fila pulsable corriente */
  .uds-nav-movil .elementor-nav-menu--dropdown > ul > li > ul.sub-menu > li > a {
    min-height: 0 !important;
    padding: 18px 22px 6px !important;
    font-size: 12px !important; font-weight: 700 !important;
    letter-spacing: .1em; text-transform: uppercase;
    color: #26529C !important;
    background: #ffffff !important;
    border: 0 !important;
  }
  /* nivel 3 · programas */
  .uds-nav-movil .elementor-nav-menu--dropdown ul.sub-menu ul.sub-menu > li > a {
    min-height: 48px;
    display: flex; align-items: center;
    padding: 0 22px 0 34px !important;
    font-size: 15px !important; font-weight: 400 !important;
    text-transform: none !important; letter-spacing: 0 !important;
    color: #173257 !important;
    background: #F6F8FB !important;
    border-bottom: 1px solid #EDF1F7;
  }
  /* toque: acento verde a la izquierda */
  .uds-nav-movil .elementor-nav-menu--dropdown a:hover,
  .uds-nav-movil .elementor-nav-menu--dropdown a:active {
    color: #26529C !important;
    box-shadow: inset 3px 0 0 #A2C049;
  }
  /* la flecha solo tiene sentido en los apartados de primer nivel */
  .uds-nav-movil .elementor-nav-menu--dropdown ul.sub-menu .sub-arrow { display: none !important; }
  .uds-nav-movil .elementor-nav-menu--dropdown > ul > li > a .sub-arrow { margin-left: auto; }
}
/* en tablet la cabecera mide 119px, no 67px */
@media (min-width: 768px) and (max-width: 1024px) {
  .uds-nav-movil nav.elementor-nav-menu--dropdown {
    top: 119px !important;
    height: calc(100vh - 119px) !important;
  }
}


/* === 30 · MENU MOVIL: MOVIMIENTO Y CONTRASTE ===
   Complementa al bloque 26. Se respeta "prefiere menos movimiento". */
@media (max-width: 1024px) {

  /* -- boton hamburguesa / cerrar --
     Cerrado: contorno claro sobre el video. Abierto: navy solido con el
     aspa en blanco (contraste 11:1, muy por encima del minimo AA de 4.5:1;
     el verde sobre azul palido se quedaba en 1.9:1 y no se leia). */
  .uds-nav-movil .elementor-menu-toggle {
    transition: background-color .22s ease, color .22s ease, transform .22s ease;
  }
  .uds-nav-movil .elementor-menu-toggle.elementor-active {
    background-color: #173257 !important;
    color: #ffffff !important;
    transform: rotate(90deg);
  }
  .uds-nav-movil .elementor-menu-toggle.elementor-active svg,
  .uds-nav-movil .elementor-menu-toggle.elementor-active i { color: #ffffff !important; fill: #ffffff !important; }
  .uds-nav-movil .elementor-menu-toggle:focus-visible {
    outline: 3px solid #A2C049; outline-offset: 2px;
  }

  /* -- entrada escalonada de los apartados -- */
  @keyframes uds-entra { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
  .uds-nav-movil .elementor-menu-toggle.elementor-active + nav .elementor-nav-menu--dropdown > li,
  .uds-nav-movil .elementor-menu-toggle.elementor-active + nav > ul > li {
    animation: uds-entra .34s both cubic-bezier(.16, 1, .3, 1);
  }
  .uds-nav-movil .elementor-menu-toggle.elementor-active + nav > ul > li:nth-child(1) { animation-delay: .03s; }
  .uds-nav-movil .elementor-menu-toggle.elementor-active + nav > ul > li:nth-child(2) { animation-delay: .06s; }
  .uds-nav-movil .elementor-menu-toggle.elementor-active + nav > ul > li:nth-child(3) { animation-delay: .09s; }
  .uds-nav-movil .elementor-menu-toggle.elementor-active + nav > ul > li:nth-child(4) { animation-delay: .12s; }
  .uds-nav-movil .elementor-menu-toggle.elementor-active + nav > ul > li:nth-child(5) { animation-delay: .15s; }
  .uds-nav-movil .elementor-menu-toggle.elementor-active + nav > ul > li:nth-child(6) { animation-delay: .18s; }
  .uds-nav-movil .elementor-menu-toggle.elementor-active + nav > ul > li:nth-child(7) { animation-delay: .21s; }

  /* -- flecha del apartado: gira al desplegarse -- */
  .uds-nav-movil .elementor-nav-menu--dropdown .sub-arrow {
    transition: transform .3s cubic-bezier(.16, 1, .3, 1);
  }
  .uds-nav-movil .elementor-nav-menu--dropdown a[aria-expanded="true"] .sub-arrow,
  .uds-nav-movil .elementor-nav-menu--dropdown a.highlighted .sub-arrow {
    transform: rotate(180deg);
  }

  /* -- respuesta al toque: acento verde que entra desde la izquierda -- */
  .uds-nav-movil .elementor-nav-menu--dropdown a {
    transition: background-color .2s ease, color .2s ease, box-shadow .2s ease, padding-left .2s ease;
  }
  .uds-nav-movil .elementor-nav-menu--dropdown ul.sub-menu ul.sub-menu > li > a:active {
    padding-left: 40px !important;
  }

  /* -- accesibilidad: sin movimiento si el sistema lo pide -- */
  @media (prefers-reduced-motion: reduce) {
    .uds-nav-movil nav.elementor-nav-menu--dropdown,
    .uds-nav-movil .elementor-menu-toggle,
    .uds-nav-movil .elementor-nav-menu--dropdown a,
    .uds-nav-movil .elementor-nav-menu--dropdown .sub-arrow { transition: none !important; }
    .uds-nav-movil .elementor-menu-toggle.elementor-active { transform: none; }
    .uds-nav-movil .elementor-menu-toggle.elementor-active + nav > ul > li { animation: none !important; }
  }
}

/* === 31 · MOVIL: ALINEACION UNICA, CONTRASTE Y HAMBURGUESA ===
   Los contenedores anidados de Elementor traen 10px de padding lateral
   por defecto y se iban SUMANDO: los antetitulos de seccion empezaban
   en 30, 40, 54 o 61px segun cuantos niveles hubiera. El margen lateral
   lo debe poner UNA sola capa (el .e-con-inner, 20px). */
@media (max-width: 767px) {
  /* Aplanado SELECTIVO. La clase .uds-plano la pone el codigo del pie
     (Elementor > Codigo personalizado) solo en los contenedores que no
     tienen fondo, ni filete, ni un papel propio: asi la cita con borde
     verde y los contadores conservan su separacion. */
  [data-elementor-type="wp-page"] .e-con.e-child.uds-plano {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* -- hamburguesa: al bajar debe leerse AZUL, no blanca --
   El SVG del icono trae fill propio y ganaba al color puesto por JS. */
body.uds-scrolled .uds-nav-movil .elementor-menu-toggle,
body.uds-scrolled .uds-nav-movil .elementor-menu-toggle i,
body.uds-scrolled .uds-nav-movil .elementor-menu-toggle svg {
  color: #173257 !important;
  fill: #173257 !important;
}
body.uds-scrolled .uds-nav-movil .elementor-menu-toggle {
  background-color: #EAF1FB !important;
  border: 1px solid #D6DEEA !important;
}
/* con el panel abierto manda el bloque 30 (navy con el aspa blanca) */
body.uds-menu-abierto .uds-nav-movil .elementor-menu-toggle i,
body.uds-menu-abierto .uds-nav-movil .elementor-menu-toggle svg {
  color: #ffffff !important;
  fill: #ffffff !important;
}

/* -- contraste de textos secundarios (informe de accesibilidad) --
   El gris #8A94A8 se quedaba en 2.9:1; el minimo AA es 4.5:1. */
.uds-dir .elementor-tab-title:not(.elementor-active),
.uds-mod-btn:not(.uds-activa) .elementor-heading-title {
  color: #5B6880 !important;
}

/* === 32 · MOVIL: RITMO VERTICAL Y PIE DE PAGINA ===
   Entre dos secciones habia 108px fijos (54 + 54) mas los gaps internos:
   en una pantalla de 812px eso es un octavo de la pantalla en blanco. */
@media (max-width: 767px) {
  body:not(.elementor-editor-active) [data-elementor-type="wp-page"] > .e-con.e-parent,
  body:not(.elementor-editor-active) [data-elementor-type="single-post"] > .e-con.e-parent {
    padding-top: 38px !important;
    padding-bottom: 38px !important;
  }
  /* el ultimo bloque de una seccion no anade separacion extra */
  [data-elementor-type="wp-page"] > .e-con.e-parent > .e-con-inner > *:last-child,
  [data-elementor-type="single-post"] > .e-con.e-parent > .e-con-inner > *:last-child { margin-bottom: 0 !important; }

  /* ---- PIE ---- */
  [data-elementor-type="footer"] .e-con.e-parent { padding-top: 40px !important; padding-bottom: 24px !important; }

  /* accesos directos: llamar / WhatsApp / escribir */
  .uds-pie-acciones { margin: 4px 0 22px !important; }
  .uds-pie-acceso { transition: background-color .2s ease, border-color .2s ease; }
  .uds-pie-acceso:active { background-color: rgba(255,255,255,.12) !important; border-color: #A2C049 !important; }
  .uds-pie-acceso .elementor-widget-heading { margin: 0 !important; }
  .uds-pie-acceso .elementor-icon { display: flex; }

  /* titulos de columna: etiqueta corta con acento verde */
  [data-elementor-type="footer"] .e-con:not(.uds-pie-acceso) > .elementor-widget-heading .elementor-heading-title {
    position: relative;
    padding-left: 12px;
  }
  [data-elementor-type="footer"] .e-con:not(.uds-pie-acceso) > .elementor-widget-heading .elementor-heading-title::before {
    content: ''; position: absolute; left: 0; top: 50%;
    width: 3px; height: 13px; margin-top: -6px;
    background: #A2C049; border-radius: 2px;
  }
  /* los tres bloques de enlaces, a dos columnas: ocupaban 176px cada uno */
  /* Elementor pinta estas listas como flex y column-count no funciona
     sobre un contenedor flex: hay que devolverlas a bloque. */
  [data-elementor-type="footer"] .elementor-widget-icon-list .elementor-icon-list-items {
    display: block !important;
    column-count: 2 !important;
    column-gap: 14px;
  }
  [data-elementor-type="footer"] .elementor-widget-icon-list .elementor-icon-list-item {
    break-inside: avoid;
    padding: 7px 0 !important;
  }
  /* la lista de contacto (direccion, telefonos, correo) no se parte en
     dos columnas: la marca el codigo del pie con .uds-lista-contacto */
  [data-elementor-type="footer"] .uds-lista-contacto .elementor-icon-list-items {
    column-count: 1 !important;
  }
  [data-elementor-type="footer"] .uds-lista-contacto .elementor-icon-list-text {
    overflow-wrap: anywhere;
  }
  /* separadores suaves entre bloques del pie */
  [data-elementor-type="footer"] .elementor-widget-icon-list {
    padding-bottom: 16px;
    border-bottom: 1px solid rgba(255,255,255,.10);
    margin-bottom: 18px !important;
  }
  [data-elementor-type="footer"] .elementor-widget-icon-list:last-of-type { border-bottom: 0; }
}

/* === 33 · MOVIL: AIRE DENTRO DE LOS BLOQUES CON FONDO Y TARJETAS ===
   El bloque 31 quita la sangria de los contenedores transparentes para
   que todos los antetitulos empiecen en el mismo sitio. Efecto no
   buscado: dentro de un bloque CON fondo (la banda azul de UDS FC, las
   tarjetas) el texto quedaba pegado al borde. Aqui se le devuelve el aire
   solo a esos casos, sin tocar la alineacion de las cabeceras. */
@media (max-width: 767px) {
  /* Dentro de un bloque HIJO con fondo (la banda azul de UDS FC, una
     tarjeta), el contenido recupera su sangria. Se exige .e-child en el
     ancestro a proposito: las secciones de primer nivel tambien declaran
     fondo, y sin ese matiz la regla afectaba a toda la pagina. */
  /* .uds-interior lo marca el codigo del pie: es el contenido directo de
     un bloque con fondo que NO trae sangria propia (banda azul de UDS FC,
     tarjetas). Antes se aplicaba a TODOS los descendientes y en el Aula
     Virtual se acumulaban 36+20+20 = 76px de sangria. */
  [data-elementor-type="wp-page"] .e-con.e-child.uds-interior,
  [data-elementor-type="wp-page"] .uds-of-panel .e-con.e-child {
    padding-left: 20px !important;
    padding-right: 20px !important;
  }
  /* el bloque azul de UDS FC tambien necesita aire arriba y abajo */
  [data-elementor-type="wp-page"] .e-con.e-child[data-settings*="background_background"] > .e-con.e-con {
    padding-top: 22px !important;
    padding-bottom: 22px !important;
  }

  /* ---- TARJETAS DE ACTUALIDAD ---- */
  .uds-noticia {
    border-radius: 16px !important;
    overflow: hidden;
    border: 1px solid #E6ECF4 !important;
    box-shadow: 0 6px 20px rgba(23, 50, 87, .06) !important;
    margin-bottom: 16px;
  }
  /* la foto ocupa el ancho completo, sin sangria, y con una altura pareja */
  .uds-noticia > .elementor-widget-image,
  .uds-noticia .elementor-widget-image {
    padding: 0 !important;
    margin: 0 !important;
  }
  .uds-noticia .elementor-widget-image img {
    width: 100% !important;
    height: 190px !important;
    object-fit: cover;
    object-position: center top;
    display: block;
    border-radius: 0 !important;
  }
  /* categoria: etiqueta corta y legible */
  .uds-noticia .elementor-widget-heading:first-of-type .elementor-heading-title {
    font-size: 11.5px !important;
    letter-spacing: .12em;
    text-transform: uppercase;
  }
  /* titular con aire por debajo */
  .uds-noticia .elementor-widget-heading + .elementor-widget-heading .elementor-heading-title {
    font-size: 18px !important;
    line-height: 1.3 !important;
  }
  /* "Leer mas" como accion clara, separada del titular */
  .uds-noticia .uds-leermas {
    margin-top: 4px !important;
    padding-top: 12px !important;
    border-top: 1px solid #EEF2F8;
  }
  .uds-noticia .uds-leermas .elementor-heading-title {
    font-size: 14.5px !important;
    font-weight: 700 !important;
  }
}

/* === 34 · EL BOTON ABIERTO MANDA SOBRE EL ESTADO DE SCROLL ===
   Con la barra ya blanca (.uds-scrolled) Y el panel abierto se juntaban
   dos reglas: el fondo azul palido del bloque 31 y el aspa blanca del 30.
   Blanco sobre #EAF1FB es 1.1:1, ilegible. El estado abierto gana siempre:
   navy con el aspa en blanco, 11:1. */
body.uds-scrolled .uds-nav-movil .elementor-menu-toggle.elementor-active,
body.uds-menu-abierto .uds-nav-movil .elementor-menu-toggle.elementor-active,
body .uds-nav-movil .elementor-menu-toggle.elementor-active {
  background-color: #173257 !important;
  border-color: #173257 !important;
  color: #ffffff !important;
}
body.uds-scrolled .uds-nav-movil .elementor-menu-toggle.elementor-active svg,
body.uds-scrolled .uds-nav-movil .elementor-menu-toggle.elementor-active i,
body .uds-nav-movil .elementor-menu-toggle.elementor-active svg,
body .uds-nav-movil .elementor-menu-toggle.elementor-active i {
  color: #ffffff !important;
  fill: #ffffff !important;
}


/* === 35 · MOVIL: CABECERAS A LA IZQUIERDA Y BLOQUES CON FILETE ===
   En movil centrar el antetitulo mientras el titular va a la izquierda
   descuadra la lectura: todas las cabeceras se alinean a la izquierda. */
@media (max-width: 767px) {
  /* La cabecera de seccion la marca el codigo del pie con .uds-cabecera
     (es el contenedor que abre con el antetitulo numerado). En escritorio
     varias van centradas; en movil todas a la izquierda. */
  [data-elementor-type="wp-page"] .e-con.uds-cabecera,
  [data-elementor-type="single-post"] .e-con.uds-cabecera {
    align-items: flex-start !important;
    text-align: left !important;
  }
  [data-elementor-type="wp-page"] .e-con.uds-cabecera,
  [data-elementor-type="single-post"] .e-con.uds-cabecera > .elementor-widget {
    align-self: flex-start !important;
    width: 100% !important;
  }
  [data-elementor-type="wp-page"] .e-con.uds-cabecera,
  [data-elementor-type="single-post"] .e-con.uds-cabecera .elementor-heading-title,
  [data-elementor-type="wp-page"] .e-con.uds-cabecera,
  [data-elementor-type="single-post"] .e-con.uds-cabecera .elementor-widget-text-editor,
  [data-elementor-type="wp-page"] .e-con.uds-cabecera,
  [data-elementor-type="single-post"] .e-con.uds-cabecera .elementor-widget-text-editor p {
    text-align: left !important;
  }

  /* bloques con filete lateral: aire entre el filete y el texto */
  [data-elementor-type="wp-page"] .uds-con-filete {
    padding-left: 16px !important;
  }

  /* listas de valores y similares: sin sangria heredada */
  [data-elementor-type="wp-page"] .elementor-icon-list-items {
    padding-left: 0 !important;
    margin-left: 0 !important;
  }

  /* separacion entre el bloque de texto y la imagen que va debajo:
     habia hasta 120px por sumar margen + gap + padding */
  [data-elementor-type="wp-page"] .e-con.e-child > .elementor-widget-image { margin-top: 0 !important; }
  [data-elementor-type="wp-page"] .elementor-widget-divider { margin-bottom: 10px !important; }

  /* el bloque del Aula Virtual respiraba de mas */
  [data-elementor-type="wp-page"] .uds-aula { padding-top: 26px !important; padding-bottom: 26px !important; }
}

/* === 36 · SIN SOMBRAS, ACTUALIDAD EDITORIAL Y PIE COMPACTO ===
   Las sombras daban un aire de plantilla generica: se sustituyen por
   filetes finos, que es como esta resuelto el resto del sitio. */
.uds-noticia, .uds-card-hover, .campus-card, .paso, .news-card,
.uds-dir, .uds-of-panel, .uds-aula, .uds-pie-acceso {
  box-shadow: none !important;
}

/* ---- Tarjetas de actualidad: menos caja, mas pieza editorial ---- */
.uds-noticia {
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  overflow: visible;
}
.uds-noticia .elementor-widget-image img {
  border-radius: 14px !important;
  width: 100% !important;
  display: block;
}
/* filete inferior que separa una noticia de la siguiente */
.uds-noticia + .uds-noticia,
.uds-noticia:not(:last-child) { border-bottom: 1px solid #E6ECF4 !important; }

@media (max-width: 767px) {
  .uds-noticia {
    padding-bottom: 22px !important;
    margin-bottom: 22px !important;
  }
  .uds-noticia > .e-con,
  .uds-noticia .e-con.e-child {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  .uds-noticia .elementor-widget-image img { height: 200px !important; object-fit: cover; }
  /* categoria en verde, sobre el titular */
  .uds-noticia .elementor-widget-heading:first-of-type .elementor-heading-title {
    color: #6E8A22 !important;
    font-size: 11.5px !important;
    letter-spacing: .14em;
  }
  .uds-noticia .uds-leermas { border-top: 0 !important; padding-top: 2px !important; }

  /* ---- PIE: mas compacto ---- */
  [data-elementor-type="footer"] .elementor-widget-image img { width: 170px !important; }
  [data-elementor-type="footer"] .e-con.e-parent { padding-top: 34px !important; }
  [data-elementor-type="footer"] .elementor-widget-text-editor { font-size: 14.5px; }
  /* separacion homogenea entre bloques */
  [data-elementor-type="footer"] .elementor-widget-icon-list {
    padding-bottom: 14px;
    margin-bottom: 14px !important;
  }
  [data-elementor-type="footer"] .elementor-widget-heading { margin-bottom: 8px !important; }
  /* barra inferior separada del resto */
  [data-elementor-type="footer"] .e-con.e-parent:last-child {
    border-top: 1px solid rgba(255,255,255,.12);
    padding-top: 18px !important;
  }
}

/* === 37 · MOVIL: SEPARACION UNICA CABECERA-CONTENIDO Y PIE ===
   Medido en las 10 secciones: el hueco entre el titular y el contenido
   iba de 24 a 56px sin criterio (sumaba el margen del ultimo widget de
   la cabecera, el padding del contenedor y el margen del siguiente).
   Se fija en 22px para todas. */
@media (max-width: 767px) {
  [data-elementor-type="wp-page"] .uds-cabecera,
  [data-elementor-type="single-post"] .uds-cabecera {
    padding-bottom: 0 !important;
    margin-bottom: 22px !important;
  }
  [data-elementor-type="wp-page"] .uds-cabecera,
  [data-elementor-type="single-post"] .uds-cabecera > .elementor-widget:last-child {
    margin-bottom: 0 !important;
  }
  [data-elementor-type="wp-page"] .uds-cabecera,
  [data-elementor-type="single-post"] .uds-cabecera + .e-con,
  [data-elementor-type="wp-page"] .uds-cabecera,
  [data-elementor-type="single-post"] .uds-cabecera + .elementor-widget {
    margin-top: 0 !important;
    padding-top: 0 !important;
  }

  /* ================= PIE ================= */
  /* logo a tamano: a 300px se salia de la pantalla */
  [data-elementor-type="footer"] .elementor-widget-image img {
    width: 150px !important;
    height: auto !important;
  }
  /* ritmo compacto */
  [data-elementor-type="footer"] .e-con.e-parent {
    padding-top: 30px !important;
    padding-bottom: 20px !important;
  }
  [data-elementor-type="footer"] .elementor-widget-text-editor { margin-bottom: 14px !important; }
  [data-elementor-type="footer"] .elementor-widget-social-icons { margin-bottom: 4px !important; }
  [data-elementor-type="footer"] .elementor-widget-heading { margin-bottom: 6px !important; }
  [data-elementor-type="footer"] .elementor-widget-icon-list {
    padding-bottom: 12px;
    margin-bottom: 12px !important;
  }

  /* enlaces en REJILLA de dos columnas: con column-count las filas de una
     columna y otra no casaban entre si y quedaba un escalon feo */
  [data-elementor-type="footer"] .elementor-widget-icon-list .elementor-icon-list-items {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    column-gap: 12px;
    row-gap: 0;
    column-count: auto !important;
  }
  [data-elementor-type="footer"] .elementor-icon-list-item {
    padding: 8px 0 !important;
    margin: 0 !important;
  }
  /* contacto: una sola columna, el correo no se parte */
  [data-elementor-type="footer"] .elementor-widget-icon-list.uds-lista-contacto .elementor-icon-list-items {
    grid-template-columns: 1fr !important;
  }
  /* la cita con filete que sigue a la cabecera de Nosotros arrastraba
     46px: se iguala a los 22px del resto */
  /* el contenedor que aloja la cabecera no debe sumar su propio gap al
     margen de 22px: en Nosotros aportaba 24px extra (46 en total) */
  [data-elementor-type="wp-page"] .e-con:has(> .uds-cabecera) { row-gap: 0 !important; }
  /* accesos directos mas contenidos */
  .uds-pie-acciones { margin: 2px 0 18px !important; }
  .uds-pie-acceso { padding-top: 12px !important; padding-bottom: 12px !important; }
}

/* === 38 · CAJA DEL AULA VIRTUAL EN MOVIL ===
   Ese bloque trae 36px de sangria y 30 arriba, pensados para escritorio.
   Se apunta a su contenedor concreto (elementor-element-c3l) en lugar de
   a una regla general: probamos una y descuadraba las cabeceras. */
@media (max-width: 767px) {
  [data-elementor-type="wp-page"] .elementor-element-c3l {
    padding: 24px 22px !important;
  }
}

/* === 39 · MENU DE ESCRITORIO: DESPLEGABLES Y MEGA MENU ===
   Solo afecta a pantallas grandes: en movil manda el widget nativo. */
@media (min-width: 1025px) {

  /* -- desplegables simples (Vida academica, Contacto) -- */
  .uds-drop {
    border-radius: 14px !important;
    padding: 10px !important;
    border: 1px solid #EDF1F7;
    box-shadow: 0 18px 44px rgba(23, 50, 87, .13) !important;
    /* ancho suficiente para que "Departamento Psicopedagogico" no se
       parta en dos lineas */
    min-width: 302px;
  }
  .uds-drop .elementor-icon-list-text { white-space: nowrap; }
  /* la separacion entre opciones la da el fondo del hover, no un hueco */
  .uds-drop .elementor-icon-list-items { gap: 0 !important; }
  .uds-drop .elementor-icon-list-item + .elementor-icon-list-item { margin-top: 2px !important; }
  .uds-drop .elementor-icon-list-item {
    border-radius: 9px;
    transition: background-color .18s ease, color .18s ease;
  }
  .uds-drop .elementor-icon-list-item:hover {
    background: #F3F7FD;
  }
  .uds-drop .elementor-icon-list-item a {
    padding: 9px 12px !important;
  }
  .uds-drop .elementor-icon-list-item:hover .elementor-icon-list-text {
    color: #26529C !important;
  }

  /* -- mega menu -- */
  .uds-mega {
    border-radius: 0 0 18px 18px !important;
    box-shadow: 0 24px 54px rgba(23, 50, 87, .15) !important;
    border-top: 3px solid #A2C049;
  }
  /* cabecera de cada columna */
  .uds-mega .elementor-widget-heading .elementor-heading-title {
    font-size: 11.5px !important;
    letter-spacing: .14em;
  }
  /* filas de programas: responden al cursor */
  .uds-mega .elementor-icon-list-item {
    border-radius: 8px;
    transition: background-color .18s ease, padding-left .18s ease;
  }
  .uds-mega .elementor-icon-list-item:hover {
    background: #F6F8FB;
    padding-left: 8px !important;
  }
  .uds-mega .elementor-icon-list-item:hover .elementor-icon-list-text {
    color: #26529C !important;
  }
  /* pie del mega menu: la nota del RVOE y el boton, sobre fondo suave.
     Necesita aire: pegado a la ultima fila de programas se leia como si
     fuera parte del listado. */
  .uds-mega .e-con-inner > .e-con:last-child {
    background: #F6F8FB;
    border-radius: 12px;
    padding: 16px 20px !important;
    margin-top: 26px !important;
    border-top: 1px solid #E9EEF5;
  }
  /* y las columnas dejan holgura por debajo antes de ese pie */
  .uds-mega .e-con-inner > .e-con:not(:last-child) {
    padding-bottom: 6px !important;
  }

  /* el apartado abierto se marca en la barra */
  .uds-nav-item:hover .uds-navlink .elementor-heading-title {
    color: #A2C049 !important;
  }
}

/* === 40 · PREGUNTAS FRECUENTES Y TARJETAS DE ACTUALIDAD ===
   Las FAQ quedaban a 58px de su titular y con un aire de formulario;
   las tarjetas de actualidad se habian quedado a medias en escritorio:
   sin caja pero con un filete cortado debajo. */

/* ---------- Preguntas frecuentes ---------- */
.uds-faq .elementor-accordion-item {
  background: #FFFFFF !important;
  border: 1px solid #E6ECF4 !important;
  border-radius: 14px !important;
  margin-bottom: 12px !important;
  overflow: hidden;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.uds-faq .elementor-accordion-item:hover { border-color: #CFDCEC !important; }
/* la pregunta abierta se marca con el verde de la casa */
.uds-faq .elementor-accordion-item:has(.elementor-tab-title.elementor-active) {
  border-color: #A2C049 !important;
  box-shadow: 0 8px 26px rgba(23, 50, 87, .07);
}
.uds-faq .elementor-tab-title {
  padding: 20px 24px !important;
  font-size: 16.5px !important;
  font-weight: 600 !important;
  color: #173257 !important;
  display: flex;
  align-items: center;
  gap: 12px;
}
.uds-faq .elementor-tab-title.elementor-active { color: #26529C !important; }
/* el signo + / - dentro de un circulo, no suelto */
.uds-faq .elementor-accordion-icon {
  width: 28px; height: 28px;
  flex: 0 0 28px;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  background: #F1F6E8;
  border-radius: 50%;
  font-size: 13px;
  transition: background-color .2s ease;
}
.uds-faq .elementor-tab-title.elementor-active .elementor-accordion-icon { background: #A2C049; }
.uds-faq .elementor-tab-title.elementor-active .elementor-accordion-icon,
.uds-faq .elementor-tab-title.elementor-active .elementor-accordion-icon svg { color: #FFFFFF !important; fill: #FFFFFF !important; }
.uds-faq .elementor-tab-content {
  padding: 0 24px 20px 64px !important;
  border: 0 !important;
  color: #5B6880;
  line-height: 1.65;
}

/* ---------- Tarjetas de actualidad ---------- */
/* el filete de separacion solo tiene sentido en la columna del movil */
@media (min-width: 768px) {
  .uds-noticia,
  .uds-noticia + .uds-noticia,
  .uds-noticia:not(:last-child) { border-bottom: 0 !important; }
  .uds-noticia .elementor-widget-image img {
    height: 220px !important;
    object-fit: cover;
    border-radius: 16px !important;
  }
  /* el titular ocupa dos lineas para que las tres tarjetas casen */
  .uds-noticia .elementor-widget-heading + .elementor-widget-heading .elementor-heading-title {
    font-size: 19px !important;
    line-height: 1.35 !important;
    min-height: 2.7em;
  }
  /* al pasar el cursor: la foto se acerca, sin fondos grises */
  .uds-noticia { background: transparent !important; }
  .uds-noticia .elementor-widget-image { overflow: hidden; border-radius: 16px; }
  .uds-noticia:hover .elementor-widget-image img { transform: scale(1.045); }
  .uds-noticia:hover .uds-leermas .elementor-heading-title {
    text-decoration: underline;
    text-underline-offset: 4px;
  }
}

/* ---------- La cabecera y su contenido, más juntos en escritorio ---------- */
@media (min-width: 768px) {
  [data-elementor-type="wp-page"] .uds-cabecera,
  [data-elementor-type="single-post"] .uds-cabecera { margin-bottom: 28px !important; }
  [data-elementor-type="wp-page"] .e-con:has(> .uds-cabecera) { row-gap: 0 !important; }
  /* el bloque que sigue a la cabecera trae 48px de margen propio de
     Elementor: la separacion la marca la cabecera, no el contenido */
  [data-elementor-type="wp-page"] .uds-cabecera,
  [data-elementor-type="single-post"] .uds-cabecera + .e-con,
  [data-elementor-type="wp-page"] .uds-cabecera,
  [data-elementor-type="single-post"] .uds-cabecera + .elementor-widget { margin-top: 0 !important; }
}

/* === 41 · RITMO DEL PIE, TARJETAS SIN ELEVACION Y AIRE DEL MENU ===

   ---------- 1. Pie en movil ----------
   Medidos los huecos reales entre bloques: 20, 36, 6, 75, 46, 46, 88.
   Se fija una escala unica: 18px dentro de un grupo, 30px entre grupos. */
@media (max-width: 767px) {
  /* ningun contenedor del pie aporta separacion por su cuenta: ni con
     margenes ni con el gap del flex, que sumaba 26px sobre cada bloque */
  [data-elementor-type="footer"] .e-con { margin-top: 0 !important; margin-bottom: 0 !important; }
  [data-elementor-type="footer"] .e-con,
  [data-elementor-type="footer"] .e-con-inner { row-gap: 0 !important; }
  [data-elementor-type="footer"] .e-con.e-child { padding-top: 0 !important; padding-bottom: 0 !important; }

  [data-elementor-type="footer"] .elementor-widget-image { margin-bottom: 18px !important; }
  [data-elementor-type="footer"] .elementor-widget-text-editor { margin-bottom: 18px !important; }
  [data-elementor-type="footer"] .elementor-widget-social-icons { margin-bottom: 22px !important; }
  /* la separacion tras los accesos va en padding: el margen se lo quita
     la regla de arriba, que pone a cero los margenes de los contenedores */
  [data-elementor-type="footer"] .e-con.uds-pie-acciones { padding-bottom: 30px !important; }

  /* cada grupo de enlaces: titulo pegado a su lista, 30px hasta el siguiente */
  [data-elementor-type="footer"] .elementor-widget-heading { margin-bottom: 10px !important; }
  [data-elementor-type="footer"] .elementor-widget-icon-list {
    margin-bottom: 30px !important;
    padding-bottom: 0 !important;
    border-bottom: 0 !important;
  }
  [data-elementor-type="footer"] .elementor-widget-icon-list:last-of-type { margin-bottom: 22px !important; }

  /* barra inferior: separada por un filete, no por un hueco */
  [data-elementor-type="footer"] .e-con.e-parent:last-child {
    border-top: 1px solid rgba(255,255,255,.12);
    padding-top: 20px !important;
    padding-bottom: 22px !important;
  }
  [data-elementor-type="footer"] .e-con.e-parent:last-child .elementor-widget-text-editor { margin-bottom: 8px !important; }
}

/* ---------- 2. Tarjetas de actualidad en escritorio ---------- */
/* la tarjeta ya no se eleva ni proyecta sombra al pasar el cursor:
   ese efecto era lo que le daba aspecto de plantilla antigua */
@media (min-width: 768px) {
  .uds-noticia:hover {
    transform: none !important;
    box-shadow: none !important;
  }
}

/* ---------- 3. Paneles del menu de escritorio ---------- */
@media (min-width: 1025px) {
  /* un respiro entre la barra y el panel, para que no se lea pegado */
  .uds-drop { margin-top: 10px !important; }
  .uds-mega { margin-top: 6px !important; }
}
/* === 42 · ICONO DEL BOTON AULA VIRTUAL SOBRE LA BARRA BLANCA ===
   El icono va en blanco para que se lea sobre el video; al hacer scroll
   la barra pasa a blanca y el icono desaparecia. */
body.uds-scrolled .uds-navbar .elementor-button-icon,
body.uds-scrolled .uds-navbar .elementor-button-icon i,
body.uds-scrolled .uds-navbar .elementor-button-icon svg,
body.uds-menu-abierto .uds-navbar .elementor-button-icon,
body.uds-menu-abierto .uds-navbar .elementor-button-icon i,
body.uds-menu-abierto .uds-navbar .elementor-button-icon svg {
  color: #26529C !important;
  fill: #26529C !important;
}
/* el boton Inscribete es verde en ambos estados: su icono no se toca */
body.uds-scrolled .uds-navbar .uds-btn-cta .elementor-button-icon,
body.uds-scrolled .uds-navbar .uds-btn-cta .elementor-button-icon i,
body.uds-scrolled .uds-navbar .uds-btn-cta .elementor-button-icon svg {
  color: #173257 !important;
  fill: #173257 !important;
}
/* === 43 · ACCESOS DEL PIE: AIRE Y PROPORCION ===
   La regla que pone a cero el padding de los contenedores del pie les
   quitaba tambien el suyo y quedaban aplastados (44px de alto, con el
   icono pegado al texto y al borde). */
@media (max-width: 767px) {
  [data-elementor-type="footer"] .e-con.uds-pie-acceso {
    padding-top: 15px !important;
    padding-bottom: 15px !important;
    min-height: 74px;
    justify-content: center;
    row-gap: 8px !important;
    border-color: rgba(255, 255, 255, .2) !important;
    border-radius: 14px !important;
  }
  /* el icono, con su hueco propio, para que no toque la etiqueta */
  /* el icono y la etiqueta, sin margenes propios: el aire lo da el
     padding de la caja, para que arriba y abajo midan lo mismo
     (antes: 16px arriba y 26 abajo por el margen del titulo) */
  [data-elementor-type="footer"] .uds-pie-acceso .elementor-widget-icon,
  [data-elementor-type="footer"] .uds-pie-acceso .elementor-widget-heading {
    margin-bottom: 0 !important;
    margin-top: 0 !important;
  }
  [data-elementor-type="footer"] .uds-pie-acceso .elementor-icon { font-size: 20px !important; }
  [data-elementor-type="footer"] .uds-pie-acceso .elementor-heading-title { line-height: 1.2 !important; }
}
/* === 44 · CAJAS DEL AULA VIRTUAL Y DE BECAS EN MOVIL ===
   Las dos usan justify-content:space-between, pensado para que en
   escritorio el boton quede abajo alineado con la columna de al lado.
   En movil no hay columna hermana: la caja se estira y ese reparto abria
   huecos enormes entre el texto y el boton. Se apunta a esos dos
   contenedores concretos (c3l = Aula Virtual, c1v = Becas) para no tocar
   ninguna otra caja del sitio. */
@media (max-width: 767px) {
  [data-elementor-type="wp-page"] .elementor-element-c3l,
  [data-elementor-type="wp-page"] .elementor-element-c1v {
    justify-content: flex-start !important;
    height: auto !important;
    align-self: flex-start;
    row-gap: 10px !important;
  }
  /* el texto y el boton, mas juntos: los 22px que quedaban venian del
     espaciado por defecto de los contenedores de Elementor, no del
     ajuste de estos bloques (en su arbol estaba a 0). */
  [data-elementor-type="wp-page"] .elementor-element-c3l .elementor-widget-text-editor,
  [data-elementor-type="wp-page"] .elementor-element-c1v .elementor-widget-text-editor {
    margin-bottom: 0 !important;
  }
  [data-elementor-type="wp-page"] .elementor-element-c3l .elementor-widget-button,
  [data-elementor-type="wp-page"] .elementor-element-c1v .elementor-widget-button {
    margin-top: 0 !important;
  }
  /* el bloque del boton traia 22px de relleno superior que se sumaban a
     la separacion de la caja: entre el texto y el boton salian 62px */
  /* Se apunta a cada bloque por su identificador (el .elementor-kit-8 de hijo
     directo no llegaba a imponerse sobre el CSS que genera Elementor). */
  /* CULPABLE ENCONTRADO: la regla del bloque 33 que da 22px de aire
     vertical al interior de los bloques con fondo (pensada para la banda
     azul de UDS FC) tambien alcanzaba a estas cajas, y con mas peso
     (.e-con.e-con) que los intentos anteriores. Se repiten clases para
     superarla solo en estos cuatro contenedores. */
  [data-elementor-type="wp-page"] .elementor-element-c3i.e-con.e-con.e-con.e-con.e-con,
  [data-elementor-type="wp-page"] .elementor-element-c3k.e-con.e-con.e-con.e-con.e-con,
  [data-elementor-type="wp-page"] .elementor-element-c1s.e-con.e-con.e-con.e-con.e-con,
  [data-elementor-type="wp-page"] .elementor-element-c1u.e-con.e-con.e-con.e-con.e-con {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
}
/* === 45 · TITULO DUPLICADO DEL TEMA ===
   Hello Elementor imprime el titulo de la pagina en un .page-header.
   En la home no se nota porque el hero lo tapa, pero en las fichas de
   carrera aparecia en negro sobre la cabecera. Cada pagina ya trae su
   propio titular, asi que se retira (el snippet ademas lo elimina del
   DOM para no dejar dos H1 al buscador). */
.page-header { display: none !important; }
/* === 46 · PLAN DE ESTUDIOS DE LAS FICHAS DE CARRERA ===
   Tarjetas de semestre con el mismo lenguaje que las tarjetas de niveles
   de la portada: fondo claro, esquinas de 18 y numero grande en azul.
   Dentro de cada tarjeta, las materias van numeradas en verde. */
.uds-semestre { transition: transform .3s ease, box-shadow .3s ease; }
.uds-semestre:hover { transform: translateY(-4px); }
.uds-semestre .uds-materias {
  list-style: none !important;
  margin: 10px 0 0 !important;
  padding: 0 !important;
  counter-reset: materia;
}
.uds-semestre .uds-materias li {
  counter-increment: materia;
  position: relative;
  padding: 9px 0 9px 30px;
  border-top: 1px solid #EDF1F7;
  line-height: 1.4;
}
.uds-semestre .uds-materias li::before {
  content: counter(materia, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 10px;
  font-family: "Heebo", sans-serif;
  font-size: 11.5px;
  font-weight: 700;
  color: #A2C049;
}
/* las etapas finales (internado, servicio social) no llevan numeracion */
.uds-semestre .uds-materias li:only-child::before { content: ""; }
.uds-semestre .uds-materias li:only-child { padding-left: 0; }

/* === 47 · CIERRE DE MARGENES SOBRANTES AL FINAL DE CADA SECCION ===
   El ultimo bloque de una seccion arrastraba su margen inferior y se
   sumaba al relleno de la siguiente. */
@media (max-width: 767px) {
  [data-elementor-type="wp-page"] > .e-con.e-parent .e-con-inner > .e-con:last-child,
  [data-elementor-type="wp-page"] > .e-con.e-parent .e-con-inner > .elementor-widget:last-child {
    margin-bottom: 0 !important;
  }
}
/* === 48 · CABECERAS DE TARJETA CON FONDO DE COLOR ===
   La regla del bloque 33 da 22px de aire vertical al interior de todo
   bloque con fondo (pensada para la banda azul de UDS FC). En una
   cabecera de tarjeta eso la estiraba a 122px de alto. Se anula solo ahi,
   con la especificidad justa para ganarle. */
/* la tarjeta recorta a sus hijos: sin esto la cabecera de color, que es
   rectangular, asomaba por encima de las esquinas redondeadas */
.uds-req-nivel { overflow: hidden; }
.uds-req-cab .e-con.e-con.e-con.e-con.e-con.e-con {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
/* === 49 · LISTAS EN LINEA: SEPARACION CON GAP, NO CON MARGENES ===
   Elementor separa los elementos de una lista en linea dando margen
   izquierdo a TODOS, incluido el primero de cada fila: "Nuestros
   valores" quedaba 28px a la derecha de su propio titulo. Con gap la
   separacion es la misma pero el primero alinea con el resto. */
.elementor-icon-list--layout-inline .elementor-icon-list-items {
  gap: 10px 28px;
}
.elementor-icon-list--layout-inline .elementor-icon-list-items .elementor-icon-list-item {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
/* === 50 · LISTA DE VALORES SIN ICONO ===
   Los valores ya van numerados (01, 02...). Al quitarles el icono vacio,
   Elementor cae a su marca de verificacion por defecto, que ademas se
   pinta invisible y solo servia para desplazar el texto 18px a la
   derecha, desalineandolo de su titulo. */
.elementor-element-w4m .elementor-icon-list-icon { display: none !important; }
/* === 51 · MEGA MENU: TEXTOS ALINEADOS CON SU TITULO DE COLUMNA ===
   Los 32 enlaces del mega menu declaran un icono vacio; Elementor pinta
   en su lugar su marca por defecto, invisible pero de 18px, que empujaba
   cada programa a la derecha respecto a la cabecera de su columna. */
.uds-mega .elementor-icon-list-icon,
.uds-drop .elementor-icon-list-icon { display: none !important; }
/* === 52 · RESEÑAS DE GOOGLE ===
   El plugin trae su propia hoja de estilos; aqui solo se le pone limite de
   ancho y se le quita el margen superior, que se duplicaba con el de la
   cabecera de la seccion. */
.uds-resenas .elementor-shortcode,
.uds-resenas .elementor-widget-text-editor { width: 100%; }
.uds-resenas .ti-widget { margin-top: 0 !important; max-width: 100%; }
.uds-resenas .ti-widget * { max-width: 100%; }

/* === 53 · MAPA DEL PIE ===
   Va sobre el bloque azul del pie y hace de corte visual entre el final de
   la pagina y el pie; sin bordes ni sombras, a sangre. */
.uds-mapa-pie { padding: 0 !important; }
.uds-mapa-pie iframe { display: block; width: 100%; border: 0; }

/* === 54 · APARICION AL DESPLAZAR ===
   Las clases las pone el JS y solo si el JS esta vivo (.uds-anim en el body):
   sin JS no se oculta nada. Cada pieza entra a su manera:
     .uds-ap-t  titulo   -> se descubre con mascara, el texto asoma de abajo arriba
     .uds-ap-c  tarjeta  -> sube, crece un pelo y se enfoca
     .uds-ap-f  imagen   -> se posa desde un zoom minimo
     .uds-ap    el resto -> sube y aparece
   El escalonado va en --uds-i, la posicion dentro de su grupo.
   Curva (.16,.84,.44,1): arranca rapido y frena suave, que es lo que hace
   que se perciba "caro" sin alargar la duracion. */

.uds-anim .uds-ap {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .62s cubic-bezier(.16,.84,.44,1),
              transform .62s cubic-bezier(.16,.84,.44,1),
              filter .45s ease,
              clip-path .72s cubic-bezier(.16,.84,.44,1);
  transition-delay: calc(var(--uds-i, 0) * 65ms);
  will-change: opacity, transform;
}
.uds-anim .uds-ap-t { clip-path: inset(0 0 105% 0); transform: translateY(14px); }
.uds-anim .uds-ap-c { transform: translateY(30px) scale(.975); filter: blur(6px); }
.uds-anim .uds-ap-f { transform: scale(1.05); }

.uds-anim .uds-ap.uds-ver {
  opacity: 1;
  transform: none;
  filter: none;
  /* inset() NO admite valores negativos: el navegador tiraba la regla
     entera y el titulo se quedaba enmascarado para siempre */
  clip-path: inset(0 0 0 0);
  will-change: auto;
}

/* en movil el desenfoque de las tarjetas cuesta caro y apenas se aprecia:
   ahi entran solo subiendo, sin filtro */
@media (max-width: 767px) {
  .uds-anim .uds-ap-c { filter: none; transform: translateY(24px) scale(.985); }
}

/* paralaje de las portadas: la foto se queda quieta y el contenido pasa por
   encima. Solo en escritorio con raton; en tactil da tirones. */
@media (min-width: 1025px) and (hover: hover) {
  .uds-portada { background-attachment: fixed; }
}

@media (prefers-reduced-motion: reduce) {
  .uds-anim .uds-ap,
  .uds-anim .uds-ap-t,
  .uds-anim .uds-ap-c,
  .uds-anim .uds-ap-f {
    opacity: 1 !important; transform: none !important;
    filter: none !important; clip-path: none !important; transition: none !important;
  }
  .uds-portada { background-attachment: scroll; }
}

/* === 55 · TARJETA DEL CIERRE ===
   La llamada final ya no es una banda azul a todo lo ancho pegada al pie:
   es una tarjeta navy sobre fondo claro. En movil se le baja el radio y el
   relleno para que no se coma la pantalla. */
@media (max-width: 767px) {
  .uds-cierre-caja { border-radius: 16px !important; }
}

/* === 56 · VIDEO INSTITUCIONAL ===
   El control de radio del widget de video no llega a la portada, asi que se
   redondea aqui el marco. La miniatura la da YouTube y es de 640px: por eso
   el video va a media columna y no a todo lo ancho, para que se vea nitida. */
.uds-video .elementor-wrapper {
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 16px 36px -18px rgba(23,50,87,.45);
}
.uds-video .elementor-custom-embed-image-overlay img { display: block; width: 100%; height: auto; }

/* === 57 · MOVIMIENTO: TARJETAS, BOTONES Y DETALLES ===
   Todo con transform y opacity, que el navegador resuelve en la GPU y no
   obligan a recalcular la pagina. Nada de librerias.
   Regla de la casa: los recorridos son cortos (2-6px) y rapidos (.2-.35s);
   si se nota "la animacion" es que sobra. */

/* -- tarjetas: se levantan un poco al pasar el cursor -- */
.uds-campus-card, .uds-fila-prog, .uds-form-dep, .uds-noticia, .uds-paso-adm,
.uds-valor, .uds-via, .uds-como, .uds-servicio, .uds-tarjeta-mv, .uds-partido,
.uds-competencia, .uds-of-panel, .uds-folleto, .uds-aula {
  transition: transform .28s cubic-bezier(.22,.61,.36,1), box-shadow .28s cubic-bezier(.22,.61,.36,1);
}
.uds-campus-card:hover, .uds-form-dep:hover, .uds-noticia:hover, .uds-paso-adm:hover,
.uds-valor:hover, .uds-via:hover, .uds-como:hover, .uds-servicio:hover, .uds-tarjeta-mv:hover {
  transform: translateY(-5px);
  box-shadow: 0 18px 34px -20px rgba(23,50,87,.42);
}
/* las filas de programa son anchas: se desplazan de lado, no hacia arriba */
.uds-fila-prog:hover { transform: translateX(4px); box-shadow: 0 12px 26px -18px rgba(23,50,87,.4); }
.uds-fila-prog .elementor-widget-icon { transition: transform .28s cubic-bezier(.22,.61,.36,1); }
.uds-fila-prog:hover .elementor-widget-icon { transform: translateX(4px); }

/* -- botones: elevacion al pasar y hundido al pulsar -- */
.elementor-widget-button .elementor-button {
  transition: background-color .22s ease, color .22s ease, border-color .22s ease,
              transform .18s cubic-bezier(.22,.61,.36,1), box-shadow .22s ease;
}
.elementor-widget-button .elementor-button:hover { transform: translateY(-2px); }
.elementor-widget-button .elementor-button:active { transform: translateY(0); }

/* -- el filete verde de los antetitulos se dibuja al entrar la seccion -- */
/* el estado encogido depende de .uds-anim, que pone el JS: si el JS no
   llegara a ejecutarse, el filete se ve entero desde el principio */
.uds-anim .uds-eyebrow .elementor-heading-title::before {
  transform-origin: left center;
  transform: scaleX(.15);
  transition: transform .55s cubic-bezier(.22,.61,.36,1) .1s;
}
.uds-anim .uds-visible .uds-eyebrow .elementor-heading-title::before { transform: scaleX(1); }

/* -- "Leer mas" de las tarjetas de actualidad: la flecha avanza -- */
.uds-leermas .elementor-heading-title { transition: gap .22s ease; }
.uds-noticia:hover .uds-leermas .elementor-heading-title { letter-spacing: .2px; }

/* -- boton de reproducir del video: late suavemente al pasar por encima -- */
.uds-video .elementor-custom-embed-play i,
.uds-video .elementor-custom-embed-play svg {
  transition: transform .3s cubic-bezier(.22,.61,.36,1), opacity .3s ease;
}
.uds-video .elementor-wrapper:hover .elementor-custom-embed-play i,
.uds-video .elementor-wrapper:hover .elementor-custom-embed-play svg { transform: scale(1.12); }
.uds-video .elementor-custom-embed-image-overlay img { transition: transform .6s cubic-bezier(.22,.61,.36,1); }
.uds-video .elementor-wrapper:hover .elementor-custom-embed-image-overlay img { transform: scale(1.04); }

/* -- desplazamiento suave al pulsar un ancla -- */
html { scroll-behavior: smooth; }

/* quien pide menos movimiento no recibe ninguno */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .uds-campus-card, .uds-fila-prog, .uds-form-dep, .uds-noticia, .uds-paso-adm,
  .uds-valor, .uds-via, .uds-como, .uds-servicio, .uds-tarjeta-mv,
  .elementor-widget-button .elementor-button,
  .uds-video .elementor-custom-embed-image-overlay img { transition: none !important; }
  .uds-campus-card:hover, .uds-fila-prog:hover, .uds-form-dep:hover, .uds-noticia:hover,
  .uds-paso-adm:hover, .uds-valor:hover, .uds-via:hover, .uds-como:hover,
  .uds-servicio:hover, .uds-tarjeta-mv:hover,
  .elementor-widget-button .elementor-button:hover { transform: none !important; }
  .uds-eyebrow .elementor-heading-title::before { transform: none !important; transition: none !important; }
}

/* === 58 · ENTRADAS DEL BLOG ===
   Las paginas usan la plantilla "Elementor a pantalla completa", que ya
   quita la cabecera y el pie del tema. Las ENTRADAS no pueden usar esa
   plantilla, asi que el tema Hello imprime ademas su propia cabecera (con
   el dominio como titulo) y su pie: se ocultan, porque los nuestros los
   pone el constructor de temas de Elementor. */
body #site-header.site-header,
body #site-footer.site-footer { display: none !important; }

/* cuerpo de la entrada: ritmo de lectura */
.uds-entrada .elementor-widget-theme-post-content p { margin: 0 0 1.15em; }
.uds-entrada .elementor-widget-theme-post-content p:last-child { margin-bottom: 0; }
.uds-entrada .elementor-widget-theme-post-content h2,
.uds-entrada .elementor-widget-theme-post-content h3 { color: #173257; margin: 1.6em 0 .5em; }
.uds-entrada .elementor-widget-theme-post-content img { border-radius: 14px; height: auto; }
.uds-entrada .elementor-widget-theme-post-content blockquote {
  margin: 1.4em 0; padding: 4px 0 4px 18px;
  border-left: 3px solid #A2C049; color: #173257; font-style: normal;
}

/* tarjetas del listado de entradas (widget nativo de Elementor) */
.elementor-posts .elementor-post {
  background: #FFFFFF; border: 1px solid #EDF1F7; border-radius: 18px; overflow: hidden;
  transition: transform .28s cubic-bezier(.22,.61,.36,1), box-shadow .28s cubic-bezier(.22,.61,.36,1);
}
.elementor-posts .elementor-post:hover {
  transform: translateY(-5px); box-shadow: 0 18px 34px -20px rgba(23,50,87,.42);
}
.elementor-posts .elementor-post__text { padding: 0 22px 22px; }
.elementor-posts .elementor-post__thumbnail__link { margin-bottom: 18px; }
.elementor-posts .elementor-post__title { margin: 0 0 8px; line-height: 1.3; }
.elementor-posts .elementor-post__title a { color: #173257; }
.elementor-posts .elementor-post__excerpt p { margin: 0; }
.elementor-posts .elementor-post__read-more { font-weight: 700; text-decoration: none; }
@media (prefers-reduced-motion: reduce) {
  .elementor-posts .elementor-post { transition: none !important; }
  .elementor-posts .elementor-post:hover { transform: none !important; }
}/* End custom CSS */