/* Transición breve entre el splash nativo de Android y el primer render de Qiwo. */
.qiwo-pwa-launch {
    display: none;
}

@media (display-mode: standalone) {
    .qiwo-pwa-launch {
        position: fixed;
        inset: 0;
        z-index: 2147483647;
        display: grid;
        place-items: center;
        padding: max(28px, env(safe-area-inset-top)) 28px max(28px, env(safe-area-inset-bottom));
        color: #ffffff;
        background:
            radial-gradient(circle at 50% 39%, rgba(15, 147, 117, 0.22), transparent 38%),
            #0b2947;
        opacity: 1;
        visibility: visible;
        transition: opacity 180ms ease, visibility 180ms ease;
    }

    .qiwo-pwa-launch.is-hidden {
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
    }

    .qiwo-pwa-launch__content {
        display: grid;
        justify-items: center;
        gap: 20px;
        width: min(100%, 264px);
        text-align: center;
    }

    .qiwo-pwa-launch__wordmark-wrap {
        display: grid;
        place-items: center;
        width: 100%;
        padding: 0 16px;
    }

    .qiwo-pwa-launch__wordmark {
        display: block;
        width: min(100%, 205px);
        height: auto;
    }

    .qiwo-pwa-launch__label {
        margin: 0;
        color: rgba(255, 255, 255, 0.86);
        font-size: 0.9rem;
        font-weight: 600;
        letter-spacing: 0.01em;
    }

    /* Auxiliar replica la propuesta A desde el primer instante: wordmark claro
       directamente sobre el lienzo verde operativo. La clase se añade antes de
       Blazor según la ruta /auxiliar/. */
    .qiwo-pwa-launch.qiwo-pwa-launch--auxiliar {
        background:
            radial-gradient(circle at 18% 16%, rgba(255,255,255,0.20), transparent 32%),
            radial-gradient(circle at 82% 88%, rgba(11,41,71,0.16), transparent 40%),
            #0f9375;
    }

    .qiwo-pwa-launch--auxiliar .qiwo-pwa-launch__wordmark {
        width: min(100%, 196px);
    }

    .qiwo-pwa-launch--auxiliar .qiwo-pwa-launch__label {
        color: rgba(255,255,255,0.92);
    }

    /* Padres continúa el splash nativo: logo y etiqueta permanecen quietos;
       solo el degradado aparece sobre el marino inicial. Ajustes para el celular. */
    .qiwo-pwa-launch.qiwo-pwa-launch--apoderado {
        --qiwo-launch-logo-w: 300px;
        --qiwo-launch-label-bottom: 11%;
        padding: 0;
        background: #0B2947;
        transition: opacity 220ms ease, visibility 220ms ease;
    }

    .qiwo-pwa-launch--apoderado::before {
        content: "";
        position: absolute;
        inset: 0;
        /* Marino arriba (empata con la barra de estado y con la pantalla lisa de
           Chrome) y verde abajo. Pedido de Jordy, 26/10/2026. */
        background: linear-gradient(180deg, #0B2947 25%, #0F9375 100%);
        opacity: 0;
        animation: qiwo-padres-launch-gradient 700ms ease forwards;
    }

    .qiwo-pwa-launch--apoderado .qiwo-pwa-launch__content {
        position: relative;
        z-index: 1;
        width: 100%;
        height: 100%;
    }

    .qiwo-pwa-launch--apoderado .qiwo-pwa-launch__wordmark-wrap {
        position: absolute;
        inset: 0;
        padding: 0;
    }

    /* "Qiwo" + "Padres" en una sola imagen (qiwo-splash-lockup-padres.png, 300 x 170
       con márgenes): entra con un fundido y sube 6 px, una sola vez. */
    .qiwo-pwa-launch--apoderado .qiwo-pwa-launch__wordmark {
        width: min(86%, var(--qiwo-launch-logo-w));
        opacity: 0;
        transform: translateY(6px);
        animation: qiwo-padres-launch-logo 520ms cubic-bezier(.2, .8, .2, 1) 120ms forwards;
    }

    /* Recarga dentro de la misma apertura: degradado y logo ya puestos, sin parpadeo. */
    .qiwo-pwa-launch--sin-entrada::before,
    .qiwo-pwa-launch--sin-entrada .qiwo-pwa-launch__wordmark {
        animation: none !important;
        opacity: 1;
        transform: none;
    }

    /* El nombre ya va dentro de la imagen: la etiqueta suelta de abajo no se usa. */
    .qiwo-pwa-launch--apoderado .qiwo-pwa-launch__label {
        display: none;
    }
}

@keyframes qiwo-padres-launch-gradient {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes qiwo-padres-launch-logo {
    to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
    .qiwo-pwa-launch,
    .qiwo-pwa-launch.qiwo-pwa-launch--apoderado {
        transition: none;
    }

    .qiwo-pwa-launch--apoderado::before {
        animation: none;
        opacity: 1;
    }

    .qiwo-pwa-launch--apoderado .qiwo-pwa-launch__wordmark {
        animation: none;
        opacity: 1;
        transform: none;
    }
}

/* ── Reconexión: ventana centrada, no un aviso al pie ──────────────────────
   Estuvo un tiempo como toast abajo para no tapar el tablero. Se revirtió el
   07/09/2026 por pedido de Jordy, y el argumento es bueno: mientras el aviso
   está activo TODAS las acciones están pausadas, así que un aviso discreto al
   pie deja una pantalla que parece usable y no lo es — invita a seguir tocando
   y nada responde. Un aviso discreto solo es honesto cuando puedes seguir
   trabajando; acá no puedes.

   El velo tiene pointer-events propios a propósito: además de comunicar el
   bloqueo, lo ejecuta. Es semitransparente para que el tablero siga legible
   detrás, que era lo que el toast buscaba proteger. */
.qiwo-auxiliar-reconnect {
    position: fixed;
    inset: 0;
    z-index: 2147483000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    box-sizing: border-box;
    /* Sin blur: el velo ya comunica y ejecuta el bloqueo, y difuminar quitaba lo
       único que el toast sí protegía — poder leer los datos de atrás mientras
       se espera. Se bloquea el tocar, no el mirar. */
    background: rgba(11, 41, 71, 0.45);
    color: #0B2947;
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transition: opacity 160ms ease;
}
.qiwo-auxiliar-reconnect[data-visible="true"] {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
}
.qiwo-auxiliar-reconnect__card {
    display: grid;
    grid-template-columns: 40px minmax(0, 1fr);
    column-gap: 14px;
    row-gap: 4px;
    align-items: start;
    width: min(400px, 100%);
    box-sizing: border-box;
    padding: 22px;
    border: 1px solid #B8D9D1;
    border-radius: 18px;
    background: #FFFFFF;
    box-shadow: 0 20px 50px rgba(5, 23, 40, .32);
}
.qiwo-auxiliar-reconnect__icon {
    grid-column: 1;
    grid-row: 1 / span 4;
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    color: #087A62;
    background: #E0F2F1;
}
.qiwo-auxiliar-reconnect__icon svg { width: 22px; height: 22px; }
.qiwo-auxiliar-reconnect [hidden] { display: none !important; }
.qiwo-auxiliar-reconnect[data-state="reconectando"] .qiwo-auxiliar-reconnect__icon-sync,
.qiwo-auxiliar-reconnect[data-state="sincronizando"] .qiwo-auxiliar-reconnect__icon-sync {
    animation: qiwo-auxiliar-reconnect-spin 1.2s linear infinite;
}
.qiwo-auxiliar-reconnect h2 {
    grid-column: 2;
    margin: 0;
    font-size: 17px;
    font-weight: 750;
    line-height: 1.35;
    color: #0B2947;
}
.qiwo-auxiliar-reconnect__message,
.qiwo-auxiliar-reconnect__detail {
    grid-column: 2;
    margin: 4px 0 0;
    font-size: 13px;
    line-height: 1.4;
    color: #475569;
}
.qiwo-auxiliar-reconnect__detail { font-size: 12px; }
.qiwo-auxiliar-reconnect__actions { grid-column: 2; margin-top: 14px; }
.qiwo-auxiliar-reconnect__button {
    min-height: 44px;
    padding: 10px 12px;
    border: 1px solid #087A62;
    border-radius: 10px;
    color: #FFFFFF;
    background: #087A62;
    font: inherit;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
}
.qiwo-auxiliar-reconnect__button:focus-visible { outline: 3px solid #0F9375; outline-offset: 3px; }
.qiwo-auxiliar-reconnect__button:hover { background: #06624F; }
html[data-qiwo-aux-connection] .admin-shell :is(button, a, input, select, textarea, [role="button"]),
html[data-qiwo-portal-connection] .admin-shell :is(button, a, input, select, textarea, [role="button"]) {
    cursor: not-allowed;
}
@media (max-width: 480px) {
    .qiwo-auxiliar-reconnect { padding: 18px; }
    .qiwo-auxiliar-reconnect__card { grid-template-columns: 34px minmax(0, 1fr); padding: 18px; column-gap: 12px; }
    .qiwo-auxiliar-reconnect__icon { width: 34px; height: 34px; }
    .qiwo-auxiliar-reconnect__icon svg { width: 19px; height: 19px; }
    .qiwo-auxiliar-reconnect__actions { grid-column: 2; margin-top: 12px; }
    .qiwo-auxiliar-reconnect__button { width: 100%; }
}
body.qiwo-dark .qiwo-auxiliar-reconnect__card {
    border-color: #42655E;
    background: #172638;
    box-shadow: 0 20px 50px rgba(0, 0, 0, .5);
}
body.qiwo-dark .qiwo-auxiliar-reconnect h2 { color: #F8FAFC; }
body.qiwo-dark .qiwo-auxiliar-reconnect__message,
body.qiwo-dark .qiwo-auxiliar-reconnect__detail { color: #CBD5E1; }
@keyframes qiwo-auxiliar-reconnect-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
    .qiwo-auxiliar-reconnect { transition: none; }
    .qiwo-auxiliar-reconnect__icon svg { animation: none !important; }
}
