/* =================================================================
   EXAMEN AUXILIAR DEL ESTADO MAYOR Y PLANA MAYOR - Hoja de estilos
   -----------------------------------------------------------------
   Idea de diseño: que la pantalla se sienta como un documento
   oficial / boletín militar (papel cálido, tipografía serif para
   títulos, mono para las citas de artículos), no como una app
   genérica. El color "latón" (acento) evoca insignias e imprentas
   oficiales; el verde y rojo de corrección son apagados, no los
   típicos verde/rojo brillantes de formularios web.
   ================================================================= */

@import url('https://fonts.googleapis.com/css2?family=Spectral:wght@500;600;700&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');

:root {
    /* --- Color --- */
    --color-fondo: #E8E3D3;
    --color-superficie: #FBF9F2;
    --color-texto: #241F16;
    --color-texto-suave: #5B5540;

    --color-primario: #1F2E45;
    --color-primario-claro: #32496B;

    --color-acento: #9C7A2E;
    --color-acento-oscuro: #7A5F22;

    --color-borde: #CBC1A3;
    --color-borde-suave: #DAD3BB;

    --color-correcto: #2F5233;
    --color-correcto-fondo: #DEE8D6;
    --color-correcto-borde: #6E8F5D;

    --color-incorrecto: #7A3229;
    --color-incorrecto-fondo: #F1DDD5;
    --color-incorrecto-borde: #B06B57;

    --color-sin-responder: #8A6A21;

    /* --- Tipografía --- */
    --fuente-display: 'Spectral', Georgia, 'Times New Roman', serif;
    --fuente-cuerpo: 'IBM Plex Sans', 'Segoe UI', system-ui, sans-serif;
    --fuente-mono: 'IBM Plex Mono', 'Courier New', monospace;

    /* --- Otros --- */
    --radio-borde: 3px;
    --ancho-contenido: 780px;
}

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }
    * {
        animation-duration: 0.001ms !important;
        transition-duration: 0.001ms !important;
    }
}

body {
    margin: 0;
    background-color: var(--color-fondo);
    background-image:
        linear-gradient(180deg, rgba(31, 46, 69, 0.03), transparent 240px);
    color: var(--color-texto);
    font-family: var(--fuente-cuerpo);
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
}

/* ------------------------- CABECERA ------------------------- */

.cabecera-app {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    max-width: var(--ancho-contenido);
    margin: 0 auto;
    padding: 2.25rem 1.5rem 1.5rem;
    border-bottom: 3px double var(--color-primario);
}

.cabecera-app__sello {
    flex: 0 0 auto;
}

.sello-svg {
    width: 64px;
    height: 64px;
}

.sello-anillo-externo {
    fill: none;
    stroke: var(--color-primario);
    stroke-width: 2.5;
}

.sello-anillo-interno {
    fill: none;
    stroke: var(--color-acento);
    stroke-width: 1.5;
    stroke-dasharray: 3 3;
}

.sello-texto-numero {
    font-family: var(--fuente-display);
    font-size: 20px;
    font-weight: 700;
    fill: var(--color-primario);
    text-anchor: middle;
}

.sello-texto-chico {
    font-family: var(--fuente-mono);
    font-size: 9px;
    letter-spacing: 0.15em;
    fill: var(--color-acento-oscuro);
    text-anchor: middle;
}

.cabecera-app__eyebrow {
    margin: 0 0 0.35rem;
    font-family: var(--fuente-mono);
    font-size: 0.72rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-texto-suave);
}

.cabecera-app__titulo {
    margin: 0;
    font-family: var(--fuente-display);
    font-size: clamp(1.65rem, 4vw, 2.1rem);
    font-weight: 700;
    color: var(--color-primario);
}

.cabecera-app__subtitulo {
    margin: 0.25rem 0 0;
    font-size: 0.95rem;
    color: var(--color-texto-suave);
}

/* ------------------------- CONTENIDO ------------------------- */

.contenido-principal {
    max-width: var(--ancho-contenido);
    margin: 0 auto;
    padding: 2rem 1.5rem 4rem;
}

/* ------------------------- PANTALLA DE INICIO ------------------------- */

.tarjeta-inicio {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-borde);
    padding: 2rem;
    box-shadow: 0 1px 0 rgba(31, 46, 69, 0.05);
}

.tarjeta-inicio__descripcion {
    margin-top: 0;
    font-size: 1.02rem;
}

.formulario-inicio {
    margin-top: 1.5rem;
}

.formulario-inicio__etiqueta {
    display: block;
    font-family: var(--fuente-display);
    font-weight: 600;
    font-size: 1.1rem;
    margin-bottom: 0.6rem;
    color: var(--color-primario);
}

.formulario-inicio__controles {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.formulario-inicio__controles input[type="number"] {
    font-family: var(--fuente-mono);
    font-size: 1.1rem;
    width: 7rem;
    padding: 0.6rem 0.75rem;
    border: 1.5px solid var(--color-borde);
    border-radius: var(--radio-borde);
    background: #fff;
    color: var(--color-texto);
}

.formulario-inicio__controles input[type="number"]:focus-visible {
    outline: 3px solid var(--color-acento);
    outline-offset: 1px;
}

.formulario-inicio__ayuda {
    margin: 0.6rem 0 0;
    font-size: 0.85rem;
    color: var(--color-texto-suave);
}

.formulario-inicio__grupo-radio {
    border: none;
    padding: 0;
    margin: 0 0 1.25rem;
}

.opcion-radio {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.6rem;
    margin-bottom: 0.75rem;
    font-size: 0.98rem;
    cursor: pointer;
}

.opcion-radio input[type="number"] {
    font-family: var(--fuente-mono);
    font-size: 1rem;
    width: 6rem;
    padding: 0.45rem 0.6rem;
    border: 1.5px solid var(--color-borde);
    border-radius: var(--radio-borde);
    background: #fff;
    color: var(--color-texto);
}

.opcion-radio input[type="number"]:disabled {
    background: var(--color-borde-suave);
    color: var(--color-texto-suave);
    cursor: not-allowed;
}

.opciones-categoria {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin: 0.25rem 0 1rem 1.9rem;
}

.opcion-checkbox {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.95rem;
    cursor: pointer;
}

.tarjeta-inicio__ayuda {
    margin-top: 1.25rem;
    font-size: 0.88rem;
}

.tarjeta-inicio__ayuda a,
.pie-app a {
    color: var(--color-primario);
}

.mensaje-error {
    background: var(--color-incorrecto-fondo);
    border: 1px solid var(--color-incorrecto-borde);
    color: var(--color-incorrecto);
    padding: 0.75rem 1rem;
    border-radius: var(--radio-borde);
    font-size: 0.95rem;
}

/* ------------------------- BOTONES ------------------------- */

.boton {
    font-family: var(--fuente-cuerpo);
    font-weight: 600;
    font-size: 0.98rem;
    padding: 0.7rem 1.4rem;
    border-radius: var(--radio-borde);
    border: 1.5px solid transparent;
    cursor: pointer;
    transition: background-color 0.15s ease, transform 0.05s ease;
}

.boton:active {
    transform: translateY(1px);
}

.boton--principal {
    background: var(--color-primario);
    color: #fff;
}

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

.boton--principal:disabled {
    background: var(--color-borde);
    color: var(--color-texto-suave);
    cursor: not-allowed;
}

.boton--secundario {
    background: transparent;
    color: var(--color-primario);
    border-color: var(--color-primario);
}

.boton--secundario:hover {
    background: rgba(31, 46, 69, 0.06);
}

.boton:focus-visible {
    outline: 3px solid var(--color-acento);
    outline-offset: 2px;
}

/* ------------------------- INFO DEL EXAMEN ------------------------- */

.info-examen {
    background: var(--color-superficie);
    border-left: 4px solid var(--color-acento);
    padding: 0.9rem 1.1rem;
    border-radius: 0 var(--radio-borde) var(--radio-borde) 0;
    margin-bottom: 1.5rem;
}

/* ------------------------- TARJETAS DE PREGUNTA ------------------------- */

.tarjeta-pregunta {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-left: 4px solid var(--color-primario);
    border-radius: 0 var(--radio-borde) var(--radio-borde) 0;
    padding: 1.4rem 1.5rem;
    margin-bottom: 1.15rem;
    transition: border-color 0.2s ease;
}

.tarjeta-pregunta.sin-responder {
    border-left-color: var(--color-sin-responder);
}

.tarjeta-pregunta__numero {
    font-family: var(--fuente-mono);
    color: var(--color-acento-oscuro);
    margin-right: 0.35rem;
}

.tarjeta-pregunta__enunciado {
    margin: 0 0 1rem;
    font-family: var(--fuente-display);
    font-weight: 600;
    font-size: 1.05rem;
    line-height: 1.45;
    color: var(--color-primario);
}

.opciones {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
}

.opcion {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    padding: 0.65rem 0.8rem;
    border: 1.5px solid var(--color-borde-suave);
    border-radius: var(--radio-borde);
    background: #fff;
    cursor: pointer;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}

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

.opcion input[type="radio"] {
    /* Ocultamos el radio nativo, pero lo dejamos accesible */
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
}

.opcion__marca {
    flex: 0 0 auto;
    width: 1.05rem;
    height: 1.05rem;
    margin-top: 0.15rem;
    border-radius: 50%;
    border: 2px solid var(--color-borde);
    position: relative;
}

.opcion input[type="radio"]:checked + .opcion__marca {
    border-color: var(--color-primario);
}

.opcion input[type="radio"]:checked + .opcion__marca::after {
    content: "";
    position: absolute;
    inset: 3px;
    border-radius: 50%;
    background: var(--color-primario);
}

.opcion input[type="radio"]:focus-visible + .opcion__marca {
    outline: 3px solid var(--color-acento);
    outline-offset: 2px;
}

.opcion__texto {
    flex: 1 1 auto;
    font-size: 0.98rem;
}

.opcion__estado {
    flex: 0 0 auto;
    font-family: var(--fuente-mono);
    font-size: 0.8rem;
    font-weight: 500;
    white-space: nowrap;
}

/* Estados después de corregir */
.opcion-correcta {
    background: var(--color-correcto-fondo);
    border-color: var(--color-correcto-borde);
}

.opcion-correcta .opcion__estado {
    color: var(--color-correcto);
}

.opcion-incorrecta {
    background: var(--color-incorrecto-fondo);
    border-color: var(--color-incorrecto-borde);
}

.opcion-incorrecta .opcion__estado {
    color: var(--color-incorrecto);
}

.tarjeta-pregunta__fuente {
    margin: 1rem 0 0;
    font-family: var(--fuente-mono);
    font-size: 0.78rem;
    color: var(--color-texto-suave);
}

/* ------------------------- BARRA DE ACCIONES ------------------------- */

.barra-acciones {
    display: flex;
    justify-content: center;
    margin-top: 1.5rem;
}

.barra-acciones--secundaria {
    margin-top: 0.75rem;
}

/* ------------------------- RESULTADO FINAL ------------------------- */

.resultado-final {
    background: var(--color-superficie);
    border: 2px double var(--color-primario);
    border-radius: var(--radio-borde);
    padding: 1.5rem 1.75rem;
    margin-bottom: 1.75rem;
    text-align: center;
}

.resultado-final--oculto {
    display: none;
}

.resultado-final__eyebrow {
    margin: 0 0 0.35rem;
    font-family: var(--fuente-mono);
    font-size: 0.75rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-texto-suave);
}

.resultado-final__cifra {
    font-family: var(--fuente-display);
    font-size: 2.3rem;
    font-weight: 700;
    color: var(--color-primario);
    margin: 0;
}

.resultado-final__detalle {
    margin: 0.5rem 0 0;
    color: var(--color-texto-suave);
    font-size: 0.92rem;
}

/* ------------------------- TARJETAS DE ESTUDIO ------------------------- */

/* En la pantalla de repaso (no en el formulario de inicio) usamos un
   ancho mayor que el resto del sitio: la tarjeta es el protagonista
   de la pantalla, así que le damos casi todo el espacio disponible. */
.contenido-principal--tarjetas {
    max-width: min(1100px, 96vw);
}

.instruccion-tarjetas {
    margin-bottom: 1.5rem;
}

.instruccion-tarjetas summary {
    display: inline-block;
    padding: 0.5rem 1.1rem;
    border: 1px solid var(--color-borde);
    border-radius: 999px;
    background: var(--color-superficie);
    font-size: 0.85rem;
    color: var(--color-texto-suave);
    cursor: pointer;
}

.instruccion-tarjetas summary:hover {
    border-color: var(--color-primario-claro);
}

.instruccion-tarjetas[open] summary {
    border-radius: var(--radio-borde) var(--radio-borde) 0 0;
    margin-bottom: 0;
}

.instruccion-tarjetas p {
    margin: 0;
    padding: 0.9rem 1.1rem;
    border: 1px solid var(--color-borde);
    border-top: none;
    border-radius: 0 0 var(--radio-borde) var(--radio-borde);
    background: var(--color-superficie);
    font-size: 0.9rem;
}

.tarjetas-encabezado {
    text-align: left;
    margin-bottom: 1rem;
}

.progreso-tarjetas__contador {
    display: inline-block;
    margin: 0 0 0.5rem;
    padding: 0.5rem 1.4rem;
    background: var(--color-primario);
    color: #fff;
    font-family: var(--fuente-mono);
    font-weight: 500;
    font-size: 1.05rem;
    border-radius: 999px;
}

.progreso-tarjetas__detalle {
    margin: 0;
    font-size: 0.9rem;
    color: var(--color-texto-suave);
}

.tarjeta-estudio {
    display: none;
    margin-bottom: 1.75rem;
}

.tarjeta-estudio--activa {
    display: block;
}

/* "perspective" en el marco exterior es lo que le da profundidad 3D
   al giro; tiene que vivir en un elemento que NO sea el que gira. */
.tarjeta-estudio__marco {
    perspective: 1600px;
}

.tarjeta-estudio__interior {
    position: relative;
    display: grid;
    cursor: pointer;
    transform-style: preserve-3d;
    transition: transform 0.5s ease;
}

.tarjeta-estudio--volteada .tarjeta-estudio__interior {
    transform: rotateY(180deg);
}

/* Frente y reverso ocupan la MISMA celda de grid (grid-area: 1 / 1), uno
   encima del otro: así el alto de la tarjeta siempre se ajusta al
   contenido más largo de los dos, sin tener que calcular alturas fijas
   a mano ni recortar respuestas largas.

   El tamaño usa clamp(mínimo, preferido-en-vh, máximo): en el celular
   nunca baja de 60% de la altura de pantalla; en una notebook o monitor
   grande crece hasta ocupar casi toda la pantalla, sin desbordarla. */
.tarjeta-estudio__cara {
    grid-area: 1 / 1;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    min-height: clamp(320px, 68vh, 640px);
    padding: clamp(1.75rem, 5vw, 3.5rem);
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: 14px;
    box-shadow: 0 10px 28px rgba(31, 46, 69, 0.14);
}

/* El reverso solo necesita girar 180° para quedar "del otro lado":
   ya no lleva un fondo distinto. Pregunta y respuesta comparten
   exactamente el mismo diseño de tarjeta; lo único que cambia es
   el contenido de adentro. */
.tarjeta-estudio__cara--reverso {
    transform: rotateY(180deg);
}

/* --- Color por categoría (Unidad de Aprendizaje 1 a 6) ---
   Ver siempre el mismo color asociado a la misma unidad ayuda a
   memorizar por agrupación: con el tiempo, el cerebro asocia cada
   color a su unidad antes incluso de leer el texto, lo que acelera
   el reconocimiento durante el repaso. Una sola variante por
   categoría: se ve igual en el frente y en el reverso, porque ambos
   lados comparten el mismo diseño. La Unidad 1 usa el estilo por
   defecto (azul marino institucional); el resto define su propio
   tono, tomado de una paleta acorde al look de "documento oficial". */
.tarjeta-estudio__categoria {
    display: inline-block;
    margin-bottom: 1.5rem;
    padding: 0.3rem 0.9rem;
    font-family: var(--fuente-mono);
    font-size: 0.72rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    border-radius: 999px;
    background: rgba(31, 46, 69, 0.08);
    color: var(--color-primario);
}

/* Unidad 2 - El Estado Mayor Personal (dorado, ya usado como acento) */
.tarjeta-estudio--unidad-2 .tarjeta-estudio__categoria {
    background: rgba(156, 122, 46, 0.15);
    color: var(--color-acento-oscuro);
}

/* Unidad 3 - El Estado Mayor Operativo (verde militar apagado) */
.tarjeta-estudio--unidad-3 .tarjeta-estudio__categoria {
    background: rgba(60, 110, 98, 0.15);
    color: #2c4f46;
}

/* Unidad 4 - El Estado Mayor Especial (ciruela apagado) */
.tarjeta-estudio--unidad-4 .tarjeta-estudio__categoria {
    background: rgba(107, 76, 110, 0.15);
    color: #4a3350;
}

/* Unidad 5 - El Estado Mayor Académico (pizarra azulada) */
.tarjeta-estudio--unidad-5 .tarjeta-estudio__categoria {
    background: rgba(85, 112, 125, 0.18);
    color: #3e525c;
}

/* Unidad 6 - Documentación (sepia/marrón cálido) */
.tarjeta-estudio--unidad-6 .tarjeta-estudio__categoria {
    background: rgba(138, 106, 69, 0.18);
    color: #6b5033;
}

.tarjeta-estudio__enunciado {
    margin: 0;
    font-family: var(--fuente-display);
    font-weight: 600;
    font-size: clamp(1.6rem, 4vw, 2.4rem);
    line-height: 1.45;
    color: var(--color-primario);
}

.tarjeta-estudio__pista {
    margin: 1.75rem 0 0;
    font-family: var(--fuente-mono);
    font-size: 0.75rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-texto-suave);
}

.tarjeta-estudio__respuesta {
    margin: 0 0 1.25rem;
    font-size: clamp(1.6rem, 4vw, 2.4rem);
    line-height: 1.5;
    color: var(--color-primario);
}

.tarjeta-estudio__fuente {
    margin: 0;
    font-family: var(--fuente-mono);
    font-size: 0.8rem;
    color: var(--color-texto-suave);
}

mark.palabra-clave {
    background: rgba(156, 122, 46, 0.28);
    color: var(--color-texto);
    padding: 0.05em 0.2em;
    border-radius: 2px;
}

.controles-repaso {
    display: flex;
    justify-content: center;
    gap: 1rem;
    margin: 0 0 1.75rem;
}

.controles-repaso--oculto {
    display: none;
}

.control-repaso {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    font-family: var(--fuente-cuerpo);
    font-weight: 600;
    font-size: clamp(0.98rem, 2vw, 1.1rem);
    padding: 1rem 2rem;
    border: none;
    border-radius: 999px;
    cursor: pointer;
    transition: opacity 0.15s ease, transform 0.05s ease;
}

.control-repaso:active:not(:disabled) {
    transform: translateY(1px);
}

.control-repaso:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.control-repaso:focus-visible {
    outline: 3px solid var(--color-acento);
    outline-offset: 2px;
}

.control-repaso__icono {
    font-size: 1.05rem;
}

.control-repaso--correcta {
    background: var(--color-correcto);
    color: #fff;
}

.control-repaso--incorrecta {
    background: var(--color-incorrecto);
    color: #fff;
}

/* ------------------------- PIE DE PÁGINA ------------------------- */

.pie-app {
    max-width: var(--ancho-contenido);
    margin: 0 auto;
    padding: 1.5rem 1.5rem 3rem;
    border-top: 1px solid var(--color-borde);
    color: var(--color-texto-suave);
    font-size: 0.82rem;
    text-align: center;
}

/* ------------------------- RESPONSIVE ------------------------- */

@media (max-width: 560px) {
    .cabecera-app {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.75rem;
    }

    .formulario-inicio__controles {
        flex-direction: column;
        align-items: stretch;
    }

    .formulario-inicio__controles input[type="number"] {
        width: 100%;
    }

    .tarjeta-pregunta {
        padding: 1.1rem 1.1rem;
    }

    .controles-repaso {
        flex-direction: column;
        align-items: stretch;
    }

    .control-repaso {
        justify-content: center;
    }
}
