:root {
    --color-primario: #FF6B35;
    --color-primario-hover: #E85D2C;
    --color-texto-sobre-primario: #1B2430;
    --color-tinta: #1B2430;
    --color-tinta-suave: #3C4655;
    /* Oscurecido para cumplir contraste AA (~4.7:1 sobre blanco) en texto chico. */
    --color-tinta-tenue: #6B7686;
    --color-fondo: #FFFFFF;
    /* Crema cálido (no gris neutro): da la calidez coral a todo el fondo de página. */
    --color-fondo-alt: #FCF0E6;
    --color-borde: #E7E2DE;
    --color-cbc-tint: #FFF1EA;
    /* Tint violáceo para la vía de capacitación laboral (contrapunto al coral del CBC). */
    --color-it-tint: #EFEAFB;
    --color-oscuro: #1B2430;
    --color-oscuro-hover: #3C4655;
    /* Pills de estado del panel del profesor (calco del Claude Design). */
    --estado-aprobado-bg: #E3F5EA;
    --estado-aprobado-text: #1E7A46;
    --estado-rechazado-bg: #FCE4E8;
    --estado-rechazado-text: #C1273C;
    /* Tintes de las opciones del examen (correcta / incorrecta elegida / selección). */
    --examen-correcta-bg: #E3F5EA;
    --examen-incorrecta-bg: #FCE4E8;
    --examen-seleccion-bg: #FFF1EA;
    --fuente-titulo: 'Fraunces', Georgia, serif;
    --fuente-cuerpo: 'Inter', system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    /* Velo sobre la imagen de fondo (body::after) y degradé del footer: como
       cambian entre claro y oscuro, viven en variables. */
    --velo-fondo: rgba(247, 245, 243, 0.72);
    --footer-degrade: linear-gradient(180deg, #FFFFFF 0%, #FFFFFF 30%, #EAE5DF 72%, #DED8D1 100%);
    --sombra-suave: rgba(27, 36, 48, 0.14);
}

/* ---------- Tema oscuro ----------
   Redefine sólo las variables: como casi todo el CSS ya las usa, el sitio se da
   vuelta solo. El coral de la marca se mantiene (contrasta bien en oscuro). El
   hero y la ilustración de la bifurcación ya eran oscuros, así que no cambian.
   Se activa con data-tema="oscuro" en <html> (lo pone el script del <head>). */
:root[data-tema="oscuro"] {
    --color-texto-sobre-primario: #1B2430;
    --color-tinta: #E7EAEE;
    --color-tinta-suave: #C3C9D1;
    --color-tinta-tenue: #97A0AC;
    --color-fondo: #171E27;
    --color-fondo-alt: #202A36;
    --color-borde: #2E3945;
    --color-cbc-tint: #2A1F18;
    --color-it-tint: #1E262F;
    --color-oscuro: #2E3945;
    --color-oscuro-hover: #3C4A59;
    --estado-aprobado-bg: rgba(46, 168, 101, 0.22);
    --estado-aprobado-text: #6FE3A4;
    --estado-rechazado-bg: rgba(232, 69, 92, 0.22);
    --estado-rechazado-text: #FF95A8;
    --examen-correcta-bg: rgba(46, 168, 101, 0.16);
    --examen-incorrecta-bg: rgba(232, 69, 92, 0.16);
    --examen-seleccion-bg: rgba(255, 107, 53, 0.14);
    --velo-fondo: rgba(15, 20, 27, 0.82);
    --footer-degrade: linear-gradient(180deg, #1B222C 0%, #171E27 45%, #10151C 100%);
    --sombra-suave: rgba(0, 0, 0, 0.45);
    color-scheme: dark;
}

* {
    box-sizing: border-box;
}

html {
    /* Reserva el espacio de la barra de scroll: evita el salto horizontal
       al pasar de una página larga a una corta. */
    scrollbar-gutter: stable;
}

/* Transición entre páginas (Chrome/Edge): el resto de la página cambia
   instantáneo; solo la grilla de cursos hace un fundido suave. */
@view-transition {
    navigation: auto;
}

::view-transition-old(root),
::view-transition-new(root) {
    animation: none;
}

::view-transition-old(grid-cursos),
::view-transition-new(grid-cursos) {
    animation-duration: 300ms;
}

body {
    margin: 0;
    font-family: var(--fuente-cuerpo);
    color: var(--color-tinta);
    background: var(--color-fondo-alt);
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

/* Imagen de fondo (desenfocada) fija detrás de todo. El header, el footer
   y la tarjeta de contenido son opacos, así solo se ve en los laterales. */
body::before {
    content: "";
    position: fixed;
    inset: -16px;
    z-index: -2;
    background-image: url('../img/fondo.jpg');
    background-size: cover;
    background-position: center;
    filter: blur(3px) saturate(0.85) brightness(1.03);
}

/* Capa de tinte blanco cálido para que la imagen quede como marca de agua. */
body::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    background: var(--velo-fondo);
}

/* En el panel del profesor y en editar curso el fondo va crema plano, tal cual
   el mock del Claude Design: se oculta la foto desenfocada (y su velo) para que
   la tarjeta blanca del <main> flote sobre el crema. La nav y el footer reales
   se mantienen. */
body:has(.panel-profesor-page)::before,
body:has(.editar-curso-page)::before,
body:has(.examen-page)::before,
body:has(.panel-profesor-page)::after,
body:has(.editar-curso-page)::after,
body:has(.examen-page)::after {
    display: none;
}

h1, h2, h3 {
    font-family: var(--fuente-titulo);
}

/* Una sola fila siempre: nada se apila sobre nada. Si no entra, el media
   query de abajo pasa todo al menú hamburguesa. */
.navbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    padding: 14px clamp(16px, 4vw, 32px);
    background: var(--color-fondo);
    border-bottom: 1px solid var(--color-borde);
    flex-wrap: nowrap;
    /* Header adherido arriba que se oculta al bajar y reaparece al subir. */
    position: sticky;
    top: 0;
    z-index: 1000;
    transition: transform 0.3s ease;
}

.navbar-oculto {
    transform: translateY(-100%);
}

.navbar .logo {
    display: flex;
    align-items: center;
    text-decoration: none;
}

/* Logo del header, calcado del diseño: triangulito con el degradado de marca
   más el nombre en la tipografía de títulos. */
.logo {
    display: flex;
    align-items: center;
    gap: 8px;
    text-decoration: none;
    flex: none;
}

.logo-marca {
    height: 30px;
    width: auto;
    display: block;
}

.logo-nombre {
    font-family: var(--fuente-titulo);
    font-weight: 700;
    font-size: 1.15rem;
    color: var(--color-tinta);
}

.nav-toggle {
    display: none;
    background: none;
    border: 1px solid var(--color-borde);
    border-radius: 6px;
    font-size: 1.25rem;
    line-height: 1;
    padding: 0.4rem 0.6rem;
    cursor: pointer;
    color: var(--color-tinta);
}

/* Switch de tema claro/oscuro: pastilla con sol y luna fijos y una perilla que
   se desliza. La posición de la perilla la maneja data-tema (ver más abajo). */
.tema-switch {
    flex: none;
    position: relative;
    width: 58px;
    height: 30px;
    padding: 0;
    border: 1px solid var(--color-borde);
    border-radius: 999px;
    background: var(--color-fondo-alt);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    transition: border-color 0.18s ease;
}

.tema-switch:hover {
    border-color: var(--color-tinta-tenue);
}

.tema-switch-icono {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    display: inline-flex;
    color: var(--color-tinta-tenue);
    pointer-events: none;
}

.tema-switch-sol { left: 8px; }
.tema-switch-luna { right: 8px; }

.tema-switch-knob {
    position: absolute;
    top: 3px;
    left: 3px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--color-fondo);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
    transition: transform 0.2s ease;
}

/* Modo oscuro: la perilla se corre a la derecha (sobre la luna). */
:root[data-tema="oscuro"] .tema-switch-knob {
    transform: translateX(28px);
}

.navbar nav {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    /* Los links arrancan pegados al logo; el margen del buscador es lo que
       empuja los accesos de cuenta a la derecha (igual que el diseño). */
    justify-content: flex-start;
    gap: 22px;
    flex: 1 1 auto;
    min-width: 0;
}

.navbar nav a, .navbar nav span {
    margin-left: 0;
    white-space: nowrap;
    text-decoration: none;
    color: var(--color-tinta-suave);
}

/* Buscador de cursos: borde izquierdo fijo (mismo padding de siempre) y se
   alarga hacia la derecha. margin-right: auto lo mantiene anclado a la
   izquierda; es lo único que se encoge si falta lugar. */
/* Va DESPUÉS de los links, con aire a los lados: el margen empuja los accesos
   de cuenta al extremo derecho sin necesidad de un margin-left inventado. */
.nav-buscador {
    display: flex;
    flex: 1 1 380px;
    min-width: 160px;
    margin: 0 44px;
    position: relative;
}

.nav-buscador input {
    flex: 1;
    min-width: 0;
    padding: 0.55rem 1.1rem;
    border: 1px solid var(--color-borde);
    border-right: none;
    border-radius: 999px 0 0 999px;
    font: inherit;
    font-size: 0.9rem;
}

.nav-buscador input:focus {
    outline: 2px solid var(--color-primario);
    outline-offset: 1px;
}

.nav-buscador button {
    border: 1px solid var(--color-borde);
    border-left: none;
    border-radius: 0 999px 999px 0;
    background: var(--color-fondo-alt);
    padding: 0 0.8rem;
    cursor: pointer;
    font-size: 0.9rem;
}

/* Desplegable de resultados en vivo del buscador. */
.nav-buscador-panel {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    right: 0;
    z-index: 60;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.14);
    padding: 6px;
    max-height: min(70vh, 460px);
    overflow-y: auto;
}

.nav-buscador-item {
    display: flex;
    gap: 12px;
    align-items: center;
    padding: 8px 10px;
    border-radius: 10px;
    color: var(--color-tinta) !important;
    text-decoration: none;
}

.nav-buscador-item:hover,
.nav-buscador-item:focus {
    background: var(--color-fondo-alt);
}

.nav-buscador-item-img {
    flex: 0 0 auto;
    width: 52px;
    height: 40px;
    border-radius: 8px;
    overflow: hidden;
    background: var(--color-fondo-alt);
    display: flex;
    align-items: center;
    justify-content: center;
}

.nav-buscador-item-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nav-buscador-item-ph {
    font-size: 1.1rem;
}

.nav-buscador-item-txt {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.nav-buscador-item-tit {
    font-weight: 600;
    font-size: 0.9rem;
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nav-buscador-item-desc {
    font-size: 0.8rem;
    color: var(--color-tinta-suave);
    line-height: 1.25;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.nav-buscador-vacio {
    margin: 0;
    padding: 12px 10px;
    font-size: 0.85rem;
    color: var(--color-tinta-suave);
}

.nav-buscador-ensena {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 4px;
    padding: 11px 12px;
    border-top: 1px solid var(--color-borde);
    border-radius: 0 0 10px 10px;
    color: var(--color-primario) !important;
    font-weight: 600;
    font-size: 0.88rem;
    text-decoration: none;
}

.nav-buscador-ensena:hover {
    background: var(--color-fondo-alt);
}

.nav-buscador-ensena-ic {
    color: var(--color-primario);
}

.nav-registrarme {
    color: var(--color-texto-sobre-primario) !important;
}

/* Links de texto del nav (Cursos, Rutas, etc., que no tienen clase): al pasar
   el mouse cambian al coral de la marca. Los botones tienen su propio estilo. */
.navbar nav a:not([class]):hover {
    color: var(--color-primario);
}

/* "Ingresar": botón con contorno, al lado del "Registrarme" naranja. Mismo
   alto y radio que el primario; queda como par visual. */
.navbar .nav-ingresar {
    padding: 0.5rem 1.1rem;
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--color-tinta);
    transition: border-color 0.18s ease, background 0.18s ease;
}

.navbar .nav-ingresar:hover {
    border-color: var(--color-tinta-tenue);
    background: var(--color-fondo-alt);
    color: var(--color-tinta);
}

/* Menú de perfil */
.perfil-menu {
    position: relative;
    flex: none;
}

.perfil-boton {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: none;
    border: 1px solid var(--color-borde);
    border-radius: 999px;
    padding: 0.2rem 0.7rem 0.2rem 0.25rem;
    cursor: pointer;
    font: inherit;
    font-size: 0.9rem;
    color: var(--color-tinta-suave);
}

.perfil-boton:hover {
    border-color: var(--color-tinta-tenue);
}

.perfil-avatar {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
}

.perfil-lista {
    position: absolute;
    right: 0;
    top: calc(100% + 0.5rem);
    min-width: 210px;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(27, 36, 48, 0.14);
    padding: 0.4rem;
    z-index: 1500;
}

.perfil-lista a,
.perfil-lista .link-button {
    display: block;
    width: 100%;
    text-align: left;
    padding: 0.5rem 0.75rem;
    margin: 0;
    border-radius: 6px;
    text-decoration: none;
    color: var(--color-tinta);
    font-size: 0.95rem;
}

.perfil-lista a:hover,
.perfil-lista .link-button:hover {
    background: var(--color-fondo-alt);
}

/* Menú de desborde (⋯) del header: agrupa Ayuda / Apuntes / Empresas /
   Contacto, que antes vivían sólo en el footer. Reusa el look del desplegable
   de perfil. */
.mas-menu {
    position: relative;
    flex: none;
}

.mas-boton {
    background: none;
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    font-size: 1.05rem;
    line-height: 1;
    padding: 0.44rem 0.7rem;
    cursor: pointer;
    color: var(--color-tinta);
}

.mas-boton:hover {
    background: var(--color-fondo-alt);
}

.mas-lista {
    position: absolute;
    right: 0;
    top: calc(100% + 0.5rem);
    min-width: 210px;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(27, 36, 48, 0.18);
    padding: 0.5rem;
    z-index: 1500;
}

.mas-lista a {
    display: block;
    padding: 0.55rem 0.65rem;
    border-radius: 6px;
    text-decoration: none;
    color: var(--color-tinta);
    font-size: 0.9rem;
}

.mas-lista a:hover {
    background: var(--color-fondo-alt);
}

.perfil-separador {
    border-top: 1px solid var(--color-borde);
    margin: 0.3rem 0;
}

.link-button {
    background: none;
    border: none;
    color: var(--color-tinta-suave);
    cursor: pointer;
    font: inherit;
    padding: 0;
}

/* Hasta 1024px el header completo pasa al menú hamburguesa: con el buscador
   y el perfil ya no entra todo en una fila prolija en anchos intermedios. */
@media (max-width: 1024px) {
    .navbar {
        flex-wrap: wrap;
    }

    .nav-toggle {
        display: block;
        order: 1;
    }

    .navbar nav {
        display: none;
        width: 100%;
        order: 2;
        flex-direction: column;
        align-items: flex-start;
        gap: 0;
        margin-top: 1rem;
    }

    .navbar nav.nav-abierto {
        display: flex;
    }

    .navbar nav a, .navbar nav span, .navbar nav .link-button {
        margin-left: 0;
        margin-top: 0;
    }

    /* Los links de texto del menú: filas full-width con una línea divisoria,
       para que quede parejo y demarcado. */
    .navbar nav > a:not(.nav-ingresar):not(.nav-registrarme) {
        width: 100%;
        box-sizing: border-box;
        padding: 0.85rem 0.25rem;
        border-bottom: 1px solid var(--color-borde);
    }

    /* "Ingresar" y "Registrarme": botones full-width, mismo ancho y centrados,
       así dejan de verse de distintos tamaños. */
    .navbar .nav-ingresar, .navbar .nav-registrarme {
        width: 100%;
        box-sizing: border-box;
        text-align: center;
        margin-top: 0.75rem;
    }

    /* El switch de tema, en su propia fila separada. */
    .navbar nav .tema-switch {
        margin-top: 0.85rem;
    }

    .nav-buscador {
        width: 100%;
        max-width: none;
        flex: none;
        margin: 0.25rem 0 0;
    }

    .perfil-menu, .notif-menu {
        margin: 0.75rem 0 0;
        width: 100%;
    }

    /* En el menú colapsado, los desplegables se muestran en línea. El prefijo
       .navbar sube la especificidad para ganarle a la regla base de .notif-lista
       que aparece más abajo en el archivo. */
    .navbar .perfil-lista, .navbar .notif-lista {
        position: static;
        width: 100%;
        max-width: none;
        box-shadow: none;
        border: none;
        border-left: 2px solid var(--color-borde);
        border-radius: 0;
        margin: 0.25rem 0 0 0.75rem;
        padding: 0;
    }

    .perfil-lista a, .perfil-lista .link-button {
        margin-top: 0;
    }

    /* En el menú colapsado, el "⋯" no tiene sentido: se oculta el botón y sus
       links (Ayuda, Apuntes, Empresas, Contacto) aparecen directo como filas del
       desplegable, igual que Cursos/Rutas. El !important le gana a [hidden]. */
    .navbar .mas-menu {
        width: 100%;
        order: 3;
    }

    .navbar .mas-boton {
        display: none;
    }

    .navbar .mas-lista {
        display: block !important;
        position: static;
        width: 100%;
        min-width: 0;
        box-shadow: none;
        border: none;
        border-radius: 0;
        padding: 0;
        margin: 0;
    }

    .navbar .mas-lista a {
        width: 100%;
        box-sizing: border-box;
        padding: 0.85rem 0.25rem;
        border-bottom: 1px solid var(--color-borde);
        font-size: 1rem;
    }
}

.inline-form {
    display: inline;
}

main {
    max-width: 1240px;
    width: 100%;
    margin: 1.5rem auto;
    padding: 2rem;
    flex: 1 0 auto;
    background: var(--color-fondo);
    border-radius: 12px;
    box-shadow: 0 1px 4px rgba(27, 36, 48, 0.08);
}

footer {
    flex: none;
    /* Blanco arriba que se funde a un gris cálido al final de la página. */
    background: var(--footer-degrade);
    border-top: 1px solid var(--color-borde);
    padding: 1.5rem 2rem 2rem;
    text-align: center;
    color: var(--color-tinta-tenue);
}

/* Banner oscuro con brillos coral y violeta, tomados del triángulo del logo. */
/* Hero de la home, calcado del diseño: el texto arriba y las dos vías (CBC /
   laboral) como tarjetas DENTRO del degradado, no en una sección aparte. */
.hero {
    display: flex;
    flex-direction: column;
    gap: clamp(20px, 3vw, 28px);
    text-align: left;
    padding: clamp(24px, 4vw, 44px);
    margin-bottom: 32px;
    border-radius: 18px;
    overflow: hidden;
    color: white;
    background:
        radial-gradient(ellipse at 80% -10%, rgba(255, 107, 53, 0.35), transparent 55%),
        radial-gradient(ellipse at 5% 110%, rgba(124, 58, 237, 0.35), transparent 50%),
        linear-gradient(135deg, #26303E 0%, #1B2430 55%, #151C26 100%);
}

.hero-texto {
    max-width: 640px;
}

/* Bandera del hero: triangulito de marca + rótulo, arriba del título. */
.hero-eyebrow {
    display: flex;
    align-items: center;
    gap: 8px;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    font-size: 0.72rem;
    font-weight: 700;
    color: #FFB88C;
    margin: 0 0 14px;
}

.hero-tri {
    width: 16px;
    height: 16px;
    flex: none;
    clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
    background: linear-gradient(160deg, #FFC24D 0%, #FF6B35 45%, #E8455C 75%, #7C3AED 100%);
}

.hero h1 {
    font-size: clamp(1.8rem, 3.4vw, 2.5rem);
    margin: 0 0 12px;
    color: white;
    line-height: 1.15;
}

.hero-bajada {
    max-width: 520px;
    margin: 0;
    color: rgba(255, 255, 255, 0.85);
    font-size: 1.05rem;
    line-height: 1.55;
}

/* Las dos vías, adentro del hero. */
.hero-caminos {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
}

.camino {
    flex: 1 1 260px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    text-decoration: none;
    border-radius: 14px;
    padding: 20px 22px;
    color: var(--color-tinta);
    transition: transform 0.15s ease;
}

.camino:hover {
    transform: translateY(-3px);
}

.camino-cbc {
    background: var(--color-cbc-tint);
}

.camino-it {
    background: var(--color-it-tint);
}

.camino-ic {
    width: 38px;
    height: 38px;
    border-radius: 10px;
    background: var(--color-primario);
    display: flex;
    align-items: center;
    justify-content: center;
}

.camino-ic-oscuro {
    background: var(--color-oscuro);
}

.camino strong {
    font-family: var(--fuente-titulo);
    font-size: 1.15rem;
}

.camino-desc {
    font-size: 0.9rem;
    color: var(--color-tinta-suave);
    line-height: 1.4;
}

.camino-cta {
    font-weight: 700;
    font-size: 0.88rem;
    color: var(--color-primario-hover);
    margin-top: 4px;
}

.camino-cta-oscuro {
    color: var(--color-tinta);
}

@media (max-width: 768px) {
    .hero {
        padding: 2rem 1.5rem;
        gap: 1.5rem;
    }

    .hero h1 {
        font-size: 1.75rem;
    }

}

.boton {
    display: inline-block;
    font-weight: 700;
    text-decoration: none;
    padding: 0.6rem 1.1rem;
    border-radius: 8px;
    font-size: 0.9rem;
}

.boton-primario {
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
}

.boton-primario:hover {
    background: var(--color-primario-hover);
}

.boton-oscuro {
    background: var(--color-oscuro);
    color: white;
}

.boton-oscuro:hover {
    background: var(--color-oscuro-hover);
}

.pills {
    display: flex;
    gap: 0.5rem;
    margin: 1rem 0;
}

.pill {
    text-decoration: none;
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--color-tinta-suave);
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 999px;
    padding: 0.4rem 0.9rem;
}

.pill-activo {
    background: var(--color-oscuro);
    color: white;
    border-color: var(--color-oscuro);
}

/* Segunda fila de filtros (materias del CBC): puede tener muchas, que envuelvan. */
.pills-materias {
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: -0.3rem;
}

.pills-materias .pill {
    font-size: 0.78rem;
    padding: 0.3rem 0.75rem;
}

/* Materia del curso arriba del título, en la card de la home. */
.card-materia {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--color-primario);
    margin: 0 0 0.3rem;
}

/* Reserva el alto de una fila de cards aunque el filtro devuelva pocos
   cursos o ninguno: la página no cambia de tamaño al cambiar de filtro. */
.cursos {
    min-height: 30rem;
}

.grid-cursos {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    grid-auto-rows: 1fr;
    gap: 20px;
    margin-top: 1.5rem;
    view-transition-name: grid-cursos;
}

/* Card de curso — Dirección "Ascenso": portada oscura con el triángulo del logo. */
.card-curso {
    display: flex;
    flex-direction: column;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

.card-curso:hover {
    border-color: var(--color-tinta);
    box-shadow: 0 10px 28px rgba(27, 36, 48, 0.14);
    transform: translateY(-3px);
}

.card-portada {
    position: relative;
    height: 120px;
    flex: none;
    overflow: hidden;
    background:
        radial-gradient(ellipse at 82% -20%, rgba(255, 107, 53, 0.5), transparent 60%),
        radial-gradient(ellipse at 0% 120%, rgba(124, 58, 237, 0.42), transparent 55%),
        linear-gradient(135deg, #26303E 0%, #1B2430 60%, #151C26 100%);
}

.card-portada img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Triángulo del logo como marca en la portada sin imagen. */
.card-tri {
    position: absolute;
    left: 1.1rem;
    bottom: 0.9rem;
    width: 0;
    height: 0;
    border-left: 22px solid transparent;
    border-right: 22px solid transparent;
    border-bottom: 38px solid rgba(255, 255, 255, 0.16);
    transition: border-bottom-color 0.18s ease;
}

.card-curso:hover .card-tri {
    border-bottom-color: rgba(255, 107, 53, 0.55);
}

.card-cat {
    position: absolute;
    top: 0.7rem;
    left: 0.7rem;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    color: white;
    background: rgba(255, 255, 255, 0.18);
    backdrop-filter: blur(4px);
    padding: 0.15rem 0.6rem;
    border-radius: 999px;
}

/* Badge de cuotas de Mercado Pago sobre la portada, abajo a la izquierda (el de
   categoría vive arriba). Fondo claro para que el logo azul de MP se lea. */
.badge-cuotas {
    position: absolute;
    left: 0.7rem;
    bottom: 0.7rem;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    max-width: calc(100% - 1.4rem);
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.95);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
    font-size: 0.7rem;
    font-weight: 700;
    line-height: 1.1;
    color: #1B2430;
}

/* Especificidad extra: dentro de .card-portada hay un `img { width:100%;
   height:100% }` que si no le ganamos estira el logo a toda la portada. */
.badge-cuotas .badge-cuotas-logo {
    height: 0.9rem;
    width: auto;
    flex: none;
    display: block;
    object-fit: contain;
}

.badge-cuotas-txt {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.card-cuerpo {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    padding: 0.9rem 1rem 1rem;
}

.card-estrellas {
    color: #C77800;
    font-size: 0.8rem;
    font-weight: 700;
    margin: 0 0 0.3rem;
}

.card-estrellas span {
    color: var(--color-tinta-tenue);
    font-weight: 500;
}

.card-cuerpo h3 {
    font-size: 1.02rem;
    color: var(--color-tinta);
    margin: 0 0 0.35rem;
    line-height: 1.25;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.card-desc {
    margin: 0;
    font-size: 0.85rem;
    color: var(--color-tinta-suave);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.card-pie {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: auto;
    padding-top: 0.85rem;
}

.card-pie .precio {
    font-family: var(--fuente-titulo);
    font-weight: 700;
    font-size: 1.1rem;
    color: var(--color-tinta);
}

.card-meta {
    font-size: 0.75rem;
    color: var(--color-tinta-tenue);
    text-align: right;
}

@media (prefers-reduced-motion: reduce) {
    .card-curso, .card-tri { transition: none; }
    .card-curso:hover { transform: none; }
}

.form-page {
    max-width: 480px;
    margin: 0 auto;
}

/* Encabezado del form de contacto: título a la izquierda, icono de Instagram
   en el extremo opuesto. */
.form-encabezado {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.form-encabezado h1 {
    margin: 0;
}

/* Nombre + Apellido lado a lado, como el mock; se apilan si no entran. */
.form-fila {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.form-fila .campo {
    flex: 1 1 180px;
    min-width: 0;
}

.form-fila .campo input {
    width: 100%;
}

/* Aclaración chica bajo el intro del form de contacto general: deriva a los
   otros dos formularios (profesores, empresas) sin robarle peso al principal. */
.form-nota {
    font-size: 0.9rem;
    color: var(--color-tinta-tenue);
    margin-bottom: 1.5rem;
}

.campo {
    margin-bottom: 1rem;
    display: flex;
    flex-direction: column;
}

/* Captcha (Cloudflare Turnstile): el widget trae su propio tamaño; solo le
   damos aire arriba y abajo respecto del resto del form. */
.campo-captcha {
    margin-top: 0.25rem;
}

.campo-captcha .cf-turnstile {
    margin-bottom: 0.25rem;
}

.campo input, .campo textarea, .campo select {
    width: 100%;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    font: inherit;
    background: var(--color-fondo);
    color: var(--color-tinta);
}

/* Un checkbox NO es un campo de texto: la regla de arriba lo estiraba al 100%
   con padding de input, y quedaba como una caja ancha arriba del texto en vez
   de una casilla al lado. Se lo devuelve a su tamaño y se alinea con el label. */
.campo-check label {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    cursor: pointer;
    line-height: 1.3;
}

.campo-check input[type="checkbox"] {
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
    margin: 0;
    padding: 0;
    border-radius: 4px;
    accent-color: var(--color-primario);
    cursor: pointer;
}

/* Red de seguridad global: ningún control de formulario debe forzar el ancho del
   layout. Sin esto, un <textarea cols="40"> o un <select> con opciones largas
   ensanchan la página y rompen el responsive en mobile (scroll horizontal). */
input, select, textarea {
    max-width: 100%;
}

/* Inputs de archivo: el botón nativo del navegador es gris y feo, así que lo
   reemplazamos por uno con los colores de la marca (anda en claro y oscuro). El
   contenedor lleva borde punteado para que se lea como "zona de subida". */
.campo input[type="file"] {
    padding: 0.5rem 0.65rem;
    border: 1px dashed var(--color-borde);
    border-radius: 8px;
    background: var(--color-fondo-alt);
    cursor: pointer;
    color: var(--color-tinta-tenue);
    font-size: 0.9rem;
}

.campo input[type="file"]::file-selector-button,
.campo input[type="file"]::-webkit-file-upload-button {
    margin-right: 0.75rem;
    padding: 0.45rem 0.9rem;
    border: none;
    border-radius: 6px;
    background: var(--color-oscuro);
    color: #fff;
    font: inherit;
    font-weight: 700;
    font-size: 0.85rem;
    cursor: pointer;
    transition: background 0.15s ease;
}

.campo input[type="file"]:hover::file-selector-button {
    background: var(--color-oscuro-hover);
}

.campo input[type="file"]:focus {
    outline: 2px solid var(--color-primario);
    outline-offset: 1px;
}

/* Mismo lenguaje visual que .boton: radio 8px, negrita. */
button[type="submit"] {
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    border: none;
    padding: 0.6rem 1.2rem;
    border-radius: 8px;
    cursor: pointer;
    font-size: 1rem;
    font-weight: 700;
    font-family: inherit;
}

button[type="submit"]:hover {
    background: var(--color-primario-hover);
}

/* Errores de formulario (la .errorlist que genera Django) */
.errorlist {
    list-style: none;
    padding: 0;
    margin: 0.25rem 0 0;
    color: #A32D2D;
    font-size: 0.85rem;
    order: 3; /* debajo del input dentro de .campo (flex column) */
}

.campo:has(.errorlist) input,
.campo:has(.errorlist) textarea,
.campo:has(.errorlist) select {
    border-color: #A32D2D;
}

/* Foco visible y consistente en los formularios */
.campo input:focus, .campo textarea:focus, .campo select:focus {
    outline: 2px solid var(--color-primario);
    outline-offset: 1px;
    border-color: var(--color-primario);
}

.messages {
    list-style: none;
    padding: 0;
    margin: 1rem 2rem 0;
}

.messages .message {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1rem;
    padding: 0.75rem 1rem;
    border-radius: 8px;
    background: #d1fae5;
    color: #065f46;
    margin-bottom: 0.5rem;
}

.messages .error {
    background: #FEE2E2;
    color: #991B1B;
}

.messages .warning {
    background: #FEF3C7;
    color: #92400E;
}

.messages .info {
    background: #E0EAF4;
    color: #1E4E79;
}

.message-cerrar {
    background: none;
    border: none;
    color: inherit;
    font: inherit;
    font-size: 1.1rem;
    line-height: 1;
    cursor: pointer;
    padding: 0 0.2rem;
    flex: none;
}

.barra-progreso {
    width: 100%;
    height: 12px;
    background: var(--color-borde);
    border-radius: 6px;
    overflow: hidden;
    margin: 0.5rem 0;
}

.barra-progreso-fill {
    height: 100%;
    background: var(--color-primario);
    transition: width 0.3s ease;
}

.modulo {
    margin-top: 2rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-borde);
}

.lista-lecciones {
    list-style: none;
    padding: 0;
}

.lista-lecciones li {
    padding: 0.5rem 0;
}

/* Botón "Volver" (antes era un anchor azul default) */
.boton-volver {
    display: inline-block;
    text-decoration: none;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-tinta-suave);
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 999px;
    padding: 0.35rem 0.9rem;
    margin-bottom: 0.75rem;
    transition: border-color 0.15s ease, background 0.15s ease;
}

.boton-volver:hover {
    border-color: var(--color-tinta);
    background: var(--color-fondo-alt);
}

/* Panel de la clase: gradiente vertical de oscuro (título, arriba) a claro
   (abajo), atravesando los tonos intermedios. Envuelve todo el contenido
   de la clase. */
/* El degradado ya no envuelve toda la clase: el diseño tiene un banner oscuro
   discreto arriba y el video / cuestionario sobre el fondo normal. */
.leccion-panel {
    margin-bottom: 1.5rem;
}

.leccion-hero {
    border-radius: 16px;
    padding: clamp(22px, 4vw, 30px) clamp(20px, 4vw, 28px);
    margin-bottom: 24px;
    color: #fff;
    background: linear-gradient(135deg, #26303E 0%, #1B2430 55%, #151C26 100%);
}

.leccion-hero h1 {
    color: #fff;
    margin: 0 0 8px;
    font-size: clamp(1.4rem, 2.8vw, 1.9rem);
}

.leccion-eyebrow {
    text-transform: uppercase;
    letter-spacing: 0.09em;
    font-size: 0.72rem;
    font-weight: 700;
    color: #FFB88C;
    margin: 0 0 0.35rem;
}

.leccion-panel h1 {
    color: white;
    margin: 0 0 0.4rem;
}

.leccion-panel .leccion-desc {
    color: rgba(255, 255, 255, 0.9);
    max-width: 65ch;
}

/* Video enmarcado, flotando sobre el gradiente */
.leccion-video .video-wrapper {
    border-radius: 14px;
    overflow: hidden;
    background: #000;
    line-height: 0;
    box-shadow: 0 18px 44px rgba(0, 0, 0, 0.4);
}

.leccion-video .video-wrapper video {
    display: block;
    width: 100%;
    border-radius: 0;
}

/* ---------- Reproductor custom ---------- */
.rep {
    position: relative;
    background: #000;
    line-height: 0;
    outline: none;
}

.rep video {
    display: block;
    width: 100%;
    cursor: pointer;
}

/* Marca de agua: el email del alumno flotando sobre el video, tenue y saltando
   de lugar cada tanto (ver reproductor.js). No previene la grabación —disuade y
   permite rastrear una filtración—. pointer-events:none para no molestar al
   reproductor; user-select:none para que no se copie. */
.video-marca {
    position: absolute;
    top: 8%;
    left: 8%;
    z-index: 3;
    padding: 2px 8px;
    font-size: 0.8rem;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.42);
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
    background: rgba(0, 0, 0, 0.14);
    border-radius: 6px;
    pointer-events: none;
    user-select: none;
    transition: top 1.5s ease, left 1.5s ease;
    white-space: nowrap;
    line-height: 1.2;
}

.rep:fullscreen {
    display: flex;
    align-items: center;
    justify-content: center;
}

.rep:fullscreen video {
    max-height: 100vh;
    object-fit: contain;
}

/* Botón grande de play centrado (visible con el video pausado) */
.rep-play-grande {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 74px;
    height: 74px;
    border: none;
    border-radius: 50%;
    background: rgba(21, 28, 38, 0.62);
    color: white;
    font-size: 1.6rem;
    padding-left: 5px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.18s ease, transform 0.18s ease, opacity 0.2s ease;
}

.rep-play-grande:hover {
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    transform: translate(-50%, -50%) scale(1.06);
}

.rep:not(.rep-pausado) .rep-play-grande {
    opacity: 0;
    pointer-events: none;
}

/* Barra de controles */
.rep-controls {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 1.6rem 0.9rem 0.7rem;
    background: linear-gradient(to top, rgba(0, 0, 0, 0.78), transparent);
    line-height: 1;
    opacity: 0;
    transition: opacity 0.2s ease;
}

.rep:hover .rep-controls,
.rep.rep-mostrar .rep-controls,
.rep.rep-pausado .rep-controls {
    opacity: 1;
}

.rep-btn {
    background: none;
    border: none;
    color: white;
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
    padding: 0.28rem 0.4rem;
    border-radius: 6px;
    flex: none;
}

.rep-btn:hover {
    background: rgba(255, 255, 255, 0.18);
}

.rep-vel {
    font-size: 0.8rem;
    font-weight: 700;
    min-width: 36px;
}

.rep-tiempo {
    color: white;
    font-size: 0.78rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    flex: none;
}

.rep-barra {
    flex: 1;
    height: 6px;
    background: rgba(255, 255, 255, 0.28);
    border-radius: 999px;
    position: relative;
    cursor: pointer;
    min-width: 0;
}

.rep-barra:hover { height: 8px; }

.rep-barra-buffer,
.rep-barra-progreso {
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    border-radius: 999px;
    width: 0;
}

.rep-barra-buffer { background: rgba(255, 255, 255, 0.3); }
.rep-barra-progreso { background: var(--color-primario); }

.rep-barra-thumb {
    position: absolute;
    top: 50%;
    left: 0;
    width: 13px;
    height: 13px;
    border-radius: 50%;
    background: var(--color-fondo);
    transform: translate(-50%, -50%);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
    pointer-events: none;
}

.rep-vol {
    -webkit-appearance: none;
    appearance: none;
    width: 72px;
    height: 4px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.32);
    cursor: pointer;
    flex: none;
}

.rep-vol::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--color-fondo);
    cursor: pointer;
}

.rep-vol::-moz-range-thumb {
    width: 12px;
    height: 12px;
    border: none;
    border-radius: 50%;
    background: var(--color-fondo);
    cursor: pointer;
}

@media (max-width: 600px) {
    .rep-vol { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    .rep-play-grande, .rep-controls { transition: none; }
}

/* Barra de progreso del video */
.video-estado {
    margin-top: 0.9rem;
}

.video-barra {
    height: 8px;
    background: rgba(255, 255, 255, 0.22);
    border-radius: 999px;
    overflow: hidden;
}

.video-barra > i {
    display: block;
    height: 100%;
    background: var(--color-primario);
    border-radius: 999px;
    transition: width 0.3s ease;
}

.video-estado-label {
    display: inline-block;
    margin-top: 0.45rem;
    font-size: 0.82rem;
    color: rgba(255, 255, 255, 0.85);
}

.video-estado-done {
    color: white;
    font-weight: 600;
}

/* Navegación entre clases como tarjetas */
.nav-clase {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    text-decoration: none;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    padding: 0.8rem 1.1rem;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}

.nav-clase:hover {
    border-color: var(--color-tinta);
    box-shadow: 0 8px 22px rgba(27, 36, 48, 0.1);
    transform: translateY(-2px);
}

.nav-clase-next {
    text-align: right;
}

/* Degradado suave desde el tint de marca hacia el fondo, como el diseño: da
   dirección a la tarjeta (entra por el lado al que apunta la flecha). */
.nav-clase-next {
    background: linear-gradient(to right, var(--color-cbc-tint), var(--color-fondo) 70%);
}

.nav-clase-prev {
    background: linear-gradient(to left, var(--color-cbc-tint), var(--color-fondo) 70%);
}

.nav-clase-label {
    color: var(--color-primario-hover);
    font-weight: 700;
}

.nav-clase-label {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--color-primario-hover);
}

.nav-clase-titulo {
    font-weight: 600;
    color: var(--color-tinta);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

@media (prefers-reduced-motion: reduce) {
    .nav-clase, .video-barra > i { transition: none; }
    .nav-clase:hover { transform: none; }
}

/* Layout de la clase: video a la izquierda, cuestionario a la derecha */
.leccion-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(260px, 1fr);
    gap: 1.5rem;
    align-items: start;
    margin-top: 0.5rem;
}

/* Columna izquierda de la clase: video, asistente, consulta y navegación
   apilados, con el índice/cuestionario sticky al costado — como el mock. */
.leccion-principal {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0;
}

.leccion-principal .leccion-nav {
    margin-top: 1.75rem;
}

.video-wrapper video {
    border-radius: 8px;
    background: black;
}

#video-estado {
    color: var(--color-tinta-suave);
    font-size: 0.9rem;
}

/* ---------- Empresas (/empresas/) ----------
   Hero oscuro con el argumento y los beneficios; el formulario baja centrado,
   como el diseño. El degradado invierte el orden coral/violeta respecto de la
   postulación, que es lo que distingue las dos landings. */
.empresas-hero {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(24px, 4vw, 40px);
    align-items: center;
    border-radius: 18px;
    overflow: hidden;
    padding: clamp(24px, 4vw, 40px);
    color: #fff;
    background:
        radial-gradient(ellipse at 90% -20%, rgba(124, 58, 237, 0.35), transparent 60%),
        radial-gradient(ellipse at 0% 120%, rgba(255, 107, 53, 0.3), transparent 55%),
        linear-gradient(135deg, #26303E 0%, #1B2430 60%, #151C26 100%);
}

.empresas-hero-texto {
    flex: 1 1 360px;
    min-width: 0;
}

.empresas-eyebrow {
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.72rem;
    font-weight: 700;
    color: #FFB88C;
    margin: 0 0 10px;
}

.empresas-hero h1 {
    font-family: var(--fuente-titulo);
    font-size: clamp(1.7rem, 3.2vw, 2.3rem);
    margin: 0 0 14px;
    color: #fff;
    line-height: 1.15;
}

.empresas-bajada {
    color: rgba(255, 255, 255, 0.88);
    max-width: 52ch;
    line-height: 1.55;
    margin: 0 0 20px;
}

.empresas-beneficios {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.empresas-beneficios span {
    display: flex;
    align-items: center;
    gap: 10px;
    color: rgba(255, 255, 255, 0.92);
    font-size: 0.95rem;
}

.empresas-beneficios span span {
    color: var(--color-primario);
    font-weight: 700;
}

/* CTA del hero de empresas: baja al formulario (ancla #form-empresas). */
.empresas-cta {
    margin-top: 22px;
}

.empresas-form {
    max-width: 520px;
    margin: clamp(28px, 5vw, 40px) auto 8px;
}

.empresas-form h2 {
    font-family: var(--fuente-titulo);
    color: var(--color-tinta);
    margin: 0 0 6px;
    font-size: 1.3rem;
}

.empresas-form-bajada {
    color: var(--color-tinta-suave);
    margin: 0 0 1rem;
}

.empresas-form form {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.empresas-form .campo {
    margin: 0;
}

/* ---------- Postulación de profesor (/contacto/) ----------
   Es la landing de la campaña de Meta Ads, así que va como hero partido: el
   argumento de venta sobre el degradado oscuro y el formulario en una tarjeta
   clara al lado, que es lo que tiene que resaltar. */
.postulacion {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, 0.85fr);
    gap: clamp(24px, 4vw, 40px);
    align-items: center;
    padding: clamp(28px, 5vw, 40px);
    border-radius: 18px;
    color: #fff;
    background:
        radial-gradient(ellipse at 90% -20%, rgba(255, 107, 53, 0.35), transparent 60%),
        radial-gradient(ellipse at 0% 120%, rgba(124, 58, 237, 0.3), transparent 55%),
        linear-gradient(135deg, #26303E 0%, #1B2430 60%, #151C26 100%);
}

.postulacion-eyebrow {
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.72rem;
    font-weight: 700;
    color: #FFB88C;
    margin: 0 0 0.6rem;
}

.postulacion h1 {
    font-family: var(--fuente-titulo);
    color: #fff;
    margin: 0 0 0.6rem;
    font-size: clamp(1.6rem, 3vw, 2.1rem);
}

.postulacion-bajada {
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.55;
    margin: 0 0 1rem;
    max-width: 48ch;
}

.postulacion-beneficios {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.postulacion-beneficios li {
    display: flex;
    gap: 0.6rem;
    align-items: center;
    font-size: 0.92rem;
    color: rgba(255, 255, 255, 0.9);
}

.postulacion-beneficios span {
    color: var(--color-primario);
    font-weight: 700;
}

.postulacion-form {
    background: var(--color-fondo);
    border-radius: 14px;
    padding: 24px;
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
    box-shadow: 0 18px 40px rgba(0, 0, 0, 0.3);
}

/* El formulario es una tarjeta clara sobre el degradado: sus etiquetas usan la
   tinta normal, no el blanco del bloque de la izquierda. */
.postulacion-form label {
    color: var(--color-tinta);
    font-size: 0.85rem;
    font-weight: 600;
}

.postulacion-form .campo {
    margin: 0;
}

@media (max-width: 720px) {
    .postulacion {
        grid-template-columns: 1fr;
    }
}

/* Columna derecha de la clase: índice del curso + cuestionario. El sticky pasó
   acá desde .leccion-quiz para que la columna entera acompañe el scroll. */
.leccion-lateral {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    position: sticky;
    top: 5.5rem;
}

.leccion-indice {
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    padding: 0.4rem;
}

.leccion-indice-titulo {
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--color-tinta);
    margin: 0.5rem 0.65rem 0.4rem;
}

/* Tope de alto: en un curso largo el índice no puede empujar al cuestionario
   fuera de la pantalla. */
.leccion-indice-scroll {
    max-height: 280px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.leccion-indice-modulo > summary {
    cursor: pointer;
    padding: 0.5rem 0.65rem;
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--color-tinta-suave);
    border-radius: 6px;
}

.leccion-indice-modulo > summary:hover {
    background: var(--color-fondo-alt);
}

.leccion-indice-clase {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.65rem;
    border-radius: 6px;
    text-decoration: none;
    color: var(--color-tinta-suave);
    font-size: 0.85rem;
}

a.leccion-indice-clase:hover {
    background: var(--color-fondo-alt);
    color: var(--color-tinta);
}

.leccion-indice-actual {
    background: var(--color-cbc-tint);
    color: var(--color-tinta);
    font-weight: 600;
}

.leccion-indice-ic {
    flex: none;
    width: 16px;
    text-align: center;
    color: var(--color-tinta-tenue);
}

.leccion-indice-actual .leccion-indice-ic {
    color: var(--color-primario);
}

/* Los títulos largos no rompen el ancho de la columna. */
.leccion-indice-t {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.leccion-indice-bloqueada {
    color: var(--color-tinta-tenue);
    cursor: default;
}

.leccion-quiz {
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    padding: 1.25rem 1.35rem;
    box-shadow: 0 8px 24px rgba(27, 36, 48, 0.25);
}

.leccion-quiz h2 {
    font-size: 1.15rem;
    margin: 0 0 0.75rem;
}

.quiz-gate p {
    color: var(--color-tinta-suave);
    font-size: 0.92rem;
    margin: 0 0 1rem;
}

.quiz-gate .boton {
    cursor: pointer;
    border: none;
    width: 100%;
}

.leccion-quiz fieldset {
    margin: 0 0 1rem;
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    padding: 0.85rem 1rem;
    background: var(--color-fondo);
}

.leccion-quiz legend {
    font-weight: 600;
    font-size: 0.95rem;
    padding: 0 0.35rem;
}

.opcion-quiz {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.4rem 0;
    font-size: 0.92rem;
    cursor: pointer;
}

#form-quiz button[type="submit"] {
    width: 100%;
}

#quiz-resultado {
    margin: 0.75rem 0 0;
    font-weight: 600;
}

@media (max-width: 860px) {
    .leccion-layout {
        grid-template-columns: 1fr;
    }
    .leccion-quiz {
        position: static;
    }
}

.asistente-toggle {
    position: fixed;
    bottom: 1.5rem;
    right: 1.5rem;
    z-index: 1000;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    border: none;
    border-radius: 999px;
    padding: 0.75rem 1.25rem;
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

.asistente-toggle:hover {
    background: var(--color-primario-hover);
}

.asistente-panel {
    position: fixed;
    bottom: 5rem;
    right: 1.5rem;
    z-index: 1000;
    width: 320px;
    max-height: 70vh;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.asistente-panel-oculto {
    display: none;
}

.asistente-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem 0.75rem;
    background: var(--color-oscuro);
    color: white;
}

.asistente-header h3 {
    margin: 0;
    font-size: 1rem;
}

.asistente-header button {
    background: none;
    border: none;
    color: white;
    font-size: 1.25rem;
    cursor: pointer;
    line-height: 1;
}

.asistente-mensajes {
    flex: 1;
    overflow-y: auto;
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-height: 150px;
}

.asistente-mensaje {
    padding: 0.5rem 0.75rem;
    border-radius: 8px;
    font-size: 0.9rem;
    max-width: 85%;
    white-space: pre-wrap;
}

.asistente-mensaje-user {
    background: var(--color-oscuro);
    color: white;
    align-self: flex-end;
}

.asistente-mensaje-assistant {
    background: var(--color-fondo-alt);
    align-self: flex-start;
}

/* Links de las páginas que el asistente consultó cuando busca en la web. */
.asistente-fuentes {
    /* La burbuja usa pre-wrap: sin esto la lista hereda los saltos de línea. */
    white-space: normal;
    margin: 0.5rem 0 0;
    padding-left: 1.1rem;
    border-top: 1px solid var(--color-borde);
    padding-top: 0.4rem;
    font-size: 0.78rem;
}

.asistente-fuentes li {
    margin-top: 0.15rem;
}

.asistente-fuentes a {
    color: var(--color-tinta-tenue);
    overflow-wrap: anywhere;
}

.asistente-form {
    display: flex;
    gap: 0.5rem;
    padding: 0.5rem;
    border-top: 1px solid var(--color-borde);
}

.asistente-form textarea {
    flex: 1;
    resize: none;
    font-family: inherit;
}

.asistente-error {
    color: #c0392b;
    font-size: 0.85rem;
    padding: 0 0.75rem 0.5rem;
    margin: 0;
}

.porque {
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-borde);
}

.grid-porque {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}

.item-porque {
    background: var(--color-fondo-alt);
    border-radius: 12px;
    padding: 1.25rem;
}

.item-porque h3 {
    margin: 0 0 0.5rem;
    font-size: 1.05rem;
}

.item-porque p {
    margin: 0;
    color: var(--color-tinta-suave);
    font-size: 0.9rem;
    line-height: 1.5;
}

.testimonios {
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-borde);
}

.grid-testimonios {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}

.testimonio {
    margin: 0;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-left: 3px solid var(--color-primario);
    border-radius: 0 8px 8px 0;
    padding: 1.25rem;
}

.testimonio p {
    margin: 0 0 0.75rem;
    font-style: italic;
    color: var(--color-tinta-suave);
}

.testimonio footer {
    background: none;
    border: none;
    padding: 0;
    text-align: left;
    font-size: 0.9rem;
    color: var(--color-tinta);
}

.estrellas {
    color: #E8A13C;
    letter-spacing: 2px;
    font-size: 1.1rem;
}

.testimonio-cabecera {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

.testimonio-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--color-oscuro);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    flex: none;
}

.testimonio-cabecera strong {
    display: block;
}

.testimonio-curso {
    font-size: 0.8rem;
    color: var(--color-tinta-tenue);
}

.cta-resenas {
    margin-top: 1rem;
    padding: 2rem 1.5rem;
    text-align: center;
    background: var(--color-cbc-tint);
    border: 2px dashed var(--color-primario);
    border-radius: 12px;
}

.cta-resenas-estrellas {
    font-size: 1.5rem;
}

.cta-resenas h3 {
    margin: 0.5rem 0;
    font-size: 1.4rem;
}

.cta-resenas p {
    max-width: 560px;
    margin: 0 auto 0.75rem;
    color: var(--color-tinta-suave);
    line-height: 1.6;
}

.cta-resenas-nota {
    font-size: 0.85rem;
    color: var(--color-tinta-tenue);
}

.cta-resenas .boton {
    margin-top: 0.5rem;
}

.form-resena {
    margin-top: 2rem;
    padding: 1.5rem;
    background: var(--color-fondo-alt);
    border-radius: 12px;
    max-width: 560px;
}

.form-resena h2 {
    margin-top: 0;
}

.form-resena textarea {
    width: 100%;
}

.estrellas-input {
    display: inline-flex;
    flex-direction: row-reverse;
    margin-bottom: 0.75rem;
}

.estrellas-input input {
    display: none;
}

.estrellas-input label {
    font-size: 2rem;
    color: var(--color-borde);
    cursor: pointer;
    padding: 0 2px;
    transition: color 0.1s ease;
}

.estrellas-input input:checked ~ label,
.estrellas-input label:hover,
.estrellas-input label:hover ~ label {
    color: #E8A13C;
}

.boton-canje {
    background: var(--color-oscuro);
    color: white;
    border: none;
    padding: 0.6rem 1.2rem;
    border-radius: 4px;
    cursor: pointer;
    font-size: 1rem;
    margin-left: 0.75rem;
}

.boton-canje:hover {
    background: var(--color-oscuro-hover);
}

.nota-canje {
    font-size: 0.85rem;
    color: var(--color-tinta-tenue);
    margin-top: 0.5rem;
}

.notif-menu {
    position: relative;
    flex: none;
}

.campanita {
    position: relative;
    text-decoration: none;
    background: none;
    border: none;
    cursor: pointer;
    font-size: 1.1rem;
    line-height: 1;
    padding: 0.2rem;
    color: inherit;
}

/* Desplegable de notificaciones */
.notif-lista {
    position: absolute;
    right: 0;
    top: calc(100% + 0.5rem);
    width: 400px;
    max-width: calc(100vw - 2rem);
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(27, 36, 48, 0.14);
    z-index: 1500;
    overflow: hidden;
}

/* Filtros por tipo (admin/staff y profesores) */
.notif-filtros {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    padding: 0.6rem 1rem;
    border-bottom: 1px solid var(--color-borde);
}

.notif-filtro {
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 999px;
    padding: 0.3rem 0.75rem;
    font: inherit;
    font-size: 0.8rem;
    color: var(--color-tinta-suave);
    cursor: pointer;
}

.notif-filtro-activo {
    background: var(--color-oscuro);
    color: white;
    border-color: var(--color-oscuro);
}

.notif-filtro-num {
    opacity: 0.7;
    font-weight: 600;
}

.notif-cabecera {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--color-borde);
}

.notif-cabecera strong {
    font-family: var(--fuente-titulo);
}

.notif-items {
    list-style: none;
    margin: 0;
    padding: 0;
    max-height: 75vh;
    overflow-y: auto;
}

.notif-item {
    display: block;
    padding: 0.7rem 1rem;
    border-bottom: 1px solid var(--color-borde);
    text-decoration: none;
    color: var(--color-tinta);
}

a.notif-item:hover {
    background: var(--color-fondo-alt);
}

.notif-item-nueva {
    border-left: 3px solid var(--color-primario);
    background: var(--color-cbc-tint);
}

.notif-item-tipo {
    display: block;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--color-tinta-tenue);
}

.notif-item strong {
    display: block;
    margin: 0.15rem 0;
    font-family: var(--fuente-cuerpo);
    font-size: 0.9rem;
}

.notif-item-cuerpo {
    display: block;
    font-size: 0.82rem;
    color: var(--color-tinta-suave);
}

.notif-item-fecha {
    display: block;
    margin-top: 0.2rem;
    font-size: 0.72rem;
    color: var(--color-tinta-tenue);
}

.notif-ver-todas {
    display: block;
    text-align: center;
    padding: 0.6rem;
    font-size: 0.85rem;
    color: var(--color-tinta-suave);
    text-decoration: none;
}

.notif-ver-todas:hover {
    background: var(--color-fondo-alt);
}

.notif-vacio {
    margin: 0;
    padding: 1.25rem 1rem;
    text-align: center;
    color: var(--color-tinta-tenue);
    font-size: 0.9rem;
}

.campanita-badge {
    position: absolute;
    top: -8px;
    right: -10px;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    font-size: 0.7rem;
    font-weight: 700;
    border-radius: 999px;
    padding: 1px 5px;
    min-width: 16px;
    text-align: center;
}

.lista-notificaciones {
    list-style: none;
    padding: 0;
    max-width: 640px;
}

.notificacion {
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    padding: 0.9rem 1.1rem;
    margin-bottom: 0.75rem;
    background: var(--color-fondo);
}

.notificacion-nueva {
    border-left: 3px solid var(--color-primario);
    background: var(--color-cbc-tint);
}

.notificacion-tipo {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--color-tinta-tenue);
    margin-bottom: 0.25rem;
}

.notificacion p {
    margin: 0.4rem 0;
    color: var(--color-tinta-suave);
}

.notificacion-pie {
    font-size: 0.8rem;
    color: var(--color-tinta-tenue);
}

/* ============================================================
   Panel del profesor (/profesor) — calco de Profesor.dc.html
   ============================================================ */

/* <main> ya es la tarjeta blanca sobre el fondo crema; acá sólo se la angosta
   al ancho del mock (960) para que flote como en el diseño y no ocupe los 1240
   del resto del sitio. Mismo recurso que ya se usa con .cta-flotante. */
body:has(.panel-profesor-page) main { max-width: 960px; }
body:has(.editar-curso-page) main { max-width: 820px; }
body:has(.examen-page) main { max-width: 760px; }

.panel-cabecera {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 18px;
}

/* Fila de accesos (Ganancias / Datos de cobro): pills con borde. */
.panel-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 16px;
}

.panel-link-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    background: var(--color-fondo);
    color: var(--color-tinta);
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
    transition: border-color 0.15s ease;
}

.panel-link-pill:hover {
    border-color: var(--color-tinta);
}

.nota-comision {
    color: var(--color-tinta-suave);
    font-size: 0.88rem;
    line-height: 1.55;
    margin: 0 0 24px;
}

/* Dentro de un párrafo el link sigue siendo link (un botón en medio de una
   oración corta la lectura); sólo se cambia el azul del navegador por el coral. */
.nota-comision a {
    color: var(--color-primario);
    text-decoration: underline;
    text-underline-offset: 2px;
    font-weight: 600;
}

.nota-comision a:hover {
    color: var(--color-primario-hover);
}

.lista-cursos-profesor {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.curso-profesor {
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    padding: 16px 18px;
    background: var(--color-fondo);
    transition: opacity 0.2s ease;
}

.curso-profesor.archivado {
    opacity: 0.65;
}

.curso-profesor-top {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    flex-wrap: wrap;
}

.curso-profesor-nombre {
    margin: 0 0 4px;
    font-weight: 700;
    font-size: 1rem;
    color: var(--color-tinta);
}

.curso-meta {
    margin: 0;
    color: var(--color-tinta-suave);
    font-size: 0.86rem;
}

.curso-profesor-estado {
    text-align: right;
    flex: none;
}

/* Fila de acciones alineada a la derecha, como en el mock. */
.acciones-fila {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 14px;
}

.acciones-fila .inline-form {
    display: inline-flex;
}

/* Acción secundaria: la usan por igual los <a> y los <button type="submit">,
   para que una fila de acciones se vea como una familia y no como "links
   azules + botón coral". El reset es porque button[type=submit] los pinta antes. */
.btn-accion,
.btn-accion:link,
.btn-accion:visited {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 8px 14px;
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    background: var(--color-fondo);
    color: var(--color-tinta);
    font-size: 0.82rem;
    font-weight: 600;
    font-family: inherit;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    transition: border-color 0.15s ease, color 0.15s ease;
}

.btn-accion:hover {
    border-color: var(--color-tinta);
}

.btn-accion:active {
    transform: translateY(1px);
}

.btn-accion:focus-visible {
    outline: 2px solid var(--color-primario);
    outline-offset: 2px;
}

/* Archivar/restaurar: mismo tamaño, el hover avisa que no es una acción más. */
.btn-accion-peligro:hover {
    border-color: #E8455C;
    color: #E8455C;
}

.btn-accion-ok:hover {
    border-color: var(--estado-aprobado-text);
    color: var(--estado-aprobado-text);
}

.estado-curso {
    display: inline-block;
    font-size: 0.7rem;
    font-weight: 700;
    padding: 4px 12px;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.estado-borrador { background: var(--color-it-tint); color: var(--color-tinta-suave); }
.estado-en_revision { background: #FFF3D6; color: #854F0B; }
.estado-aprobado { background: var(--estado-aprobado-bg); color: var(--estado-aprobado-text); }
.estado-rechazado { background: var(--estado-rechazado-bg); color: var(--estado-rechazado-text); }
.estado-archivado {
    background: var(--color-fondo-alt);
    color: var(--color-tinta-tenue);
}

.motivo-rechazo {
    font-size: 0.78rem;
    color: var(--estado-rechazado-text);
    max-width: 220px;
    margin: 6px 0 0;
}

/* Caja de aviso al pie del panel (consultas como comentarios). */
.panel-nota-box {
    margin-top: 24px;
    background: var(--color-fondo-alt);
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    padding: 14px 16px;
}

.panel-nota-box p {
    margin: 0;
    font-size: 0.85rem;
    color: var(--color-tinta-suave);
    line-height: 1.5;
}

/* ============================================================
   Editar curso (/profesor/cursos/N/editar) — calco de EditarCurso.dc.html
   ============================================================ */

/* Pill "← Volver al panel" arriba de todo. */
.volver-pill {
    display: inline-block;
    text-decoration: none;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-tinta-suave);
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 999px;
    padding: 6px 14px;
    margin-bottom: 18px;
    transition: border-color 0.15s ease;
}

.volver-pill:hover {
    border-color: var(--color-tinta);
}

/* Cada bloque grande (Información / Módulos y clases) es una tarjeta. */
.editar-seccion {
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    padding: clamp(18px, 3vw, 24px);
}

.editar-seccion + .editar-seccion {
    margin-top: 20px;
}

.editar-seccion h2 {
    font-family: var(--fuente-titulo);
    color: var(--color-tinta);
    margin: 0 0 8px;
    font-size: 1.1rem;
}

.editar-seccion-intro {
    color: var(--color-tinta-suave);
    font-size: 0.88rem;
    line-height: 1.5;
    margin: 0 0 18px;
}

/* Los dos desplegables (módulo → clase) para saltar por un curso largo sin
   scrollear. El de clases depende del módulo elegido y lo repuebla el JS. */
.editar-nav {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 14px;
    margin-bottom: 18px;
}

.editar-nav-campo {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.editar-nav-campo label {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--color-tinta-tenue);
}

.editar-nav-campo select {
    width: 100%;
    padding: 9px 10px;
    border: 1px solid var(--color-borde);
    border-radius: 6px;
    background: var(--color-fondo);
    color: var(--color-tinta);
    font: inherit;
    cursor: pointer;
}

.editar-nav-campo select:disabled {
    background: var(--color-fondo-alt);
    color: var(--color-tinta-tenue);
    cursor: not-allowed;
}

.editar-nav-campo select:focus-visible {
    outline: 2px solid var(--color-primario);
    outline-offset: 1px;
}

/* Form de "Información del curso". */
.editar-form {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.editar-campo {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.editar-campo > label {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-tinta);
}

.editar-campo input,
.editar-campo textarea {
    padding: 9px 10px;
    border: 1px solid var(--color-borde);
    border-radius: 6px;
    font: inherit;
    background: var(--color-fondo);
    color: var(--color-tinta);
    width: 100%;
}

.editar-campo textarea {
    resize: vertical;
}

.editar-campo input:focus,
.editar-campo textarea:focus {
    outline: 2px solid var(--color-primario);
    border-color: var(--color-primario);
}

.editar-campo-hint {
    margin: 0;
    font-size: 0.78rem;
    color: var(--color-tinta-tenue);
}

.editar-campo-fila {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
}

.editar-campo-fila .editar-campo {
    flex: 1 1 200px;
}

/* Checkbox alineado con su texto (no se estira como los inputs). */
.editar-check {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.9rem;
    color: var(--color-tinta);
    cursor: pointer;
}

.editar-check input[type="checkbox"] {
    width: 18px;
    height: 18px;
    flex: none;
    margin: 0;
    accent-color: var(--color-primario);
    cursor: pointer;
}

.editar-guardar-fila {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.editar-guardado-ok {
    color: var(--estado-aprobado-text);
    font-size: 0.85rem;
    font-weight: 600;
}

.editar-modulos {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.editar-modulo {
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    padding: 14px 16px;
    background: var(--color-fondo);
    transition: opacity 0.2s ease;
}

.editar-modulo.archivado {
    background: var(--color-fondo-alt);
    opacity: 0.6;
}

.editar-modulo-cabecera {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

/* Círculo numerado del módulo. */
.editar-modulo-num {
    flex: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--color-fondo-alt);
    color: var(--color-tinta-suave);
    font-weight: 700;
    font-size: 0.8rem;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Form de renombrar: input plano + botón secundario al lado (no unidos). */
.form-renombrar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1 1 260px;
    min-width: 0;
}

.editar-modulo-input,
.editar-leccion-input {
    flex: 1 1 auto;
    min-width: 0;
    border: 1px solid var(--color-borde);
    border-radius: 6px;
    background: var(--color-fondo);
    color: var(--color-tinta);
    font-family: inherit;
}

.editar-modulo-input {
    font-weight: 700;
    font-size: 0.95rem;
    padding: 8px 10px;
}

.editar-leccion-input {
    font-size: 0.88rem;
    padding: 6px 9px;
}

.editar-modulo-input:focus,
.editar-leccion-input:focus {
    outline: none;
    border-color: var(--color-primario);
}

/* Clases: sangradas con la guía vertical y el marcador ▸. */
.editar-lecciones {
    list-style: none;
    padding-left: 16px;
    margin: 12px 0 0;
    border-left: 2px solid var(--color-borde);
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.editar-leccion {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.editar-leccion-marca {
    flex: none;
    color: var(--color-tinta-tenue);
    font-size: 0.85rem;
}

/* Botón secundario chico dentro de las filas de renombrar. */
.btn-renombrar {
    cursor: pointer;
    border: 1px solid var(--color-borde);
    background: var(--color-fondo);
    color: var(--color-tinta);
    border-radius: 8px;
    padding: 8px 14px;
    font-size: 0.8rem;
    font-weight: 600;
    font-family: inherit;
    white-space: nowrap;
    transition: border-color 0.15s ease, color 0.15s ease;
}

.btn-renombrar-sm {
    padding: 6px 12px;
    font-size: 0.78rem;
}

.btn-renombrar:hover {
    border-color: var(--color-tinta);
}

/* ---- Material del módulo (PDFs): listar, subir y eliminar ---- */
.editar-materiales {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px dashed var(--color-borde);
}

.editar-materiales-label {
    margin: 0 0 8px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--color-tinta-tenue);
}

.editar-materiales-vacio {
    margin: 0 0 10px;
    font-size: 0.82rem;
    color: var(--color-tinta-tenue);
}

.editar-materiales-lista {
    list-style: none;
    padding: 0;
    margin: 0 0 10px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.editar-material {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    background: var(--color-fondo-alt);
}

.editar-material-ic {
    flex: none;
}

.editar-material-nombre {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--color-tinta);
    font-size: 0.86rem;
    font-weight: 600;
    text-decoration: none;
}

.editar-material-nombre:hover {
    color: var(--color-primario);
    text-decoration: underline;
}

.editar-material-tag {
    flex: none;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: var(--color-tinta-tenue);
}

/* Botón ✕ de borrar: chico, cuadrado, rojo en hover. */
.btn-material-eliminar {
    flex: none;
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid var(--color-borde);
    border-radius: 6px;
    background: var(--color-fondo);
    color: var(--color-tinta-tenue);
    font-size: 0.85rem;
    line-height: 1;
    cursor: pointer;
    font-family: inherit;
    transition: border-color 0.15s ease, color 0.15s ease;
}

.btn-material-eliminar:hover {
    border-color: #E8455C;
    color: #E8455C;
}

/* Form de subir: file + nombre opcional + botón, en una fila que envuelve. */
.editar-material-subir {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.editar-material-subir input[type="file"] {
    flex: 1 1 220px;
    min-width: 0;
    font-size: 0.82rem;
    color: var(--color-tinta);
}

.editar-material-titulo {
    flex: 1 1 160px;
    min-width: 0;
    padding: 6px 9px;
    border: 1px solid var(--color-borde);
    border-radius: 6px;
    background: var(--color-fondo);
    color: var(--color-tinta);
    font: inherit;
    font-size: 0.82rem;
}

.editar-material-titulo:focus {
    outline: none;
    border-color: var(--color-primario);
}

/* Botón de agregar módulo: dashed, calca el del mock (link a la revisión). */
.btn-agregar-modulo {
    display: block;
    text-align: center;
    text-decoration: none;
    background: var(--color-fondo-alt);
    border: 1px dashed var(--color-borde);
    border-radius: 8px;
    color: var(--color-tinta);
    cursor: pointer;
    font-size: 0.9rem;
    font-weight: 600;
    padding: 12px 16px;
    font-family: inherit;
    transition: border-color 0.15s ease;
}

.btn-agregar-modulo:hover {
    border-color: var(--color-primario);
}

/* Chip "Archivado" del módulo (distinto del pill de estado del curso). */
.modulo-chip-archivado {
    flex: none;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-tinta-tenue);
    background: var(--color-fondo-alt);
    border-radius: 999px;
    padding: 3px 9px;
}

/* Resalte momentáneo al saltar a una clase desde el desplegable. */
.editar-modulo-input.resaltada,
.editar-leccion-input.resaltada {
    border-color: var(--estado-aprobado-text);
}

/* button[type="submit"] es coral por defecto (0,1,1) y le gana por
   especificidad a .btn-accion / .btn-renombrar (0,1,0). Sobre los <button> que
   deben verse secundarios (renombrar, archivar, restaurar) se revierte el look,
   scopeado bajo la página y con element+clase para superar al estilo global sin
   tocarlo. Los <a> con las mismas clases no compiten y ya salen bien. */
.panel-profesor-page button.btn-accion,
.editar-curso-page button.btn-renombrar {
    background: var(--color-fondo);
    color: var(--color-tinta);
    border: 1px solid var(--color-borde);
    font-weight: 600;
}

.panel-profesor-page button.btn-accion {
    padding: 8px 14px;
    font-size: 0.82rem;
    border-radius: 8px;
}

.editar-curso-page button.btn-renombrar {
    padding: 8px 14px;
    font-size: 0.8rem;
    border-radius: 8px;
}

.editar-curso-page button.btn-renombrar.btn-renombrar-sm {
    padding: 6px 12px;
    font-size: 0.78rem;
}

.panel-profesor-page button.btn-accion:hover,
.editar-curso-page button.btn-renombrar:hover {
    background: var(--color-fondo);
    border-color: var(--color-tinta);
    color: var(--color-tinta);
}

.panel-profesor-page button.btn-accion.btn-accion-peligro:hover,
.editar-curso-page button.btn-renombrar.btn-accion-peligro:hover {
    border-color: #E8455C;
    color: #E8455C;
}

.panel-profesor-page button.btn-accion.btn-accion-ok:hover {
    border-color: var(--estado-aprobado-text);
    color: var(--estado-aprobado-text);
}

/* El ✕ de borrar material también es submit: se lo revierte a secundario chico
   (si no, button[type="submit"] lo pinta coral). */
.editar-curso-page button.btn-material-eliminar {
    background: var(--color-fondo);
    color: var(--color-tinta-tenue);
    border: 1px solid var(--color-borde);
    padding: 0;
    font-weight: 400;
    border-radius: 6px;
}

.editar-curso-page button.btn-material-eliminar:hover {
    border-color: #E8455C;
    color: #E8455C;
}

/* Shell del wizard: tarjeta blanca centrada, calcada del <main> del mock. */
.wizard-shell {
    max-width: 1160px;
    margin: clamp(10px, 2vw, 24px) auto;
    padding: clamp(16px, 4vw, 32px);
    background: var(--color-fondo);
    border-radius: 12px;
    box-shadow: 0 1px 4px rgba(27, 36, 48, 0.08);
}

/* Banner de paso del wizard: degradado desde el color del paso hacia el oscuro,
   con badge, eyebrow y título. El JS pinta el fondo y el badge por paso; acá va
   sólo la estructura y un fallback. */
.wizard-banner {
    padding: clamp(20px, 4vw, 28px);
    margin-bottom: 20px;
    border-radius: 16px;
    color: #fff;
    background: linear-gradient(135deg, #FF6B35CC 0%, #1B2430 65%, #151C26 100%);
}

.wizard-banner-cabecera {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 14px;
}

.wizard-banner-badge {
    flex: none;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--color-primario);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 1.1rem;
}

.wizard-banner-eyebrow {
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.7rem;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.7);
    margin: 0 0 4px;
}

.wizard-banner-titulo {
    font-family: var(--fuente-titulo);
    color: #fff;
    margin: 0;
    font-size: clamp(1.25rem, 2.6vw, 1.6rem);
    line-height: 1.15;
}

/* Layout de dos columnas: sidebar de pasos + contenido, como el mock. */
.wizard-layout {
    display: grid;
    grid-template-columns: minmax(220px, 260px) 1fr;
    gap: 20px;
    align-items: start;
}

.wizard-sidebar {
    display: flex;
    flex-direction: column;
    gap: 4px;
    position: sticky;
    top: 16px;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    padding: 8px;
}

.wizard-paso-nav {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border: none;
    border-radius: 10px;
    background: transparent;
    cursor: pointer;
    font: inherit;
    text-align: left;
    width: 100%;
}

.wizard-paso-nav.wizard-paso-activo {
    background: var(--color-fondo-alt);
}

.wizard-paso-badge {
    flex: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--color-borde);
    color: var(--color-tinta-tenue);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.82rem;
}

.wizard-paso-label {
    font-size: 0.9rem;
    color: var(--color-tinta-suave);
    font-weight: 500;
}

.wizard-paso-activo .wizard-paso-label {
    color: var(--color-tinta);
    font-weight: 700;
}

/* Chips de categoría/nivel, calcados del mock. */
.wizard-chips {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.wizard-chip {
    cursor: pointer;
    border: 1px solid var(--color-borde);
    border-radius: 999px;
    padding: 8px 16px;
    font: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    background: var(--color-fondo);
    color: var(--color-tinta);
}

.wizard-chip-activo {
    border: 2px solid var(--color-primario);
    padding: 7px 15px;
    background: var(--color-cbc-tint);
}

.wizard-chip[data-tint="it"].wizard-chip-activo {
    background: var(--color-it-tint, var(--color-cbc-tint));
}

@media (max-width: 900px) {
    .wizard-layout {
        grid-template-columns: 1fr;
    }
    .wizard-sidebar {
        flex-direction: row;
        flex-wrap: wrap;
        position: static;
    }
}

.wizard-progreso {
    height: 8px;
    background: var(--color-borde);
    border-radius: 999px;
    overflow: hidden;
    margin: 0.5rem 0 1.5rem;
}

/* Dentro del banner la pista es translúcida (el fondo ya es oscuro) y no
   arrastra el margen inferior del uso suelto. */
.wizard-banner .wizard-progreso {
    background: rgba(255, 255, 255, 0.18);
    margin: 16px 0 0;
}

#wizard-progreso-fill {
    height: 100%;
    background: var(--color-primario);
    transition: width 0.25s ease;
}

#wizard .slide {
    max-width: 720px;
}

.wizard-ayuda {
    font-size: 0.85rem;
    color: var(--color-tinta-tenue);
}

/* El atributo hidden tiene que ganarle a cualquier display de las clases
   (.boton es inline-block y sin esto los botones ocultos quedaban visibles). */
[hidden] {
    display: none !important;
}

.wizard-nav {
    display: flex;
    gap: 0.75rem;
    margin-top: 1.5rem;
}

/* Barra de navegación principal del wizard: fija abajo para que no cambie
   de lugar según la altura de cada slide. */
#wizard-nav {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    margin-top: 0;
    padding: 0.9rem 2rem;
    background: var(--color-fondo);
    border-top: 1px solid var(--color-borde);
    box-shadow: 0 -4px 16px rgba(27, 36, 48, 0.06);
    justify-content: flex-end;
    z-index: 100;
}

#btn-anterior {
    margin-right: auto;
}

#wizard {
    padding-bottom: 6rem;
}

.contador-palabras {
    font-size: 0.8rem;
    color: var(--color-tinta-tenue);
    text-align: right;
    margin: 0.25rem 0 0;
}

.wizard-nav .boton {
    border: none;
    cursor: pointer;
    font: inherit;
    font-weight: 700;
}

.wizard-nav .boton:not(.boton-primario):not(.boton-oscuro) {
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    color: var(--color-tinta-suave);
}

/* Tarjeta de módulo: plana, borde fino y radio 12px, calcada del mock. */
.modulo-wizard {
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    padding: 14px;
    margin-bottom: 1rem;
    background: var(--color-fondo);
}

.modulo-wizard-cabecera {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.75rem;
}

.modulo-wizard-cabecera strong {
    font-size: 1.02rem;
}

/* Lista de clases con círculos numerados a la izquierda (contador CSS). */
.mw-clases {
    list-style: none;
    padding: 0;
    margin: 0.5rem 0 0.75rem;
    counter-reset: clase;
}

.mw-clases li {
    counter-increment: clase;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.5rem 0;
    border-top: 1px solid var(--color-borde);
}

.mw-clases li:first-child {
    border-top: none;
}

.mw-clases li::before {
    content: counter(clase);
    flex: 0 0 auto;
    width: 1.6rem;
    height: 1.6rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--color-cbc-tint);
    color: var(--color-primario);
    font-size: 0.8rem;
    font-weight: 700;
}

.modulo-wizard .boton {
    border: none;
    cursor: pointer;
    font: inherit;
    font-size: 0.85rem;
    font-weight: 700;
    margin-right: 0.5rem;
}

.nuevo-modulo {
    border: 2px solid var(--color-primario);
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    background: var(--color-fondo);
    margin-top: 1rem;
    max-width: 480px;
}

.nuevo-modulo .wizard-nav {
    margin-top: 0.75rem;
}

#editor-clase, #editor-examen {
    border: 2px solid var(--color-primario);
    border-radius: 12px;
    padding: 1.5rem;
    background: var(--color-fondo);
    margin-top: 1rem;
}

.bloque-pregunta {
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    padding: 1rem;
    margin-bottom: 1rem;
    background: var(--color-fondo-alt);
}

.bp-opcion {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.bp-opcion .bp-texto {
    flex: 1;
    padding: 0.4rem 0.6rem;
    border: 1px solid var(--color-borde);
    border-radius: 4px;
    font: inherit;
}

.explicacion-ia {
    background: var(--color-cbc-tint);
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    margin-bottom: 1rem;
}

.explicacion-ia p {
    margin: 0.5rem 0;
    line-height: 1.6;
}

.precio-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
    align-items: start;
}

.cuadro-comision {
    border: 2px dashed var(--color-primario);
    border-radius: 12px;
    padding: 1.25rem;
    background: var(--color-cbc-tint);
}

.cuadro-comision h3 {
    margin: 0 0 0.5rem;
    font-size: 1rem;
}

.cuadro-comision p {
    margin: 0.35rem 0;
    color: var(--color-tinta-suave);
}

.cc-neto {
    font-size: 1.05rem;
    color: var(--color-tinta) !important;
}

@media (max-width: 768px) {
    .precio-grid {
        grid-template-columns: 1fr;
    }
}

.aviso-prueba {
    background: var(--color-cbc-tint);
    border: 1px solid var(--color-primario);
    border-radius: 8px;
    padding: 0.75rem 1rem;
    margin: 1rem 0;
    font-size: 0.9rem;
}

.badge-prueba {
    display: inline-block;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    font-size: 0.7rem;
    font-weight: 700;
    font-family: var(--fuente-cuerpo);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-radius: 999px;
    padding: 0.2rem 0.7rem;
    vertical-align: middle;
    margin-left: 0.5rem;
}

.interstitial {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
    /* Velo cálido semitransparente: deja ver la imagen de fondo del sitio. */
    background: var(--velo-fondo);
    backdrop-filter: blur(2px);
}

.interstitial-tarjeta {
    background: var(--color-fondo);
    border-radius: 16px;
    box-shadow: 0 8px 40px rgba(27, 36, 48, 0.18);
    padding: 2.5rem 2rem;
    max-width: 640px;
    text-align: center;
}

/* Bloque de cookies: fijo al borde inferior de la pantalla; nace aplastado
   y se estira hacia arriba hasta cubrir la parte de abajo del viewport. */
.cookies-banner {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2001; /* por encima del velo del interstitial */
    /* Superficie del tema (no --color-tinta, que es color de TEXTO y se invierte:
       en modo oscuro se volvía casi blanco y el cartel quedaba incandescente). */
    background: var(--color-fondo);
    color: var(--color-tinta);
    border-top: 1px solid var(--color-borde);
    padding: 1rem 1.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    flex-wrap: wrap;
    box-shadow: 0 -6px 24px rgba(27, 36, 48, 0.25);
    transform: scaleY(0);
    transform-origin: bottom;
    animation: cookies-estirar 0.5s ease 0.5s forwards;
    transition: transform 0.35s ease;
}

@keyframes cookies-estirar {
    from { transform: scaleY(0); }
    to { transform: scaleY(1); }
}

.cookies-banner.cookies-cerrado {
    animation: none;
    transform: scaleY(0);
}

.cookies-banner p {
    margin: 0;
    font-size: 0.85rem;
    text-align: left;
    flex: 1 1 260px;
}

.cookies-banner .boton {
    border: none;
    cursor: pointer;
    font: inherit;
    font-weight: 700;
    font-size: 0.85rem;
    padding: 0.45rem 0.9rem;
}

.cookies-rechazar {
    background: transparent;
    border: 1px solid var(--color-borde) !important;
    color: var(--color-tinta);
}

.interstitial-tarjeta h2 {
    font-size: 1.6rem;
    margin: 0 0 1.5rem;
    line-height: 1.3;
}

.interstitial-opciones {
    display: flex;
    gap: 12px;
    justify-content: center;
    flex-wrap: wrap;
}

/* Opciones de la pregunta inicial, calcadas del diseño: tarjeta con el emoji
   arriba del texto. "Ambas" va destacada con el borde coral. */
.inter-opcion {
    flex: 1 1 150px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    padding: 18px 14px;
    background: var(--color-it-tint);
    color: var(--color-tinta);
    font: inherit;
    font-weight: 700;
    font-size: 0.9rem;
}

.inter-opcion:hover {
    border-color: var(--color-tinta);
}

.inter-opcion-ic {
    font-size: 1.3rem;
}

.inter-opcion-destacada {
    border: 2px solid var(--color-primario);
    background: var(--color-cbc-tint);
}

.inter-opcion-destacada:hover {
    border-color: var(--color-primario-hover);
}

/* El acceso para profesores baja a un enlace de texto, fuera de las tarjetas. */
.inter-profesor {
    margin-top: 18px;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--color-tinta-tenue);
    font: inherit;
    font-size: 0.85rem;
    text-decoration: underline;
}

.interstitial-opciones .boton {
    border: none;
    cursor: pointer;
    font: inherit;
    font-weight: 700;
}

.boton-ambas {
    background: var(--color-fondo);
    border: 2px solid var(--color-tinta) !important;
    color: var(--color-tinta);
}

.aviso-estudiantes {
    background: var(--color-fondo-alt);
    border: 1px solid var(--color-borde);
    border-left: 4px solid var(--color-primario);
    border-radius: 8px;
    padding: 0.75rem 1rem;
    font-size: 0.9rem;
    margin-bottom: 1.5rem;
}

.boton-ambas:hover {
    background: var(--color-fondo-alt);
}

/* ---------- Hero de la home ---------- */
.hero p {
    max-width: 520px;
    margin: 0;
    color: rgba(255, 255, 255, 0.85);
    font-size: 1.05rem;
}

@media (max-width: 768px) {
    .hero p {
        margin: 0 auto;
    }
}

/* ---------- Página de detalle del curso ---------- */
/* ---------- Página del curso — hero oscuro "Ascenso" ---------- */
.curso-hero {
    border-radius: 16px;
    overflow: hidden;
    padding: clamp(24px, 4vw, 36px);
    margin-bottom: 28px;
    color: white;
    background:
        radial-gradient(ellipse at 95% -25%, rgba(255, 107, 53, 0.4), transparent 60%),
        radial-gradient(ellipse at 0% 120%, rgba(124, 58, 237, 0.35), transparent 55%),
        linear-gradient(135deg, #26303E 0%, #1B2430 60%, #151C26 100%);
}

.curso-hero-info {
    max-width: 720px;
}

.curso-cat {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: white;
    background: rgba(255, 255, 255, 0.16);
    border-radius: 999px;
    padding: 0.2rem 0.75rem;
}

.curso-hero h1 {
    color: white;
    margin: 0.6rem 0 0.35rem;
    font-size: 2.1rem;
    line-height: 1.15;
}

.curso-hero-stars {
    color: #FFC24D;
    font-weight: 700;
    margin: 0 0 0.75rem;
}

.curso-hero-stars span {
    color: rgba(255, 255, 255, 0.7);
    font-weight: 500;
}

.curso-hero-desc {
    color: rgba(255, 255, 255, 0.88);
    margin: 0 0 0.5rem;
    max-width: 60ch;
}

.curso-hero-profe {
    color: rgba(255, 255, 255, 0.7);
    font-size: 0.9rem;
    margin: 0;
}

.curso-hero-profe strong { color: white; }

.curso-chips {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin: 1.1rem 0 0;
}

.curso-chips span {
    background: rgba(255, 255, 255, 0.12);
    border-radius: 8px;
    padding: 0.35rem 0.75rem;
    font-size: 0.82rem;
    color: rgba(255, 255, 255, 0.92);
}

.chip-free {
    background: var(--color-primario) !important;
    color: var(--color-texto-sobre-primario) !important;
    font-weight: 700;
}

.curso-hero-cta {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
    margin-top: 1.4rem;
}

.curso-hero-precio {
    font-family: var(--fuente-titulo);
    font-size: 1.9rem;
    font-weight: 700;
    color: white;
}

.curso-hero-cta .boton {
    cursor: pointer;
    border: none;
    font-size: 1rem;
    padding: 0.7rem 1.4rem;
}

.boton-canje {
    background: var(--color-fondo);
    color: var(--color-tinta);
}

.curso-hero-progreso {
    margin-top: 1.4rem;
    max-width: 440px;
}

.curso-hero-progreso .barra-progreso {
    background: rgba(255, 255, 255, 0.18);
}

.curso-hero-progreso p {
    margin: 0.5rem 0 0;
    color: rgba(255, 255, 255, 0.9);
    font-size: 0.9rem;
}

.curso-hero-progreso a { color: #FFB88C; }

.curso-cta-precio {
    font-family: var(--fuente-titulo);
    font-size: 1.75rem;
    font-weight: 700;
    margin: 0;
}

.nota-muestra {
    font-size: 0.88rem;
    color: rgba(255, 255, 255, 0.7);
    margin: 0.9rem 0 0;
}

/* ---------- Currícula en acordeón ---------- */
.curriculo-titulo {
    font-size: 1.3rem;
    margin: 0 0 14px;
}

.modulo-acc {
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    background: var(--color-fondo);
    margin-bottom: 12px;
    overflow: hidden;
}

.modulo-acc summary {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.9rem 1.15rem;
    cursor: pointer;
    list-style: none;
    background: var(--color-fondo-alt);
}

.modulo-acc summary::-webkit-details-marker { display: none; }

.modulo-acc-info {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.modulo-acc-n {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--color-primario-hover);
}

.modulo-acc-t {
    font-weight: 600;
    color: var(--color-tinta);
}

.modulo-acc-count {
    font-size: 0.78rem;
    color: var(--color-tinta-tenue);
    flex: none;
}

.modulo-acc-chevron {
    flex: none;
    color: var(--color-tinta-tenue);
    font-size: 1.1rem;
    transition: transform 0.2s ease;
}

.modulo-acc[open] .modulo-acc-chevron { transform: rotate(180deg); }

.modulo-acc-body {
    padding: 0.35rem 0.6rem 0.6rem;
}

.clase-row {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    padding: 0.6rem 0.7rem;
    border-radius: 8px;
    text-decoration: none;
    color: var(--color-tinta);
    font-size: 0.92rem;
}

a.clase-row:hover {
    background: var(--color-fondo-alt);
}

.clase-ic {
    flex: none;
    width: 22px;
    text-align: center;
    color: var(--color-primario-hover);
}

.clase-ic .ic-done { color: #1E7A46; }

.clase-t {
    flex: 1;
    min-width: 0;
}

.clase-t em { color: var(--color-tinta-tenue); font-style: normal; }

.clase-dur {
    flex: none;
    font-size: 0.78rem;
    color: var(--color-tinta-tenue);
}

.clase-badge {
    flex: none;
    font-size: 0.72rem;
    color: #1E7A46;
    background: #E6F4EC;
    border-radius: 999px;
    padding: 0.1rem 0.5rem;
}

.clase-lock {
    color: var(--color-tinta-tenue);
    cursor: default;
}

.clase-lock .clase-ic { color: var(--color-tinta-tenue); }

.clase-examen {
    border-top: 1px dashed var(--color-borde);
    margin-top: 0.2rem;
}

@media (prefers-reduced-motion: reduce) {
    .modulo-acc-chevron { transition: none; }
}

/* Barra de compra fija abajo, solo en mobile (el CTA de arriba desaparece al scrollear) */
.cta-flotante {
    display: none;
}

@media (max-width: 768px) {
    .cta-flotante {
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        z-index: 500;
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 1rem;
        background: var(--color-fondo);
        border-top: 1px solid var(--color-borde);
        box-shadow: 0 -4px 16px rgba(27, 36, 48, 0.08);
        padding: 0.75rem 1.25rem;
    }

    .cta-flotante .curso-cta-precio {
        font-size: 1.25rem;
    }

    /* Que la barra no tape el final del contenido */
    body:has(.cta-flotante) main {
        margin-bottom: 4.5rem;
    }
}

/* Navegación entre clases */
.leccion-nav {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 2rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-borde);
}

/* ---------- Footer ---------- */
footer nav {
    margin-bottom: 0.5rem;
}

footer nav a {
    color: var(--color-tinta-suave);
    text-decoration: none;
    margin: 0 0.75rem;
    font-size: 0.9rem;
}

footer nav a:hover {
    text-decoration: underline;
}

footer p {
    margin: 0;
    font-size: 0.85rem;
}

/* Icono de Instagram: solo icono, gris sutil en normal y coral al hover.
   Sirve tanto en el footer como en el encabezado de /consultas. */
.ig-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--color-tinta-suave);
    transition: color 0.15s ease;
    text-decoration: none;
}

.ig-link:hover,
.ig-link:focus-visible {
    color: var(--color-primario);
    text-decoration: none;
}

footer nav .ig-link {
    margin: 0 0.75rem;
    vertical-align: middle;
}

/* Segunda fila del footer: links legales, en letra más chica. */
footer nav.footer-legal a {
    font-size: 0.8rem;
    color: var(--color-tinta-tenue);
    margin: 0 0.5rem;
}

/* ---------- Apuntes gratis ---------- */
.apuntes-intro, .apunte-detalle {
    max-width: 46rem;
    margin-bottom: 1.5rem;
}

.apuntes-intro p {
    color: var(--color-tinta-suave);
}

.grid-apuntes {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1.25rem;
    margin-top: 1rem;
}

.card-apunte {
    display: flex;
    flex-direction: column;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    padding: 1.25rem;
    text-decoration: none;
    color: inherit;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.card-apunte:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 24px rgba(27, 36, 48, 0.10);
}

.card-apunte-ic {
    font-size: 1.8rem;
    margin-bottom: 0.4rem;
}

.card-apunte h2 {
    font-size: 1.1rem;
    color: var(--color-tinta);
    margin: 0 0 0.4rem;
    line-height: 1.25;
}

.card-apunte-desc {
    font-size: 0.9rem;
    color: var(--color-tinta-suave);
    flex: 1;
    margin: 0 0 0.8rem;
}

.card-apunte-cta {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--color-primario);
}

.apunte-desc {
    color: var(--color-tinta-suave);
    line-height: 1.5;
}

.apunte-descarga {
    background: var(--color-crema, #FBF8F5);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    padding: 1.5rem;
    margin: 1.5rem 0;
}

.apunte-descarga h2 {
    margin-top: 0;
    font-size: 1.15rem;
}

.apunte-curso {
    border-left: 3px solid var(--color-primario);
    padding: 0.5rem 0 0.5rem 1rem;
}

.apunte-curso h2 {
    font-size: 1.1rem;
    margin: 0 0 0.4rem;
}

.apunte-curso p {
    color: var(--color-tinta-suave);
    margin-bottom: 0.8rem;
}

/* ---------- Modelos de parcial y guías descargables ---------- */
.chip-practica {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--color-primario-hover);
    background: rgba(255, 107, 53, 0.12);
    border-radius: 999px;
    padding: 0.15rem 0.6rem;
    margin-right: 0.4rem;
}

/* Bloque de extras opcionales en la card de módulo del wizard. */
.mw-extras {
    margin-top: 0.9rem;
    padding-top: 0.9rem;
    border-top: 1px dashed var(--color-borde);
}

/* Bloque del examen final del curso: va debajo de todos los módulos y se
   destaca con un borde coral para que se lea como el cierre del curso. */
.examen-final-curso {
    margin-top: 1.5rem;
    padding: 1.25rem 1.5rem;
    border: 2px solid var(--color-primario);
    border-radius: 12px;
    background: var(--color-cbc-tint);
}

.examen-final-curso h3 {
    margin: 0 0 0.3rem;
}

/* Aviso de atención dentro del wizard (se usaba sin regla). */
.wizard-ayuda-alerta {
    font-size: 0.85rem;
    color: var(--color-primario-hover);
    font-weight: 500;
}

/* Dropzone de archivo: los inputs de video, portada y PDF quedan dentro de un
   recuadro punteado que se lee como zona de carga, como el diseño. El input
   conserva su id/name — es sólo la envoltura visual. */
.campo-archivo,
.mw-extras .campo {
    border: 2px dashed var(--color-borde);
    border-radius: 12px;
    padding: 1rem 1.15rem;
    background: var(--color-fondo-alt);
    transition: border-color 0.15s ease, background 0.15s ease;
}

.campo-archivo:hover,
.mw-extras .campo:hover {
    border-color: var(--color-primario);
    background: var(--color-cbc-tint);
}

.campo-archivo input[type="file"],
.mw-extras .campo input[type="file"] {
    display: block;
    margin-top: 0.4rem;
    max-width: 100%;
}

.campo-archivo input[type="file"]::file-selector-button,
.mw-extras .campo input[type="file"]::file-selector-button {
    font: inherit;
    font-weight: 700;
    padding: 0.45rem 0.9rem;
    margin-right: 0.75rem;
    border: none;
    border-radius: 8px;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    cursor: pointer;
}

/* Checkbox como tarjeta seleccionable (módulo de muestra, sin-IA). */
.campo-checkbox {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    margin: 0.9rem 0;
    padding: 0.9rem 1.1rem;
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    background: var(--color-fondo-alt);
    cursor: pointer;
    line-height: 1.45;
}

.campo-checkbox:hover {
    border-color: var(--color-primario);
}

.campo-checkbox input[type="checkbox"] {
    margin-top: 0.15rem;
}

/* ---------- Páginas legales (términos, privacidad, reembolsos) ---------- */
/* Barra de tabs de las páginas legales, calcada del mock: pills en fila con
   borde inferior; la activa es un pill oscuro. Son 4 páginas reales (una URL
   por documento), no un switch de estado. */
.legal-tabs {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 28px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--color-borde);
}

.legal-tab {
    font-size: 0.85rem;
    font-weight: 600;
    border: 1px solid var(--color-borde);
    background: var(--color-fondo);
    color: var(--color-tinta-suave);
    border-radius: 999px;
    padding: 7px 16px;
    text-decoration: none;
}

.legal-tab:hover { border-color: var(--color-tinta-tenue); }

.legal-tab-activo {
    border-color: var(--color-oscuro);
    background: var(--color-oscuro);
    color: #fff;
}

/* Back-link tipo pill (catálogos), calcado del mock: "← Volver al inicio". */
.volver-pill {
    display: inline-block;
    margin-bottom: 18px;
    padding: 6px 14px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-tinta-suave);
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 999px;
    text-decoration: none;
}

.volver-pill:hover { border-color: var(--color-tinta); }

/* Tabs de vista del catálogo CBC: "Todos los cursos" / "Por materia". Son dos
   páginas reales (grilla y /materias/); la activa es un pill oscuro. */
.area-tabs {
    display: flex;
    gap: 8px;
    margin-bottom: 22px;
    flex-wrap: wrap;
}

.area-tab {
    font-size: 0.88rem;
    font-weight: 700;
    padding: 9px 16px;
    border-radius: 999px;
    border: 1px solid var(--color-borde);
    background: var(--color-fondo);
    color: var(--color-tinta-suave);
    text-decoration: none;
}

.area-tab-activo {
    border-color: var(--color-oscuro);
    background: var(--color-oscuro);
    color: #fff;
}

.legal {
    max-width: 46rem;
    margin: 0 auto 3rem;
    line-height: 1.6;
}

.legal h2 {
    font-size: 1.15rem;
    color: var(--color-oscuro);
    margin: 2rem 0 0.5rem;
}

.legal p, .legal li {
    color: var(--color-tinta-suave);
}

.legal ul {
    padding-left: 1.2rem;
}

.legal li {
    margin-bottom: 0.4rem;
}

.legal-fecha {
    font-size: 0.85rem;
    color: var(--color-tinta-tenue);
}

.legal-nota {
    font-size: 0.9rem;
    color: var(--color-tinta-suave);
    background: var(--color-fondo-alt);
    border-left: 3px solid var(--color-borde);
    padding: 0.75rem 1rem;
    border-radius: 0 8px 8px 0;
}

/* ---------- Página de ayuda ---------- */
.ayuda {
    max-width: 720px;
}

.ayuda-item {
    border: 1px solid var(--color-borde);
    border-radius: 10px;
    padding: 0.9rem 1.25rem;
    margin-bottom: 0.75rem;
    background: var(--color-fondo-alt);
}

.ayuda-item summary {
    cursor: pointer;
    font-weight: 600;
    color: var(--color-tinta);
    list-style: none;
}

.ayuda-item summary::-webkit-details-marker { display: none; }

.ayuda-item p {
    margin: 0.625rem 0 0;
    color: var(--color-tinta-suave);
    line-height: 1.6;
}

/* ---------- Mis cursos ---------- */
.lista-mis-cursos {
    list-style: none;
    padding: 0;
    display: grid;
    gap: 1rem;
}

.mi-curso {
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
    background: var(--color-fondo);
}

.mi-curso-info {
    flex: 1 1 300px;
    min-width: 0;
}

.mi-curso-info h2 {
    margin: 0 0 0.5rem;
    font-size: 1.15rem;
}

.mi-curso .barra-progreso {
    max-width: 380px;
}

/* Dato de solo lectura en Configuración (nombre, apellido, email) */
.dato-fijo {
    margin: 0;
    padding: 0.5rem 0.75rem;
    background: var(--color-fondo-alt);
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    color: var(--color-tinta-suave);
}

/* Avance del curso dentro de la clase. El panel es oscuro arriba, así que el
   track va claro como en el hero del curso. */
/* Autoría de la clase, sobre la parte oscura del degradado del panel. */
.leccion-profe {
    color: rgba(255, 255, 255, 0.72);
    font-size: 0.9rem;
    margin: 0.5rem 0 0;
}

.leccion-profe strong {
    color: #fff;
}

.leccion-progreso-curso {
    max-width: 440px;
    margin: 1rem 0 1.4rem;
}

.leccion-progreso-curso .barra-progreso {
    background: rgba(255, 255, 255, 0.18);
}

.leccion-progreso-curso p {
    margin: 0.4rem 0 0;
    color: rgba(255, 255, 255, 0.9);
    font-size: 0.85rem;
}

/* ---------- Continuar curso (arriba de la home) ---------- */
.continuar-curso {
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
    margin-bottom: 2rem;
    padding: 1.25rem 1.5rem;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-left: 4px solid var(--color-primario);
    border-radius: 12px;
}

/* Portada del curso llenando el espacio central de la tarjeta: entra desde la
   mitad hacia la derecha, tenue y con un degradado de máscara para no tapar el
   texto de la izquierda. El contenido va por encima (z-index). */
.continuar-curso-portada {
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    left: 38%;
    z-index: 0;
    background-size: cover;
    background-position: center;
    opacity: 0.20;
    pointer-events: none;
    -webkit-mask-image: linear-gradient(to right, transparent, #000 45%);
    mask-image: linear-gradient(to right, transparent, #000 45%);
}

.continuar-curso-info {
    position: relative;
    z-index: 1;
    flex: 1 1 300px;
    min-width: 0;
}

.continuar-curso-cta {
    position: relative;
    z-index: 1;
}

.continuar-curso-eyebrow {
    margin: 0;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--color-tinta-tenue);
}

.continuar-curso-info h2 {
    margin: 0.2rem 0 0.5rem;
    font-size: 1.15rem;
}

.continuar-curso-info h2 a {
    color: var(--color-tinta);
    text-decoration: none;
}

.continuar-curso-info h2 a:hover {
    color: var(--color-primario);
}

.continuar-curso .barra-progreso {
    max-width: 420px;
}

.continuar-curso-detalle {
    margin: 0;
    color: var(--color-tinta-suave);
    font-size: 0.9rem;
}

@media (max-width: 768px) {
    .continuar-curso {
        flex-direction: column;
        align-items: stretch;
    }

    .continuar-curso-cta {
        text-align: center;
    }

    /* Con la tarjeta apilada, la portada de fondo taparía el contenido a lo
       alto: no aporta en mobile, se oculta. */
    .continuar-curso-portada {
        display: none;
    }
}

/* ---------- Ayuda en la clase: asistente IA (destacado) + consulta al profe (escondida) ---------- */
.ayuda-clase {
    margin-top: 2rem;
}

.ayuda-ia {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
    padding: 1.25rem 1.5rem;
    border-radius: 12px;
    color: white;
    background:
        radial-gradient(ellipse at 90% -20%, rgba(255, 107, 53, 0.4), transparent 60%),
        linear-gradient(135deg, #26303E 0%, #1B2430 60%, #151C26 100%);
}

.ayuda-ia-texto h2 {
    font-size: 1.2rem;
    margin: 0 0 0.25rem;
    color: white;
}

.ayuda-ia-texto p {
    margin: 0;
    color: rgba(255, 255, 255, 0.85);
    font-size: 0.95rem;
}

.ayuda-ia .boton {
    flex: none;
    cursor: pointer;
    border: none;
    font-size: 1rem;
}

/* ---------- Comentarios de la clase ---------- */
.comentarios {
    margin-top: 1.75rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-borde);
}

.comentarios h2 {
    font-size: 1.2rem;
    margin: 0 0 1rem;
}

.comentario-form {
    margin-bottom: 1.5rem;
}

.comentario-form .campo {
    margin-bottom: 0.6rem;
}

.comentario {
    border: 1px solid var(--color-borde);
    border-radius: 10px;
    padding: 0.85rem 1.1rem;
    margin-bottom: 0.85rem;
    background: var(--color-fondo);
}

.comentario-cabecera {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    flex-wrap: wrap;
    margin-bottom: 0.4rem;
}

.comentario-autor {
    font-weight: 600;
    color: var(--color-tinta);
}

.comentario-badge-profe,
.comentario-badge-equipo {
    display: inline-block;
    font-size: 0.68rem;
    font-weight: 700;
    border-radius: 999px;
    padding: 0.1rem 0.5rem;
    vertical-align: middle;
}

.comentario-badge-profe {
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
}

/* Badge del equipo de la plataforma: tono oscuro para diferenciarlo del profe. */
.comentario-badge-equipo {
    background: var(--color-oscuro);
    color: #fff;
}

.comentario-fecha {
    font-size: 0.78rem;
    color: var(--color-tinta-tenue);
}

/* El form de eliminar empuja a la derecha; el botón es un link discreto en rojo. */
.comentario-eliminar-form {
    margin-left: auto;
}

.comentario-eliminar {
    color: #E8455C;
    font-size: 0.8rem;
}

.comentario-texto {
    margin: 0;
    line-height: 1.5;
}

/* Respuestas: anidadas con un filo a la izquierda y fondo tenue. */
.comentario-respuesta {
    margin: 0.75rem 0 0 1.25rem;
    border-left: 2px solid var(--color-borde);
    background: var(--color-fondo-alt);
}

/* "Responder": details discreto que abre el form debajo del comentario. */
.comentario-responder {
    margin-top: 0.6rem;
}

.comentario-responder > summary {
    cursor: pointer;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--color-primario);
    list-style: none;
    width: max-content;
}

.comentario-responder > summary::-webkit-details-marker { display: none; }

.comentario-responder .comentario-form {
    margin: 0.6rem 0 0;
}

.comentarios-vacio {
    color: var(--color-tinta-suave);
}

/* ---------- Grid de materias del CBC (home) ---------- */
.cursos-sub {
    color: var(--color-tinta-suave);
    margin: 0.2rem 0 0.5rem;
    max-width: 46rem;
}

.grupo-materia-titulo {
    font-family: 'Fraunces', serif;
    font-size: 1.25rem;
    color: var(--color-oscuro);
    margin: 2rem 0 0.9rem;
    padding-bottom: 0.35rem;
    border-bottom: 2px solid var(--color-borde);
}

/* Link "Ver todas las materias" de la home de CBC. */
.cbc-vermas {
    display: inline-block;
    margin-top: 1rem;
}

/* Invitación a dictar un curso cuando un área todavía no tiene ninguno.
   Va separada del mensaje de "no hay cursos" por un espacio. */
.cta-ensenar {
    margin-top: 2rem;
}

/* Página de materias del CBC. */
.materias-intro {
    max-width: 44rem;
    margin-bottom: 1.5rem;
}

.materias-intro p {
    color: var(--color-tinta-suave);
}

/* Cada área (grupo) es una sola fila que scrollea horizontal: no crece en
   alto aunque la categoría tenga muchas materias. */
.fila-materias {
    display: flex;
    gap: 1rem;
    overflow-x: auto;
    padding: 0.25rem 0 1rem;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
}

.fila-materias .materia-box {
    flex: 0 0 clamp(240px, 72vw, 290px);
    scroll-snap-align: start;
}

.materia-box {
    display: flex;
    flex-direction: column;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    padding: 1.1rem 1.1rem 1rem;
}

.materia-box-nombre {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--color-primario);
    margin-bottom: 0.5rem;
}

/* Cuadro con curso: el curso es lo más grande y clickeable. */
.materia-curso {
    text-decoration: none;
    color: inherit;
    display: block;
}

.materia-curso h4 {
    font-size: 1.1rem;
    color: var(--color-tinta);
    margin: 0 0 0.3rem;
    line-height: 1.25;
}

.materia-curso-profe {
    font-size: 0.8rem;
    color: var(--color-tinta-tenue);
    margin: 0 0 0.6rem;
}

.materia-vermas {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--color-tinta-suave);
    text-decoration: none;
    margin-top: 0.5rem;
}

.materia-vermas:hover { color: var(--color-primario); }

/* Mensaje resaltado que invita a reemplazar el curso: es un anchor completo. */
.materia-mejor {
    display: block;
    margin-top: 0.8rem;
    padding: 0.65rem 0.8rem;
    background: rgba(255, 107, 53, 0.10);
    border: 1px solid rgba(255, 107, 53, 0.35);
    border-radius: 10px;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--color-primario-hover);
    text-decoration: none;
    line-height: 1.35;
}

.materia-mejor:hover {
    background: rgba(255, 107, 53, 0.18);
}

/* Cuadro vacío: reclutamiento de profesor. */
.materia-box-vacia {
    border-style: dashed;
    background: var(--color-crema, #FBF8F5);
}

.materia-vacia-txt {
    font-size: 0.9rem;
    color: var(--color-tinta-suave);
    line-height: 1.4;
    margin: 0 0 0.9rem;
    flex: 1;
}

.materia-vacia-cta {
    align-self: flex-start;
    font-size: 0.85rem;
}

/* ---------- Landing "Enseñá en CursARlab" (/ensena/) ---------- */
.ensena-hero {
    text-align: center;
    max-width: 44rem;
    margin: 16px auto 8px;
}

/* Titulares de la landing, con las escalas del diseño. */
.ensena-hero h1 {
    font-size: clamp(1.7rem, 3.4vw, 2.3rem);
    margin: 0 0 10px;
}

.ensena-pasos h2,
.ensena-faq h2,
.ensena-cierre h2 {
    font-size: 1.3rem;
}

.ensena-lead {
    font-size: 1.15rem;
    color: var(--color-tinta-suave);
    margin: 0.5rem 0;
}

.ensena-comision {
    font-size: 1rem;
    color: var(--color-tinta);
    margin: 0.75rem auto 1.25rem;
    max-width: 34rem;
}

.ensena-cta {
    display: inline-block;
    font-size: 1.05rem;
    padding: 0.75rem 1.75rem;
}

.ensena-ventajas {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 20px;
    margin: 36px 0;
}

.ensena-ventaja {
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    padding: 1.25rem;
}

.ensena-ventaja-ic {
    font-size: 1.8rem;
    display: block;
    margin-bottom: 0.5rem;
}

.ensena-ventaja h3 {
    font-size: 1.05rem;
    color: var(--color-oscuro);
    margin: 0 0 0.4rem;
}

.ensena-ventaja p {
    font-size: 0.9rem;
    color: var(--color-tinta-suave);
    line-height: 1.45;
    margin: 0;
}

.ensena-faq {
    max-width: 44rem;
    margin: 2.5rem auto;
}

/* "Cómo funciona": 3 tarjetas con círculos numerados de color, calcado del mock. */
.ensena-pasos {
    margin: 36px 0;
}

.ensena-pasos h2 {
    text-align: center;
    margin-bottom: 20px;
}

.ensena-pasos-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 20px;
}

.ensena-paso-card {
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    padding: 24px 20px 20px;
}

.ensena-paso-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    color: #fff;
    font-weight: 700;
    font-size: 1.05rem;
    margin-bottom: 14px;
}

.ensena-paso-num-1 { background: #FF6B35; }
.ensena-paso-num-2 { background: #E8455C; }
.ensena-paso-num-3 { background: #7C3AED; }

.ensena-paso-card h3 {
    font-size: 1.05rem;
    color: var(--color-oscuro);
    margin: 0 0 0.5rem;
}

.ensena-paso-card p {
    font-size: 0.9rem;
    color: var(--color-tinta-suave);
    line-height: 1.5;
    margin: 0;
}

.ensena-paso-link {
    display: inline-block;
    margin-top: 10px;
    font-size: 0.85rem;
    font-weight: 600;
    color: #7C3AED;
    text-decoration: none;
}

.ensena-paso-link:hover { text-decoration: underline; }

.ensena-faq details {
    border-bottom: 1px solid var(--color-borde);
    padding: 0.75rem 0;
}

.ensena-faq summary {
    cursor: pointer;
    font-weight: 600;
    color: var(--color-oscuro);
}

.ensena-faq details p {
    margin: 0.5rem 0 0;
    color: var(--color-tinta-suave);
}

.ensena-cierre {
    text-align: center;
    background: var(--color-crema, #FBF8F5);
    border-radius: 16px;
    padding: 2rem 1.5rem;
    margin: 2.5rem 0 1rem;
}

/* ---------- Sellos de confianza (cuotas / garantía) ---------- */
.sello-confianza {
    font-size: 0.82rem;
    color: var(--color-tinta-suave);
    margin: 0.35rem 0 0;
}

/* ---------- Rutas de aprendizaje ---------- */
.rutas-intro {
    max-width: 44rem;
    margin-bottom: 1.5rem;
}

.rutas-intro p {
    color: var(--color-tinta-suave);
}

.rutas-home {
    margin: 2rem 0 2.5rem;
}

.rutas-home-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
}

.rutas-home-vertodas {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-primario);
    text-decoration: none;
    white-space: nowrap;
}

.grid-rutas {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 20px;
    margin-top: 1rem;
}

.card-ruta {
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: inherit;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    overflow: hidden;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.card-ruta:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 24px rgba(27, 36, 48, 0.10);
}

.card-ruta-portada {
    position: relative;
    aspect-ratio: 16 / 9;
    background: var(--color-oscuro);
    display: flex;
    align-items: center;
    justify-content: center;
}

.card-ruta-cuerpo {
    padding: 0.9rem 1rem 1rem;
}

.card-ruta-cuerpo h2,
.card-ruta-cuerpo h3 {
    font-size: 1.1rem;
    color: var(--color-tinta);
    margin: 0 0 0.4rem;
    line-height: 1.25;
}

.card-ruta-objetivo {
    font-size: 0.9rem;
    color: var(--color-tinta-suave);
    margin: 0 0 0.6rem;
}

.rutas-vacio {
    color: var(--color-tinta-suave);
}

/* Detalle de ruta */
.ruta-hero {
    max-width: 46rem;
    margin-bottom: 2rem;
}

.ruta-objetivo {
    font-size: 1.15rem;
    font-weight: 600;
    color: var(--color-primario-hover);
    margin: 0.3rem 0 0.6rem;
}

.ruta-desc {
    color: var(--color-tinta-suave);
    line-height: 1.5;
}

.ruta-cta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
    margin: 1.25rem 0 0.75rem;
}

.ruta-precio {
    font-family: 'Fraunces', serif;
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--color-tinta);
}

/* En el detalle de ruta los chips van sobre el fondo normal (no el hero oscuro
   del detalle de curso, con el que comparten clase), así que usan fondo-alt +
   tinta-suave como el mock — si no, quedan blanco sobre claro. */
.ruta-hero .curso-chips span {
    background: var(--color-fondo-alt);
    color: var(--color-tinta-suave);
}

.ruta-precio-nota {
    font-size: 0.8rem;
    color: var(--color-tinta-tenue);
    margin-right: auto;
}

.ruta-lista {
    list-style: none;
    padding: 0;
    margin: 1rem 0 0;
    counter-reset: none;
}

.ruta-paso {
    margin-bottom: 0.75rem;
}

.ruta-paso-link {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.9rem 1rem;
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s ease;
}

.ruta-paso-link:hover {
    border-color: var(--color-primario);
}

.ruta-paso-num {
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-oscuro);
    color: white;
    border-radius: 50%;
    font-weight: 700;
}

.ruta-paso-info {
    display: flex;
    flex-direction: column;
}

.ruta-paso-info strong {
    color: var(--color-tinta);
}

.ruta-paso-meta {
    font-size: 0.85rem;
    color: var(--color-tinta-suave);
}

/* --- Fix de contraste: textos suaves sobre el hero oscuro del curso --- */
.curso-hero .sello-confianza {
    color: rgba(255, 255, 255, 0.82);
}
.curso-hero .sello-confianza a {
    color: #ffffff;
    text-decoration: underline;
}
.curso-hero .nota-muestra {
    color: rgba(255, 255, 255, 0.85);
}

/* --- Boton 'Cargar examen final' mas notable en el wizard --- */
.mw-examen-cta {
    display: block;
    width: 100%;
    margin: 0.9rem 0 0.4rem;
    padding: 1rem 1.25rem;
    font-size: 1.05rem;
    font-weight: 700;
    border-radius: 12px;
    letter-spacing: 0.2px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
    transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.mw-examen-cta:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.24);
}

/* ============================================================
   Menú mobile — calco del diseño (CursARlab Menu.dc.html)
   Filas tipo tarjeta con icono de color, cuenta+campana arriba,
   buscador pill y fila de tema. Sólo aplica al menú colapsado.
   ============================================================ */

/* Estos elementos sólo existen en el menú mobile; en desktop no molestan. */
.nav-ic, .nav-chevron, .nav-tema-label { display: none; }
/* Los wrappers no afectan el layout de desktop (sus hijos participan del nav). */
.nav-cuenta, .nav-tema { display: contents; }

@media (max-width: 1024px) {
    .navbar nav.nav-abierto {
        gap: 14px;
        padding: 2px 2px 10px;
    }

    /* --- Orden como el mock: cuenta, buscador, nav, tema, links --- */
    .navbar nav .nav-cuenta,
    .navbar nav .nav-ingresar,
    .navbar nav .nav-registrarme { order: 1; }
    .navbar nav .nav-buscador { order: 2; }
    .navbar nav > a:not(.nav-ingresar):not(.nav-registrarme) { order: 3; }
    .navbar nav .nav-tema { order: 4; }
    .navbar nav .mas-menu { order: 5; }

    /* --- Fila cuenta + campana --- */
    .navbar nav .nav-cuenta {
        display: flex;
        align-items: center;
        gap: 10px;
        width: 100%;
        margin: 0;
    }
    .navbar nav .nav-cuenta .perfil-menu {
        order: 1; flex: 1 1 auto; min-width: 0; margin: 0; width: auto; position: relative;
    }
    .navbar nav .nav-cuenta .notif-menu {
        order: 2; flex: 0 0 auto; margin: 0; width: auto; position: relative;
    }
    .navbar nav .perfil-boton {
        width: 100%; height: 60px;
        border-radius: 14px;
        border: 1.5px solid var(--color-borde);
        background: transparent;
        display: flex; align-items: center; gap: 12px;
        padding: 0 14px; cursor: pointer;
    }
    .navbar nav .perfil-avatar {
        width: 36px; height: 36px; border-radius: 50%;
        background: var(--color-primario);
        color: var(--color-texto-sobre-primario);
        display: flex; align-items: center; justify-content: center;
        font-size: 15px; font-weight: 700; flex-shrink: 0;
    }
    .navbar nav .perfil-nombre {
        flex: 1; min-width: 0; text-align: left;
        font-size: 15px; font-weight: 600; color: var(--color-tinta);
        white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }
    .navbar nav .campanita {
        width: 56px; height: 56px; border-radius: 14px;
        border: 1.5px solid var(--color-borde);
        background: transparent;
        display: flex; align-items: center; justify-content: center;
        font-size: 1.25rem; position: relative; cursor: pointer;
    }

    /* Los desplegables de cuenta y campana vuelven a ser popovers (como el mock),
       para no empujar la fila. */
    .navbar nav .nav-cuenta .perfil-lista,
    .navbar nav .nav-cuenta .notif-lista {
        position: absolute;
        top: calc(100% + 8px);
        margin: 0;
        background: var(--color-fondo-alt);
        border: 1px solid var(--color-borde);
        border-radius: 14px;
        box-shadow: 0 16px 32px rgba(0, 0, 0, 0.35);
        padding: 6px;
        z-index: 1500;
    }
    .navbar nav .nav-cuenta .perfil-lista { left: 0; right: 0; }
    .navbar nav .nav-cuenta .notif-lista { right: 0; left: auto; width: min(260px, 78vw); }

    /* --- Buscador pill --- */
    .navbar nav .nav-buscador {
        height: 52px;
        border-radius: 16px;
        background: var(--color-fondo-alt);
        display: flex; align-items: center;
        gap: 6px; padding: 4px; margin: 0;
    }
    .navbar nav .nav-buscador input {
        flex: 1; min-width: 0;
        background: transparent; border: none; outline: none;
        color: var(--color-tinta); font-size: 15px;
        padding: 0 0 0 12px; height: auto;
    }
    .navbar nav .nav-buscador button {
        width: 44px; height: 44px; border-radius: 12px;
        background: var(--color-primario);
        border: none; cursor: pointer; flex-shrink: 0;
        display: flex; align-items: center; justify-content: center;
        font-size: 1rem;
    }

    /* --- Items de nav como tarjetas con icono + chevron --- */
    .navbar nav > a:not(.nav-ingresar):not(.nav-registrarme) {
        display: flex; align-items: center; gap: 12px;
        height: 56px; padding: 0 12px;
        border-radius: 14px; border-bottom: none;
        color: var(--color-tinta);
    }
    .navbar nav > a:not(.nav-ingresar):not(.nav-registrarme):hover {
        background: var(--color-fondo-alt);
    }
    .nav-ic {
        display: flex; align-items: center; justify-content: center;
        width: 36px; height: 36px; border-radius: 10px; flex-shrink: 0;
    }
    /* El prefijo .navbar nav sube la especificidad para ganarle a
       ".navbar nav span" (si no, el icono queda gris en vez de su color). */
    .navbar nav .nav-ic-cursos { background: rgba(255, 107, 53, 0.14); color: #FF6B35; }
    .navbar nav .nav-ic-rutas { background: rgba(100, 208, 234, 0.14); color: #64D0EA; }
    .navbar nav .nav-ic-ensenar { background: rgba(254, 223, 96, 0.16); color: #E0A93B; }
    .nav-link-txt { flex: 1; font-size: 16px; font-weight: 500; }
    .navbar nav .nav-chevron {
        display: flex; align-items: center; flex-shrink: 0;
        color: var(--color-tinta-tenue);
    }

    /* --- Fila de tema (label + toggle en una tarjeta) --- */
    .navbar nav .nav-tema {
        display: flex;
        align-items: center;
        justify-content: space-between;
        width: 100%;
        height: 56px;
        border-radius: 14px;
        border: 1.5px solid var(--color-borde);
        padding: 0 14px;
    }
    .navbar nav .nav-tema-label {
        display: inline;
        font-size: 13.5px; font-weight: 500; color: var(--color-tinta);
    }
    .navbar nav .nav-tema .tema-switch { margin: 0; flex: none; }

    /* --- Links secundarios: footer chico centrado (Ayuda, Apuntes, etc.) --- */
    .navbar nav .mas-menu { width: 100%; }
    .navbar nav .mas-lista {
        display: flex !important;
        flex-wrap: wrap; justify-content: center;
        gap: 4px 18px;
        padding: 6px 0 0; margin: 0;
        border: none; border-radius: 0; box-shadow: none; min-width: 0;
    }
    .navbar nav .mas-lista a {
        width: auto; padding: 4px 0; border-bottom: none;
        font-size: 12.5px; color: var(--color-tinta-tenue);
    }
}

/* ============================================================
   Drawer de cuenta (solo desktop) — calco de Home.dc.html
   Botón flotante al borde derecho que abre un panel lateral con
   cuenta, notificaciones y links secundarios. Reemplaza en la barra
   a perfil, campana y "⋯". En mobile no existe (queda el menú ☰).
   ============================================================ */
.drawer-fab { display: none; }

/* El panel y el velo se muestran quitando [hidden] por JS; en mobile nunca. */
.drawer {
    position: fixed;
    top: 0;
    right: 0;
    height: 100vh;
    width: min(300px, 88vw);
    z-index: 2401;
    background: var(--color-fondo);
    box-shadow: -8px 0 32px rgba(27, 36, 48, 0.25);
    display: flex;
    flex-direction: column;
    padding: 20px;
    overflow-y: auto;
}

.drawer-velo {
    position: fixed;
    inset: 0;
    z-index: 2400;
    background: rgba(27, 36, 48, 0.45);
}

@media (max-width: 1024px) {
    .drawer, .drawer-velo { display: none !important; }
}

@media (min-width: 1025px) {
    /* Botón flotante de cuenta: arriba a la derecha, justo debajo del header.
       Escondido asomando por el borde; entra entero al hover. */
    .drawer-fab {
        position: fixed;
        top: 74px;
        right: 0;
        transform: translateX(55%);
        width: 52px;
        height: 52px;
        border-radius: 50%;
        border: 1px solid var(--color-borde);
        background: var(--color-fondo);
        box-shadow: 0 4px 16px rgba(27, 36, 48, 0.18);
        cursor: pointer;
        padding: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        z-index: 1400;
        transition: transform 0.25s ease, box-shadow 0.25s ease;
    }
    .drawer-fab:hover, .drawer-fab:focus-visible {
        transform: translateX(-18px);
        box-shadow: 0 8px 24px rgba(27, 36, 48, 0.28);
    }

    /* En desktop, perfil/campana/⋯ viven en el drawer, no en la barra. */
    .navbar .notif-menu,
    .navbar .perfil-menu,
    .navbar .mas-menu { display: none; }

    /* El buscador arranca pegado a los links de la izquierda (Cursos, Rutas,
       ¿Querés enseñar?) y se alarga hacia la derecha llenando el espacio libre;
       al crecer empuja el tema (y, para anónimos, Ingresar/Registrarme) al
       extremo derecho. */
    .navbar nav .nav-buscador {
        flex: 1 1 340px;
        margin: 0;
    }
}

.drawer-fab-inner {
    position: relative;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--color-fondo-alt);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-tinta-suave);
}

.drawer-fab-avatar {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 1.05rem;
}

.drawer-fab-badge {
    position: absolute;
    top: -4px;
    left: -4px;
    min-width: 18px;
    height: 18px;
    padding: 0 4px;
    border-radius: 999px;
    background: #E8455C;
    color: #fff;
    font-size: 0.68rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 0 0 2px var(--color-fondo);
}

.drawer-cab {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
}

.drawer-cab-user {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.drawer-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--color-fondo-alt);
    color: var(--color-tinta-suave);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    flex: none;
}

.drawer-cab-user strong {
    color: var(--color-tinta);
    font-size: 0.95rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.drawer-cerrar {
    background: none;
    border: none;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    color: var(--color-tinta-tenue);
    padding: 4px;
    flex: none;
}

.drawer-nav {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.drawer-nav a,
.drawer-link-btn {
    display: block;
    width: 100%;
    text-align: left;
    padding: 11px 12px;
    border-radius: 8px;
    text-decoration: none;
    color: var(--color-tinta);
    font-size: 0.92rem;
    background: none;
    border: none;
    cursor: pointer;
    font: inherit;
}

.drawer-nav a:hover,
.drawer-link-btn:hover {
    background: var(--color-fondo-alt);
}

/* El botón de "Cerrar sesión" es un submit; hay un estilo global que lo pinta
   coral. Acá lo devolvemos a fila plana (mayor especificidad con .drawer). */
.drawer .drawer-link-btn {
    background: none;
    color: var(--color-tinta);
    font-weight: 400;
    /* El padding también hay que repetirlo: button[type="submit"] (0,1,1) le
       gana a .drawer-link-btn (0,1,0), así que su 1.2rem se imponía y "Cerrar
       sesión" quedaba 7px más a la derecha que el resto de las filas. */
    padding: 11px 12px;
}
.drawer .drawer-link-btn:hover {
    background: var(--color-fondo-alt);
}

.drawer-sep {
    height: 1px;
    background: var(--color-borde);
    margin: 12px 2px;
}

/* Notificaciones colapsables dentro del drawer. */
.drawer-notifs {
    border: 1px solid var(--color-borde);
    border-radius: 10px;
    margin-bottom: 16px;
    overflow: hidden;
}

.drawer-notifs-toggle {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    background: none;
    border: none;
    cursor: pointer;
    text-align: left;
    font: inherit;
    color: var(--color-primario);
    font-weight: 600;
    font-size: 0.85rem;
}

.drawer-notifs-toggle:hover { background: var(--color-fondo-alt); }

.drawer-notifs-chev {
    display: inline-block;
    transition: transform 0.2s ease;
    color: var(--color-tinta-tenue);
    font-size: 0.75rem;
}

.drawer-notifs-toggle[aria-expanded="true"] .drawer-notifs-chev {
    transform: rotate(90deg);
}

.drawer-notifs-lista {
    display: flex;
    flex-direction: column;
    border-top: 1px solid var(--color-borde);
}

.drawer-notif-item {
    padding: 10px 12px;
    border-bottom: 1px solid var(--color-borde);
    font-size: 0.83rem;
    color: var(--color-tinta);
    text-decoration: none;
}

.drawer-notif-item:hover { background: var(--color-fondo-alt); }

.drawer-notif-item strong { display: block; margin-bottom: 2px; }
.drawer-notif-item span { color: var(--color-tinta-suave); }

/* Pie de la lista de notis: "Marcar todas como leídas" + "Ver todas". */
.drawer-notifs-pie {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    flex-wrap: wrap;
}

.drawer-notifs-pie .inline-form { display: inline; }

.drawer-notif-accion {
    padding: 10px 12px;
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--color-primario);
    text-decoration: none;
    background: none;
    border: none;
    cursor: pointer;
    font-family: inherit;
    border-radius: 8px;
}

.drawer-notif-accion:hover { background: var(--color-fondo-alt); }

/* Caja del link de referido del profesor (en Mis ganancias). */
.ref-caja {
    margin: 1.5rem 0;
    padding: 1.1rem 1.25rem;
    background: var(--color-fondo-alt);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
}

.ref-titulo {
    margin: 0 0 0.2rem;
    font-weight: 700;
}

.ref-link-fila {
    display: flex;
    gap: 8px;
    margin-top: 0.6rem;
    flex-wrap: wrap;
}

.ref-link-input {
    flex: 1 1 240px;
    min-width: 0;
    padding: 0.55rem 0.9rem;
    border: 1px solid var(--color-borde);
    border-radius: 999px;
    background: var(--color-fondo);
    color: var(--color-tinta);
    font: inherit;
    font-size: 0.85rem;
}

.ref-copiar {
    flex: 0 0 auto;
}

/* Guía de precios (acordeón "¿Cuánto vale realmente mi curso?") en el wizard.
   Reusa .modulo-acc; acá sólo el contenido. */
.precio-guia {
    margin-bottom: 1.25rem;
}

.precio-guia-body {
    display: grid;
    gap: 0.85rem;
}

.precio-rango {
    padding: 0.6rem 0.85rem;
    background: var(--color-fondo-alt);
    border: 1px solid var(--color-borde);
    border-radius: 10px;
}

.precio-rango-titulo {
    margin: 0;
    font-weight: 700;
    font-size: 0.92rem;
}

.precio-rango-monto {
    margin: 0.1rem 0 0.25rem;
    color: var(--color-primario);
    font-weight: 700;
}

.precio-guia-cuotas {
    margin-top: 0.3rem;
}

/* Paso 0 del wizard: pautas metodológicas. */
.pautas-lista {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 0.85rem;
    margin: 1rem 0;
}

.pauta-card {
    padding: 0.9rem 1rem;
    background: var(--color-fondo-alt);
    border: 1px solid var(--color-borde);
    border-radius: 12px;
}

.pauta-card h3 {
    margin: 0 0 0.35rem;
    font-size: 1rem;
}

.pauta-card p {
    margin: 0;
    font-size: 0.9rem;
    color: var(--color-tinta-suave);
}

/* Ocupan todo el ancho de la grilla (sin dejar hueco a la derecha). */
.pauta-card-ancha,
.pauta-card-obligatoria {
    grid-column: 1 / -1;
}

.pauta-card-obligatoria {
    border-color: var(--color-primario);
    background: var(--color-cbc-tint);
}

/* ---------- Página pública de validación de certificados (diploma) ---------- */
.validar-cert {
    max-width: 720px;
    margin: 0 auto;
}

/* Insignia de validación, arriba del diploma. */
.validar-estado {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    padding: 0.9rem 1.15rem;
    border-radius: 14px;
    margin-bottom: 1.5rem;
}

.validar-estado-titulo {
    margin: 0;
    font-weight: 700;
    font-size: 1.05rem;
}

.validar-estado-sub {
    margin: 0.1rem 0 0;
    color: var(--color-tinta-suave);
    font-size: 0.9rem;
}

.validar-ic {
    font-size: 1.7rem;
    line-height: 1;
}

.validar-ok {
    background: #E6F8ED;
    border: 1px solid #9AD9B4;
}

.validar-ok .validar-estado-titulo {
    color: #0B6B33;
}

.validar-error {
    background: var(--color-fondo-alt);
    border: 1px solid var(--color-borde);
}

:root[data-tema="oscuro"] .validar-ok {
    background: #12331F;
    border-color: #1E5A34;
}

:root[data-tema="oscuro"] .validar-ok .validar-estado-titulo {
    color: #7EE0A3;
}

/* --- El diploma --- */
.diploma {
    --diploma-oro: #D9A94E;
    --diploma-oro-tenue: rgba(217, 169, 78, 0.4);
    --diploma-tinta: #F4EFE8;
    --diploma-tinta-suave: #B9C0CC;
}

.diploma-marco {
    position: relative;
    padding: clamp(1.5rem, 5vw, 3rem);
    border-radius: 18px;
    text-align: center;
    color: var(--diploma-tinta);
    background:
        radial-gradient(120% 80% at 50% 0%, #26313F 0%, #1B2430 55%, #151C26 100%);
    border: 1px solid rgba(217, 169, 78, 0.35);
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.35);
    overflow: hidden;
}

/* Doble filete dorado, como un diploma clásico. */
.diploma-marco::before {
    content: "";
    position: absolute;
    inset: 12px;
    border: 1.5px solid var(--diploma-oro-tenue);
    border-radius: 12px;
    pointer-events: none;
}

.diploma-cab {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    margin-bottom: 1.4rem;
}

.diploma-logo {
    width: 34px;
    height: auto;
}

.diploma-marca {
    font-family: var(--fuente-titulo);
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--diploma-tinta);
}

.diploma-eyebrow {
    margin: 0;
    text-transform: uppercase;
    letter-spacing: 0.22em;
    font-size: 0.7rem;
    font-weight: 700;
    color: var(--diploma-oro);
}

.diploma-titulo {
    margin: 0.35rem 0 1.6rem;
    font-family: var(--fuente-titulo);
    font-weight: 600;
    font-size: clamp(1.6rem, 5vw, 2.3rem);
    color: var(--diploma-tinta);
}

.diploma-label {
    margin: 0;
    font-size: 0.8rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--diploma-tinta-suave);
}

.diploma-nombre {
    margin: 0.25rem 0 1.3rem;
    font-family: var(--fuente-titulo);
    font-weight: 600;
    font-size: clamp(1.5rem, 6vw, 2.4rem);
    line-height: 1.1;
    color: #fff;
    /* Filete dorado bajo el nombre. */
    display: inline-block;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--diploma-oro);
}

.diploma-curso {
    margin: 0 auto 0.6rem;
    max-width: 34rem;
    font-size: 1rem;
    line-height: 1.6;
    color: var(--diploma-tinta-suave);
}

.diploma-curso strong {
    color: var(--diploma-tinta);
    font-size: 1.1rem;
}

.diploma-profe {
    margin: 0 0 1.8rem;
    font-size: 0.92rem;
    color: var(--diploma-tinta-suave);
}

.diploma-pie {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.25rem;
    flex-wrap: wrap;
    text-align: left;
    margin-top: 0.5rem;
    padding-top: 1.4rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.diploma-meta {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.diploma-meta > div {
    display: flex;
    flex-direction: column;
}

.diploma-meta-label {
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--diploma-tinta-suave);
}

.diploma-meta-valor {
    font-size: 0.95rem;
    color: var(--diploma-tinta);
}

.diploma-meta-valor code {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    letter-spacing: 0.03em;
    color: var(--diploma-oro);
}

/* Sello de autenticidad. */
.diploma-sello {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.7rem 0.35rem 0.4rem;
    border: 1px solid var(--diploma-oro-tenue);
    border-radius: 999px;
}

.diploma-sello-check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.7rem;
    height: 1.7rem;
    border-radius: 50%;
    background: var(--diploma-oro);
    color: #1B2430;
    font-weight: 800;
    font-size: 0.9rem;
}

.diploma-sello-txt {
    font-size: 0.62rem;
    line-height: 1.15;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--diploma-tinta-suave);
    text-align: left;
}

.diploma-qr {
    margin: 0;
    text-align: center;
}

.diploma-qr img {
    width: 96px;
    height: 96px;
    border-radius: 8px;
    background: #fff;
    padding: 5px;
    display: block;
}

.diploma-qr figcaption {
    margin-top: 0.3rem;
    font-size: 0.62rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--diploma-tinta-suave);
}

/* --- Acciones --- */
.validar-acciones {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.6rem;
    margin-top: 1.5rem;
}

.boton-linkedin {
    background: #0A66C2;
    color: #fff !important;
    border-color: #0A66C2;
}

.boton-linkedin:hover {
    background: #084e97;
}

@media (max-width: 560px) {
    .diploma-pie {
        flex-direction: column-reverse;
        align-items: center;
        text-align: center;
    }
    .diploma-meta {
        justify-content: center;
    }
    .validar-acciones .boton {
        flex: 1 1 100%;
        text-align: center;
    }
}

/* Panel de agendar (Cal.com) tras enviar el formulario de contacto/empresas. */
.agendar-panel {
    border: 1px solid var(--color-borde);
    border-radius: 16px;
    padding: 1.25rem;
    background: var(--color-fondo);
}

.agendar-panel h2 {
    margin: 0 0 0.25rem;
}

.agendar-bajada {
    margin: 0 0 1rem;
    color: var(--color-tinta-suave);
}

.cal-inline {
    width: 100%;
    min-height: 560px;
    /* El embed de Cal.com crece con su contenido (la lista de horarios puede ser
       larga). Lo acotamos para que no estire la página al infinito: se scrollea
       adentro del contenedor. */
    max-height: 640px;
    overflow-y: auto;
    border-radius: 12px;
}

/* ============================================================
   Examen (/curso/…/examen/…) — calco de Examen.dc.html
   ============================================================ */

/* Hero oscuro con degradé, badge y metadatos. */
.examen-hero {
    background: linear-gradient(135deg, #26303E 0%, #1B2430 55%, #151C26 100%);
    border-radius: 16px;
    padding: clamp(20px, 4vw, 28px);
    margin-bottom: 22px;
    color: #fff;
}

.examen-hero-cabecera {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 14px;
}

.examen-hero-badge {
    flex: none;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
}

.examen-hero-eyebrow {
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.7rem;
    font-weight: 700;
    color: #FFB88C;
    margin: 0 0 4px;
}

.examen-hero-titulo {
    color: #fff;
    margin: 0;
    font-size: clamp(1.25rem, 2.8vw, 1.6rem);
    font-family: var(--fuente-titulo);
}

.examen-hero-metas {
    display: flex;
    gap: 18px;
    flex-wrap: wrap;
}

.examen-hero-metas p {
    margin: 0;
    color: rgba(255, 255, 255, 0.8);
    font-size: 0.85rem;
}

.examen-hero-metas strong {
    color: #fff;
}

/* Barra de progreso (respondidas / total). */
.examen-progreso {
    margin-bottom: 18px;
}

.examen-progreso-cabecera {
    display: flex;
    justify-content: space-between;
    margin-bottom: 6px;
}

.examen-progreso-texto {
    font-size: 0.8rem;
    color: var(--color-tinta-suave);
}

.examen-progreso-bar {
    height: 6px;
    background: var(--color-borde);
    border-radius: 999px;
    overflow: hidden;
}

.examen-progreso-fill {
    height: 100%;
    width: 0%;
    background: var(--color-primario);
    border-radius: 999px;
    transition: width 0.25s ease;
}

/* Formulario y tarjetas de pregunta. */
.examen-form {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.examen-pregunta {
    border: 1px solid var(--color-borde);
    border-radius: 12px;
    padding: 16px 18px;
    background: var(--color-fondo);
    margin: 0;
}

.examen-pregunta-texto {
    margin: 0 0 12px;
    font-weight: 700;
    color: var(--color-tinta);
    font-size: 0.95rem;
}

.examen-opciones {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* Fila de opción: radio + texto + marca. Cambia de color según el estado. */
.examen-opcion {
    display: flex;
    align-items: center;
    gap: 10px;
    border: 1px solid var(--color-borde);
    border-radius: 8px;
    padding: 10px 12px;
    font-size: 0.9rem;
    color: var(--color-tinta);
    cursor: pointer;
    background: var(--color-fondo);
    transition: background 0.2s ease, border-color 0.2s ease;
}

.examen-opcion input[type="radio"] {
    accent-color: var(--color-primario);
    flex: none;
}

.examen-opcion-texto {
    flex: 1;
}

.examen-opcion-marca {
    flex: none;
    font-size: 0.8rem;
    font-weight: 700;
}

/* Seleccionada (antes de enviar). */
.examen-opcion.seleccionada {
    background: var(--examen-seleccion-bg);
    border-color: var(--color-primario);
}

/* Revisión tras enviar. */
.examen-opcion.correcta {
    background: var(--examen-correcta-bg);
    border-color: #1E7A46;
}

.examen-opcion.correcta .examen-opcion-marca {
    color: #1E7A46;
}

.examen-opcion.incorrecta {
    background: var(--examen-incorrecta-bg);
    border-color: #C1273C;
}

.examen-opcion.incorrecta .examen-opcion-marca {
    color: #C1273C;
}

/* Con el examen enviado, las filas dejan de ser clickeables. */
.examen-form.enviado .examen-opcion {
    cursor: default;
}

/* Botón de enviar: coral cuando está todo respondido, apagado si falta. */
.examen-enviar {
    cursor: pointer;
    border: none;
    border-radius: 8px;
    padding: 13px 20px;
    font-weight: 700;
    font-size: 0.95rem;
    font-family: inherit;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
}

.examen-enviar:hover {
    background: var(--color-primario-hover);
}

.examen-enviar:disabled {
    cursor: not-allowed;
    background: var(--color-borde);
    color: var(--color-tinta-tenue);
}

/* Banner de resultado (aprobó / no alcanzó). */
.examen-resultado {
    border-radius: 14px;
    padding: 20px 22px;
    margin-bottom: 18px;
    border: 1px solid transparent;
}

.examen-resultado.aprobado {
    border-color: #1E7A46;
    background: var(--estado-aprobado-bg);
}

.examen-resultado.reprobado {
    border-color: #C1273C;
    background: var(--estado-rechazado-bg);
}

.examen-resultado-icono {
    font-size: 1.8rem;
    display: block;
    margin-bottom: 8px;
}

.examen-resultado-titulo {
    margin: 0 0 4px;
    font-family: var(--fuente-titulo);
    font-size: 1.3rem;
}

.examen-resultado.aprobado .examen-resultado-titulo { color: #1E7A46; }
.examen-resultado.reprobado .examen-resultado-titulo { color: #C1273C; }

.examen-resultado-detalle {
    margin: 0;
    color: var(--color-tinta-suave);
    font-size: 0.92rem;
}

.examen-resultado-acciones {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
    margin-top: 16px;
}

.examen-resultado-nota {
    margin: 0;
    font-size: 0.85rem;
    color: var(--color-tinta-tenue);
}

/* Botón "Reintentar" (coral) y link "Volver al curso" (secundario). */
.examen-btn-reintentar {
    cursor: pointer;
    border: none;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    border-radius: 8px;
    padding: 10px 18px;
    font-weight: 700;
    font-size: 0.88rem;
    font-family: inherit;
}

.examen-btn-reintentar:hover {
    background: var(--color-primario-hover);
}

.examen-btn-volver {
    text-decoration: none;
    border: 1px solid var(--color-borde);
    color: var(--color-tinta);
    border-radius: 8px;
    padding: 10px 18px;
    font-weight: 600;
    font-size: 0.88rem;
    transition: border-color 0.15s ease;
}

.examen-btn-volver:hover {
    border-color: var(--color-tinta);
}

/* button[type="submit"] global (coral, 0,1,1) le gana a .examen-enviar (0,1,0):
   se re-fija scopeado para respetar el padding y el estado apagado del mock. */
.examen-page button.examen-enviar {
    padding: 13px 20px;
    border: none;
    border-radius: 8px;
    font-weight: 700;
    font-size: 0.95rem;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
}

.examen-page button.examen-enviar:disabled {
    background: var(--color-borde);
    color: var(--color-tinta-tenue);
    cursor: not-allowed;
}

/* ============================================================
   Foto de perfil: avatares con imagen, header clickeable y cropper
   ============================================================ */

/* Foto redonda en los avatares del drawer y del fab (reemplaza la inicial). */
.drawer-avatar-img {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    display: block;
}

/* Header del drawer clickeable: lleva a configuración. */
.drawer-cab-link {
    text-decoration: none;
    border-radius: 10px;
    padding: 4px;
    margin: -4px;
    transition: background 0.15s ease;
}

.drawer-cab-link:hover {
    background: var(--color-fondo-alt);
}

.drawer-cab-link:hover strong {
    color: var(--color-primario);
}

/* --- Módulo de foto en la configuración --- */
.foto-perfil {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
    margin-top: 0.5rem;
}

.foto-perfil-avatar {
    flex: none;
    width: 96px;
    height: 96px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--color-primario);
    color: var(--color-texto-sobre-primario);
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--color-borde);
}

.foto-perfil-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.foto-perfil-inicial {
    font-size: 2.4rem;
    font-weight: 700;
    font-family: var(--fuente-titulo);
}

.foto-perfil-lado {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.foto-perfil-acciones {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

/* Botón secundario "Eliminar/Cancelar" (rojo en hover). */
.btn-foto-quitar {
    cursor: pointer;
    border: 1px solid var(--color-borde);
    background: var(--color-fondo);
    color: var(--color-tinta);
    border-radius: 8px;
    padding: 0.6rem 1.1rem;
    font-size: 0.9rem;
    font-weight: 600;
    font-family: inherit;
    transition: border-color 0.15s ease, color 0.15s ease;
}

.btn-foto-quitar:hover {
    border-color: #E8455C;
    color: #E8455C;
}

/* --- Modal del cropper --- */
.cropper-modal {
    position: fixed;
    inset: 0;
    z-index: 2000;
    background: rgba(15, 20, 27, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
}

.cropper-caja {
    background: var(--color-fondo);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    padding: 20px;
    width: 100%;
    max-width: 340px;
    box-shadow: 0 12px 40px rgba(27, 36, 48, 0.28);
}

.cropper-caja h3 {
    margin: 0 0 4px;
    font-family: var(--fuente-titulo);
    color: var(--color-tinta);
    font-size: 1.15rem;
}

/* Marco cuadrado donde se encuadra: la imagen se posiciona absoluta adentro. */
.cropper-frame {
    position: relative;
    width: 260px;
    height: 260px;
    max-width: 100%;
    margin: 12px auto;
    overflow: hidden;
    border-radius: 10px;
    background: var(--color-fondo-alt);
    cursor: grab;
    touch-action: none;
    user-select: none;
}

.cropper-frame:active {
    cursor: grabbing;
}

.cropper-frame img {
    position: absolute;
    max-width: none;
    will-change: left, top, width, height;
}

/* Guía circular: sugiere cómo se va a ver el avatar (recorte cuadrado, avatar redondo). */
.cropper-guia {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    box-shadow: 0 0 0 9999px rgba(15, 20, 27, 0.35);
    pointer-events: none;
}

.cropper-zoom {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 0.85rem;
    color: var(--color-tinta-suave);
    margin-top: 4px;
}

.cropper-zoom input[type="range"] {
    flex: 1;
    accent-color: var(--color-primario);
}

.cropper-botones {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 16px;
}

/* .boton nació para <a>; sobre un <button> hay que sacar el borde/fondo nativo. */
button.boton {
    border: none;
    cursor: pointer;
    font-family: inherit;
    font-weight: 700;
}
