/* Scroll nativo: conservar espaço e evitar saltos ao abrir janelas. */
html {
    overflow-y: scroll;
    scrollbar-width: auto;
    scrollbar-color: #858b92 #f1f3f5;
}

@supports (scrollbar-gutter: stable) {
    html {
        overflow-y: auto;
        scrollbar-gutter: stable;
    }
}

html.platform-scroll-locked {
    overflow-y: hidden;
}

@supports not (scrollbar-gutter: stable) {
    html.platform-scroll-locked {
        padding-right: var(--platform-scrollbar-width, 0px);
    }
}

/* O espaço já está reservado no documento; não o duplicar nos plugins. */
body.modal-open,
body.swal2-shown:not(.swal2-toast-shown) {
    padding-right: 0 !important;
}

.modal {
    padding-left: 0 !important;
    padding-right: 0 !important;
    scrollbar-gutter: stable;
}

html::-webkit-scrollbar,
textarea::-webkit-scrollbar,
.modal::-webkit-scrollbar {
    width: 14px;
    height: 14px;
}

html::-webkit-scrollbar-track,
textarea::-webkit-scrollbar-track,
.modal::-webkit-scrollbar-track {
    background: #f1f3f5;
}

html::-webkit-scrollbar-thumb,
textarea::-webkit-scrollbar-thumb,
.modal::-webkit-scrollbar-thumb {
    background: #858b92;
    border: 3px solid #f1f3f5;
    border-radius: 8px;
}

@media (forced-colors: active) {
    html {
        scrollbar-color: auto;
    }
}

/* Menus do website: o conteúdo longo deve caber na janela. */
@media (min-width: 992px) {
    .main-menu .navigation > li > ul,
    .main-menu .navigation > li > ul > li > ul {
        max-height: var(--menu-altura, calc(100vh - 160px));
        overflow-y: auto;
        overflow-x: hidden;
        overscroll-behavior-y: contain;
        scrollbar-width: thin;
        scrollbar-color: #858b92 #f1f3f5;
        transform: none !important;
        /* Reposicionar o submenu sem animar as coordenadas calculadas. */
        transition: opacity 150ms ease !important;
    }

    .main-menu .navigation > li > ul {
        margin-top: 0;
    }

    /* O submenu lateral fica fora da área que faz scroll. */
    .main-header .main-menu .navigation > li > ul > li > ul {
        position: fixed;
        top: var(--menu-topo, 120px);
        left: var(--menu-esquerda, 0px);
        right: auto;
        margin-left: 0;
    }

    .main-menu .navigation li.dropdown:focus-within > ul {
        visibility: visible;
        opacity: 1;
    }

    .main-menu .navigation ul::-webkit-scrollbar {
        width: 8px;
    }

    .main-menu .navigation ul::-webkit-scrollbar-thumb {
        background: #858b92;
        border: 2px solid #f1f3f5;
        border-radius: 6px;
    }
}

/* Revelar a navegação depois de o cabeçalho original sair do ecrã. */
@keyframes platform-header-enter {
    from { opacity: 0; transform: translate3d(0, -100%, 0); }
    to { opacity: 1; transform: none; }
}

@media (min-width: 992px) {
    .main-header.fixed-header .header-upper {
        animation: platform-header-enter 320ms cubic-bezier(.22, .61, .36, 1) backwards;
    }
}

@media (prefers-reduced-motion: reduce) {
    .main-header.fixed-header .header-upper {
        animation: none;
    }
}
