:root { --a11y-font-scale: 1; }
html { font-size: calc(16px * var(--a11y-font-scale)); }
*:focus-visible { outline: 4px solid #ffbf47 !important; outline-offset: 4px !important; }
.a11y-live-region { position: fixed !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip-path: inset(50%) !important; white-space: nowrap !important; }
.a11y-shortcuts { position: fixed !important; z-index: 9999 !important; top: 0 !important; left: 0 !important; width: auto !important; background: transparent !important; pointer-events: none !important; }
.a11y-shortcuts .public-container { width: auto !important; margin: 0 !important; padding: 0 !important; display: flex !important; flex-direction: column !important; gap: 4px !important; }
.a11y-shortcuts a { position: absolute !important; left: -10000px !important; top: auto !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.a11y-shortcuts a:focus { position: relative !important; left: 10px !important; top: 10px !important; width: auto !important; height: auto !important; overflow: visible !important; pointer-events: auto !important; padding: 12px 16px !important; color: #fff !important; background: #071b30 !important; border: 3px solid #ffbf47 !important; border-radius: 8px !important; font-weight: 800 !important; text-decoration: underline !important; }
.accessibility-toggle { position: fixed !important; z-index: 1400 !important; right: 18px !important; bottom: 18px !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; min-height: 52px !important; padding: 12px 17px !important; color: #fff !important; background: #0a4f91 !important; border: 3px solid #fff !important; border-radius: 999px !important; box-shadow: 0 8px 30px rgba(0,0,0,.3) !important; font: 800 15px/1.2 Arial,sans-serif !important; }
.accessibility-toggle:hover { background: #073865 !important; }
.accessibility-panel[hidden] { display: none !important; }
.accessibility-panel { position: fixed !important; z-index: 1390 !important; right: 18px !important; bottom: 84px !important; width: min(390px, calc(100vw - 36px)) !important; max-height: calc(100vh - 115px) !important; overflow-y: auto !important; padding: 16px !important; color: #172033 !important; background: #fff !important; border: 2px solid #0a4f91 !important; border-radius: 16px !important; box-shadow: 0 22px 60px rgba(0,0,0,.32) !important; font-family: Arial,sans-serif !important; }
.a11y-panel-header { display: flex !important; align-items: center !important; justify-content: space-between !important; gap: 12px !important; padding-bottom: 12px !important; border-bottom: 1px solid #d8e0e8 !important; }
.a11y-panel-header h2 { margin: 0 !important; color: #172033 !important; font-size: 19px !important; line-height: 1.25 !important; }
.a11y-panel-close { flex: 0 0 auto !important; width: 42px !important; height: 42px !important; padding: 0 !important; color: #172033 !important; background: #eef3f8 !important; border: 0 !important; border-radius: 50% !important; font-size: 25px !important; }
.a11y-group { display: grid !important; gap: 10px !important; padding: 14px 0 !important; border-bottom: 1px solid #e2e8ef !important; }
.a11y-group > strong { color: #405168 !important; font-size: 12px !important; letter-spacing: .06em !important; text-transform: uppercase !important; }
.a11y-button-grid { display: grid !important; grid-template-columns: repeat(2,minmax(0,1fr)) !important; gap: 8px !important; }
.a11y-control-button { display: flex !important; align-items: center !important; gap: 8px !important; min-height: 50px !important; padding: 10px !important; color: #172033 !important; background: #f3f6f9 !important; border: 2px solid transparent !important; border-radius: 10px !important; font-weight: 700 !important; text-align: left !important; }
.a11y-control-button:hover, .a11y-control-button.is-active { color: #073865 !important; background: #e6f0fa !important; border-color: #0a4f91 !important; }
.a11y-control-button b { display: grid !important; flex: 0 0 auto !important; place-items: center !important; width: 30px !important; height: 30px !important; color: #fff !important; background: #0a4f91 !important; border-radius: 7px !important; font-size: 12px !important; }
.a11y-font-controls { display: grid !important; grid-template-columns: repeat(3,1fr) !important; gap: 8px !important; }
.a11y-font-controls button { min-height: 46px !important; color: #073865 !important; background: #edf4fb !important; border: 1px solid #bfd2e5 !important; border-radius: 10px !important; font-weight: 900 !important; }
.a11y-group [data-font-value] { color: #53657a !important; font-size: 13px !important; text-align: center !important; }
.a11y-reset { width: 100% !important; min-height: 46px !important; margin-top: 14px !important; color: #8a1722 !important; background: #fff0f1 !important; border: 1px solid #efbdc3 !important; border-radius: 10px !important; font-weight: 800 !important; }
.a11y-help-link { display: block !important; margin-top: 12px !important; color: #0a4f91 !important; text-align: center !important; font-weight: 800 !important; }
.a11y-reading-guide[hidden] { display: none !important; }
.a11y-reading-guide { position: fixed !important; z-index: 1380 !important; top: 0 !important; right: 0 !important; left: 0 !important; height: 36px !important; pointer-events: none !important; background: rgba(255,223,0,.26) !important; border-top: 2px solid #ffbf47 !important; border-bottom: 2px solid #ffbf47 !important; }




.a11y-dark-mode body { color:#edf4fb !important; background:#111923 !important; }
.a11y-dark-mode .public-header, .a11y-dark-mode .amendment-card, .a11y-dark-mode .public-list-card, .a11y-dark-mode .detail-card, .a11y-dark-mode .finance-detail-card, .a11y-dark-mode .councilor-card, .a11y-dark-mode .public-filter-card, .a11y-dark-mode .public-metrics, .a11y-dark-mode .hero-panel, .a11y-dark-mode .status-row, .a11y-dark-mode .mini-councilor { color:#edf4fb !important; background:#182330 !important; border-color:#3a4a5d !important; }
.a11y-grayscale body { filter: grayscale(1) !important; }
.a11y-underline-links a { text-decoration: underline !important; text-decoration-thickness: .15em !important; text-underline-offset: .2em !important; }
.a11y-readable-font body, .a11y-readable-font button, .a11y-readable-font input, .a11y-readable-font select, .a11y-readable-font textarea { font-family: Arial,Verdana,sans-serif !important; letter-spacing:.035em !important; word-spacing:.12em !important; line-height:1.8 !important; }
.a11y-large-cursor * { cursor: crosshair !important; }
.a11y-reduced-motion *, .a11y-reduced-motion *::before, .a11y-reduced-motion *::after { scroll-behavior:auto !important; animation-duration:.001ms !important; transition-duration:.001ms !important; }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto !important; animation-duration:.001ms !important; transition-duration:.001ms !important; } }
@media (max-width:620px) { .accessibility-toggle { right:10px !important; bottom:10px !important; width:54px !important; height:54px !important; padding:0 !important; } .accessibility-toggle span:last-child { position:absolute !important; width:1px !important; height:1px !important; overflow:hidden !important; clip-path:inset(50%) !important; } .accessibility-panel { right:8px !important; bottom:74px !important; width:calc(100vw - 16px) !important; } .a11y-button-grid { grid-template-columns:1fr !important; } }
@media print { .a11y-shortcuts,.accessibility-toggle,.accessibility-panel,.a11y-reading-guide,[vw] { display:none !important; } }

.portal-access-bar{position:sticky;z-index:1600;top:0;min-height:42px;background:linear-gradient(180deg,#f7f9fc,#edf2f7);border-bottom:1px solid #d9e1ea;color:#005b91;font-family:Inter,Arial,sans-serif}.portal-access-inner{display:flex;align-items:center;min-height:42px;overflow-x:auto;scrollbar-width:thin}.access-bar-item,.access-bar-action,.access-bar-more{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;min-height:42px;padding:0 12px;color:#005b91;background:transparent;border:0;text-decoration:none;font-size:12px}.access-bar-item strong{font-weight:600}.access-bar-item>span,.access-bar-action>span{font-size:16px}.access-divider{width:1px;height:22px;flex:0 0 auto;background:#b8c7d6}.access-bar-font{display:flex;align-items:center}.access-bar-font button{min-width:34px;height:42px;padding:0 7px;color:#005b91;background:transparent;border:0;font-weight:700}.access-bar-button{font-family:inherit}.access-bar-more{margin-left:auto;color:#fff;background:#0b4c87;font-weight:700}.accessibility-toggle{display:none!important}.accessibility-panel{bottom:auto!important;top:52px!important;right:18px!important}.a11y-dark-mode .portal-access-bar{background:#121d2b!important;border-color:#34465a!important}.a11y-dark-mode .dashboard-card,.a11y-dark-mode .premium-search-card,.a11y-dark-mode .premium-shortcuts{background:#182330!important;color:#edf4fb!important;border-color:#3a4a5d!important}.a11y-dark-mode .premium-shortcuts{border-color:#3a4a5d!important}.a11y-dark-mode .status-donut:after{background:#182330!important}@media(max-width:820px){.portal-access-inner{width:100%;padding:0 8px}.access-bar-item,.access-bar-action{padding:0 9px}.access-bar-item strong{display:none}.access-bar-more{font-size:0;padding:0 13px}.access-bar-more:after{content:'♿';font-size:18px}.accessibility-panel{top:48px!important;right:8px!important}.public-header{top:0!important}}@media print{.portal-access-bar{display:none!important}}

/* Botão sempre visível de acessibilidade para deficiência visual */
.visual-accessibility-fab { position: fixed; right: 18px; bottom: 82px; z-index: 9997; display: inline-flex; align-items: center; gap: 8px; min-height: 48px; padding: 11px 15px; border: 2px solid #fff; border-radius: 999px; color: #fff; background: #0b3a75; box-shadow: 0 8px 24px rgba(0,0,0,.28); cursor: pointer; font: inherit; }
.visual-accessibility-fab:hover, .visual-accessibility-fab:focus-visible { background: #062952; outline: 3px solid #ffcc00; outline-offset: 3px; }
.visual-accessibility-fab span { font-size: 22px; line-height: 1; }

@media (max-width: 640px) { .visual-accessibility-fab { right: 12px; bottom: 72px; padding: 12px; } .visual-accessibility-fab strong { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } }


/* ============================================================
   ALTO CONTRASTE EM ESCALA DE CINZA - VERSÃO CLARA
   Mantém o layout original e os botões flutuantes fixos.
   ============================================================ */

/*
 * Não aplicar filter no BODY.
 * Um filter no body pode criar um novo contexto para elementos
 * position: fixed e fazê-los acompanhar o documento de forma errada.
 */
html.a11y-high-contrast body {
    filter: none !important;
}

/* Aplica o efeito somente às áreas estruturais do portal. */
html.a11y-high-contrast .portal-access-bar,
html.a11y-high-contrast .public-header,
html.a11y-high-contrast main,
html.a11y-high-contrast .public-footer,
html.a11y-high-contrast .premium-footer {
    filter: grayscale(100%) contrast(1.06) brightness(.96) !important;
}

/*
 * Os elementos flutuantes continuam presos à viewport.
 */
html.a11y-high-contrast .visual-accessibility-fab,
html.a11y-high-contrast .back-to-top,
html.a11y-high-contrast [vw],
html.a11y-high-contrast [vw-access-button],
.visual-accessibility-fab,
.back-to-top,
[vw],
[vw-access-button] {
    position: fixed !important;
}

/* Botão principal de acessibilidade */
.visual-accessibility-fab {
    right: 18px !important;
    bottom: 82px !important;
    z-index: 9997 !important;
}

/* Botão voltar ao topo */
.back-to-top {
    right: 26px !important;
    bottom: 26px !important;
    z-index: 9996 !important;
}

/*
 * No modo de alto contraste, os botões também ficam em cinza,
 * mas sem perder destaque e legibilidade.
 */
html.a11y-high-contrast .visual-accessibility-fab,
html.a11y-high-contrast .back-to-top {
    filter: grayscale(100%) contrast(1.04) brightness(.98) !important;
}

/*
 * VLibras permanece fixo e recebe somente o mesmo tratamento
 * visual leve, sem interferência no posicionamento.
 */
html.a11y-high-contrast [vw] {
    filter: grayscale(100%) contrast(1.04) brightness(.98) !important;
}

/* Evita que regras antigas alterem as cores do conteúdo. */
html.a11y-high-contrast body,
html.a11y-high-contrast body main,
html.a11y-high-contrast body section,
html.a11y-high-contrast body article,
html.a11y-high-contrast body aside,
html.a11y-high-contrast body header,
html.a11y-high-contrast body footer,
html.a11y-high-contrast body nav,
html.a11y-high-contrast body form,
html.a11y-high-contrast body a,
html.a11y-high-contrast body button,
html.a11y-high-contrast body input,
html.a11y-high-contrast body select,
html.a11y-high-contrast body textarea {
    forced-color-adjust: none;
}

@media (max-width: 640px) {
    .visual-accessibility-fab {
        right: 12px !important;
        bottom: 72px !important;
    }

    .back-to-top {
        right: 14px !important;
        bottom: 14px !important;
    }
}

@media print {
    html.a11y-high-contrast .portal-access-bar,
    html.a11y-high-contrast .public-header,
    html.a11y-high-contrast main,
    html.a11y-high-contrast .public-footer,
    html.a11y-high-contrast .premium-footer {
        filter: none !important;
    }
}