/* CSS de Acessibilidade - Refatorado */

/* Classes de Zoom */
:root {
    --zoom-factor: 1;
}

.zoom_-3 { --zoom-factor: 0.67; }
.zoom_-2 { --zoom-factor: 0.8; }
.zoom_-1 { --zoom-factor: 0.9; }
.zoom_0  { --zoom-factor: 1; }
.zoom_1  { --zoom-factor: 1.1; }
.zoom_2  { --zoom-factor: 1.2; }
.zoom_3  { --zoom-factor: 1.33; }

/* Aplicação do Zoom */
body[class*="zoom_"] {
    zoom: var(--zoom-factor);
}

/* Fix para Firefox que não suporta zoom CSS */
@supports not (zoom: 1) {
    body[class*="zoom_"] {
        transform: scale(var(--zoom-factor));
        transform-origin: top center;
        width: calc(100% / var(--zoom-factor));
    }
}

/* 
    FIX: Modal Backdrop and Fullscreen Overlays 
    Quando o body tem zoom < 1 (ex: 0.67), o viewport visual aumenta.
    Elementos fixos com 100vh/100vw calculam baseados no zoom, ficando menores que a tela.
    Aumentamos o tamanho do backdrop para compensar qualquer zoom mínimo (0.67 -> ~150%).
    Usamos 200% para garantir cobertura total.
*/
body[class*="zoom_"] .modal-backdrop, 
body[class*="zoom_"] #buscador_modal {
    width: 200vw !important;
    height: 200vh !important;
    left: -50vw !important;
    top: -50vh !important;
}

/* High Contrast Mode */
body.contraste-ativo {
    background-color: #000 !important;
    color: #fff !important;
}


body.contraste-ativo p,
body.contraste-ativo td,
body.contraste-ativo h1,
body.contraste-ativo h2,
body.contraste-ativo h3,
body.contraste-ativo h4,
body.contraste-ativo h5,
body.contraste-ativo a,
body.contraste-ativo label,
body.contraste-ativo span,
body.contraste-ativo b,
body.contraste-ativo th,
body.contraste-ativo input,
body.contraste-ativo .text-dark,
body.contraste-ativo .nav-link {
    color: #fff !important;
}

body.contraste-ativo .bloco-resumo,
body.contraste-ativo .services,
body.contraste-ativo .notice,
body.contraste-ativo .photo-galery,
body.contraste-ativo .video-galery,
body.contraste-ativo .footer-video,
body.contraste-ativo .footer-base,
body.contraste-ativo .news2,
body.contraste-ativo .modal-content,
body.contraste-ativo .navbar,
body.contraste-ativo .card-service,
body.contraste-ativo .btn-all-services,
body.contraste-ativo .btn-all-notices,
body.contraste-ativo .btn-all-photo,
body.contraste-ativo .btn-all-video {
    background-color: #000 !important;
    border-color: #fff !important;
}

body.contraste-ativo .bloco-bordas {
    border-color: #fff !important;
    color: #fff !important;
}

body.contraste-ativo .navbar-toggler-icon {
    filter: invert(100%) grayscale(100%) !important;
}

body.contraste-ativo .navbar-brand img,
body.contraste-ativo .card-service img,
body.contraste-ativo .btn-all-notices img,
body.contraste-ativo a.btn-all-notices img,
body.contraste-ativo .inicial,
body.contraste-ativo img.icon-left,
body.contraste-ativo img.icon-right,
body.contraste-ativo img.logo, 
body.contraste-ativo .network-img,
body.contraste-ativo img[src*="icon"] {
    filter: invert(100%) grayscale(100%) !important;
}

body.contraste-ativo .logo-transparencia {
    content: url('/images/logo_transparencia_contraste_2024.png') !important;
}

/* Form Elements in High Contrast */
body.contraste-ativo input, 
body.contraste-ativo select, 
body.contraste-ativo textarea {
    background-color: #222 !important;
    color: #fff !important;
    border: 1px solid #fff !important;
}

/* Fix Mobile Menu in High Contrast */
body.contraste-ativo .modal-content {
    border: 1px solid #fff !important;
}

/* Modal Buscador Adjustments for Responsiveness */
#buscador_modal {
    width: 100%; 
    height: 100vh; 
    background: rgba(0,0,0,.5); 
    position: fixed; 
    top: 0% !important; 
    left: 0 !important;
    z-index: 2000; 
    display: none;
    align-items: center;
    justify-content: center;
}

.modal-buscador {
    position: relative !important;
    top: auto !important;
    right: auto !important;
    left: auto !important;
    width: 90% !important;
    max-width: 500px !important;
    height: auto !important;
    max-height: 90vh;
    background-color: #fff; 
    border-radius: 30px; 
    padding: 20px !important;
    margin: 0 auto;
    overflow-y: auto !important;
}

/* Zoom Control Range Styling */
input[type=range] {
    accent-color: #3458CE;
}

body.contraste-ativo input[type=range] {
    accent-color: #fff;
}
