/* =========================================================================
   NAVEGAÇÃO — barra superior (módulo, favoritos, conta) e menu lateral.
   Carregado depois do tema (funcoes_helper.php), vale para o tema claro e
   para o app_theme_dark. Marcação em views/site_template/menu.php; os itens
   do menu lateral vêm do FlexMenu.
   ========================================================================= */
body {
    --nv-bg: #ffffff;
    --nv-bg-2: #f6f8fa;
    --nv-hover: #edf2f6;
    --nv-press: #e3eaf0;
    --nv-border: #e1e7ec;
    --nv-border-strong: #c2ccd4;
    --nv-text: #1f2d37;
    --nv-text-2: #3a4a56;
    --nv-text-3: #5b6b77;
    --nv-accent: #1565c0;
    --nv-accent-soft: #e8f1fb;
    --nv-on-accent: #ffffff;
    --nv-danger: #c62828;
    --nv-star: #f9a825;
    --nv-ring: 0 0 0 3px rgba(21, 101, 192, .3);
    --nv-shadow: 0 12px 32px rgba(16, 32, 45, .16), 0 2px 6px rgba(16, 32, 45, .08);
    --nv-shadow-1: 0 1px 2px rgba(16, 32, 45, .1);
    --nv-ease: cubic-bezier(.2, .8, .2, 1);
    /* o Roboto não é carregado pelo sistema: Segoe UI no Windows, Roboto nativo no Android */
    --nv-font: "Segoe UI", Roboto, system-ui, -apple-system, Helvetica, Arial, sans-serif;
}
body.app_theme_dark {
    --nv-bg: #383838;
    --nv-bg-2: #303030;
    --nv-hover: #454545;
    --nv-press: #4f4f4f;
    --nv-border: #4a4a4a;
    --nv-border-strong: #7a7a7a;
    --nv-text: #f2f2f2;
    --nv-text-2: #e0e0e0;
    --nv-text-3: #bdbdbd;
    --nv-accent: #64b5f6;
    --nv-accent-soft: #2f4050;
    --nv-on-accent: #0d2233;
    --nv-danger: #f4b1b1; /* #ef9a9a dava 4,46:1 sobre o hover escuro */
    --nv-ring: 0 0 0 3px rgba(100, 181, 246, .35);
    --nv-shadow: 0 12px 32px rgba(0, 0, 0, .5), 0 2px 6px rgba(0, 0, 0, .3);
    --nv-shadow-1: 0 1px 2px rgba(0, 0, 0, .4);
}

/* -------------------------------------------------------------------------
   BARRA SUPERIOR — os botões usam branco translúcido, então acompanham a cor
   da barra definida pelo tema.
   ------------------------------------------------------------------------- */
#header_main .nv_top_item {
    height: 48px;
    display: flex;
    align-items: center;
}
#menu_top_dropdown .top_menu_toggle.nv_modbtn,
#menu_top_dropdown .top_menu_toggle.nv_iconbtn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 38px;
    line-height: 1;
    margin: 0 2px;
    padding: 0 10px 0 5px;
    border-radius: 10px;
    color: #fff;
    text-decoration: none;
    transition: background .15s, transform .12s;
}
#menu_top_dropdown .top_menu_toggle.nv_iconbtn {
    width: 40px;
    padding: 0;
    justify-content: center;
}
#menu_top_dropdown .top_menu_toggle.nv_modbtn:hover,
#menu_top_dropdown .top_menu_toggle.nv_iconbtn:hover {
    background: rgba(255, 255, 255, .14);
}
#menu_top_dropdown .top_menu_toggle.nv_modbtn:active,
#menu_top_dropdown .top_menu_toggle.nv_iconbtn:active {
    background: rgba(255, 255, 255, .24);
    transform: scale(.97);
}
#menu_top_dropdown .uk-open > .top_menu_toggle.nv_modbtn,
#menu_top_dropdown .uk-open > .top_menu_toggle.nv_iconbtn {
    background: rgba(255, 255, 255, .24);
}
/* o nome do módulo é TEXTO sobre a cor da barra do tema — branco sobre
   #607d8b dá 4,37:1, abaixo do AA. A pílula escura leva a ~6:1 em qualquer
   estado e em qualquer cor de barra. */
#menu_top_dropdown .top_menu_toggle.nv_modbtn {
    background: rgba(0, 0, 0, .18);
}
#menu_top_dropdown .top_menu_toggle.nv_modbtn:hover {
    background: rgba(0, 0, 0, .26);
}
#menu_top_dropdown .top_menu_toggle.nv_modbtn:active,
#menu_top_dropdown .uk-open > .top_menu_toggle.nv_modbtn {
    background: rgba(0, 0, 0, .32);
}
#menu_top_dropdown .top_menu_toggle:focus-visible,
#header_main a.nv_userbtn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, .55);
}
#menu_top_dropdown .nv_modbtn_ico {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    display: grid;
    place-items: center;
    background: rgba(255, 255, 255, .16);
    transition: background .15s;
}
#menu_top_dropdown .nv_modbtn:hover .nv_modbtn_ico {
    background: rgba(255, 255, 255, .26);
}
#menu_top_dropdown .nv_modbtn_ico .material-icons {
    font-size: 18px;
}
#menu_top_dropdown .nv_iconbtn .material-icons {
    font-size: 22px;
}
#menu_top_dropdown .nv_modbtn_nome {
    font: 600 14px/1 var(--nv-font);
    white-space: nowrap;
    max-width: 240px;
    overflow: hidden;
    text-overflow: ellipsis;
}
#menu_top_dropdown .nv_caret {
    font-size: 18px;
    opacity: .85;
    transition: transform .22s var(--nv-ease);
}
#menu_top_dropdown .uk-open .nv_caret {
    transform: rotate(180deg);
}

/* botão claro/escuro: pílula escura translúcida como o botão de módulo, para o
   ícone branco passar no AA sobre qualquer cor de barra */
#header_main .user_actions li.nv_tema_li {
    display: flex;
    align-items: center;
    height: 48px;
    margin-right: 6px;
}
#header_main button.nv_tema_btn {
    box-sizing: border-box;
    width: 42px;
    height: 42px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 21px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: #fff;
    background: rgba(0, 0, 0, .22);
    transition: background .15s, transform .12s;
}
#header_main button.nv_tema_btn .material-icons {
    font-size: 24px;
    line-height: 1;
}
#header_main button.nv_tema_btn:hover {
    background: rgba(0, 0, 0, .32);
}
#header_main button.nv_tema_btn:active {
    background: rgba(0, 0, 0, .4);
    transform: scale(.96);
}
#header_main button.nv_tema_btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, .7);
}

/* avatar */
#header_main .user_actions a.nv_userbtn {
    display: flex;
    align-items: center;
    padding: 0 4px;
}
/* a setinha branca do Altair aponta para uma caixa que agora fica afastada 6px */
#header_main .uk-navbar .uk-navbar-nav > li > a.nv_userbtn:after {
    display: none;
}
/* o cabeçalho, ao contrário da lateral, não usa border-box: sem isto o
   min-height soma o padding e cada item da caixa cresce 16px */
#header_main .nv_pop,
#header_main .nv_pop *,
#header_main .nv_pop *:before,
#header_main .nv_pop *:after {
    box-sizing: border-box;
}
#header_main a.nv_userbtn img {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid rgba(255, 255, 255, .7);
    transition: border-color .15s, box-shadow .15s;
}
#header_main a.nv_userbtn:hover img,
#header_main .uk-open > a.nv_userbtn img {
    border-color: #fff;
    box-shadow: 0 0 0 4px rgba(255, 255, 255, .2);
}

/* -------------------------------------------------------------------------
   CAIXAS SUSPENSAS (módulos, favoritos, conta)
   ------------------------------------------------------------------------- */
#header_main .uk-dropdown.nv_pop {
    width: 400px;
    max-width: calc(100vw - 16px);
    max-height: calc(100vh - 70px);
    overflow-y: auto;
    margin-top: 6px;
    padding: 8px;
    border-radius: 16px;
    border: 1px solid var(--nv-border);
    background: var(--nv-bg);
    color: var(--nv-text);
    box-shadow: var(--nv-shadow);
    font-family: var(--nv-font);
}
#header_main .uk-dropdown.nv_pop_fav {
    width: 360px;
}
#header_main .uk-navbar .uk-navbar-nav > li .uk-dropdown.nv_pop_user {
    width: 290px;
    max-height: none;
    margin-top: 6px;
    padding: 6px;
}
#header_main .nv_pop .material-icons {
    color: inherit;
}
#header_main .nv_pop .nv_pop_head {
    padding: 8px 10px 10px;
}
#header_main .nv_pop .nv_pop_head h2 {
    margin: 0;
    font: 700 16px/1.3 var(--nv-font);
    letter-spacing: -.1px;
    color: var(--nv-text);
}
#header_main .nv_pop .nv_pop_head p {
    margin: 2px 0 0;
    font: 400 13px/1.4 var(--nv-font);
    color: var(--nv-text-3);
}
#header_main .nv_pop .nv_pop_head p b {
    font-weight: 600;
    color: var(--nv-text-2);
}

/* módulos */
#header_main .nv_mod_lista {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
#header_main a.nv_mod {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px 10px 10px;
    border-radius: 12px;
    border: 1px solid var(--nv-border);
    background: var(--nv-bg);
    color: var(--nv-text);
    text-decoration: none;
    transition: border-color .18s, box-shadow .18s, transform .18s var(--nv-ease), background .18s;
}
#header_main .nv_mod_ico {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    border-radius: 12px;
    display: grid;
    place-items: center;
    background: var(--nv-accent-soft);
    color: var(--nv-accent);
    transition: background .2s, color .2s, transform .22s var(--nv-ease);
}
#header_main .nv_mod_ico .material-icons {
    font-size: 24px;
}
#header_main .nv_mod_txt {
    flex: 1 1 auto;
    min-width: 0;
    line-height: 1.35;
}
#header_main .nv_mod_txt b {
    display: block;
    font: 600 15px/1.3 var(--nv-font);
    color: var(--nv-text);
}
#header_main .nv_mod_txt small {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-top: 2px;
    font: 400 13px/1.4 var(--nv-font);
    color: var(--nv-text-3);
}
#header_main .nv_mod_txt small:empty {
    display: none;
}
#header_main .nv_mod_go {
    font-size: 18px;
    color: var(--nv-accent);
    opacity: 0;
    transform: translateX(-6px);
    transition: opacity .18s, transform .22s var(--nv-ease);
}
#header_main .nv_pop .nv_mod_go {
    color: var(--nv-accent);
}
#header_main a.nv_mod:hover,
#header_main a.nv_mod:focus-visible {
    border-color: var(--nv-accent);
    box-shadow: 0 6px 18px rgba(16, 32, 45, .12);
    transform: translateY(-1px);
    outline: none;
}
#header_main a.nv_mod:focus-visible {
    box-shadow: 0 6px 18px rgba(16, 32, 45, .12), var(--nv-ring);
}
#header_main a.nv_mod:hover .nv_mod_ico,
#header_main a.nv_mod:focus-visible .nv_mod_ico {
    background: var(--nv-accent);
    color: var(--nv-on-accent);
    transform: rotate(-4deg) scale(1.05);
}
#header_main a.nv_mod:hover .nv_mod_go,
#header_main a.nv_mod:focus-visible .nv_mod_go {
    opacity: 1;
    transform: none;
}
#header_main a.nv_mod:active {
    transform: scale(.985);
}
/* módulo em que a pessoa está */
#header_main a.nv_mod.nv_atual {
    background: var(--nv-accent-soft);
    border-color: transparent;
}
#header_main a.nv_mod.nv_atual .nv_mod_ico {
    background: var(--nv-accent);
    color: var(--nv-on-accent);
}
#header_main a.nv_mod.nv_atual:hover {
    transform: none;
    box-shadow: none;
    border-color: transparent;
}
#header_main a.nv_mod.nv_atual:hover .nv_mod_ico {
    transform: none;
}
#header_main a.nv_mod.nv_atual .nv_mod_go {
    display: none;
}
#header_main .nv_mod_now {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    flex: 0 0 auto;
    padding: 3px 9px 3px 6px;
    border-radius: 999px;
    border: 1px solid currentColor;
    background: var(--nv-bg);
    color: var(--nv-accent);
    font: 700 12px/1 var(--nv-font);
}
#header_main .nv_mod_now .material-icons {
    font-size: 14px;
}

/* favoritos */
#header_main .nv_fav_acao {
    padding: 0 2px 8px;
}
#header_main button.nv_fav_btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 36px;
    padding: 0 14px 0 10px;
    border-radius: 999px;
    border: 1px solid var(--nv-border);
    background: var(--nv-bg-2);
    color: var(--nv-text-2);
    font: 600 13px/1 var(--nv-font);
    cursor: pointer;
    transition: border-color .15s, background .15s, color .15s;
}
#header_main button.nv_fav_btn.hidden {
    display: none;
}
#header_main button.nv_fav_btn .material-icons {
    font-size: 18px;
    color: var(--nv-accent);
}
#header_main button.nv_fav_btn.nv_fav_btn_on .material-icons {
    color: var(--nv-star);
}
#header_main button.nv_fav_btn:hover {
    border-color: var(--nv-accent);
    background: var(--nv-bg);
    color: var(--nv-text);
}
#header_main button.nv_fav_btn:focus-visible {
    outline: none;
    box-shadow: var(--nv-ring);
}
#header_main .nv_fav_vazio {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    margin-top: 6px;
    padding: 18px 16px 16px;
    border: 1px dashed var(--nv-border-strong);
    border-radius: 12px;
    text-align: center;
}
#header_main .nv_fav_vazio .material-icons {
    font-size: 28px;
    color: var(--nv-text-3);
}
#header_main .nv_fav_vazio b {
    font: 600 14px/1.4 var(--nv-font);
    color: var(--nv-text);
}
#header_main .nv_fav_vazio span {
    font: 400 13px/1.5 var(--nv-font);
    color: var(--nv-text-3);
}
#header_main .nv_fav_lista {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
#header_main a.nv_fav {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 40px;
    padding: 8px 10px;
    border-radius: 10px;
    font: 500 14px/1.3 var(--nv-font);
    color: var(--nv-text-2);
    text-decoration: none;
    transition: background .15s, color .15s;
}
#header_main a.nv_fav > .material-icons:first-child {
    font-size: 18px;
    color: var(--nv-star);
}
#header_main a.nv_fav span {
    flex: 1 1 auto;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#header_main a.nv_fav:hover,
#header_main a.nv_fav:focus-visible {
    background: var(--nv-hover);
    color: var(--nv-text);
    outline: none;
}
#header_main a.nv_fav:hover .nv_mod_go,
#header_main a.nv_fav:focus-visible .nv_mod_go {
    opacity: 1;
    transform: none;
}

/* conta */
#header_main .nv_user_head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 10px 12px;
    margin-bottom: 4px;
    border-bottom: 1px solid var(--nv-border);
}
#header_main .nv_user_av img {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    object-fit: cover;
    display: block;
}
#header_main .nv_user_txt {
    min-width: 0;
    line-height: 1.35;
}
#header_main .nv_user_txt b {
    display: block;
    font: 600 14px/1.35 var(--nv-font);
    color: var(--nv-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#header_main .nv_user_txt small {
    display: block;
    font: 400 12px/1.35 var(--nv-font);
    color: var(--nv-text-3);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#header_main ul.nv_user_menu {
    list-style: none;
    margin: 0;
    padding: 0;
}
#header_main ul.nv_user_menu > li {
    margin: 0;
    padding: 0;
}
#header_main ul.nv_user_menu a {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 40px;
    padding: 8px 10px;
    border-radius: 9px;
    font: 500 14px/1.3 var(--nv-font);
    color: var(--nv-text-2);
    text-decoration: none;
    transition: background .15s, color .15s, padding-left .18s var(--nv-ease);
}
#header_main ul.nv_user_menu a .material-icons {
    font-size: 20px;
    color: var(--nv-text-3);
    transition: color .15s;
}
#header_main ul.nv_user_menu a:hover,
#header_main ul.nv_user_menu a:focus-visible {
    background: var(--nv-hover);
    color: var(--nv-text);
    padding-left: 13px;
    outline: none;
}
#header_main ul.nv_user_menu a:hover .material-icons,
#header_main ul.nv_user_menu a:focus-visible .material-icons {
    color: var(--nv-accent);
}
#header_main ul.nv_user_menu a.nv_sair:hover,
#header_main ul.nv_user_menu a.nv_sair:hover .material-icons {
    color: var(--nv-danger);
}
#header_main ul.nv_user_menu .nv_sep {
    height: 1px;
    margin: 5px 8px;
    background: var(--nv-border);
}

/* -------------------------------------------------------------------------
   MENU LATERAL — cabeçalho
   ------------------------------------------------------------------------- */
#sidebar_main {
    background: var(--nv-bg);
    border-right-color: var(--nv-border);
}
body #sidebar_main .sidebar_main_header.nv_head {
    height: auto;
    margin: 0;
    padding: 12px 10px 8px;
    background: none;
    border-bottom: 1px solid var(--nv-border);
}
#sidebar_main a.nv_clinica {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px;
    border-radius: 12px;
    color: var(--nv-text);
    text-decoration: none;
    transition: background .15s;
}
#sidebar_main a.nv_clinica:hover {
    background: var(--nv-hover);
}
#sidebar_main a.nv_clinica:focus-visible {
    outline: none;
    box-shadow: var(--nv-ring);
}
#sidebar_main .nv_logo {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    border-radius: 12px;
    border: 1px solid var(--nv-border);
    background: #fff;
    display: grid;
    place-items: center;
    overflow: hidden;
}
#sidebar_main .nv_logo img {
    max-width: 38px;
    max-height: 38px;
    object-fit: contain;
}
#sidebar_main .nv_clinica_txt {
    flex: 1 1 auto;
    min-width: 0;
    line-height: 1.25;
}
#sidebar_main .nv_over {
    display: block;
    font: 700 12px/1.3 var(--nv-font);
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--nv-text-3);
}
#sidebar_main .nv_nome {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font: 700 15px/1.3 var(--nv-font);
    color: var(--nv-text);
}
#sidebar_main .nv_razao {
    display: block;
    font: 400 12px/1.3 var(--nv-font);
    color: var(--nv-text-3);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#sidebar_main .nv_troca {
    font-size: 18px;
    color: var(--nv-text-3);
    opacity: 0;
    transform: translateX(-4px);
    transition: opacity .15s, transform .15s;
}
#sidebar_main a.nv_clinica:hover .nv_troca,
#sidebar_main a.nv_clinica:focus-visible .nv_troca {
    opacity: 1;
    transform: none;
}
@media (hover: none) {
    #sidebar_main .nv_troca {
        opacity: 1;
        transform: none;
    }
}
#sidebar_main .nv_quem {
    margin-top: 6px;
    padding: 0 4px;
}
#sidebar_main .nv_linha {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    padding: 5px 4px;
}
#sidebar_main .nv_ic {
    width: 30px;
    height: 30px;
    flex: 0 0 30px;
    display: grid;
    place-items: center;
    color: var(--nv-text-3);
}
#sidebar_main .nv_ic .material-icons {
    font-size: 20px;
}
#sidebar_main .nv_t {
    min-width: 0;
    line-height: 1.3;
}
#sidebar_main .nv_t b {
    display: block;
    font: 600 13px/1.3 var(--nv-font);
    color: var(--nv-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#sidebar_main .nv_t b#nv_hoje {
    white-space: normal;
}
#sidebar_main .nv_t small {
    display: block;
    font: 400 12px/1.3 var(--nv-font);
    color: var(--nv-text-3);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* -------------------------------------------------------------------------
   MENU LATERAL — grupos (sanfona) e itens
   Fora dos modos mini/slim do Altair, que têm geometria própria.
   ------------------------------------------------------------------------- */
#sidebar_main .nv_menu_rotulo {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px 8px;
    font: 700 12px/1.3 var(--nv-font);
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--nv-text-3);
}
#sidebar_main .nv_dot {
    width: 8px;
    height: 8px;
    flex: 0 0 8px;
    border-radius: 50%;
    background: var(--nv-accent);
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section {
    margin: 0;
    padding: 10px 10px 6px;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li > a {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 42px;
    margin: 1px 0;
    padding: 5px 32px 5px 6px;
    border-radius: 10px;
    font: 500 14px/1.3 var(--nv-font);
    color: var(--nv-text-2);
    text-decoration: none;
    overflow: hidden;
    position: relative;
    transition: background .15s, color .15s;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li > a > .menu_icon {
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border-radius: 9px;
    display: grid;
    place-items: center;
    color: var(--nv-text-3);
    transition: background .18s, color .18s, box-shadow .18s, transform .18s var(--nv-ease);
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li > a > .menu_icon .material-icons {
    font-size: 20px;
    line-height: 1;
    vertical-align: 0;
    color: inherit;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li > a .menu_title {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    color: inherit;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li > a:hover {
    background: var(--nv-hover);
    color: var(--nv-text);
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li > a:hover > .menu_icon {
    background: var(--nv-bg);
    color: var(--nv-accent);
    box-shadow: var(--nv-shadow-1);
    transform: scale(1.06);
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li > a:active {
    background: var(--nv-press);
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section a:focus-visible {
    outline: none;
    box-shadow: var(--nv-ring);
}
/* grupo aberto */
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li.act_section > a {
    color: var(--nv-text);
    font-weight: 600;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li.act_section > a > .menu_icon {
    background: var(--nv-accent);
    color: var(--nv-on-accent);
    box-shadow: none;
    transform: none;
}
/* grupo que contém a tela atual, fechado */
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li.current_section:not(.act_section) > a > .menu_icon {
    background: var(--nv-accent-soft);
    color: var(--nv-accent);
}
/* seta ▾ (o giro de 180° do grupo aberto continua vindo do main.css) */
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li.submenu_trigger > a:not(.sem_icone_menu_direita):before {
    right: 10px;
    top: 50%;
    margin-top: -9px;
    font-size: 18px;
    line-height: 18px;
    color: var(--nv-text-3);
    transition: transform .22s var(--nv-ease), color .15s;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li.submenu_trigger > a:not(.sem_icone_menu_direita):hover:before {
    color: var(--nv-text-2);
}

/* subitens */
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li > ul {
    position: relative;
    margin: 0;
    padding: 2px 0 8px 28px;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li > ul:before {
    content: "";
    position: absolute;
    /* centro em 32px da lateral = centro do ícone do grupo e da bolinha */
    left: 21px;
    top: 2px;
    bottom: 10px;
    width: 2px;
    border-radius: 2px;
    background: var(--nv-border);
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li.act_section > ul {
    animation: nvDesce .22s var(--nv-ease);
}
@keyframes nvDesce {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: none; }
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li ul a {
    position: relative;
    display: flex;
    align-items: center;
    min-height: 36px;
    padding: 7px 10px 7px 16px;
    border-radius: 9px;
    font: 400 13.5px/1.35 var(--nv-font);
    color: var(--nv-text-2);
    text-decoration: none;
    transition: background .15s, color .15s, padding-left .18s var(--nv-ease);
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li ul a > .menu_icon {
    display: none;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li ul a .menu_title {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li ul li:not(.submenu_trigger) > a:before {
    content: "";
    position: absolute;
    /* borda inteira e border-box: 1,5px arredondava para 1px e tirava a bolinha do eixo da linha */
    box-sizing: border-box;
    left: -11px;
    top: 50%;
    width: 10px;
    height: 10px;
    margin-top: -5px;
    border-radius: 50%;
    background: var(--nv-bg);
    border: 2px solid var(--nv-border-strong);
    transition: background .15s, border-color .15s, transform .18s var(--nv-ease);
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li ul a:hover {
    background: var(--nv-hover);
    color: var(--nv-text);
    padding-left: 20px;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li ul li:not(.submenu_trigger) > a:hover:before {
    border-color: var(--nv-accent);
    transform: scale(1.25);
}
/* tela atual */
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li ul li.act_item > a {
    background: var(--nv-accent-soft);
    color: var(--nv-accent);
    font-weight: 600;
}
body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li ul li.act_item:not(.submenu_trigger) > a:before {
    background: var(--nv-accent);
    border-color: var(--nv-accent);
    transform: scale(1.25);
}

/* barra de rolagem discreta (plugin scrollbar-inner) */
#sidebar_main .scrollbar-inner > .scroll-element .scroll-element_track {
    background: transparent;
}
#sidebar_main .scrollbar-inner > .scroll-element .scroll-bar {
    background-color: var(--nv-border-strong);
    border-radius: 10px;
}

#sidebar_main .nv_versao {
    margin: 8px 10px 0;
    padding: 14px 6px 60px;
    border-top: 1px solid var(--nv-border);
    font: 400 12px/1.3 var(--nv-font);
    color: var(--nv-text-3);
    text-align: center;
}

/* -------------------------------------------------------------------------
   CELULAR
   ------------------------------------------------------------------------- */
@media only screen and (max-width: 767px) {
    body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li > a {
        min-height: 46px;
        font-size: 15px;
    }
    body:not(.sidebar_mini):not(.sidebar_slim) #sidebar_main .menu_section > ul > li ul a {
        min-height: 42px;
        font-size: 14px;
    }
    #header_main #menu_top_dropdown .nv_modbtn_nome {
        max-width: 130px;
    }
    /* A caixa ocupa a largura da tela, 8px de cada lado. O UIkit escreve posição e
       largura por estilo inline quando a caixa abre, e estilo inline ganha de folha de
       estilo sem !important: por isso só top/left/right obedeciam, e a largura ficava a
       que o UIkit calculou — num celular mais estreito que ela, a borda direita (e o
       selo "Atual") saía da tela. Tudo aqui é !important de propósito.
       Nada de 100vw: ele inclui a barra de rolagem clássica e sobra ~15px. */
    #header_main .nv_top_item .uk-dropdown.nv_pop {
        position: fixed !important;
        top: 54px !important;
        left: 8px !important;
        right: 8px !important;
        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;
        box-sizing: border-box;
    }
    /* descrição longa quebra dentro da linha em vez de empurrar a caixa */
    #header_main .nv_pop .nv_mod_txt,
    #header_main .nv_pop .nv_mod_txt small {
        min-width: 0;
        overflow-wrap: anywhere;
    }
}

@media (prefers-reduced-motion: reduce) {
    #header_main .nv_pop *,
    #header_main .nv_bar *,
    #sidebar_main * {
        transition: none !important;
        animation: none !important;
    }
}

/* =========================================================================
   BUSCA DE MENUS — o botão na barra superior e a paleta que ele abre.
   Comportamento em assets/js/nv_busca.js; a marcação da paleta é criada por
   lá, só o botão mora em views/site_template/menu.php.
   Usa os mesmos tokens --nv-* do resto do arquivo, então acompanha o tema
   claro e o app_theme_dark sem nenhuma cor escrita à mão aqui embaixo.
   ========================================================================= */

/* -------- o botão: um campo de busca no topo do menu lateral -------- */
#sidebar_main .nv_busca_area {
    padding: 10px 10px 0;
}
#sidebar_main a.nv_buscabtn {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    min-height: 40px;
    padding: 0 8px 0 10px;
    border: 1px solid var(--nv-border);
    border-radius: 10px;
    background: var(--nv-bg-2);
    color: var(--nv-text-3);
    text-decoration: none;
    transition: border-color .15s, background .15s, color .15s;
}
#sidebar_main a.nv_buscabtn:hover,
#sidebar_main a.nv_buscabtn:focus-visible {
    border-color: var(--nv-accent);
    background: var(--nv-bg);
    color: var(--nv-text-2);
    text-decoration: none;
    outline: none;
}
#sidebar_main a.nv_buscabtn:focus-visible {
    box-shadow: var(--nv-ring);
}
#sidebar_main .nv_buscabtn .material-icons {
    font-size: 20px;
    color: var(--nv-text-3);
    transition: color .15s;
}
#sidebar_main a.nv_buscabtn:hover .material-icons {
    color: var(--nv-accent);
}
#sidebar_main .nv_buscabtn_txt {
    flex: 1 1 auto;
    font: 400 13px/1 var(--nv-font);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#sidebar_main .nv_buscabtn_tecla {
    flex: 0 0 auto;
    display: inline-flex;
    gap: 3px;
}
#sidebar_main .nv_buscabtn_tecla kbd {
    padding: 3px 5px;
    border: 1px solid var(--nv-border-strong);
    border-radius: 5px;
    background: var(--nv-bg);
    box-shadow: none;
    font: 600 12px/1 var(--nv-font);
    color: var(--nv-text-3);
}
/* lateral encolhida: sobra a lupa, centralizada como os ícones do menu */
body.sidebar_mini #sidebar_main .nv_busca_area,
body.sidebar_slim #sidebar_main .nv_busca_area {
    padding: 8px 6px 0;
}
body.sidebar_mini #sidebar_main a.nv_buscabtn,
body.sidebar_slim #sidebar_main a.nv_buscabtn {
    justify-content: center;
    padding: 0;
}
body.sidebar_mini #sidebar_main .nv_buscabtn_txt,
body.sidebar_mini #sidebar_main .nv_buscabtn_tecla,
body.sidebar_slim #sidebar_main .nv_buscabtn_txt,
body.sidebar_slim #sidebar_main .nv_buscabtn_tecla {
    display: none;
}

/* -------- a paleta -------- */
body.nvb_travado {
    overflow: hidden;
}
.nvb_tela {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    /* a barra e o preloader do sistema usam z-index estourado; o navegador
       corta todo mundo no teto do int32, e aí quem vem depois no DOM ganha —
       a paleta é anexada ao fim do body de propósito */
    z-index: 2147483647;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 9vh 16px 16px;
    font-family: var(--nv-font);
}
.nvb_tela[hidden] {
    display: none;
}
.nvb_fundo {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(9, 20, 28, .5);
    animation: nvb_surge .16s ease-out;
}
.nvb_caixa {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 660px;
    max-height: 74vh;
    overflow: hidden;
    border: 1px solid var(--nv-border);
    border-radius: 16px;
    background: var(--nv-bg);
    color: var(--nv-text);
    box-shadow: var(--nv-shadow);
    animation: nvb_sobe .18s var(--nv-ease);
}
@keyframes nvb_surge {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes nvb_sobe {
    from { opacity: 0; transform: translateY(-10px) scale(.985); }
    to   { opacity: 1; transform: none; }
}

/* texto que só o leitor de tela usa */
.nvb_so_leitor {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    border: 0;
}

/* campo */
.nvb_campo {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 0 0 auto;
    padding: 0 14px;
    height: 58px;
    border-bottom: 1px solid var(--nv-border);
    background: var(--nv-bg);
}
.nvb_campo .nvb_lupa {
    font-size: 22px;
    color: var(--nv-text-3);
}
.nvb_campo input {
    flex: 1 1 auto;
    min-width: 0;
    height: 40px;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    color: var(--nv-text);
    font: 400 16px/1.4 var(--nv-font);
}
.nvb_campo input:focus {
    outline: none;
    box-shadow: none;
}
.nvb_campo input::placeholder {
    color: var(--nv-text-3);
    opacity: 1;
}
.nvb_limpar {
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    width: 30px;
    height: 30px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: var(--nv-bg-2);
    color: var(--nv-text-2);
    cursor: pointer;
    transition: background .15s;
}
.nvb_limpar:hover {
    background: var(--nv-hover);
}
.nvb_limpar .material-icons {
    font-size: 18px;
}

/* lista */
.nvb_lista {
    flex: 1 1 auto;
    min-height: 120px;
    overflow-y: auto;
    padding: 6px;
    background: var(--nv-bg);
}
.nvb_grupo {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 12px 10px 6px;
    font: 600 12px/1.2 var(--nv-font);
    letter-spacing: .4px;
    text-transform: uppercase;
    color: var(--nv-text-3);
}
.nvb_grupo .material-icons {
    font-size: 15px;
}
a.nvb_item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 10px;
    border-radius: 10px;
    border: 1px solid transparent;
    color: var(--nv-text);
    text-decoration: none;
    transition: background .12s, border-color .12s;
}
a.nvb_item:hover,
a.nvb_item:focus {
    text-decoration: none;
    color: var(--nv-text);
}
a.nvb_item.nvb_marcado {
    background: var(--nv-accent-soft);
    border-color: var(--nv-accent);
}
.nvb_ico {
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    display: grid;
    place-items: center;
    border-radius: 9px;
    background: var(--nv-bg-2);
    color: var(--nv-text-2);
    transition: background .12s, color .12s;
}
.nvb_ico .material-icons {
    font-size: 20px;
}
.nvb_marcado .nvb_ico {
    background: var(--nv-accent);
    color: var(--nv-on-accent);
}
.nvb_txt {
    flex: 1 1 auto;
    min-width: 0;
}
.nvb_nome {
    font: 600 14px/1.35 var(--nv-font);
    color: var(--nv-text);
    /* nomes de relatório são longos; duas linhas e corta */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.nvb_nome mark {
    padding: 0;
    border-radius: 3px;
    background: var(--nv-accent-soft);
    color: var(--nv-accent);
    font-weight: 700;
}
.nvb_marcado .nvb_nome mark {
    background: transparent;
    color: var(--nv-accent);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.nvb_caminho {
    display: block;
    margin-top: 2px;
    font: 400 12px/1.3 var(--nv-font);
    color: var(--nv-text-3);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.nvb_ir {
    flex: 0 0 auto;
    opacity: 0;
    transform: translateX(-4px);
    transition: opacity .12s, transform .16s var(--nv-ease);
    color: var(--nv-accent);
}
.nvb_ir .material-icons {
    font-size: 18px;
}
.nvb_marcado .nvb_ir {
    opacity: 1;
    transform: none;
}

/* carregando, erro e lista vazia */
.nvb_aviso {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 46px 24px;
    text-align: center;
    color: var(--nv-text-3);
}
.nvb_aviso .material-icons {
    font-size: 34px;
    opacity: .7;
}
.nvb_aviso b {
    font: 600 14px/1.4 var(--nv-font);
    color: var(--nv-text-2);
}
.nvb_aviso span {
    font: 400 13px/1.45 var(--nv-font);
    max-width: 330px;
}

/* rodapé com as teclas */
.nvb_rodape {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 9px 14px;
    border-top: 1px solid var(--nv-border);
    background: var(--nv-bg-2);
    font: 400 12px/1 var(--nv-font);
    color: var(--nv-text-3);
}
.nvb_rodape kbd {
    display: inline-block;
    min-width: 20px;
    margin-right: 3px;
    padding: 3px 5px;
    border: 1px solid var(--nv-border-strong);
    border-radius: 5px;
    background: var(--nv-bg);
    box-shadow: none;
    font: 600 12px/1 var(--nv-font);
    color: var(--nv-text-2);
    text-align: center;
}
.nvb_conta {
    margin-left: auto;
    color: var(--nv-text-3);
}

/* celular: a paleta ocupa a tela toda, que é onde ela mais rende */
@media (max-width: 640px) {
    .nvb_tela {
        padding: 0;
    }
    .nvb_caixa {
        max-width: none;
        max-height: none;
        height: 100%;
        border: 0;
        border-radius: 0;
    }
    .nvb_rodape {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .nvb_fundo,
    .nvb_caixa,
    .nvb_tela * {
        animation: none !important;
        transition: none !important;
    }
}

/* celular: sem espaço para tudo — o nome do módulo encurta para o avatar e o
   botão de tema continuarem na mesma linha da barra */
@media (max-width: 520px) {
    #header_main #menu_top_dropdown .nv_modbtn_nome {
        max-width: 46px;
    }
    #header_main .user_actions li.nv_tema_li {
        margin-right: 2px;
    }
}
