/**
 * Portal de alumnos y familias. Se diseña primero para el movil, que es donde
 * lo van a abrir, y luego se ensancha en pantallas grandes.
 */

.cuerpo-portal {
    background: radial-gradient(circle at top right, rgba(192, 57, 122, 0.14), transparent 38%), var(--bg);
}

.portal {
    display: flex;
    flex-direction: column;
    width: min(560px, 100%);
    margin: 0 auto;
    /* Hueco para la barra de abajo, respetando el borde de los iPhone. */
    padding: 0 16px calc(96px + env(safe-area-inset-bottom));
}

/* --- Cabecera ----------------------------------------------------------- */

.portal-cabecera {
    position: sticky;
    top: 0;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin: 0 -16px 4px;
    padding: calc(14px + env(safe-area-inset-top)) 16px 14px;
    background: rgba(247, 244, 238, 0.92);
    backdrop-filter: blur(10px);
}

.portal-saludo {
    margin: 0;
    color: var(--muted);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.portal-cabecera h1 {
    margin: 2px 0 0;
    font-size: 1.35rem;
    line-height: 1.2;
}

.boton-salir-portal {
    flex: 0 0 auto;
    border: 1px solid var(--line);
    border-radius: 999px;
    padding: 9px 16px;
    background: #fff;
    color: var(--ink);
    font: inherit;
    font-weight: 600;
    cursor: pointer;
}

/* --- Tarjetas ----------------------------------------------------------- */

.tarjeta-portal {
    margin-bottom: 12px;
    padding: 18px;
    border: 1px solid var(--line);
    border-left: 6px solid var(--color, var(--centro, var(--accent)));
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 10px 30px rgba(29, 36, 51, 0.06);
}

.tarjeta-portal h3 {
    margin: 0 0 4px;
    font-size: 1.08rem;
    line-height: 1.3;
}

.etiqueta-tarjeta {
    margin: 0 0 6px;
    color: var(--muted);
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
}

.fecha-hoy {
    margin: 0 0 12px;
    color: var(--muted);
    font-size: 0.85rem;
    font-weight: 600;
    text-transform: capitalize;
}

.clase-portal .boton-pasar-lista {
    margin-top: 10px;
}

.tarjeta-portal.destacada {
    background: linear-gradient(180deg, #fff, rgba(124, 58, 237, 0.04));
}

.tarjeta-portal.alerta {
    border-left-color: var(--aviso);
}

.tarjeta-portal.correcta {
    border-left-color: var(--ok);
}

/* Numeros grandes: la hora de la clase, lo que se debe */
.hora-grande,
.importe-grande {
    margin: 0 0 4px;
    font-size: 2.4rem;
    font-weight: 800;
    line-height: 1;
    letter-spacing: -0.02em;
}

.alerta .importe-grande {
    color: var(--aviso);
}

.correcta .importe-grande {
    color: var(--ok);
    font-size: 1.9rem;
}

.hasta {
    margin-left: 8px;
    color: var(--muted);
    font-size: 0.92rem;
    font-weight: 600;
    letter-spacing: 0;
}

.cuando {
    margin: 0;
    color: var(--muted);
    font-size: 0.92rem;
    line-height: 1.5;
}

.donde {
    margin: 12px 0 0;
    line-height: 1.55;
}

.sin-datos {
    margin: 0;
    padding: 8px 0;
    color: var(--muted);
    text-align: center;
}

.boton-portal {
    width: 100%;
    margin-top: 14px;
    border: 0;
    border-radius: 999px;
    padding: 13px;
    background: var(--aviso);
    color: #fff;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

/* --- Marcadores de asistencia ------------------------------------------- */

.marcadores {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
}

.marcador {
    padding: 7px 12px;
    border-radius: 999px;
    font-size: 0.86rem;
    font-weight: 600;
}

.marcador b {
    font-size: 1rem;
}

.marcador.verde {
    background: rgba(18, 138, 92, 0.13);
    color: var(--ok);
}

.marcador.rojo {
    background: rgba(180, 35, 24, 0.11);
    color: var(--alerta);
}

.marcador.gris {
    background: rgba(102, 112, 133, 0.14);
    color: var(--muted);
}

/* --- Secciones ---------------------------------------------------------- */

.titulo-seccion,
.titulo-dia {
    margin: 24px 0 10px;
    font-size: 0.82rem;
    font-weight: 800;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--muted);
}

.titulo-dia {
    color: var(--ink);
    font-size: 1rem;
    letter-spacing: 0.02em;
    text-transform: none;
}

.hora-clase {
    margin: 0 0 4px;
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--color, var(--accent));
}

.linea-tarifa {
    margin: 12px 0 0;
    padding-top: 12px;
    border-top: 1px solid var(--line);
    color: var(--muted);
    font-size: 0.92rem;
}

.texto-aviso {
    margin: 6px 0 0;
    color: var(--muted);
    line-height: 1.6;
}

/* --- Recibos ------------------------------------------------------------ */

.recibo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
}

.recibo-texto h3 {
    font-size: 1rem;
}

.recibo-importe {
    flex: 0 0 auto;
    text-align: right;
}

.recibo-importe strong {
    display: block;
    font-size: 1.2rem;
}

.sello {
    display: inline-block;
    margin-top: 5px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 0.74rem;
    font-weight: 700;
}

.sello.ok {
    background: rgba(18, 138, 92, 0.14);
    color: var(--ok);
}

.sello.no {
    background: rgba(181, 71, 8, 0.14);
    color: var(--aviso);
}

.recibo.pagado {
    border-left-color: var(--ok);
}

.recibo.debe {
    border-left-color: var(--aviso);
}

.recibo.bonificada {
    border-left-color: var(--accent);
}

/* --- Historial de asistencia -------------------------------------------- */

.lista-dias {
    border: 1px solid var(--line);
    border-radius: 18px;
    background: #fff;
    overflow: hidden;
}

.dia-asistencia {
    display: grid;
    grid-template-columns: 12px 62px 1fr auto;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    border-bottom: 1px solid var(--line);
    font-size: 0.92rem;
}

.dia-asistencia:last-child {
    border-bottom: 0;
}

.dia-asistencia .punto {
    width: 10px;
    height: 10px;
    border-radius: 50%;
}

.dia-asistencia.presente .punto {
    background: var(--ok);
}

.dia-asistencia.ausente .punto {
    background: var(--alerta);
}

.dia-asistencia.justificada .punto {
    background: var(--muted);
}

.fecha-dia {
    color: var(--muted);
    font-weight: 600;
}

.grupo-dia {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.estado-dia {
    font-size: 0.82rem;
    font-weight: 700;
}

.dia-asistencia.presente .estado-dia {
    color: var(--ok);
}

.dia-asistencia.ausente .estado-dia {
    color: var(--alerta);
}

.dia-asistencia.justificada .estado-dia {
    color: var(--muted);
}

/* --- Mis datos ---------------------------------------------------------- */

.fila-dato {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 14px;
    padding: 11px 0;
    border-bottom: 1px solid var(--line);
}

.fila-dato:last-child {
    border-bottom: 0;
}

.etiqueta-dato {
    flex: 0 0 auto;
    color: var(--muted);
    font-size: 0.88rem;
}

.valor-dato {
    min-width: 0;
    text-align: right;
    font-weight: 600;
}

.nota-datos {
    margin: 4px 4px 0;
    color: var(--muted);
    font-size: 0.86rem;
    line-height: 1.5;
}

.enlace-legal {
    display: inline-block;
    margin-top: 12px;
    color: var(--muted);
    font-size: 0.88rem;
}

/* --- Navegacion de abajo ------------------------------------------------ */

.portal-nav {
    position: fixed;
    left: 50%;
    bottom: 0;
    transform: translateX(-50%);
    z-index: 20;
    display: flex;
    width: min(560px, 100%);
    padding: 6px 6px calc(6px + env(safe-area-inset-bottom));
    border-top: 1px solid var(--line);
    background: rgba(255, 255, 255, 0.96);
    backdrop-filter: blur(12px);
}

.nav-boton {
    position: relative;
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    /* Alto comodo para el dedo. */
    min-height: 52px;
    padding: 6px 2px;
    border: 0;
    border-radius: 14px;
    background: none;
    color: var(--muted);
    font: inherit;
    font-size: 0.7rem;
    font-weight: 600;
    cursor: pointer;
}

/* Fondo neutro: el color lo pone el texto, que sigue al centro. */
.nav-boton.activa {
    color: var(--centro, var(--accent));
    background: rgba(29, 36, 51, 0.06);
}

.nav-icono {
    font-size: 1.2rem;
    line-height: 1;
}

.nav-globo {
    position: absolute;
    top: 2px;
    right: calc(50% - 22px);
    min-width: 18px;
    padding: 1px 5px;
    border-radius: 999px;
    background: var(--aviso);
    color: #fff;
    font-size: 0.68rem;
    font-weight: 800;
    text-align: center;
}

/* --- Pantallas grandes -------------------------------------------------- */

@media (min-width: 720px) {
    .portal {
        width: min(720px, 100%);
        padding-bottom: 48px;
    }

    .portal-cabecera {
        margin-bottom: 10px;
    }

    /* Con sitio de sobra, la navegacion sube justo debajo de la cabecera. */
    .portal-cabecera {
        order: 1;
    }

    .portal-nav {
        order: 2;
        position: static;
        transform: none;
        width: auto;
        margin-bottom: 18px;
        padding: 6px;
        border: 1px solid var(--line);
        border-radius: 999px;
        background: #fff;
    }

    .portal-contenido {
        order: 3;
    }

    .nav-boton {
        flex-direction: row;
        gap: 8px;
        min-height: 44px;
        border-radius: 999px;
        font-size: 0.92rem;
    }

    .nav-globo {
        position: static;
        margin-left: 2px;
    }
}

/* --- Cambiar de hijo ----------------------------------------------------- */

/*
 * Solo aparece cuando la familia tiene mas de un hijo apuntado. Va debajo de
 * la cabecera y se desplaza de lado si hay muchos, sin romper el ancho.
 */
.cambiar-alumno {
    display: flex;
    gap: 8px;
    margin: 0 -16px 10px;
    padding: 0 16px 4px;
    overflow-x: auto;
    scrollbar-width: none;
}

.cambiar-alumno::-webkit-scrollbar {
    display: none;
}

.pastilla-alumno {
    flex: 0 0 auto;
    border: 1px solid var(--line);
    border-radius: 999px;
    padding: 8px 16px;
    background: #fff;
    color: var(--muted);
    font: inherit;
    font-size: 0.9rem;
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
}

.pastilla-alumno.activa {
    border-color: transparent;
    background: var(--centro, var(--acento));
    color: #fff;
}

/* --- Consentimiento de datos e imagen ------------------------------------ */

/*
 * Un desplegable nativo: se toca para leer y se toca para cerrar, sin salir
 * de la pagina ni depender de que el navegador abra bien una pestana nueva.
 */
.detalle-consentimiento {
    margin: 10px 0 18px;
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #fbf9f5;
}

.detalle-consentimiento summary {
    font-weight: 700;
    font-size: 0.92rem;
    cursor: pointer;
}

.detalle-consentimiento p {
    margin: 10px 0 0;
    color: var(--muted);
    font-size: 0.88rem;
    line-height: 1.55;
}

.detalle-consentimiento .enlace-legal {
    margin-top: 8px;
}

#form-consentimiento-portal .primary-action {
    margin-top: 6px;
}
