/* ------------------------------------------------------------------ *
 * Prosige Consulta — camada de estilo sobre o Bootstrap 5.3
 * Só ajustes de ritmo, densidade e feedback. Nada que brigue com o tema.
 * ------------------------------------------------------------------ */

:root {
    --ps-radius: .65rem;
    --ps-transicao: 140ms cubic-bezier(.4, 0, .2, 1);

    /* Paleta extraída da logo da FIEPB */
    --ps-azul:        #2b3186;  /* azul institucional do "FIEPB" */
    --ps-azul-claro:  #1b9dd9;  /* azul do acento sobre o "i" */
    --ps-azul-escuro: #1e2260;
    --ps-cinza:       #58585a;  /* cinza do texto "Federação das Indústrias" */
}

/* O primário do Bootstrap passa a ser o azul da federação */
[data-bs-theme] {
    --bs-primary: var(--ps-azul);
    --bs-primary-rgb: 43, 49, 134;
}

/* Links: o azul-claro brilha no escuro, mas tem contraste baixo demais sobre
   fundo branco — no tema claro usamos o azul institucional. */
[data-bs-theme="dark"] {
    --bs-link-color: var(--ps-azul-claro);
    --bs-link-hover-color: #4fb8e6;
}

[data-bs-theme="light"] {
    --bs-link-color: var(--ps-azul);
    --bs-link-hover-color: var(--ps-azul-escuro);
}

.btn-primary {
    --bs-btn-bg: var(--ps-azul);
    --bs-btn-border-color: var(--ps-azul);
    --bs-btn-hover-bg: var(--ps-azul-escuro);
    --bs-btn-hover-border-color: var(--ps-azul-escuro);
    --bs-btn-active-bg: var(--ps-azul-escuro);
    --bs-btn-focus-shadow-rgb: 43, 49, 134;
}

.bg-primary { background-color: var(--ps-azul) !important; }

/* Fundo com uma leve profundidade, para os cards descolarem da página */
body {
    background-image:
        radial-gradient(circle at 12% -8%, rgba(27, 157, 217, .12), transparent 42%),
        radial-gradient(circle at 88% 0%, rgba(43, 49, 134, .16), transparent 38%);
    background-attachment: fixed;
}

/* No claro o mesmo brilho fica sujo — basta uma insinuação de cor */
[data-bs-theme="light"] body {
    background-image:
        radial-gradient(circle at 12% -8%, rgba(27, 157, 217, .07), transparent 42%),
        radial-gradient(circle at 88% 0%, rgba(43, 49, 134, .06), transparent 38%);
}

/* ---------- Botão de tema ---------- */

.btn-tema {
    line-height: 1;
    border: 0;
    box-shadow: none !important;
}

.navbar .btn-tema {
    color: rgba(255, 255, 255, .85);
}

.navbar .btn-tema:hover {
    color: #fff;
    background-color: rgba(255, 255, 255, .14);
}

/* Cada ícone representa a ação disponível, não o estado atual:
   no escuro mostramos o sol (ir para o claro) e vice-versa. */
[data-bs-theme="dark"] .icone-tema-escuro,
[data-bs-theme="light"] .icone-tema-claro { display: none; }

.btn-tema-flutuante {
    position: fixed;
    top: 1rem;
    right: 1rem;
    z-index: 1030;
    border-radius: 50%;
    width: 2.4rem;
    height: 2.4rem;
    border: 1px solid var(--bs-border-color) !important;
    background-color: var(--bs-body-bg);
}

/* ---------- Logo ---------- */

/* A logo é azul-escuro sobre transparente; numa navbar escura ela sumiria.
   A "pastilha" branca resolve sem alterar as cores da marca. */
.logo-navbar {
    height: 26px;
    width: auto;
    background: #fff;
    padding: 4px 8px;
    border-radius: 5px;
}

.logo-rodape {
    height: 18px;
    width: auto;
    opacity: .75;
    background: #fff;
    padding: 3px 6px;
    border-radius: 4px;
}

/* Limitada nas duas dimensões: a marca do login é quase quadrada e, presa só
   pela largura, ficava alta demais; a do primeiro acesso é bem alongada e
   precisa do teto de largura. */
.logo-login {
    max-width: 210px;
    max-height: 62px;
    width: auto;
    height: auto;
    background: #fff;
    padding: .5rem .8rem;
    border-radius: 8px;
}

.marca-divisoria {
    width: 1px;
    height: 26px;
    background: rgba(255, 255, 255, .3);
}

.marca-legenda {
    font-size: .62rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    opacity: .8;
    margin-top: 3px;
}

@media (max-width: 575.98px) {
    .marca-divisoria, .marca-legenda { display: none; }
}

/* ---------- Avatar por inicial ---------- */

.avatar-inicial {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.1rem;
    height: 2.1rem;
    flex: 0 0 auto;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--ps-azul), var(--ps-azul-claro));
    color: #fff;
    font-weight: 700;
    font-size: .9rem;
    line-height: 1;
}

.avatar-inicial.avatar-admin {
    background: linear-gradient(135deg, #b4820f, #e0a516);
}

.avatar-navbar {
    width: 1.8rem;
    height: 1.8rem;
    font-size: .8rem;
    background: rgba(255, 255, 255, .2);
}

/* ---------- Tela de login ---------- */

.tela-login {
    background:
        radial-gradient(circle at 20% 20%, rgba(27, 157, 217, .18), transparent 45%),
        radial-gradient(circle at 80% 80%, rgba(43, 49, 134, .28), transparent 50%),
        var(--bs-body-bg);
    background-attachment: fixed;
}

.card-login { border-radius: 1rem; }

.login-marca {
    background: linear-gradient(150deg, var(--ps-azul) 0%, var(--ps-azul-escuro) 60%, #101340 100%);
    color: #fff;
    position: relative;
}

.login-marca::after {
    content: "";
    position: absolute;
    inset: auto -20% -30% auto;
    width: 260px;
    height: 260px;
    border-radius: 50%;
    background: rgba(27, 157, 217, .22);
}

.login-marca > * { position: relative; z-index: 1; }

.captcha-img {
    border-radius: 6px;
    border: 1px solid var(--bs-border-color);
    user-select: none;
    -webkit-user-drag: none;
}

/* ---------- Seleção de papel ---------- */

.opcao-papel {
    display: flex;
    align-items: flex-start;
    gap: .25rem;
    padding: .7rem .9rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--ps-radius);
    cursor: pointer;
    transition: border-color var(--ps-transicao), background-color var(--ps-transicao);
}

.opcao-papel:hover { border-color: var(--ps-azul-claro); }

.opcao-papel:has(input:checked) {
    border-color: var(--ps-azul-claro);
    background-color: rgba(27, 157, 217, .1);
}

/* ---------- Cards ---------- */

.card {
    border-radius: var(--ps-radius);
    transition: transform var(--ps-transicao), box-shadow var(--ps-transicao);
}

.card-header {
    font-weight: 600;
    font-size: .9rem;
    letter-spacing: .01em;
    background-color: rgba(var(--bs-emphasis-color-rgb), .035);
}

/* Só os cards que são atalho reagem ao mouse — o resto fica quieto */
a > .card:hover {
    transform: translateY(-2px);
    box-shadow: 0 .5rem 1.25rem rgba(0, 0, 0, .22) !important;
}

/* ---------- Navegação ---------- */

.navbar-brand { letter-spacing: -.01em; }

.navbar .nav-link {
    border-radius: .4rem;
    padding-inline: .7rem;
    transition: background-color var(--ps-transicao);
}

.navbar .nav-link:hover,
.navbar .nav-link.active {
    background-color: rgba(255, 255, 255, .14);
}

.breadcrumb {
    font-size: .85rem;
    margin-bottom: 1rem;
}

/* ---------- Tabelas de consulta ---------- */

.table-consulta {
    font-size: .9rem;
}

.table-consulta thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background-color: var(--bs-body-bg);
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-weight: 600;
    color: var(--bs-secondary-color);
    border-bottom-width: 2px;
    white-space: nowrap;
}

.table-consulta tbody tr {
    transition: background-color var(--ps-transicao);
}

/* A linha inteira é clicável quando tem um link de ação */
.table-consulta tbody tr[data-href] { cursor: pointer; }

.table-consulta td, .table-consulta th { white-space: nowrap; }
.table-consulta .col-livre { white-space: normal; min-width: 16rem; }

/* Números alinhados à direita leem melhor */
.num { text-align: right; font-variant-numeric: tabular-nums; }

/* ---------- Badges e situações ---------- */

.badge { font-weight: 600; letter-spacing: .01em; }

/* ---------- Formulários ---------- */

.form-control:focus, .form-select:focus {
    box-shadow: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .2);
}

.form-label {
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-weight: 600;
    color: var(--bs-secondary-color);
    margin-bottom: .3rem;
}

/* ---------- Acordeão do histórico ---------- */

.accordion-button {
    font-size: .95rem;
}

.accordion-button:not(.collapsed) {
    background-color: rgba(var(--bs-primary-rgb), .12);
    box-shadow: none;
}

.accordion-button:focus {
    box-shadow: none;
    border-color: rgba(var(--bs-primary-rgb), .35);
}

/* ---------- Estado de carregamento ---------- */

/* Ativada por JS ao submeter um formulário ou clicar num link de navegação */
body.carregando { cursor: progress; }

#barra-carregando {
    position: fixed;
    inset: 0 auto auto 0;
    height: 3px;
    width: 0;
    background: var(--bs-primary);
    box-shadow: 0 0 .5rem rgba(var(--bs-primary-rgb), .8);
    z-index: 2000;
    transition: width 240ms ease-out, opacity 240ms ease-out;
}

#barra-carregando.ativa { width: 75%; }
#barra-carregando.pronta { width: 100%; opacity: 0; }

/* ---------- Estado vazio ---------- */

.estado-vazio {
    padding: 3rem 1rem;
    text-align: center;
    color: var(--bs-secondary-color);
}

.estado-vazio i {
    font-size: 2.5rem;
    opacity: .35;
    display: block;
    margin-bottom: .75rem;
}

/* ---------- Impressão ---------- */

@media print {
    .navbar, footer, .breadcrumb, .btn, .accordion-button::after { display: none !important; }
    .accordion-collapse { display: block !important; }
    .card { break-inside: avoid; border: 1px solid #ccc !important; box-shadow: none !important; }
    body { background: #fff !important; }
}

/* ------------------------------------------------------------------ *
 * Ajustes do tema claro
 *
 * A base foi desenhada no escuro; estes são os pontos onde uma cor fixa
 * daquele contexto não se traduz sozinha para fundo claro.
 * ------------------------------------------------------------------ */

/* A logo é azul-escura sobre transparente: sobre fundo claro ela já se lê,
   e a pastilha branca só criaria um retângulo flutuando na página. */
[data-bs-theme="light"] .logo-login,
[data-bs-theme="light"] .logo-rodape {
    background: transparent;
    padding: 0;
}

/* O painel de identidade do login é azul-escuro nos dois temas, então ali a
   pastilha branca continua sendo necessária. */
[data-bs-theme="light"] .login-marca .logo-login {
    background: #fff;
    padding: .5rem .8rem;
}

[data-bs-theme="light"] .logo-rodape { opacity: .6; }

/* Sombra pensada para fundo escuro fica pesada demais no claro */
[data-bs-theme="light"] a > .card:hover {
    box-shadow: 0 .5rem 1.25rem rgba(43, 49, 134, .14) !important;
}

[data-bs-theme="light"] .tela-login {
    background:
        radial-gradient(circle at 20% 20%, rgba(27, 157, 217, .10), transparent 45%),
        radial-gradient(circle at 80% 80%, rgba(43, 49, 134, .10), transparent 50%),
        var(--bs-body-bg);
}

[data-bs-theme="light"] .card-header {
    background-color: rgba(43, 49, 134, .04);
}

/* Cabeçalho fixo da tabela: precisa ser opaco para o conteúdo não vazar
   por baixo ao rolar */
[data-bs-theme="light"] .table-consulta thead th {
    background-color: #fff;
}

/* ---------- Telas estreitas ---------- */

@media (max-width: 575.98px) {
    .table-consulta { font-size: .82rem; }
    .card-body { padding: 1rem; }
}
