/* =============================================================
   portal.css — portal público (docs/GUIA-DE-ESTILO.md §3)
   ============================================================= */

body.cs-portal { background: var(--cs-fundo); font-size: .92rem; }

/* Cabeçalho */
/* Sem z-index no cabeçalho: um z-index aqui cria contexto de empilhamento e prende o menu Acessibilidade
   abaixo da barra de navegação fixa (.pt-menu, 1035). */
.pt-cabecalho { background: var(--cs-primaria); color: var(--cs-sobre-primaria, #fff); box-shadow: 0 4px 24px rgba(var(--cs-primaria-rgb, 38, 84, 124), .25); position: relative; }
.pt-barra { background: var(--c1-dk); font-size: .78rem; padding: .35rem 0; }
.pt-barra .dropdown-menu { --bs-dropdown-zindex: 1040; }
/* Tamanho do ícone de acessibilidade: --cs-a11y-escala vem de /tema.css (Aparência → Ícones e logos). */
.pt-a11y-icone { font-size: calc(1em * var(--cs-a11y-escala, 1)); }
.pt-a11y-img { width: calc(1.15em * var(--cs-a11y-escala, 1)); height: calc(1.15em * var(--cs-a11y-escala, 1)); object-fit: contain; border-radius: var(--cs-a11y-raio, 0); }
.pt-local { opacity: .85; }
/* Botões da barra (Transparência, Ouvidoria, Mapa do site, Acessibilidade): links e botão com o mesmo visual — sem
   sublinhado, numa linha só, com a altura e o tamanho de ícone do botão Acessibilidade (escala de Aparência). */
.pt-barra-botao { background: transparent; border: 0; color: inherit; font-size: .78rem; line-height: 1.2; padding: .25rem .6rem; border-radius: 6px;
    display: inline-flex; align-items: center; gap: .4em; min-height: calc(1.15em * var(--cs-a11y-escala, 1) + .5rem); white-space: nowrap; text-decoration: none; }
.pt-barra-botao:hover, .pt-barra-botao:focus-visible { background: rgba(255, 255, 255, .1); color: inherit; }
.pt-barra-botao > i:not(.pt-a11y-icone) { font-size: calc(1em * var(--cs-a11y-escala, 1)); width: 1.2em; text-align: center; }
html.a11y-sublinhar .pt-barra-botao { text-decoration: underline; } /* respeita a opção "Sublinhar links" */
.pt-restrita { background: var(--cs-alerta); color: #1a1a1a; font-weight: 700; text-decoration: none; padding: .25rem .8rem; border-radius: 20px; white-space: nowrap; }
.pt-restrita:hover { background: color-mix(in srgb, var(--cs-alerta) 85%, white); color: #1a1a1a; }
.pt-faixa { padding: 1rem 12px; }
.pt-identidade { display: inline-flex; align-items: center; gap: .9rem; color: inherit; text-decoration: none; }
.pt-identidade:hover, .pt-identidade:focus { color: inherit; } /* o nome da prefeitura não muda de cor (a:hover do tema) */
.pt-logo { height: 56px; max-width: 220px; object-fit: contain; }
.pt-logo-icone { width: 56px; height: 56px; border-radius: 16px; display: inline-flex; align-items: center; justify-content: center; font-size: 1.5rem; background: linear-gradient(135deg, var(--cs-alerta), var(--cs-destaque)); color: #fff; }
.pt-orgao { display: block; font-family: var(--cs-fonte-titulos); font-weight: 900; font-size: 1.1rem; line-height: 1.2; }
.pt-sistema { display: block; font-size: .78rem; opacity: .8; }

/* Menu (fora do cabeçalho para o sticky funcionar) */
.pt-sentinela { height: 1px; }
.pt-menu { position: sticky; top: 0; z-index: 1035; background: var(--cs-secundaria); transition: box-shadow .2s ease; }
.pt-menu.grudado { box-shadow: 0 6px 20px rgba(0, 0, 0, .18); }
.pt-menu .filete i:nth-child(4) { background: var(--c1-lt); }
.pt-menu-lista { list-style: none; margin: 0; padding: 0; display: flex; gap: .25rem; }
.pt-menu-lista a {
    display: block; padding: .85rem 1rem; color: rgba(255, 255, 255, .88); text-decoration: none;
    font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; box-shadow: inset 0 -3px 0 transparent;
}
.pt-menu-lista a:hover { color: #fff; background: rgba(255, 255, 255, .06); }
.pt-menu-lista a.ativo { color: var(--cs-alerta); box-shadow: inset 0 -3px 0 var(--cs-alerta); }
.pt-menu-botao { display: none; background: transparent; border: 0; color: #fff; font-weight: 700; padding: .75rem 0; font-size: .85rem; }

/* Hero */
.pt-hero {
    color: #fff; padding: 3.5rem 0 5.5rem;
    background:
        radial-gradient(circle at 88% 12%, color-mix(in srgb, var(--cs-sucesso) 26%, transparent) 0 180px, transparent 181px),
        radial-gradient(circle at 6% 96%, color-mix(in srgb, var(--cs-destaque) 22%, transparent) 0 220px, transparent 221px),
        linear-gradient(135deg, var(--c1-dk), var(--c1), var(--c1-lt));
}
.pt-hero-titulo { font-weight: 900; font-size: clamp(1.6rem, 3.4vw, 2.4rem); max-width: 760px; letter-spacing: -.01em; }
.pt-hero-texto { opacity: .9; max-width: 640px; font-size: 1.02rem; }
.pt-busca { position: relative; display: flex; gap: .5rem; max-width: 720px; background: #fff; padding: .4rem; border-radius: 14px; box-shadow: 0 10px 30px rgba(0, 0, 0, .15); margin-top: 1.5rem; }
.pt-busca > i { position: absolute; left: 1.1rem; top: 50%; transform: translateY(-50%); color: #8a97a6; }
.pt-busca .form-control { border: 0; background: transparent; padding-left: 2.4rem; box-shadow: none; }
.pt-busca .btn { border-radius: 10px; padding: .55rem 1.4rem; font-weight: 700; }

/* Cartões de categoria avançam sobre o hero */
.pt-categorias { margin-top: -3.2rem; position: relative; }
.pt-categoria { background: #fff; padding: 1.25rem; height: 100%; border-radius: 16px; }
.pt-categoria-icone { width: 46px; height: 46px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; background: var(--c1-xlt); color: var(--cs-primaria); font-size: 1.25rem; margin-bottom: .7rem; }
.pt-secao { padding: 3rem 12px 1rem; }
.cs-secao-titulo { font-size: 1.65rem; font-weight: 900; }
.pt-secretaria { background: #fff; padding: 1.25rem; height: 100%; border-radius: 14px; }
.pt-secretaria-nome { font-size: 1rem; font-weight: 800; color: var(--c1-dk); margin: .6rem 0; }
.pt-secretaria-meta { font-size: .82rem; color: #6b7684; }
.pt-secretaria-meta li { margin-bottom: .2rem; }
.pt-secretaria-meta i { width: 1.1rem; color: var(--c1-lt); }

/* Rodapé */
.pt-rodape { background: var(--c1-dkk); color: rgba(255, 255, 255, .85); margin-top: 3rem; padding-top: 2.5rem; font-size: .84rem; }
.pt-rodape-titulo { font-size: 1rem; font-weight: 800; color: #fff; margin-bottom: .8rem; }
.pt-rodape a { color: rgba(255, 255, 255, .85); text-decoration: none; }
.pt-rodape a:hover { color: var(--cs-alerta); }
.pt-rodape li { margin-bottom: .4rem; }
.pt-rodape i { color: var(--cs-sucesso); width: 1.2rem; }
.pt-rodape-final { margin-top: 2rem; padding: 1rem 0; border-top: 1px solid rgba(255, 255, 255, .1); font-size: .78rem; opacity: .75; }

@media (max-width: 991.98px) {
    .pt-menu-botao { display: inline-block; }
    .pt-menu-lista { display: none; flex-direction: column; padding-bottom: .5rem; }
    .pt-menu.aberto .pt-menu-lista { display: flex; }
    .pt-menu-lista a.ativo { box-shadow: inset 3px 0 0 var(--cs-alerta); }
}

/* ---------- Acessibilidade ---------- */
html.a11y-sublinhar a { text-decoration: underline !important; }
html.a11y-contraste body,
html.a11y-contraste .pt-cabecalho, html.a11y-contraste .pt-barra, html.a11y-contraste .pt-menu,
html.a11y-contraste .pt-hero, html.a11y-contraste .pt-rodape, html.a11y-contraste .pt-categoria,
html.a11y-contraste .pt-secretaria, html.a11y-contraste .cs-card {
    background: #000 !important; color: #fff !important; box-shadow: none !important; border-color: #fff !important;
}
html.a11y-contraste a, html.a11y-contraste .pt-menu-lista a, html.a11y-contraste .pt-secretaria-nome,
html.a11y-contraste .cs-secao-titulo, html.a11y-contraste .pt-barra-botao { color: #ff0 !important; }
html.a11y-contraste img { filter: grayscale(1) contrast(1.2); }
html.a11y-contraste .filete { display: none; }
html.a11y-contraste .btn, html.a11y-contraste .pt-restrita { background: #ff0 !important; color: #000 !important; border-color: #ff0 !important; }
html.a11y-contraste .text-muted, html.a11y-contraste .pt-secretaria-meta { color: #fff !important; }

/* Fonte para dislexia: OpenDyslexic (@font-face no layout do portal; sem ela, Verdana) em todo o texto, com mais espaço
   entre palavras e linhas. Ícones (Font Awesome) ficam de fora. */
html.a11y-dislexia { --cs-fonte-titulos: 'OpenDyslexic', Verdana, Tahoma, sans-serif; }
html.a11y-dislexia body,
html.a11y-dislexia :is(h1, h2, h3, h4, h5, h6, p, li, a, span, div, label, input, button, select, textarea, td, th, dt, dd,
    small, strong, em, b, summary, legend, time, blockquote, figcaption, kbd):not([class*="fa-"]) {
    font-family: 'OpenDyslexic', Verdana, Tahoma, sans-serif;
}
html.a11y-dislexia body { word-spacing: .12em; }
html.a11y-dislexia :is(p, li, dd, blockquote, figcaption) { line-height: 1.8; }

/* Opções de liga/desliga do menu Acessibilidade: marca a que está ligada */
.dropdown-item[aria-pressed="true"]::after { content: '\2713'; margin-left: .5rem; font-weight: 800; }

/* Modal "Site compatível com leitores de tela" */
.ps-a11y-modal .modal-dialog { max-width: 660px; }
.ps-a11y-modal .modal-content { border: 0; border-radius: 16px; }
.ps-a11y-modal .modal-header { border-bottom: 0; padding: 1.4rem 1.5rem .6rem; align-items: flex-start; }
.ps-a11y-modal .modal-title { font-family: var(--cs-fonte-titulos); font-size: 1.3rem; font-weight: 800; color: var(--cs-primaria); margin: 0 1rem 0 0; }
.ps-a11y-fechar { flex: none; width: 2.4rem; height: 2.4rem; margin-left: auto; display: grid; place-items: center; border: 1px solid #6b7785;
    border-radius: 8px; background: #fff; color: #1a1a1a; font-size: 1.1rem; }
.ps-a11y-fechar:hover, .ps-a11y-fechar:focus-visible { background: #eef1f5; }
.ps-a11y-modal .modal-body { padding: .4rem 1.5rem 1.5rem; font-size: .95rem; color: #2d3a47; }
.ps-a11y-modal .modal-body h3 { margin: 1.3rem 0 .7rem; padding: .5rem .9rem; border-left: 4px solid color-mix(in srgb, var(--cs-primaria) 55%, #7cc4f0); border-radius: 6px;
    background: color-mix(in srgb, var(--cs-primaria) 8%, #fff); font-size: 1rem; font-weight: 800; color: var(--cs-primaria); }
.ps-a11y-modal .modal-body ol { padding-left: 1.4rem; margin-bottom: .75rem; }
.ps-a11y-modal .modal-body li { margin-bottom: .45rem; line-height: 1.6; }
.ps-tecla { display: inline-block; padding: .05rem .4rem; border: 1px solid #b9c2cc; border-bottom-width: 2px; border-radius: 4px; background: #f6f8fa;
    color: #1a1a1a; font-size: .8em; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; line-height: 1.4; }
html.a11y-contraste .ps-a11y-modal .modal-content, html.a11y-contraste .ps-a11y-modal .modal-body { background: #000 !important; color: #fff !important; }
html.a11y-contraste .ps-a11y-modal .modal-title, html.a11y-contraste .ps-a11y-modal .modal-body h3 { color: #ff0 !important; background: #000 !important; border-color: #ff0; }
html.a11y-contraste .ps-tecla, html.a11y-contraste .ps-a11y-fechar { background: #000 !important; color: #fff !important; border-color: #fff !important; }
