/* Sidebar (colapsável, submenus, selo de papel) */
/* ---------- Sidebar colapsável (desktop) ----------
   O hambúrguer no topo agora funciona nas duas larguras: no mobile abre/fecha
   a gaveta (comportamento já existente); no desktop recolhe a barra lateral
   para uma trilha só de ícones — dá mais espaço de leitura em telas de tabela
   densas (Diretório, Gerenciar Documentos) sem perder a navegação de vista. */
@media (min-width:861px){
  /* sem position:relative aqui: ele anulava o sticky da sidebar (layout.css) e o rodapé rolava junto */
  .sidebar{ transition:width .22s cubic-bezier(.2,.8,.2,1); }
  .sidebar-collapsed{ width:76px; overflow:visible; z-index:65; }
  .sidebar-collapsed .sb-label{ display:none; }
  .sidebar-collapsed .px-5{ padding-left:1rem; padding-right:1rem; }
  .sidebar-collapsed .user-chip{ justify-content:center; padding:.5rem; }
  .sidebar-collapsed nav{ overflow:visible; padding-left:.75rem; padding-right:.75rem; }
  .sidebar-collapsed .nav-link{ justify-content:center; width:52px; height:52px; padding:0; margin:0 auto; border-radius:.9rem; }
  .sidebar-collapsed .nav-link .nav-ic svg{ width:23px; height:23px; }
  .sidebar-collapsed .nav-count{ position:absolute; top:2px; right:2px; transform:scale(.85); }
  .sidebar-collapsed .nav-link{ position:relative; }
  .sidebar-collapsed .nav-link::after,
  .sidebar-collapsed .profile-link::after,
  .sidebar-collapsed .logout-link::after{
    content:attr(data-label); position:absolute; left:calc(100% + 12px); top:50%; transform:translate(-6px,-50%);
    z-index:85; white-space:nowrap; background:var(--card); border:1px solid var(--border); color:var(--text);
    box-shadow:0 16px 35px rgba(15,23,42,.16); border-radius:.65rem; padding:.48rem .65rem;
    font-size:.78rem; font-weight:800; line-height:1; opacity:0; pointer-events:none; transition:.16s ease;
  }
  .sidebar-collapsed .nav-link:hover::after,
  .sidebar-collapsed .profile-link:hover::after,
  .sidebar-collapsed .logout-link:hover::after{ opacity:1; transform:translate(0,-50%); }
  .sidebar-collapsed .nav-group-open > .nav-group-toggle::after{ opacity:0; }
  .sidebar-collapsed a[href="#/perfil"]{ justify-content:center; }
  .sidebar-collapsed .sidebar-footer{ padding-left:.75rem; padding-right:.75rem; padding-bottom:.85rem; overflow:visible; }
  .sidebar-collapsed .profile-link{ position:relative; justify-content:center; width:52px; height:52px; margin:0 auto .55rem; border-radius:999px; }
  .sidebar-collapsed .profile-avatar{ width:42px; height:42px; font-size:.78rem; box-shadow:0 0 0 2px rgba(255,255,255,.16); }
  .sidebar-collapsed .logout-link{ position:relative; justify-content:center; width:52px; height:40px; margin:0 auto; border-radius:.85rem; }
  .sidebar-collapsed .logout-link svg{ width:21px; height:21px; }
  .sidebar-collapsed .px-4{ padding-left:1rem; padding-right:1rem; }
  .sidebar-collapsed .nav-group{ position:relative; }
  .sidebar-collapsed .nav-group-toggle{ justify-content:center; padding:0; }
  .sidebar-collapsed .nav-submenu{
    display:block; position:absolute; left:calc(100% + 14px); top:0; z-index:85; width:230px; max-height:none;
    overflow:visible; opacity:0; visibility:hidden; pointer-events:none; transform:translateX(-8px) scale(.98);
    background:var(--card); border:1px solid var(--border); border-radius:.8rem; box-shadow:0 22px 55px rgba(15,23,42,.2);
    transition:opacity .16s ease, transform .16s ease, visibility .16s ease;
  }
  .sidebar-collapsed .nav-group-open .nav-submenu{ opacity:1; visibility:visible; pointer-events:auto; transform:translateX(0) scale(1); }
  .sidebar-collapsed .nav-submenu::before{
    content:""; position:absolute; left:-6px; top:20px; width:12px; height:12px; transform:rotate(45deg);
    background:var(--card); border-left:1px solid var(--border); border-bottom:1px solid var(--border);
  }
  .sidebar-collapsed .nav-submenu-inner{ padding:.45rem; gap:.2rem; }
  .sidebar-collapsed .nav-submenu .sb-label{ display:block; }
  .sidebar-collapsed .nav-sublink{ gap:.65rem; padding:.62rem .7rem; border-radius:.65rem; color:var(--text); }
  .sidebar-collapsed .nav-sub-icon{ display:flex; width:28px; height:28px; flex-shrink:0; align-items:center; justify-content:center; border-radius:.55rem; background:var(--wine-50); color:var(--wine); opacity:1; }
  .sidebar-collapsed .nav-sub-icon svg{ display:block; }
  .theme-red .sidebar-collapsed .nav-link::after,
  .theme-red .sidebar-collapsed .profile-link::after,
  .theme-red .sidebar-collapsed .logout-link::after,
  .theme-red .sidebar-collapsed .nav-submenu{
    background:#fff; border-color:#f3d7db; color:#1e2433; box-shadow:0 22px 55px rgba(42,10,16,.28);
  }
  .theme-red .sidebar-collapsed .nav-submenu::before{ background:#fff; border-color:#f3d7db; }
  .theme-red .sidebar-collapsed .nav-sublink{ color:#1e2433; }
  .theme-red .sidebar-collapsed .nav-sublink:hover{ background:var(--wine-50); color:var(--wine); }
  .theme-red .sidebar-collapsed .nav-sublink.nav-sublink-active{ background:var(--wine-50); color:var(--wine); }
  .sidebar-collapsed .sidebar-brand-row{ justify-content:center; }
  /* Minimizado: só o símbolo, sem o nome "Decós Hospital" */
  .sidebar-collapsed .logo-full{ display:none; }
  .sidebar-collapsed .logo-mark{ display:block; }
  .sidebar-collapsed .brand-logo{ justify-content:center; width:100%; }
  .sidebar-collapsed .brand-logo .logo-mark{ width:42px; height:42px; }
}


/* ---------- Sidebar ---------- */
.logo-mark{ display:none; }
.sidebar .brand-logo .logo-full{ height:36px; }
.sidebar .brand-logo .logo-mark{ width:36px; height:36px; }
.text-wine{ color:var(--wine); } .bg-wine{ background:var(--wine); }
.text-crimson{ color:var(--crimson); }
.nav-link{ display:flex; align-items:center; gap:.75rem; padding:.6rem .85rem; border-radius:.7rem;
  font-size:.9rem; font-weight:700; line-height:1.3; letter-spacing:-.005em; color:var(--muted); transition:.15s; }
.nav-link:hover{ background:rgba(142,27,46,.06); color:var(--wine); }
.nav-link-active{ background:var(--wine-50); color:var(--wine); font-weight:800; }
.dark .nav-link-active{ background:rgba(142,27,46,.18); color:#f7b8c2; }
.nav-count{ font-size:.7rem; font-weight:700; background:#e2e8f0; color:#475569; border-radius:999px; padding:0 .45rem; }
.dark .nav-count{ background:#334155; color:#cbd5e1; }

/* ---------- Submenus da sidebar (grupos expansíveis) ----------
   Peso mais leve (500) nos filhos marca a subordinação ao grupo mesmo antes
   de olhar o recuo; o item ativo ganha peso 700 + pílula colorida, igual ao
   tratamento do nível principal, então "selecionado" sempre lê do mesmo jeito
   em qualquer profundidade do menu. */
.nav-group-toggle{ width:100%; background:transparent; border:0; font-family:inherit; text-align:left; cursor:pointer; }
.nav-group-toggle.nav-link-active{ background:var(--wine-50); color:var(--wine); }
.theme-red .sidebar .nav-group-toggle.nav-link-active{ background:var(--wine-50); color:var(--wine); }
.theme-red .sidebar .nav-group-toggle.nav-link-active:hover{ background:var(--wine-50); color:var(--wine); }
.nav-caret{ transition:transform .2s; flex-shrink:0; }
.nav-group-open .nav-caret{ transform:rotate(180deg); }
.nav-submenu{ overflow:hidden; max-height:0; transition:max-height .25s ease; }
/* Altura máxima folgada: o grupo Comunicação do gestor tem 9+ itens (16rem cortava os últimos). */
.nav-group-open .nav-submenu{ max-height:40rem; }
.nav-submenu-inner{ padding:.2rem .1rem .3rem 2.15rem; display:flex; flex-direction:column; gap:.15rem; }
.nav-sublink{ display:flex; align-items:center; gap:.6rem; padding:.45rem .7rem; border-radius:.6rem;
  font-size:.83rem; font-weight:600; line-height:1.3; color:var(--muted); transition:.15s; }
.nav-sublink:hover{ background:rgba(142,27,46,.06); color:var(--wine); }
.nav-sublink-active{ background:var(--wine-50); color:var(--wine); font-weight:800; }
.dark .nav-sublink-active{ background:rgba(142,27,46,.18); color:#f7b8c2; }
.nav-sub-icon{ width:5px; height:5px; border-radius:999px; background:currentColor; opacity:.55; flex-shrink:0; }
.nav-sub-icon svg{ display:none; }
.nav-sub-dot{ width:5px; height:5px; border-radius:999px; background:currentColor; opacity:.55; flex-shrink:0; }
.user-chip{ display:flex; align-items:center; gap:.6rem; padding:.6rem; border:1px solid var(--border); border-radius:.8rem; }
.profile-link, .logout-link{ transition:.15s; }
.profile-link:hover{ color:var(--wine); }
.logout-link:hover{ background:rgba(142,27,46,.06); }

/* ---------- Papéis / mais vermelho ---------- */
/* (a .sidebar já é position:sticky/fixed — não sobrescrever aqui, senão quebra o mobile) */
.sidebar-accent{ position:absolute; top:0; left:0; width:4px; height:100%; background:linear-gradient(var(--wine),var(--wine-dark)); }
/* Seletor de tema (painel Aparência e Configurações) */
.theme-grid{ display:grid; gap:.6rem; }
.theme-opt{ display:flex; align-items:center; gap:.9rem; width:100%; text-align:left; padding:.75rem; border-radius:1rem;
  border:1px solid var(--border-strong); background:var(--surface-strong); transition:.15s; min-height:3.5rem; }
.theme-opt:hover{ border-color:var(--accent); }
.theme-opt-on{ border-color:var(--accent); box-shadow:0 0 0 2px var(--accent) inset; }
.theme-opt-txt{ display:flex; flex-direction:column; gap:.1rem; flex:1; min-width:0; }
.theme-opt-check{ width:1.5rem; height:1.5rem; border-radius:999px; display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--border-strong); color:transparent; flex-shrink:0; }
.theme-opt-on .theme-opt-check{ background:var(--wine); border-color:var(--wine); color:#fff; }
.theme-preview{ position:relative; width:56px; height:40px; border-radius:.7rem; flex-shrink:0; overflow:hidden; border:1px solid rgba(0,0,0,.12); }
.theme-preview-card{ position:absolute; left:9px; right:9px; bottom:-4px; height:26px; border-radius:.45rem; box-shadow:0 2px 6px rgba(0,0,0,.18); }
.theme-preview-card span{ position:absolute; left:7px; top:7px; width:18px; height:5px; border-radius:999px; }
.theme-preview-auto{ display:flex; }
.theme-preview-auto span{ flex:1; }
@media (min-width:640px){ .theme-grid-2{ grid-template-columns:1fr 1fr; } }


/* Menu de tema (abre junto ao botão do topo) */
.theme-menu{ position:fixed; z-index:90; min-width:15rem; padding:.4rem; border-radius:1rem; border:1px solid var(--border);
  background:var(--surface-strong); -webkit-backdrop-filter:var(--blur); backdrop-filter:var(--blur); box-shadow:var(--shadow-lg);
  animation:menuIn .14s ease; }
@keyframes menuIn{ from{ opacity:0; transform:translateY(-4px); } to{ opacity:1; transform:none; } }
.theme-menu-item, .theme-menu-mais{ display:flex; align-items:center; gap:.6rem; width:100%; min-height:2.5rem; padding:.45rem .7rem;
  border-radius:.7rem; font-size:.9rem; font-weight:600; color:var(--text); text-align:left; }
.theme-menu-item:hover, .theme-menu-item:focus-visible, .theme-menu-mais:hover{ background:color-mix(in srgb, var(--accent) 12%, transparent); }
.theme-menu-item[aria-checked="true"]{ color:var(--accent); }
.theme-menu-mais{ margin-top:.25rem; border-top:1px solid var(--border); border-radius:0 0 .7rem .7rem; font-size:.82rem; color:var(--muted); }
html[data-transparencia="reduzida"] .theme-menu, html[data-contraste="alto"] .theme-menu{ background:var(--card); -webkit-backdrop-filter:none; backdrop-filter:none; }

/* Alça com seta no meio da borda do menu: recolhe/expande (desktop). */
.sidebar-alca{ position:fixed; top:50%; left:calc(264px - 15px); z-index:66; width:30px; height:30px; border-radius:999px;
  display:inline-flex; align-items:center; justify-content:center; transform:translateY(-50%);
  color:var(--text); background:var(--card); border:1px solid var(--border-strong); box-shadow:var(--shadow);
  transition:left .22s cubic-bezier(.2,.8,.2,1), color .15s, border-color .15s; }
.sidebar-alca:hover{ color:var(--accent); border-color:var(--accent); }
.sidebar-collapsed ~ .sidebar-alca{ left:calc(76px - 15px); }
@media (max-width:860px){ .sidebar-alca{ display:none; } }

/* Link para o site institucional, no rodapé do menu */
.site-link{ display:flex; align-items:center; gap:.55rem; min-height:2.5rem; padding:.5rem .75rem; border-radius:.8rem; font-size:.85rem; font-weight:700;
  color:var(--text); border:1px solid var(--border); background:var(--surface-strong); }
.site-link:hover{ border-color:var(--accent); color:var(--accent); }
.sidebar-collapsed .site-link{ justify-content:center; padding:.5rem; }
.theme-red .sidebar .site-link{ color:#fff; background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.2); }
