/* =================================================================
   EXAMEN LEY 004 - Hoja de estilos
   -----------------------------------------------------------------
   Idea de diseño: que la pantalla se sienta como un documento
   oficial / boletín legal (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);
}

.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;
}

/* ------------------------- 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;
    }
}
