:root { --cor-primaria:#0d47a1; --cor-escura:#0b2a52; --cor-fundo:#f3f5f9; --cor-menu-texto:#e2ebf8; --cor-menu-ativo:#ffffff; }
body { background: var(--cor-fundo); }
.topbar { background: var(--cor-escura); }
.layout { display:flex; min-height:100vh; }

/* ---------- Menu lateral (contraste, tamanho, espaçamento e item ativo) ---------- */
.sidebar { width:264px; flex-shrink:0; background:var(--cor-escura); color:#fff; border-right:3px solid #07203f; }
.sidebar-inner { display:flex; flex-direction:column; height:100%; min-height:100vh; padding:.85rem .7rem 1rem; }
.sidebar-topo { display:flex; align-items:center; gap:.5rem; padding:.35rem .65rem .9rem; }
.sidebar .brand { font-weight:700; font-size:1.15rem; color:#fff; line-height:1.25; letter-spacing:.2px; }

.sidebar-nav { gap:.2rem; }
.sidebar .nav-link {
    display:flex; align-items:center; gap:.7rem;
    color:var(--cor-menu-texto);                 /* antes era claro demais sobre o azul escuro */
    font-size:1rem; font-weight:500; line-height:1.35;
    padding:.62rem .8rem; border-radius:.55rem;
    border-left:4px solid transparent;
}
.sidebar .nav-link .bi { font-size:1.15rem; width:1.35rem; text-align:center; flex-shrink:0; opacity:.95; }
.sidebar .nav-link .menu-texto { flex:1 1 auto; }
.sidebar .nav-link:hover, .sidebar .nav-link:focus-visible { background:rgba(255,255,255,.14); color:var(--cor-menu-ativo); }
.sidebar .nav-link.active { background:var(--cor-primaria); color:var(--cor-menu-ativo); font-weight:600; border-left-color:#8ec3ff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.12); }
.sidebar .nav-link.active .bi { opacity:1; }
.sidebar .nav-link.disabled { color:#7f93b0; pointer-events:none; }
.sidebar .menu-alerta { font-weight:700; font-size:.8rem; }

.sidebar-user { margin-top:auto; padding-top:1rem; border-top:1px solid rgba(255,255,255,.22); }
.sidebar-user-nome { font-size:.92rem; font-weight:600; color:#fff; margin-bottom:.55rem; padding:0 .2rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.content { flex:1; padding:1.5rem; min-width:0; }

/* ---------- Demais telas (sem alteração de comportamento) ---------- */
.card-resumo { border:0; border-radius:.75rem; box-shadow:0 1px 3px rgba(0,0,0,.08); }
.card-resumo .valor { font-size:clamp(1.05rem, 4.8vw, 1.6rem); font-weight:700; color:var(--cor-primaria); white-space:nowrap; }
.login-wrap, .install-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:1rem; }
.login-card { width:100%; max-width:400px; border:0; border-radius:.75rem; box-shadow:0 2px 12px rgba(0,0,0,.1); }
.install-card { width:100%; max-width:640px; border:0; border-radius:.75rem; box-shadow:0 2px 12px rgba(0,0,0,.1); }

/* Celular: o menu continua virando gaveta (offcanvas) e acompanha a altura da tela. */
@media (max-width: 991.98px) {
  .sidebar { width:270px; background:var(--cor-escura); }
  .sidebar-inner { min-height:100%; height:auto; }
  .sidebar .nav-link { font-size:1.05rem; padding:.75rem .9rem; }
  .content { padding:1rem; }
}

/* Chat IA */
.chat-box { height:55vh; min-height:320px; overflow-y:auto; padding:1rem; display:flex; flex-direction:column; gap:.6rem; }
.msg { max-width:85%; padding:.6rem .85rem; border-radius:.9rem; white-space:pre-wrap; word-wrap:break-word; }
.msg.user { align-self:flex-end; background:var(--cor-primaria); color:#fff; border-bottom-right-radius:.25rem; }
.msg.assistant { align-self:flex-start; background:#eef1f6; border-bottom-left-radius:.25rem; }
.msg.typing { color:#6c757d; font-style:italic; }

/* Itens do orçamento: largura mínima para a descrição não ficar espremida no celular (rola dentro do cartão) */
#itens { min-width: 480px; }