/* =========================================================================
   base.css — estructura y componentes comunes a TODAS las plantillas.
   Cada tema (css/temas/*.css) redefine las variables y agrega su personalidad.
   Los colores de la institución (--c-primario, --c-secundario...) los inyecta _Head.cshtml.
   ========================================================================= */

:root {
    /* Neutros (los temas los ajustan) */
    --c-fondo: #ffffff;
    --c-superficie: #f4f5f7;
    --c-tinta: #1d232b;
    --c-tinta-suave: #56606c;
    --c-linea: #dde1e6;
    --c-error: #b42318;
    --c-exito: #1a7f4b;
    --c-acento: var(--c-primario);
    --c-acento-texto: var(--c-primario-texto);

    /* Tipografía (los temas definen las familias) */
    --f-titulos: Georgia, "Times New Roman", serif;
    --f-texto: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    --t-base: 1.0625rem;
    --t-pequeno: 0.875rem;
    --t-h3: 1.25rem;
    --t-h2: clamp(1.6rem, 1.2rem + 1.5vw, 2.25rem);
    --t-h1: clamp(2.1rem, 1.4rem + 3vw, 3.5rem);
    --interlineado: 1.6;

    /* Espaciado y forma */
    --ancho: 72rem;
    --ancho-texto: 42rem;
    --gutter: clamp(1rem, 0.5rem + 2vw, 2rem);
    --seccion: clamp(3rem, 2rem + 4vw, 5.5rem);
    --radio: 6px;
    --sombra: 0 1px 2px rgb(16 24 40 / 6%), 0 8px 24px rgb(16 24 40 / 6%);
}

/* ---------- Reset mínimo ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
    margin: 0;
    font-family: var(--f-texto);
    font-size: var(--t-base);
    line-height: var(--interlineado);
    color: var(--c-tinta);
    background: var(--c-fondo);
    text-rendering: optimizeLegibility;
}
img, svg, iframe { display: block; max-width: 100%; }
img { height: auto; }
h1, h2, h3, h4 { font-family: var(--f-titulos); line-height: 1.15; margin: 0 0 0.5em; text-wrap: balance; }
p { margin: 0 0 1em; text-wrap: pretty; }
a { color: var(--c-primario); text-underline-offset: 0.18em; }
a:hover { color: var(--c-primario-oscuro); }
ul, ol { padding-left: 1.25rem; }
button, input, select, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 3px solid var(--c-secundario); outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

.ico { width: 1.15em; height: 1.15em; flex: none; display: inline-block; vertical-align: -0.2em; }
.visualmente-oculto {
    position: absolute !important; width: 1px; height: 1px; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap;
}
.saltar {
    position: absolute; left: 1rem; top: -4rem; z-index: 100;
    background: var(--c-tinta); color: #fff; padding: 0.5rem 1rem; border-radius: var(--radio);
}
.saltar:focus { top: 1rem; color: #fff; }

/* ---------- Layout ---------- */
.contenedor { width: min(100% - 2 * var(--gutter), var(--ancho)); margin-inline: auto; }
.contenedor--texto { max-width: var(--ancho-texto); }
.seccion { padding-block: var(--seccion); }
.seccion--suave { background: var(--c-superficie); }
.seccion__titulo { font-size: var(--t-h2); }
.seccion__titulo a { color: inherit; text-decoration: none; }
.seccion__bajada { color: var(--c-tinta-suave); max-width: var(--ancho-texto); }
.subtitulo { font-size: var(--t-h3); margin-top: 2rem; }
.nota { font-size: var(--t-pequeno); color: var(--c-tinta-suave); }

.rejilla { display: grid; gap: clamp(1rem, 0.5rem + 2vw, 2rem); }
.rejilla--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); }
.rejilla--fichas { grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); }
.rejilla--noticias { grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr)); }

.dos-columnas { display: grid; gap: 1rem 3rem; }
@media (min-width: 52rem) {
    .dos-columnas { grid-template-columns: 1fr 2fr; align-items: start; }
}

.detalle { display: grid; gap: 2.5rem; }
@media (min-width: 60rem) {
    .detalle { grid-template-columns: minmax(0, 1fr) 24rem; align-items: start; }
    .detalle__lateral { position: sticky; top: 1.5rem; }
}
.detalle__imagen { border-radius: var(--radio); margin-bottom: 1.5rem; width: 100%; }

/* ---------- Cabecera de páginas internas ---------- */
.cabecera-pagina { background: var(--c-primario-suave); padding-block: clamp(2.5rem, 2rem + 3vw, 4.5rem); }
.cabecera-pagina__ante { font-size: var(--t-pequeno); color: var(--c-tinta-suave); margin-bottom: 0.5rem; }
.cabecera-pagina__titulo { font-size: var(--t-h1); max-width: 22ch; }
.cabecera-pagina__bajada { font-size: 1.15rem; color: var(--c-tinta-suave); max-width: var(--ancho-texto); margin: 0; }

/* ---------- Botones ---------- */
.boton {
    display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
    min-height: 2.9rem; padding: 0.6rem 1.35rem;
    border: 2px solid transparent; border-radius: var(--radio);
    font-weight: 600; line-height: 1.2; text-decoration: none; cursor: pointer;
    transition: background-color 0.15s, color 0.15s, border-color 0.15s;
}
.boton--primario { background: var(--c-primario); color: var(--c-primario-texto); }
.boton--primario:hover { background: var(--c-primario-oscuro); color: var(--c-primario-texto); }
.boton--secundario { background: var(--c-secundario); color: var(--c-secundario-texto); }
.boton--secundario:hover { filter: brightness(0.94); color: var(--c-secundario-texto); }
.boton--contorno { border-color: currentColor; color: var(--c-primario); background: transparent; }
.boton--contorno:hover { background: var(--c-primario-suave); }
.boton--bloque { display: flex; width: 100%; }
.boton + .boton { margin-left: 0.5rem; }
.boton--bloque + .boton--bloque { margin: 0.75rem 0 0; }

/* ---------- Menú (estructura; cada tema lo estiliza) ---------- */
.menu__lista { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.25rem 1.5rem; }
.menu__enlace { text-decoration: none; color: inherit; font-weight: 500; padding-block: 0.4rem; display: inline-block; }
.menu__enlace[aria-current="page"] { color: var(--c-primario); }
.menu-boton { display: none; background: none; border: 0; padding: 0.5rem; cursor: pointer; }
.menu-boton .ico { width: 1.6rem; height: 1.6rem; }

@media (max-width: 60rem) {
    .menu-boton { display: inline-flex; }
    .menu { display: none; width: 100%; }
    .menu.abierto { display: block; }
    .menu__lista { flex-direction: column; gap: 0; padding-block: 0.5rem 1rem; }
    .menu__enlace { display: block; padding: 0.75rem 0; border-bottom: 1px solid var(--c-linea); }
}

.redes { list-style: none; margin: 0; padding: 0; display: flex; gap: 0.75rem; }
.redes a { color: inherit; display: inline-flex; padding: 0.25rem; }
.redes .ico { width: 1.25rem; height: 1.25rem; }

/* ---------- Fichas de oferta ---------- */
.ficha { display: flex; flex-direction: column; gap: 0.75rem; }
.ficha__imagen { border-radius: var(--radio); aspect-ratio: 16 / 9; object-fit: cover; width: 100%; }
.ficha__titulo { font-size: var(--t-h3); margin: 0; }
.ficha__titulo a { color: inherit; text-decoration: none; }
.ficha__titulo a:hover { color: var(--c-primario); text-decoration: underline; }
.ficha__resumen { color: var(--c-tinta-suave); margin: 0; }
.ficha__datos { margin: auto 0 0; display: grid; gap: 0.35rem; font-size: var(--t-pequeno); }
.ficha__datos div { display: grid; grid-template-columns: 7.5rem 1fr; gap: 0.5rem; }
.ficha__datos dt { color: var(--c-tinta-suave); }
.ficha__datos dd { margin: 0; font-weight: 600; }
.ficha__datos--apilado { margin-bottom: 1.25rem; font-size: 1rem; }
.ficha__datos--apilado div { grid-template-columns: 1fr; gap: 0; padding-block: 0.6rem; border-bottom: 1px solid var(--c-linea); }

.caja { background: var(--c-fondo); border: 1px solid var(--c-linea); border-radius: var(--radio); padding: 1.5rem; }

/* ---------- Malla curricular ---------- */
.malla { list-style: none; padding: 0; margin: 0; counter-reset: modulo; }
.malla__item { counter-increment: modulo; padding: 1rem 0 1rem 3rem; border-bottom: 1px solid var(--c-linea); position: relative; }
.malla__item::before {
    content: counter(modulo); position: absolute; left: 0; top: 0.9rem;
    width: 2rem; height: 2rem; display: grid; place-items: center; border-radius: 50%;
    background: var(--c-primario-suave); color: var(--c-primario); font-weight: 700; font-size: var(--t-pequeno);
}
.malla__nombre { font-weight: 600; }
.malla__horas { color: var(--c-tinta-suave); font-size: var(--t-pequeno); margin-left: 0.5rem; }
.malla__descripcion { margin: 0.25rem 0 0; color: var(--c-tinta-suave); }

/* ---------- Texto enriquecido ---------- */
.prosa > :last-child { margin-bottom: 0; }
.prosa h2 { font-size: 1.5rem; margin-top: 2rem; }
.prosa h3 { font-size: 1.2rem; margin-top: 1.5rem; }
.prosa li { margin-bottom: 0.35rem; }
.prosa img { border-radius: var(--radio); margin-block: 1.5rem; }
.prosa--pasos ul, .prosa--pasos ol { list-style: none; padding: 0; counter-reset: paso; }
.prosa--pasos li { counter-increment: paso; padding-left: 2.5rem; position: relative; margin-bottom: 0.9rem; }
.prosa--pasos li::before {
    content: counter(paso); position: absolute; left: 0; top: 0;
    width: 1.75rem; height: 1.75rem; border-radius: 50%; display: grid; place-items: center;
    background: var(--c-primario); color: var(--c-primario-texto); font-size: var(--t-pequeno); font-weight: 700;
}

/* ---------- Nosotros ---------- */
.declaracion__titulo { font-size: var(--t-h3); }
.declaracion p { font-size: 1.15rem; margin: 0; }
.valores { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.75rem; }
.valores li { padding: 0.5rem 1rem; border: 1px solid var(--c-linea); border-radius: 999px; font-weight: 500; }
.mensaje-director { margin: 0; max-width: var(--ancho-texto); }
.mensaje-director blockquote { margin: 0 0 1.25rem; font-size: 1.2rem; }
.mensaje-director figcaption { display: flex; align-items: center; gap: 0.75rem; }
.mensaje-director figcaption img { border-radius: 50%; }
.mensaje-director figcaption span { display: flex; flex-direction: column; color: var(--c-tinta-suave); }
.mensaje-director figcaption strong { color: var(--c-tinta); }

.personas { list-style: none; padding: 0; margin: 0 0 1rem; display: grid; gap: 1.5rem; grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); }
.persona { display: flex; flex-direction: column; gap: 0.15rem; }
.persona__foto { width: 6rem; height: 6rem; border-radius: 50%; object-fit: cover; margin-bottom: 0.5rem; }
.persona__foto--iniciales {
    display: grid; place-items: center; background: var(--c-primario-suave); color: var(--c-primario);
    font-family: var(--f-titulos); font-weight: 700; font-size: 1.5rem;
}
.persona__nombre { font-weight: 600; }
.persona__cargo { color: var(--c-tinta-suave); font-size: var(--t-pequeno); }

.tabla-responsive { overflow-x: auto; }
.tabla { width: 100%; border-collapse: collapse; }
.tabla th, .tabla td { text-align: left; padding: 0.75rem; border-bottom: 1px solid var(--c-linea); }
.tabla th { font-size: var(--t-pequeno); color: var(--c-tinta-suave); font-weight: 600; }

.datos-oficiales { margin: 0 0 2rem; display: grid; gap: 0; border-top: 1px solid var(--c-linea); }
.datos-oficiales div { display: grid; grid-template-columns: minmax(8rem, 12rem) 1fr; gap: 1rem; padding: 0.7rem 0; border-bottom: 1px solid var(--c-linea); }
.datos-oficiales dt { color: var(--c-tinta-suave); }
.datos-oficiales dd { margin: 0; font-weight: 500; overflow-wrap: anywhere; }

/* ---------- Noticias / eventos / galería ---------- */
.noticia { display: flex; flex-direction: column; gap: 0.4rem; }
.noticia__imagen { border-radius: var(--radio); aspect-ratio: 16 / 9; object-fit: cover; width: 100%; margin-bottom: 0.5rem; }
.noticia__fecha { font-size: var(--t-pequeno); color: var(--c-tinta-suave); }
.noticia__titulo { font-size: var(--t-h3); margin: 0; }
.noticia__titulo a { color: inherit; text-decoration: none; }
.noticia__titulo a:hover { color: var(--c-primario); text-decoration: underline; }
.noticia__resumen { color: var(--c-tinta-suave); margin: 0; }

.paginacion { display: flex; align-items: center; justify-content: center; gap: 1rem; margin-top: 3rem; flex-wrap: wrap; }

.eventos { list-style: none; padding: 0; margin: 0 0 2rem; }
.evento { display: grid; grid-template-columns: 4rem 1fr; gap: 1.25rem; padding-block: 1.25rem; border-bottom: 1px solid var(--c-linea); }
.evento__fecha { display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: var(--radio); background: var(--c-primario); color: var(--c-primario-texto); height: 4rem; line-height: 1; }
.evento__dia { font-size: 1.6rem; font-weight: 700; font-family: var(--f-titulos); }
.evento__mes { font-size: 0.8rem; text-transform: lowercase; }
.evento__titulo { font-size: 1.15rem; margin: 0 0 0.25rem; }
.evento__meta { color: var(--c-tinta-suave); margin: 0; font-size: var(--t-pequeno); }
.eventos--pasados .evento__fecha { background: var(--c-superficie); color: var(--c-tinta-suave); }

.albumes, .galeria { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); }
.album a { color: inherit; text-decoration: none; display: flex; flex-direction: column; gap: 0.25rem; }
.album img, .album__vacio { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; border-radius: var(--radio); background: var(--c-primario-suave); margin-bottom: 0.5rem; }
.album__titulo { font-weight: 600; }
.album__fecha { font-size: var(--t-pequeno); color: var(--c-tinta-suave); }
.galeria__item img, .galeria__item iframe { aspect-ratio: 3 / 2; width: 100%; height: auto; object-fit: cover; border: 0; border-radius: var(--radio); }

.documentos { list-style: none; padding: 0; margin: 0 0 2rem; }
.documento { display: flex; align-items: center; gap: 0.75rem; padding: 0.9rem 0; border-bottom: 1px solid var(--c-linea); text-decoration: none; color: inherit; }
.documento__titulo { flex: 1; font-weight: 500; }
.documento__peso { font-size: var(--t-pequeno); color: var(--c-tinta-suave); }

/* ---------- FAQ ---------- */
.faqs { border-top: 1px solid var(--c-linea); }
.faq { border-bottom: 1px solid var(--c-linea); }
.faq summary { cursor: pointer; padding: 1rem 2rem 1rem 0; font-weight: 600; list-style: none; position: relative; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: 0.25rem; top: 0.8rem; font-size: 1.4rem; line-height: 1; color: var(--c-primario); }
.faq[open] summary::after { content: "−"; }
.faq p { margin: 0 0 1rem; color: var(--c-tinta-suave); }

/* ---------- Formularios ---------- */
.formulario { display: grid; gap: 1rem; }
.formulario__titulo { font-size: 1.35rem; margin: 0; }
.formulario .nota { margin: -0.5rem 0 0; }
.campo { display: grid; gap: 0.35rem; }
.campo label { font-weight: 600; font-size: 0.95rem; }
.campo input, .campo select, .campo textarea {
    width: 100%; min-height: 2.9rem; padding: 0.6rem 0.8rem;
    border: 1px solid #b9c0c9; border-radius: var(--radio); background: #fff;
}
.campo input:focus, .campo select:focus, .campo textarea:focus { outline: 2px solid var(--c-primario); outline-offset: 0; border-color: var(--c-primario); }
.campo textarea { resize: vertical; }
.campo__error { color: var(--c-error); font-size: var(--t-pequeno); }
.campo__error:empty { display: none; }
.campo__ayuda { color: var(--c-tinta-suave); font-size: var(--t-pequeno); }
.input-validation-error { border-color: var(--c-error) !important; }
.campo-doble { display: grid; gap: 1rem; }
@media (min-width: 36rem) { .campo-doble { grid-template-columns: 1fr 1fr; } }
.campo--check { grid-template-columns: auto 1fr; align-items: start; column-gap: 0.6rem; }
.campo--check input { width: 1.2rem; height: 1.2rem; min-height: 0; margin-top: 0.2rem; accent-color: var(--c-primario); }
.campo--check label { font-weight: 400; }
.campo--check .campo__error { grid-column: 1 / -1; }
.campo--trampa { position: absolute; left: -9999px; }
.grupo { border: 0; padding: 0; margin: 0 0 1rem; display: grid; gap: 1rem; }
.grupo legend { font-family: var(--f-titulos); font-size: 1.2rem; font-weight: 700; margin-bottom: 1rem; padding: 0; }
.opciones { display: grid; gap: 0.5rem; }
.opcion { display: flex; gap: 0.6rem; align-items: flex-start; padding: 0.75rem 1rem; border: 1px solid var(--c-linea); border-radius: var(--radio); cursor: pointer; }
.opcion input { margin-top: 0.35rem; accent-color: var(--c-primario); }
.formulario--linea { grid-template-columns: 1fr; align-items: end; margin-bottom: 2rem; }
@media (min-width: 40rem) { .formulario--linea { grid-template-columns: 1fr 1fr auto; } }

.aviso { padding: 1rem 1.25rem; border-radius: var(--radio); border-left: 4px solid; }
.aviso p { margin: 0; }
.aviso--error { background: #fef3f2; border-color: var(--c-error); color: #7a271a; }
.aviso--error:empty, .validation-summary-valid { display: none; }
.aviso ul { margin: 0; }

/* ---------- Confirmaciones ---------- */
.confirmacion { text-align: center; }
.confirmacion__ico { width: 3.5rem; height: 3.5rem; margin: 0 auto 1rem; color: var(--c-exito); }
.confirmacion__titulo { font-size: var(--t-h2); }
.confirmacion .datos-oficiales { text-align: left; }
.constancia__codigo { font-family: var(--f-titulos); font-size: 2rem; font-weight: 700; color: var(--c-primario); }

/* ---------- Certificados ---------- */
.certificado { border: 2px solid var(--c-exito); border-radius: var(--radio); padding: 1.25rem 1.5rem 0.25rem; margin-bottom: 1.25rem; }
.certificado__estado { display: flex; align-items: center; gap: 0.5rem; font-weight: 700; color: var(--c-exito); }
.certificado--anulado { border-color: var(--c-error); }
.certificado--anulado .certificado__estado { color: var(--c-error); }
.certificado .datos-oficiales { margin-bottom: 1rem; }

/* ---------- Contacto ---------- */
.datos-contacto { list-style: none; padding: 0; margin: 0 0 2rem; display: grid; gap: 0.75rem; font-size: 1.15rem; }
.datos-contacto li { display: flex; align-items: center; gap: 0.75rem; }
.datos-contacto .ico { color: var(--c-primario); width: 1.4rem; height: 1.4rem; }
.sede { padding-block: 1.25rem; border-top: 1px solid var(--c-linea); }
.sede .subtitulo { margin-top: 0; }
.sede p { display: flex; gap: 0.5rem; align-items: baseline; }

/* ---------- Llamado a la acción ---------- */
.seccion--llamado { background: var(--c-acento); color: var(--c-acento-texto); padding-block: 3rem; }
.llamado { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem; }
.llamado__texto { font-family: var(--f-titulos); font-size: var(--t-h2); margin: 0; font-weight: 700; max-width: 26ch; }

/* ---------- WhatsApp flotante ---------- */
.whatsapp {
    position: fixed; right: 1rem; bottom: 1rem; z-index: 50;
    display: inline-flex; align-items: center; gap: 0.5rem;
    background: #1f9d55; color: #fff; text-decoration: none; font-weight: 600;
    padding: 0.8rem 1.1rem; border-radius: 999px; box-shadow: var(--sombra);
}
.whatsapp:hover { background: #17834a; color: #fff; }
.whatsapp .ico { width: 1.5rem; height: 1.5rem; }
@media (max-width: 30rem) { .whatsapp__texto { display: none; } .whatsapp { padding: 0.9rem; } }

/* ---------- Pie común ---------- */
.pie-comun { border-top: 1px solid rgb(255 255 255 / 15%); padding-block: 1.25rem; font-size: var(--t-pequeno); }
.pie-comun__fila { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; }
.pie-comun p { margin: 0; opacity: 0.85; }
.pie-comun__legal { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; align-items: center; }
.pie-comun a { color: inherit; }
.libro-reclamaciones { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.35rem 0.75rem; border: 1px solid currentColor; border-radius: var(--radio); text-decoration: none; }

/* ---------- Impresión (constancia de reclamo) ---------- */
@media print {
    .cabecera, .barra, .pie, .whatsapp, .menu-boton, [data-imprimir] { display: none !important; }
    body { font-size: 12pt; }
}

/* =========================================================================
   Portada multimedia (_Hero) — carrusel con imagen y/o video de fondo
   ========================================================================= */
.hero { position: relative; background: var(--c-primario); color: #fff; }
.hero__pista {
    display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none;
    overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch;
}
.hero__pista::-webkit-scrollbar { display: none; }
.hero__slide {
    position: relative; flex: 0 0 100%; scroll-snap-align: start; isolation: isolate;
    min-height: clamp(26rem, 68vh, 42rem); display: grid; align-items: center;
    padding-block: clamp(3rem, 2rem + 5vw, 6rem) clamp(4.5rem, 3rem + 5vw, 7rem); overflow: hidden;
}
.hero__slide--liso { background: var(--c-primario); color: var(--c-primario-texto); }
.hero__img, .hero__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.hero__video { opacity: 0; transition: opacity 0.8s ease; background: transparent; }
.hero__video.listo { opacity: 1; }
.hero__velo { position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgb(0 0 0 / calc(var(--velo, 0.4) + 0.15)), rgb(0 0 0 / var(--velo, 0.4)) 55%, rgb(0 0 0 / calc(var(--velo, 0.4) * 0.6))); }
.hero__contenido { max-width: var(--ancho); }
.hero__titulo { font-size: var(--t-h1); max-width: 20ch; margin-bottom: 0.4em; text-shadow: 0 1px 18px rgb(0 0 0 / 25%); }
.hero__slide--liso .hero__titulo { text-shadow: none; }
.hero__bajada { font-size: clamp(1.1rem, 1rem + 0.6vw, 1.4rem); max-width: 36rem; opacity: 0.95; margin-bottom: 1.5rem; }
.boton--grande { padding: 0.85rem 1.7rem; font-size: 1.05rem; }

.hero__controles {
    position: absolute; left: 50%; bottom: 1.1rem; transform: translateX(-50%); z-index: 2;
    display: flex; align-items: center; gap: 0.35rem; padding: 0.3rem 0.5rem; border-radius: 99px;
    background: rgb(0 0 0 / 45%); backdrop-filter: blur(6px);
}
.hero__btn {
    display: grid; place-items: center; width: 2.25rem; height: 2.25rem; border-radius: 50%; border: 0;
    background: transparent; color: #fff; cursor: pointer;
}
.hero__btn:hover, .hero__btn[aria-pressed="true"] { background: rgb(255 255 255 / 22%); }
.hero__puntos { display: flex; gap: 0.15rem; }
.hero__punto { width: 1.5rem; height: 2.25rem; border: 0; background: transparent; cursor: pointer; position: relative; }
.hero__punto::after { content: ""; position: absolute; left: 50%; top: 50%; width: 0.6rem; height: 0.6rem; border-radius: 50%; background: rgb(255 255 255 / 55%); transform: translate(-50%, -50%); transition: width 0.25s, background 0.25s; }
.hero__punto[aria-current="true"]::after { width: 1.3rem; border-radius: 99px; background: #fff; }

/* Franja bajo la portada (admisión abierta, etc.) cuando la portada es multimedia */
.franja-admision { background: var(--c-secundario); color: var(--c-secundario-texto); }
.franja-admision__fila { display: flex; gap: 0.75rem 1.5rem; align-items: center; justify-content: space-between; flex-wrap: wrap; padding-block: 0.8rem; }
.franja-admision p { margin: 0; }
.franja-admision .boton { background: var(--c-secundario-texto); color: var(--c-secundario); }

/* =========================================================================
   Aviso emergente (<dialog>)
   ========================================================================= */
.aviso-emergente {
    width: min(30rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; border: 0; overflow: auto;
    border-radius: calc(var(--radio) * 2); background: var(--c-fondo); color: var(--c-tinta);
    box-shadow: 0 24px 80px rgb(0 0 0 / 35%);
}
.aviso-emergente[open] { animation: aviso-entra 0.28s ease-out; }
.aviso-emergente::backdrop { background: rgb(10 16 28 / 62%); backdrop-filter: blur(2px); }
@keyframes aviso-entra { from { opacity: 0; transform: translateY(14px) scale(0.98); } }
.aviso-emergente__cerrar { position: absolute; top: 0.5rem; right: 0.5rem; margin: 0; z-index: 1; }
.aviso-emergente__cerrar button { display: grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: 50%; border: 0; cursor: pointer; background: rgb(255 255 255 / 92%); color: #1d232b; box-shadow: 0 1px 6px rgb(0 0 0 / 25%); }
.aviso-emergente__imagen { width: 100%; max-height: 18rem; object-fit: cover; }
.aviso-emergente__cuerpo { padding: 1.4rem 1.5rem 1.6rem; }
.aviso-emergente__cuerpo h2 { font-size: 1.5rem; margin-bottom: 0.4em; padding-right: 2rem; }
.aviso-emergente__cuerpo p { color: var(--c-tinta-suave); }
.aviso-emergente__cuerpo .boton { margin-top: 0.5rem; }

@media (max-width: 40rem) {
    .hero__slide { min-height: 28rem; }
    .hero__velo { background: linear-gradient(0deg, rgb(0 0 0 / calc(var(--velo, 0.4) + 0.25)), rgb(0 0 0 / var(--velo, 0.4))); }
}

/* Logo apaisado (incluye el nombre): ancho automático, alto fijo */
.marca .marca__logo--ancho { width: auto; height: 3.1rem; max-width: min(15rem, 58vw); object-fit: contain; }
@media (min-width: 60rem) { .marca .marca__logo--ancho { height: 3.6rem; max-width: 18rem; } }

/* Mapa incrustado (cualquier tema) */
.mapa { position: relative; border-radius: calc(var(--radio) * 1.4); overflow: hidden; background: var(--c-superficie); min-height: 18rem; box-shadow: var(--sombra); }
.mapa iframe { display: block; width: 100%; height: 100%; min-height: 22rem; border: 0; }
.ficha__icono { display: none; }
