.aplicacao {
    display: flex;
    height: 100dvh;
    overflow: hidden;
}

.sidebar {
    display: flex;
    flex: 0 0 var(--largura-sidebar);
    flex-direction: column;
    width: var(--largura-sidebar);
    background: var(--cromo-fundo);
    color: var(--cromo-texto);
    transition: flex-basis 0.18s ease, width 0.18s ease, transform 0.18s ease;
}

.menu {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 0.5rem 0;
}

.menu-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 1rem;
    border-left: 3px solid transparent;
    color: var(--cromo-texto);
    text-decoration: none;
    white-space: nowrap;
}

.menu-item:hover {
    background: var(--cromo-hover-fundo);
    color: var(--cromo-ativo-texto);
}

.menu-item-ativo {
    background: var(--cromo-ativo-fundo);
    border-left-color: var(--cromo-marcador);
    color: var(--cromo-ativo-texto);
}

.menu-item i {
    flex: 0 0 1.25rem;
    text-align: center;
}

.menu-grupo-titulo {
    cursor: pointer;
    list-style: none;
    user-select: none;
}

.menu-grupo-titulo::-webkit-details-marker {
    display: none;
}

.menu-grupo-ativo {
    color: var(--cromo-ativo-texto);
}

.menu-seta {
    margin-left: auto;
    font-size: var(--fonte-tamanho-miudo);
    transition: transform 0.18s ease;
}

.menu-grupo[open] .menu-seta {
    transform: rotate(180deg);
}

.menu-subitem {
    padding-left: 2.25rem;
}

.area-principal {
    display: flex;
    flex: 1;
    flex-direction: column;
    min-height: 0;
    min-width: 0;
}

.indicador-navegacao {
    height: 2px;
    background: var(--cor-primaria);
    opacity: 0;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.7s ease-out, opacity 0.15s linear;
}

.indicador-navegacao.htmx-request {
    opacity: 1;
    transform: scaleX(0.92);
}

.barra-superior {
    display: flex;
    flex: 0 0 var(--altura-navbar);
    align-items: center;
    gap: 0.75rem;
    height: var(--altura-navbar);
    padding: 0 1rem;
    background: var(--cor-superficie);
    border-bottom: 1px solid var(--cor-borda);
}

.espacador {
    flex: 1;
}

.botao-lateral {
    padding: 0.25rem 0.5rem;
    border: 0;
    border-radius: var(--raio-pequeno);
    background: transparent;
    color: var(--cor-texto-suave);
    cursor: pointer;
}

.botao-lateral:hover {
    background: var(--cor-primaria-suave);
    color: var(--cor-primaria);
}

.usuario {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.25rem 0;
    border: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
}

.usuario-seta {
    color: var(--cor-texto-tenue);
    font-size: var(--fonte-tamanho);
    transition: transform 0.15s ease;
}

.usuario:hover .usuario-seta {
    color: var(--cor-texto);
}

.usuario[aria-expanded="true"] .usuario-seta {
    transform: rotate(180deg);
}

.avatar {
    display: grid;
    flex: 0 0 2rem;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    background: var(--cor-primaria);
    color: var(--cor-superficie);
    font-size: var(--fonte-tamanho-pequeno);
    font-weight: var(--peso-forte);
}

.usuario-texto {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
    text-align: left;
}

.usuario-nome {
    font-size: var(--fonte-tamanho-pequeno);
    font-weight: var(--peso-medio);
}

.usuario-email {
    color: var(--cor-texto-suave);
    font-size: var(--fonte-tamanho-miudo);
}

.conteudo {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 1.5rem;
}

.cortina {
    display: none;
    position: fixed;
    inset: 0;
    z-index: var(--camada-cortina);
    background: var(--cor-cortina);
}

html.lateral-recolhida .sidebar {
    flex-basis: var(--largura-sidebar-recolhida);
    width: var(--largura-sidebar-recolhida);
}

html.lateral-recolhida .menu-rotulo,
html.lateral-recolhida .menu-seta,
html.lateral-recolhida .marca-texto,
html.lateral-recolhida .selo-ambiente {
    display: none;
}

html.lateral-recolhida .menu-subitem {
    padding-left: 1rem;
}

@media (max-width: 991.98px) {
    .sidebar {
        position: fixed;
        z-index: var(--camada-sidebar);
        top: 0;
        bottom: 0;
        left: 0;
        transform: translateX(-100%);
    }

    html.lateral-recolhida .sidebar {
        flex-basis: var(--largura-sidebar);
        width: var(--largura-sidebar);
    }

    html.lateral-recolhida .menu-rotulo,
    html.lateral-recolhida .menu-seta,
    html.lateral-recolhida .marca-texto,
    html.lateral-recolhida .selo-ambiente {
        display: revert;
    }

    html.lateral-recolhida .menu-subitem {
        padding-left: 2.25rem;
    }

    .aplicacao.lateral-aberta .sidebar {
        transform: none;
    }

    .aplicacao.lateral-aberta .cortina {
        display: block;
    }

    .usuario-texto {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .sidebar,
    .indicador-navegacao,
    .usuario-seta {
        transition: none;
    }
}
