/* Adaptación a tablet (≤ 1024 / 900 px) y celular (≤ 640 px).
 * Las vistas generadas desde diseno/ traen el diseño de escritorio en estilos en línea; estas reglas
 * los reescriben por patrón (atributo style) para no tocar cada vista y sobrevivir a una nueva transpilación.
 * Por eso casi todas llevan !important. */

/* ---------- Cabecera y menú ---------- */
.cabecera-sitio__boton,
.cabecera-sitio > nav > .cabecera-sitio__campus-movil { display: none; }

@media (max-width: 1024px) {
  .cabecera-sitio { height: 72px !important; padding-right: 20px !important; padding-left: 20px !important; }
  .cabecera-sitio > a:first-child img { height: 34px !important; }
  .cabecera-sitio__campus { display: none !important; }

  .cabecera-sitio__boton {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    width: 48px;
    height: 48px;
    border: 0;
    border-radius: 9999px;
    background: #003554;
    cursor: pointer;
  }
  .cabecera-sitio__boton span {
    display: block;
    width: 20px;
    height: 2px;
    border-radius: 2px;
    background: #FFFFFF;
    transition: transform 220ms ease, opacity 220ms ease;
  }
  .menu-abierto .cabecera-sitio__boton span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .menu-abierto .cabecera-sitio__boton span:nth-child(2) { opacity: 0; }
  .menu-abierto .cabecera-sitio__boton span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
  .cabecera-sitio__boton:focus-visible { outline: 3px solid rgba(223, 130, 54, 0.55); outline-offset: 3px; }

  .cabecera-sitio > nav {
    position: absolute;
    top: 100%;
    right: 0;
    left: 0;
    display: none !important;
    flex-direction: column;
    gap: 0 !important;
    max-height: calc(100vh - 72px);
    overflow-y: auto;
    box-sizing: border-box;
    padding: 8px 20px 24px;
    background: #FFFFFF;
    border-bottom: 1px solid #E7E7E4;
    box-shadow: 0 24px 40px -24px rgba(0, 53, 84, 0.35);
    font-size: 16px !important;
  }
  .cabecera-sitio.menu-abierto > nav { display: flex !important; }
  .cabecera-sitio > nav > a {
    padding: 16px 4px !important;
    border-bottom: 1px solid #F0F0EE !important;
  }
  .cabecera-sitio > nav > a::after { display: none; }
  .cabecera-sitio > nav > a:hover,
  .cabecera-sitio > nav > a:focus-visible { transform: none !important; }
  .cabecera-sitio > nav > a[aria-current="page"] { color: #A34E17 !important; box-shadow: inset 4px 0 0 #DF8236; padding-left: 16px !important; }
  .cabecera-sitio > nav > .cabecera-sitio__campus-movil {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 52px;
    margin-top: 20px;
    padding: 0 24px !important;
    border: 0 !important;
    border-radius: 9999px;
    background: #003554;
    color: #FFFFFF !important;
    letter-spacing: 0.05em;
  }
}

@media (prefers-reduced-motion: reduce) {
  .cabecera-sitio__boton span { transition: none; }
}

/* ---------- Secciones generadas ---------- */
@media (max-width: 900px) {
  body { overflow-x: clip; }

  :is(#contenido, body > section) section[style*="80px"],
  :is(#contenido, body > section)[style*="80px"],
  #contenido > [style*="80px"] { padding-right: 32px !important; padding-left: 32px !important; }
  #contenido section[style*="padding: 32px 80px 152px"] { padding-bottom: 64px !important; }
  #contenido section[style*="padding: 24px 80px 48px"] { padding-top: 16px !important; padding-bottom: 32px !important; }

  /* Rejillas de 12 columnas (cabeceras, detalle de programa, nosotros): una sola columna. */
  #contenido [style*="grid-template-columns: repeat(12"] { grid-template-columns: minmax(0, 1fr) !important; row-gap: 24px; }
  #contenido [style*="grid-template-columns: repeat(12"] > * { grid-column: auto !important; }
  #contenido [style*="8fr) minmax(300px, 4fr)"] { grid-template-columns: minmax(0, 1fr) !important; }

  /* Cabeceras: altura libre, foto debajo del texto y barra de datos en el flujo. */
  #contenido [style*="height: 600px"],
  #contenido [style*="height: 380px"],
  #contenido [style*="height: 340px"] { height: auto !important; min-height: 0 !important; row-gap: 0 !important; }
  #contenido [style*="height: 600px"] > [aria-hidden="true"],
  #contenido [style*="height: 340px"] > [aria-hidden="true"],
  #contenido [style*="height: 380px"] > [aria-hidden="true"] { width: 100% !important; border-radius: 32px !important; }
  #contenido [style*="padding: 72px 64px 120px"] { padding: 48px 32px 32px !important; }
  #contenido [style*="height: 600px"][style*="display: grid"] { grid-template-columns: minmax(0, 1fr) !important; }
  #contenido [style*="height: 600px"] > :not([aria-hidden="true"]):not(ul) { grid-column: auto !important; }
  #contenido ul[style*="position: absolute"][style*="bottom: -72px"] { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) !important; }
  #contenido ul[style*="bottom: -72px"] > li { gap: 14px !important; padding: 12px 20px !important; font-size: 18px !important; }
  #contenido ul[style*="bottom: -72px"] > li > span:first-child { width: 48px !important; height: 48px !important; border-radius: 14px !important; }
  #contenido .foto-marco--cabecera { height: 320px; padding: 0 16px 16px; }
  #contenido .foto-marco--cabecera::before { display: none; }
  #contenido .foto-marco--cabecera::after { inset: 0 16px 16px; }
  #contenido ul[style*="position: absolute"][style*="bottom: -72px"] {
    position: relative !important;
    right: auto !important;
    bottom: auto !important;
    left: auto !important;
    height: auto !important;
    margin: 0 16px 16px !important;
    padding: 8px 0 !important;
  }

  /* Nosotros: foto vertical más baja y el logo flotante dentro de la foto. */
  #contenido [style*="height: 760px"] { height: 520px !important; }
  #contenido [style*="left: -48px; bottom: 48px; width: 280px"] { left: 16px !important; bottom: 16px !important; }

  /* Tarjetas en filas de tres: dos por fila. */
  #contenido [style*="width: calc((100% - 48px) / 3)"] { width: calc((100% - 24px) / 2) !important; }
  #contenido [style*="grid-template-columns: repeat(3, minmax(0"],
  #contenido [style*="grid-template-columns: repeat(4, minmax(0"] { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }

  /* Títulos grandes. */
  #contenido [style*="font-size: 120px"] { font-size: 80px !important; }
  #contenido [style*="font-size: 88px"] { font-size: 64px !important; }
  #contenido [style*="font-size: 72px"] { font-size: 56px !important; }
}

@media (max-width: 640px) {
  :is(#contenido, body > section) section[style*="80px"],
  :is(#contenido, body > section)[style*="80px"],
  #contenido > [style*="80px"] { padding-right: 16px !important; padding-left: 16px !important; }
  #contenido > [style*="padding: 0 80px 112px"],
  #contenido > [style*="padding: 0px 80px 112px"] { padding-bottom: 64px !important; }

  /* Filas con ícono a la izquierda (perfiles, objetivos): ícono arriba y texto a todo el ancho. */
  #contenido [style*="padding: 32px 36px 36px 36px"] { flex-direction: column; gap: 16px !important; padding: 24px 20px !important; min-height: 0 !important; }
  #contenido section[style*="padding: 112px 80px"],
  #contenido section[style*="padding: 96px 80px"],
  #contenido section[style*="padding: 80px"],
  body > section[style*="padding: 80px"] { padding-top: 56px !important; padding-bottom: 56px !important; }
  #contenido section[style*="padding: 32px 80px 152px"] { padding-top: 16px !important; padding-bottom: 48px !important; }

  /* Bloques con mucho relleno interior. */
  #contenido [style*="padding: 48px"],
  #contenido [style*="padding: 56px"],
  #contenido [style*="padding: 64px"],
  body > section [style*="padding: 56px"] { padding: 28px 24px !important; }
  #contenido [style*="padding: 72px 64px 120px"] { padding: 40px 24px 28px !important; }
  #contenido [style*="padding: 40px 44px"] { padding: 28px 24px !important; }

  /* Rejillas: una columna (salvo las piezas pequeñas que se marcan abajo). */
  #contenido [style*="grid-template-columns: repeat(2, minmax(0"],
  #contenido [style*="grid-template-columns: repeat(3, minmax(0"],
  #contenido [style*="grid-template-columns: repeat(4, minmax(0"],
  #contenido [style*="grid-template-columns: 1fr 1fr"],
  body > section [style*="grid-template-columns: repeat(2, minmax(0"] { grid-template-columns: minmax(0, 1fr) !important; }
  #contenido [style*="grid-template-columns"] > [style*="grid-column"] { grid-column: auto !important; }
  /* Pares de logos (Mangus | universidad) y datos cortos siguen en dos columnas. */
  #contenido [style*="height: 84px"][style*="grid-template-columns: repeat(2, minmax(0"] { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }

  #contenido [style*="width: calc((100% - 48px) / 3)"] { width: 100% !important; }
  #contenido .foto-marco--cabecera { height: 260px; }
  #contenido ul[style*="position: absolute"][style*="bottom: -72px"] { grid-template-columns: minmax(0, 1fr) !important; }
  #contenido ul[style*="bottom: -72px"] > li { padding: 14px 20px !important; font-size: 18px !important; border-left: 0 !important; }
  #contenido ul[style*="bottom: -72px"] > li + li { border-top: 1px solid #E7E7E4; }
  #contenido ul[style*="bottom: -72px"] > li > span:first-child { width: 48px !important; height: 48px !important; border-radius: 14px !important; }

  /* Títulos y textos grandes. */
  #contenido [style*="font-size: 120px"] { font-size: 56px !important; }
  #contenido [style*="font-size: 88px"] { font-size: 48px !important; }
  #contenido [style*="font-size: 72px"] { font-size: 40px !important; }
  #contenido [style*="font-size: 56px"],
  #contenido [style*="font-size: 52px"] { font-size: 36px !important; line-height: 1.08 !important; }
  #contenido [style*="font-size: 48px"] { font-size: 34px !important; }
  #contenido [style*="font-size: 46px"],
  #contenido [style*="font-size: 44px"],
  #contenido [style*="font-size: 42px"],
  #contenido [style*="font-size: 40px"],
  body > section [style*="font-size: 46px"] { font-size: 30px !important; }
  #contenido [style*="font-size: 36px"] { font-size: 28px !important; }
  #contenido [style*="font-size: 26px"] { font-size: 22px !important; }
  #contenido [style*="font-size: 24px"] { font-size: 20px !important; }

  /* Nosotros: foto vertical más baja y el logo flotante dentro de la foto. */
  #contenido [style*="height: 760px"] { height: 440px !important; }
  #contenido [style*="left: -48px; bottom: 48px; width: 280px"] { left: 16px !important; bottom: 16px !important; width: 200px !important; height: 92px !important; }
  #contenido [style*="left: -48px; bottom: 48px; width: 280px"] img { max-width: 140px !important; height: auto !important; }

  #contenido [style*="display: flex; gap: 16px"] { flex-wrap: wrap; }

  /* Franjas con ícono, texto y botón (financiación): el botón baja y ocupa todo el ancho. */
  #contenido section[style*="padding: 32px 36px; display: flex; align-items: center"] { flex-wrap: wrap; padding: 24px 20px !important; }
  #contenido section[style*="padding: 32px 36px; display: flex; align-items: center"] > div { flex-basis: calc(100% - 80px); }
  #contenido section[style*="padding: 32px 36px; display: flex; align-items: center"] > a { flex-shrink: 1 !important; width: 100%; height: auto !important; min-height: 52px; justify-content: center; text-align: center; }

  /* Grupos de botones: uno debajo del otro, a todo el ancho. */
  #contenido [style*="display: flex; gap: 12px; margin-top"] { flex-direction: column; align-items: stretch; align-self: stretch; width: 100%; }
  #contenido [style*="display: flex; gap: 12px; margin-top"] > a { justify-content: space-between; white-space: nowrap; }
  #contenido [style*="display: flex; gap: 12px; margin-top"] > a:not([style*="background: #DF8236"]) { justify-content: center; }

  /* Llamado a la acción final. */
  body > section [style*="height: 96px"] { height: auto !important; min-height: 76px; padding-top: 12px !important; padding-bottom: 12px !important; }
  body > section [style*="height: 96px"] > span:first-child { gap: 12px !important; font-size: 15px !important; }
  body > section [style*="height: 96px"] span[style*="width: 56px"],
  body > section [style*="height: 96px"] > span:last-child { flex-shrink: 0; }
}

@media (max-width: 900px) {
  /* El globo decorativo del llamado tapa el título en pantallas angostas. */
  body > section svg[style*="right: 36px; bottom: 28px"] { display: none; }
}

@media (max-width: 640px) {
  /* Botón flotante de WhatsApp de Contáctenos: más pequeño y pegado a la esquina. */
  #contenido a[style*="position: fixed; right: 32px; bottom: 32px"] { right: 16px !important; bottom: 16px !important; width: 56px !important; height: 56px !important; }
  /* Contáctenos: correos en una línea y foto de la cabecera con las esquinas de abajo redondeadas. */
  #contenido a[href^="mailto:"] { gap: 14px !important; padding: 16px 18px !important; }
  #contenido a[href^="mailto:"] > span:first-child { width: 48px !important; height: 48px !important; }
  #contenido a[href^="mailto:"] > span:last-child > span:last-child { font-size: 17px !important; }
  #contenido img[src*="contactenos-cabecera"] { height: 240px !important; border-radius: 0 0 32px 32px !important; }
}

@media (max-width: 640px) {
  /* Doble titulación: las dos tarjetas una debajo de la otra con el «+» en medio. */
  #contenido [style*="1fr) 48px minmax(0"] { grid-template-columns: minmax(0, 1fr) !important; }
  #contenido [style*="1fr) 48px minmax(0"] > :nth-child(2) { justify-self: center; }
  #contenido [style*="1fr) 48px minmax(0"] > [style*="min-height: 250px"],
  #contenido [style*="1fr) 48px minmax(0"] > [style*="min-height: 210px"] { min-height: 0 !important; padding: 24px !important; }
}

/* Llamado final: la sección anterior ya deja su margen inferior, así que el llamado no suma otro arriba. */
@media (max-width: 900px) {
  body > section[style*="padding: 80px 80px 96px"] { padding-top: 0 !important; padding-bottom: 64px !important; }
}
@media (max-width: 640px) {
  body > section[style*="padding: 80px 80px 96px"] { padding-bottom: 48px !important; }
  #contenido > [style*="padding: 0 80px 112px"],
  #contenido > [style*="padding: 0px 80px 112px"] { padding-bottom: 48px !important; }
}
@media (max-width: 900px) {
  /* Si la página termina en una franja de color de borde a borde (testimonios), el llamado sí necesita aire arriba. */
  #contenido:has(> :is(.seccion-testimonios, .seccion-fondo-completo):last-child) + section { padding-top: 48px !important; }
}

@media (max-width: 900px) {
  /* Páginas de programa: la ficha (universidad, modalidad, duración, inversión) va primero, antes del contenido. */
  #contenido aside[style*="position: sticky"][style*="top: 24px"],
  #contenido .programa-tecnico-aside { order: -1; }
}

/* ---------- Inicio (componentes mantenidos a mano en template-parts/inicio/) ---------- */
@media (max-width: 900px) {
  .servicios-inicio { padding: 48px 32px 64px !important; }
  .servicios-inicio__lista { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 16px !important; }
  .servicio-inicio { height: auto !important; min-height: 200px; gap: 28px; }
  /* Los puntos corresponden a la vista de tres tarjetas; aquí se navega con las flechas o deslizando. */
  .testimonios__puntos { display: none !important; }
}

@media (max-width: 640px) {
  /* Portada: la foto arriba a la vista y el texto debajo sobre el azul, sin tapar la cara. */
  .portada-inicio { padding: 12px !important; }
  .portada-inicio__marco { height: auto !important; border-radius: 28px !important; display: flex; flex-direction: column; }
  .portada-inicio__foto { position: relative !important; inset: auto !important; height: 300px !important; object-position: 78% 30%; }
  .portada-inicio__degradado { bottom: auto !important; height: 300px; background: linear-gradient(180deg, rgba(0,53,84,0) 45%, rgba(0,53,84,0.7) 80%, #003554 100%) !important; }
  .portada-inicio__texto { height: auto !important; max-width: none !important; margin-top: -48px; padding: 0 22px 26px !important; gap: 16px !important; }
  .portada-inicio__texto h1 { font-size: 34px !important; line-height: 1.08 !important; letter-spacing: -0.03em !important; }
  .portada-inicio__texto p { font-size: 16px !important; line-height: 1.55 !important; }
  .portada-inicio__botones { flex-direction: column; gap: 10px !important; margin-top: 6px; }
  .portada-inicio__botones > a { height: 52px !important; justify-content: center; font-size: 15px !important; }

  /* Servicios: tarjetas en una fila compacta (ícono a la izquierda, título y texto a la derecha). */
  .servicios-inicio { padding: 32px 16px 48px !important; }
  .servicios-inicio__lista { grid-template-columns: minmax(0, 1fr) !important; gap: 12px !important; }
  .servicio-inicio { min-height: 0; flex-direction: row !important; align-items: center; justify-content: flex-start !important; gap: 16px; padding: 20px !important; border-radius: 20px !important; }
  .servicio-inicio__icono { flex-shrink: 0; width: 48px !important; height: 48px !important; }
  .servicio-inicio h3 { font-size: 18px !important; }
  .servicio-inicio p { font-size: 14px !important; line-height: 1.45 !important; }

  /* Testimonios: la tarjeta crece con el texto en vez de recortarlo. */
  .testimonio { height: auto !important; min-height: 100%; padding: 28px 22px 22px !important; gap: 18px !important; }
  .testimonio blockquote { font-size: 15px !important; }
  .testimonios__cabecera { align-items: center !important; gap: 16px; }
  .testimonios__cabecera h2 { font-size: 30px !important; }
}

@media (max-width: 900px) {
  .testimonio { height: auto !important; min-height: 100%; }
  /* Llamado final: una sola columna también en tablet; en dos columnas el título y los botones quedan apretados. */
  body > section [style*="grid-template-columns: repeat(2, minmax(0"] { grid-template-columns: minmax(0, 1fr) !important; }
  body > section [style*="font-size: 46px"] { font-size: 36px !important; }
  body > section [style*="height: 96px"] span[style*="width: 56px"],
  body > section [style*="height: 96px"] > span:last-child { flex-shrink: 0; }
}

/* ---------- Nosotros (componentes mantenidos a mano en template-parts/nosotros/) ---------- */
@media (max-width: 640px) {
  #contenido [style*="font-size: 22px; line-height: 1.55"] { font-size: 17px !important; }
  .tarjeta-proposito { min-height: 0 !important; padding: 28px 24px !important; }
  .tarjeta-proposito-meta [style*="font-size: 30px"] { font-size: 22px !important; }
  .tarjeta-proposito-meta [style*="font-size: 44px"] { font-size: 24px !important; }
  .textura-ecosistema img { max-width: 220px !important; }
  .textura-ecosistema > div { row-gap: 20px !important; }

  /* Beneficios: fila compacta con el ícono al lado del título, como los servicios de Inicio. */
  .mosaico-beneficios { padding-top: 16px !important; }
  .mosaico-beneficios__lista { gap: 12px !important; }
  .mosaico-beneficio,
  .mosaico-beneficio--ancho { min-height: 0 !important; flex-direction: row; align-items: center; justify-content: flex-start; gap: 16px; padding: 22px 20px !important; }
  .mosaico-beneficio__icono { flex-shrink: 0; }
  .mosaico-beneficio__titulo { font-size: 20px !important; }
}

@media (max-width: 640px) {
  /* Botón principal de las cabeceras de listado («EXPLORAR ESPECIALIZACIONES»): cabe en una línea. */
  #contenido a[style*="height: 60px; padding: 0 12px 0 32px"] { align-self: stretch !important; justify-content: space-between; height: 56px !important; padding: 0 8px 0 20px !important; gap: 12px !important; font-size: 13px !important; letter-spacing: 0.02em !important; white-space: nowrap; }
}

@media (max-width: 900px) {
  /* Nosotros en tablet: tarjetas de propósito sin la altura mínima de escritorio y menos aire antes de los beneficios. */
  .tarjeta-proposito { min-height: 0 !important; gap: 24px !important; }
  .mosaico-beneficios { padding-top: 24px !important; }
}

@media (max-width: 900px) {
  #contenido img[src*="contactenos-cabecera"] { height: 320px !important; border-radius: 0 0 32px 32px !important; }
}
@media (max-width: 640px) {
  #contenido img[src*="contactenos-cabecera"] { height: 240px !important; }
}
