/* ===================================================================
   PÁGINA DE ESTADO — "em homologação"
   (SP20-006 · SP20-007 · SP20-056)
   ===================================================================

   POR QUE ESTE ARQUIVO EXISTE, E NÃO É UM APÊNDICE DO styleError.css
   -------------------------------------------------------------------
   Estas regras nasceram dentro do styleError.css. Lá, a PRIMEIRA delas — a
   que torna o body um flex container — era silenciosamente DESCARTADA pelo
   navegador: o arquivo tinha uma chave de fechamento sobrando (pré-existente,
   fechando um bloco de media queries já encerrado). Ao encontrar essa chave
   inesperada, a recuperação de erro do parser CSS descarta tudo até a próxima
   chave de fechamento — comendo justamente a regra seguinte.

   O sintoma era traiçoeiro: o card aparecia estilizado (as regras seguintes
   parseavam normalmente), mas o body não era flex, então o conteúdo e o footer
   não se distribuíam e a página nascia com scroll vertical.

   A chave sobrando foi corrigida no styleError.css. Ainda assim estas regras
   ficam aqui: styleError.css é um arquivo legado de ~1.300 linhas carregado em
   TODAS as páginas, e este componente merece endereço próprio. É carregado por
   último na index.html, o que também garante a ordem da cascata.

   O QUE ESTE ARQUIVO RESOLVE
   -------------------------------------------------------------------
   `.main-container-index` tem `min-height: 100vh`. Somado ao header e ao
   footer, o documento passava de uma tela: a página nascia com SCROLL
   VERTICAL, e o footer (e o logo, que no mobile ia para baixo do texto)
   caíam abaixo da dobra. Era um sintoma só, com três aparências.

   Aqui o <body> vira uma coluna de três faixas — header, conteúdo, footer —
   em que só a do meio cresce. O card é centralizado nessa faixa e, se algum
   dia faltar altura (celular deitado), a rolagem acontece DENTRO dela: a
   página em si nunca rola e o footer nunca sai da tela.

   COMPOSIÇÃO DO CARD
   -------------------------------------------------------------------
   O logo saiu do card (o header já o exibe). Sem ele o card deixa de ser duas
   colunas e passa a ser uma coluna centralizada, com uma hierarquia só: selo
   de estado → título → mensagem → ação. O selo é o único elemento com cor de
   destaque; o resto fica deliberadamente quieto.
   =================================================================== */

/* ---------- 1. A página cabe em uma viewport ---------- */

body.page-centered {
    display: flex;
    flex-direction: column;
    /* dvh evita o "pulo" quando a barra de endereço do iOS aparece/some */
    min-height: 100vh;
    min-height: 100dvh;
}

/* Header e footer mantêm a altura natural. Os seletores são explícitos (e
   não `:first-child`/`:last-child`) porque o <body> também tem <script> e
   <link> soltos — que não são itens flex, mas cuja posição não é estável. */
body.page-centered > .site-header,
body.page-centered > .footer {
    flex: 0 0 auto;
}

/* A faixa do meio é a única que cresce, e centraliza o card nos dois eixos.
   O GRADIENTE mora aqui, e não em .main-container-index: como o container
   deixou de ter 100vh, ele passou a medir só a altura do card — se o
   gradiente continuasse nele, sobrariam faixas brancas acima e abaixo. Na
   faixa, o gradiente cobre todo o espaço entre header e footer, e como
   termina em branco encontra o footer (que é branco) sem emenda. */
body.page-centered > #content {
    flex: 1 1 auto;
    display: grid;
    place-items: center;
    /* sem isto um item flex não encolhe abaixo do conteúdo e o scroll volta */
    min-height: 0;
    /* último recurso: a rolagem fica aqui dentro, nunca na página */
    overflow-y: auto;
    background: linear-gradient(to bottom, #004aad, #0b93f2, #ffffff);
}

/* Anula o `min-height: 100vh` de .main-container-index (declarado aqui e em
   styleResponsiveBase.css). A especificidade de `body.page-centered ...`
   (0,2,1) vence a de `.main-container-index` (0,1,0) independentemente da
   ordem de carga, então não é preciso !important.

   `background: none` porque o gradiente subiu para a faixa (acima); manter
   os dois pintaria o gradiente duas vezes, uma delas comprimido. */
body.page-centered .main-container-index {
    min-height: 0;
    width: 100%;
    background: none;
    /* respira conforme a altura disponível, sem nunca colar nas bordas */
    padding: clamp(16px, 4vh, 40px) 20px;
}

/* ---------- 2. O card ---------- */

#cardError {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    /* 30rem ≈ 480px: largura em que o título fecha em duas linhas e a
       mensagem fica na faixa confortável de leitura */
    width: 100%;
    max-width: 30rem;
    margin: 0 auto;
    padding: clamp(28px, 4vh, 44px) clamp(20px, 5vw, 40px);
    background-color: #ffffff;
    border-radius: 16px;
    box-shadow: 0 10px 30px rgba(0, 40, 100, 0.18);
}

/* ---------- 3. Selo de estado (o elemento de destaque) ---------- */

.error-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    margin-bottom: 20px;
    border-radius: 50%;
    font-size: 28px;
    line-height: 1;
}

.error-badge--danger {
    color: #dc3545;
    background-color: #fdecee;
    /* anel externo da própria cor, em opacidade baixa */
    box-shadow: 0 0 0 8px rgba(220, 53, 69, 0.10);
}

.error-badge--pending {
    color: #b06d00;
    background-color: #fdf3e2;
    box-shadow: 0 0 0 8px rgba(240, 160, 32, 0.14);
}

/* ---------- 4. Texto ---------- */

.error-title {
    margin: 0 0 10px 0;
    font-family: "Lato", sans-serif;
    /* acompanha a altura da tela: nunca estoura, nunca fica minúsculo */
    font-size: clamp(1.375rem, 3.4vw, 1.75rem);
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: #0b2a5b;
    overflow-wrap: break-word;
}

.error-message {
    /* margin-bottom vem do gap com .error-actions */
    margin: 0 0 24px 0;
    /* limita a linha de leitura sem depender da largura do card */
    max-width: 34ch;
    font-size: 0.9375rem;
    line-height: 1.6;
    color: #5c6b82;
}

/* ---------- 5. Ações ---------- */

.error-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    width: 100%;
}

.error-actions a,
.error-actions__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    /* 44px = alvo de toque acessível */
    min-height: 44px;
    padding: 11px 22px;
    border: 2px solid #004aad;
    border-radius: 10px;
    background-color: #004aad;
    color: #ffffff;
    font-size: 0.9375rem;
    font-weight: 700;
    text-decoration: none;
    /* o rótulo não vaza mais para fora do botão */
    white-space: nowrap;
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.error-actions a:hover,
.error-actions__btn:hover {
    background-color: #003a86;
    border-color: #003a86;
    color: #ffffff;
}

/* O seletor precisa ser tão específico quanto `.error-actions a` (0,1,1), que
   define o fundo azul — com `.error-actions__btn--secondary` sozinho (0,1,0) o
   botão secundário saía azul sólido, idêntico ao primário. */
.error-actions .error-actions__btn--secondary {
    background-color: transparent;
    color: #004aad;
}

.error-actions .error-actions__btn--secondary:hover {
    background-color: #004aad;
    color: #ffffff;
}

/* Foco visível por teclado. */
.error-actions__btn:focus-visible {
    outline: 3px solid #0b93f2;
    outline-offset: 2px;
}

/* ---------- 6. Telas estreitas ---------- */

@media (max-width: 480px) {
    .error-badge {
        width: 56px;
        height: 56px;
        margin-bottom: 16px;
        font-size: 24px;
    }

    .error-message {
        margin-bottom: 20px;
    }

    /* Botões um por linha, largura cheia: em 375px dois lado a lado
       forçariam a quebra do rótulo. */
    .error-actions {
        flex-direction: column;
    }

    .error-actions__btn {
        width: 100%;
    }
}

/* Telas muito baixas (celular deitado): comprime a coluna para caber sem
   precisar rolar. */
@media (orientation: landscape) and (max-height: 520px) {
    #cardError {
        padding: 18px 24px;
    }

    .error-badge {
        width: 44px;
        height: 44px;
        margin-bottom: 10px;
        font-size: 20px;
        box-shadow: none; /* o anel come altura útil aqui */
    }

    .error-message {
        margin-bottom: 14px;
    }
}
