/* ============================================================
   Portal BI — estilos
   Paleta escura e limpa. Ajuste as variáveis para sua marca.
   ============================================================ */
:root {
  --bg: #0f1218;
  --bg-elev: #171b24;
  --bg-card: #1c212c;
  --border: #2a3140;
  --text: #e8ebf0;
  --text-dim: #9aa4b2;
  --primary: #2f6fed;
  --primary-ink: #f7fbff;
  --accent: #2f6fed;
  --danger: #ff5d5d;
  --radius: 14px;
  --shadow: 0 8px 30px rgba(0, 0, 0, .35);
  --bg-glow: #1b2130;
  --primary-tint: rgba(47, 111, 237, .14);
  --primary-tint-strong: rgba(47, 111, 237, .20);
  --primary-glow: rgba(47, 111, 237, .46);
  --primary-border-tint: rgba(91, 157, 255, .54);
  --primary-hover: #4c9dff;
  --primary-gradient: linear-gradient(118deg, rgba(24, 74, 162, .68), rgba(31, 95, 202, .44) 55%, rgba(76, 157, 255, .23));
  font-synthesis: none;
}

/* Tema claro: mesma estrutura visual, so trocando as variaveis de cor.
   Nenhum componente precisa de regra propria -- todos ja usam var(--...). */
:root[data-theme="claro"] {
  --bg: #f4f5f7;
  --bg-elev: #ffffff;
  --bg-card: #ffffff;
  --border: #dde1e7;
  --text: #1a1f29;
  --text-dim: #667085;
  --primary: #2f6fed;
  --primary-ink: #173d86;
  --accent: #2f6fed;
  --danger: #d8433f;
  --shadow: 0 8px 24px rgba(20, 20, 30, .10);
  --bg-glow: #eef1f8;
  --primary-tint: rgba(47, 111, 237, .12);
  --primary-tint-strong: rgba(47, 111, 237, .18);
  --primary-glow: rgba(47, 111, 237, .36);
  --primary-border-tint: rgba(31, 95, 199, .48);
  --primary-hover: #1f5bd1;
  --primary-gradient: linear-gradient(118deg, rgba(31, 85, 186, .32), rgba(47, 111, 237, .22) 55%, rgba(75, 145, 245, .12));
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  background: radial-gradient(1200px 600px at 80% -10%, var(--bg-glow) 0%, var(--bg) 55%);
  color: var(--text);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  transition: background-color .2s ease, color .2s ease;
}

a { color: inherit; text-decoration: none; }

/* ---------- Botões ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  padding: .55rem 1.1rem;
  border-radius: 10px;
  font-size: .9rem;
  font-weight: 600;
  border: 1px solid transparent;
  cursor: pointer;
  transition: transform .06s ease, background .2s ease, border-color .2s ease;
}
.btn:active { transform: translateY(1px); }

.btn-primary { background: var(--primary-gradient); border-color: var(--primary-border-tint); color: var(--primary-ink); box-shadow: 0 7px 15px rgba(47, 111, 237, .16); }
.btn-primary:hover { background: var(--primary-gradient); border-color: var(--primary); filter: brightness(1.08); }

.btn-outline { border-color: var(--border); color: var(--text); }
.btn-outline:hover { border-color: var(--accent); color: #fff; }

.btn-ghost { color: var(--text-dim); }
.btn-ghost:hover { color: var(--text); }

/* ---------- Login ---------- */
.login-wrap {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.2rem;
  padding: 1.5rem;
}
.login-split {
  min-height: 100vh;
  position: relative;
  overflow: hidden;
  background: var(--bg);
}
.login-form-side {
  position: relative;
  z-index: 2;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.2rem;
  padding: 1.5rem clamp(1.5rem, 9vw, 8rem) 1.5rem clamp(1.5rem, 48vw, 50rem);
}
.login-card {
  width: 100%;
  max-width: 380px;
  background: color-mix(in srgb, var(--bg-card) 89%, transparent);
  border: 1px solid color-mix(in srgb, var(--primary) 26%, var(--border));
  border-radius: 18px;
  box-shadow: 0 28px 70px rgba(0, 0, 0, .27);
  backdrop-filter: blur(15px);
  padding: 2rem;
}
.login-title { font-size: 1.4rem; margin: 0; }
.login-sub { color: var(--text-dim); margin: .4rem 0 1.5rem; font-size: .92rem; }

.login-form { display: flex; flex-direction: column; gap: 1rem; }
.login-form label {
  display: flex; flex-direction: column; gap: .35rem;
  font-size: .82rem; color: var(--text-dim);
}
.login-form input {
  padding: .7rem .8rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  font-size: .95rem;
  outline: none;
  transition: border-color .2s ease;
}
.login-form input:focus { border-color: var(--accent); }
.login-form .btn { margin-top: .3rem; justify-content: center; }
.login-foot { color: var(--text-dim); font-size: .78rem; }

/* ---------- Recuperação de senha ---------- */
.recovery-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 84px 20px 32px;
  background:
    radial-gradient(620px 360px at 50% 0%, var(--primary-tint), transparent 72%),
    var(--bg);
}
.recovery-card {
  width: min(100%, 500px);
  padding: clamp(28px, 5vw, 42px);
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 18px;
  box-shadow: var(--shadow);
}
.recovery-brand {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  color: var(--text);
  font-size: .96rem;
  font-weight: 750;
}
.recovery-symbol {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  margin: 25px 0 16px;
  border-radius: 14px;
  color: var(--primary);
  background: var(--primary-tint);
  border: 1px solid color-mix(in srgb, var(--primary) 32%, var(--border));
  font-size: 1.45rem;
  font-weight: 700;
}
.recovery-card h1 { margin: 0; font-size: clamp(1.55rem, 4vw, 2rem); }
.recovery-subtitle {
  margin: .7rem 0 1.5rem;
  color: var(--text-dim);
  line-height: 1.6;
  font-size: .92rem;
}
.recovery-form { gap: 1rem; }
.recovery-note,
.recovery-password-rule {
  margin: 1.1rem 0 0;
  color: var(--text-dim);
  font-size: .78rem;
  line-height: 1.55;
}
.recovery-back { display: inline-block; margin-top: 1.35rem; }
.recovery-link-button { display: inline-flex; justify-content: center; width: 100%; margin-top: .2rem; }

@media (max-width: 520px) {
  .recovery-page { align-items: flex-start; padding: 78px 14px 24px; }
  .recovery-card { border-radius: 14px; }
}

/* Fundo animado da tela de login: séries temporais e grade analítica. */
.login-visual {
  position: relative;
  display: block;
}
.login-data-science {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(780px 560px at 12% 0%, color-mix(in srgb, var(--primary) 21%, transparent), transparent 67%),
    radial-gradient(540px 420px at 78% 100%, color-mix(in srgb, var(--primary) 13%, transparent), transparent 72%),
    var(--bg);
  overflow: hidden;
}
.login-data-grid {
  position: absolute;
  inset: 0;
  opacity: .52;
  background-image: linear-gradient(color-mix(in srgb, var(--primary) 15%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--primary) 15%, transparent) 1px, transparent 1px);
  background-size: 42px 42px;
  mask-image: linear-gradient(to bottom, transparent, #000 14%, #000 87%, transparent);
}
.login-data-glow {
  position: absolute;
  width: 470px;
  height: 470px;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--primary) 31%, transparent) 0%, color-mix(in srgb, var(--primary) 8%, transparent) 45%, transparent 70%);
  filter: blur(20px);
  opacity: .7;
}
.login-data-glow-one { top: -230px; left: -120px; animation: login-data-float-one 12s ease-in-out infinite alternate; }
.login-data-glow-two { right: -135px; bottom: -260px; animation: login-data-float-two 14s ease-in-out infinite alternate; }
.login-data-chart { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .72; }
.login-data-gridline { stroke: color-mix(in srgb, var(--primary) 19%, transparent); stroke-width: 1; }
.login-data-line { fill: none; stroke: var(--primary-hover); stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; filter: drop-shadow(0 0 7px color-mix(in srgb, var(--primary) 51%, transparent)); stroke-dasharray: 1080; stroke-dashoffset: 1080; animation: login-data-line-reveal 5s ease-in-out infinite alternate; }
.login-data-line-secondary { stroke: color-mix(in srgb, var(--primary) 56%, var(--text-dim)); stroke-width: 1.4; opacity: .65; animation-delay: -2.4s; }
.login-data-dot { fill: color-mix(in srgb, var(--primary-hover) 72%, #fff); filter: drop-shadow(0 0 7px color-mix(in srgb, var(--primary) 78%, transparent)); animation: login-data-pulse 2.6s ease-in-out infinite; }
.login-data-dot:nth-of-type(2n) { animation-delay: -1.3s; }
.login-data-signal { position: absolute; top: 0; bottom: 0; width: 2px; background: linear-gradient(transparent, color-mix(in srgb, var(--primary-hover) 74%, transparent), transparent); box-shadow: 0 0 18px color-mix(in srgb, var(--primary) 61%, transparent); animation: login-data-scan 9s linear infinite; }
.login-data-branding { position: absolute; z-index: 1; top: 50%; left: 40%; display: flex; flex-direction: column; align-items: center; justify-content: center; width: min(36vw, 380px); height: 300px; transform: translate(-50%, -50%); text-align: center; }
.login-data-brand { position: relative; z-index: 1; color: color-mix(in srgb, var(--text) 64%, transparent); font-family: Bahnschrift, "Arial Narrow", sans-serif; font-size: clamp(46px, 3.6vw, 58px); font-weight: 200; font-stretch: condensed; font-variation-settings: "wght" 200, "wdth" 82; letter-spacing: .085em; line-height: 1; text-align: center; text-shadow: 0 0 18px color-mix(in srgb, var(--primary-hover) 14%, transparent); }
.login-data-live { position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 20px; color: color-mix(in srgb, var(--text) 66%, transparent); font-size: clamp(15px, 1.12vw, 18px); font-weight: 500; letter-spacing: .06em; text-align: center; text-transform: uppercase; }
.login-data-live span { width: 7px; height: 7px; flex: 0 0 7px; border-radius: 50%; background: color-mix(in srgb, var(--primary-hover) 62%, transparent); box-shadow: 0 0 0 5px color-mix(in srgb, var(--primary) 7%, transparent); animation: login-data-pulse 2s ease-in-out infinite; }
@keyframes login-data-line-reveal { 0% { stroke-dashoffset: 1080; opacity: .22; } 45%, 100% { stroke-dashoffset: 0; opacity: 1; } }
@keyframes login-data-pulse { 0%, 100% { opacity: .45; transform: scale(.82); } 50% { opacity: 1; transform: scale(1.18); } }
@keyframes login-data-scan { from { left: 4%; } to { left: 96%; } }
@keyframes login-data-float-one { to { transform: translate(95px, 60px); } }
@keyframes login-data-float-two { to { transform: translate(-85px, -70px); } }
@media (prefers-reduced-motion: reduce) {
  .login-data-science *, .login-data-science *::before, .login-data-science *::after { animation: none !important; }
}

@media (max-width: 900px) {
  .login-form-side { padding: 7.5rem 1.5rem 1.5rem; }
  .login-data-science { opacity: .48; }
  .login-data-branding { top: 12px; left: 50%; width: min(calc(100% - 40px), 520px); height: 104px; transform: translateX(-50%); }
  .login-data-brand { font-size: 42px; }
  .login-data-live { margin-top: 12px; font-size: 14px; }
}

@media (max-width: 420px) {
  .login-data-brand { font-size: 36px; }
  .login-data-live { gap: 7px; font-size: 13px; letter-spacing: .035em; }
}

.logo-dot {
  width: 14px; height: 14px; border-radius: 4px;
  background: var(--primary);
  box-shadow: 0 0 12px var(--primary-glow);
  display: inline-block;
}

.alert {
  padding: .6rem .8rem; border-radius: 10px;
  font-size: .85rem; margin-bottom: 1rem;
}
.alert-erro { background: rgba(255, 93, 93, .12); color: var(--danger); border: 1px solid rgba(255,93,93,.3); }
.alert-ok { background: rgba(79, 200, 130, .12); color: #4fc882; border: 1px solid rgba(79, 200, 130, .3); }

/* ---------- Topbar ---------- */
.topbar {
  background: var(--bg-elev);
  border-bottom: 1px solid var(--border);
  position: sticky; top: 0; z-index: 10;
}
.topbar-inner {
  max-width: 1100px; margin: 0 auto;
  padding: .9rem 1.5rem;
  display: flex; align-items: center; justify-content: space-between;
}
.brand { display: flex; align-items: center; gap: .55rem; font-weight: 600; }
.brand-sep { color: var(--text-dim); }
.back-link { color: var(--text-dim); font-weight: 500; }
.back-link:hover { color: var(--text); }
.topbar-user { display: flex; align-items: center; gap: .8rem; }
.user-badge {
  font-size: .82rem; color: var(--text-dim);
  background: var(--bg-card); border: 1px solid var(--border);
  padding: .3rem .7rem; border-radius: 999px;
}

/* ---------- Home ---------- */
.container { max-width: 1100px; margin: 0 auto; padding: 2.5rem 1.5rem; }
.page-head h1 { margin: 0 0 .3rem; font-size: 1.8rem; }
.page-head p { color: var(--text-dim); margin: 0 0 2rem; }

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1.2rem;
}
.card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.4rem;
  display: flex; flex-direction: column;
  transition: transform .12s ease, border-color .2s ease;
}
.card:hover { transform: translateY(-3px); border-color: var(--accent); }
.card-tag {
  align-self: flex-start;
  font-size: .72rem; letter-spacing: .03em; text-transform: uppercase;
  color: var(--primary);
  background: var(--primary-tint);
  padding: .25rem .6rem; border-radius: 6px;
  margin-bottom: .9rem;
}
.card-title { margin: 0; font-size: 1.25rem; }
.card-top {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: .6rem; margin-bottom: .4rem;
}
.card-title-wrap { min-width: 0; }
.card-pasta-tag {
  display: block;
  font-size: .68rem; font-weight: 600; letter-spacing: .02em; text-transform: uppercase;
  color: var(--text-dim);
  margin-bottom: .2rem;
}
.btn-favorito {
  flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px;
  background: none; border: 1px solid var(--border);
  border-radius: 8px; cursor: pointer;
  color: var(--text-dim);
  transition: color .15s ease, border-color .15s ease, transform .1s ease;
}
.btn-favorito:hover { color: var(--primary); border-color: var(--primary); }
.btn-favorito:active { transform: scale(.9); }
.btn-favorito.ativo { color: var(--primary); border-color: var(--primary); background: var(--primary-tint); }
.card-desc { color: var(--text-dim); font-size: .9rem; line-height: 1.5; flex: 1; margin: 0 0 1.2rem; }
.card-actions { display: flex; gap: .6rem; }

/* LAYOUT BASE/DESKTOP — regras gerais; as exceções mobile ficam no bloco LAYOUT MOBILE abaixo. */
/* ---------- Embed ---------- */
.embed-main { max-width: none; margin: 0; padding: 1rem 1.2rem 1.2rem; }
.embed-frame {
  position: relative;
  width: 100%;
  height: calc(100vh - 96px);
  min-height: 480px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow);
}
.embed-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; }
.dash-mobile-zoom-area { display: none; }
.dash-mobile-zoom-stage { position: relative; width: 100%; height: 100%; overflow: hidden; }

.embed-loading {
  position: absolute; inset: 0; z-index: 5;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 1rem;
  background: var(--bg-card);
  transition: opacity .25s ease;
}
.embed-loading.escondido { opacity: 0; pointer-events: none; }
.embed-spinner {
  width: 40px; height: 40px;
  border: 3px solid var(--border);
  border-top-color: var(--primary);
  border-radius: 50%;
  animation: girar .8s linear infinite;
}
.embed-loading-texto { color: var(--text-dim); font-size: .88rem; }
@keyframes girar { to { transform: rotate(360deg); } }

@media (max-width: 640px) {
  .topbar-inner { padding: .8rem 1rem; }
  .container { padding: 1.5rem 1rem; }
  .card-actions { flex-direction: column; }
  .card-actions .btn { justify-content: center; }
}

/* ---------- Embed: erro ---------- */
.embed-erro {
  margin-top: 1rem; padding: .8rem 1rem;
  background: rgba(255, 93, 93, .12);
  border: 1px solid rgba(255, 93, 93, .3);
  color: var(--danger); border-radius: 10px; font-size: .9rem;
}

/* ---------- Caixa de link avulso ---------- */
.paste-box {
  margin-top: 2.5rem;
  padding: 1.5rem;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.paste-box h3 { margin: 0 0 .3rem; font-size: 1.1rem; }
.paste-box p { margin: 0 0 1rem; color: var(--text-dim); font-size: .9rem; }
.paste-row { display: flex; gap: .6rem; flex-wrap: wrap; }
.paste-row input {
  flex: 1; min-width: 240px;
  padding: .7rem .8rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  font-size: .95rem; outline: none;
}
.paste-row input:focus { border-color: var(--accent); }
@media (max-width: 640px) { .paste-row .btn { flex: 1; justify-content: center; } }

/* ============================================================
   Layout de app: sidebar esquerda + conteudo
   ============================================================ */
.app-shell { display: flex; min-height: 100vh; }

/* Barra lateral */
.sidebar {
  width: 290px;
  flex-shrink: 0;
  background: var(--bg-elev);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
}
.sidebar-brand {
  display: flex;
  align-items: center;
  padding: .75rem 1rem;
  font-weight: 400;
  font-size: 1.05rem;
  border-bottom: 1px solid var(--border);
}
/* GNX: marca compacta à esquerda do texto Portal BI. */
.portal-brand-lockup {
  width: 100%;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: .75rem;
  min-width: 0;
}

.gnx-logo-wrap {
  position: relative;
  width: 86px;
  max-width: 86px;
  aspect-ratio: 360 / 176;
  flex: 0 0 86px;
}

.gnx-logo {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.gnx-logo-base {
  position: relative;
  z-index: 1;
}

.gnx-logo-x {
  display: none;
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
}

/* Evita logos antigos/duplicados caso exista markup legado no cache/template. */
.portal-brand-lockup > img.gnx-logo {
  display: none !important;
}

/* Tema claro: letras GNX/GROUP em preto, mantendo o X colorido. */
:root[data-theme="claro"] .gnx-logo-base {
  filter: brightness(0);
}

:root[data-theme="claro"] .gnx-logo-x {
  display: block;
  clip-path: inset(0 0 30% 70%);
}

/* Tema escuro: usa a arte original com letras brancas. */
:root:not([data-theme="claro"]) .gnx-logo-base {
  filter: none;
}

:root:not([data-theme="claro"]) .gnx-logo-x {
  display: none;
}

.portal-wordmark {
  color: color-mix(in srgb, var(--text) 64%, transparent);
  font-family: Bahnschrift, "Arial Narrow", sans-serif;
  font-size: 1rem;
  white-space: nowrap;
  font-weight: 200;
  font-stretch: condensed;
  font-variation-settings: "wght" 200, "wdth" 82;
  letter-spacing: .085em;
  line-height: 1;
}
.brand .portal-wordmark { font-size: 1rem; }
.side-nav { display: flex; flex-direction: column; padding: .8rem .6rem; gap: .2rem; }
.nav-item {
  display: flex; align-items: center; gap: .7rem;
  padding: .7rem .8rem;
  border-radius: 10px;
  color: var(--text-dim);
  font-size: .92rem; font-weight: 500;
  transition: background .18s ease, color .18s ease;
}

/* Mantem os nomes principais da navegacao em uma unica linha. */
.nav-item > span,
.nav-item > a {
  white-space: nowrap;
}
.nav-item svg { flex-shrink: 0; }
.nav-item:hover { background: var(--bg-card); color: var(--text); }
.nav-item.active { background: var(--primary); color: var(--primary-ink); font-weight: 600; }
.nav-item.active svg { color: var(--primary-ink); }

/* Conteudo */
.content { flex: 1; min-width: 0; padding: 2.2rem 2.4rem; max-width: 1600px; }

/* Estado vazio */
.empty {
  background: var(--bg-card);
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  padding: 2.5rem 1.5rem; text-align: center; color: var(--text-dim);
}
.empty-sub { font-size: .88rem; margin-top: .4rem; }

/* Cadastro: duas colunas (form + lista) */
.cadastro-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 1.5rem;
  align-items: start;
}
.panel {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.5rem;
}
.panel h3 { margin: 0 0 1.1rem; font-size: 1.05rem; }

/* Formulario */
.form { display: flex; flex-direction: column; gap: .9rem; }
.form label {
  display: flex; flex-direction: column; gap: .35rem;
  font-size: .8rem; color: var(--text-dim);
}
.form input, .form textarea {
  padding: .6rem .7rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 9px;
  color: var(--text); font-size: .9rem;
  outline: none; font-family: inherit; resize: vertical;
  transition: border-color .2s ease;
}
.form input:focus, .form textarea:focus { border-color: var(--accent); }
.form .btn { margin-top: .3rem; justify-content: center; }

/* Lista de gerenciamento */
.manage-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.manage-item {
  display: flex; align-items: center; justify-content: space-between; gap: .6rem;
  padding: .6rem .7rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 9px;
}
.manage-item strong { font-size: .9rem; display: block; }
.manage-cat { font-size: .72rem; color: var(--primary); }
.manage-empty { color: var(--text-dim); font-size: .88rem; }
.btn-del {
  background: none; border: 1px solid var(--border);
  color: var(--text-dim); border-radius: 8px;
  width: 30px; height: 30px; cursor: pointer;
  transition: color .2s, border-color .2s;
}
.btn-del:hover { color: var(--danger); border-color: var(--danger); }

/* Responsivo */
@media (max-width: 860px) {
  .app-shell { flex-direction: column; }
  .sidebar { width: 100%; height: auto; position: static; flex-direction: column; }
  .side-nav { flex-direction: row; flex-wrap: wrap; }
  .content { padding: 1.5rem 1.2rem; }
  .cadastro-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   Pastas (projetos)
   ============================================================ */
.col { display: flex; flex-direction: column; gap: 1.5rem; }

/* Form inline (criar pasta) */
.form-inline { display: flex; gap: .6rem; }
.form-inline input {
  flex: 1; padding: .6rem .7rem;
  background: var(--bg-elev); border: 1px solid var(--border);
  border-radius: 9px; color: var(--text); font-size: .9rem; outline: none;
}
.form-inline input:focus { border-color: var(--accent); }

/* Select do formulario */
.form select {
  padding: .6rem .7rem;
  background: var(--bg-elev); border: 1px solid var(--border);
  border-radius: 9px; color: var(--text); font-size: .9rem;
  outline: none; font-family: inherit;
}
.form select:focus { border-color: var(--accent); }

/* Bloco de pasta (recolhivel) na tela de gerenciamento */
.folder-block {
  margin-bottom: .7rem;
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow: hidden;
}
.folder-block:last-child { margin-bottom: 0; }
.folder-head {
  display: flex; align-items: center; gap: .5rem;
  padding: .65rem .8rem;
  cursor: pointer; list-style: none; user-select: none;
  background: var(--bg-elev);
  font-weight: 600; font-size: .92rem;
  transition: background .18s ease;
}
.folder-head::-webkit-details-marker { display: none; }
.folder-head:hover { background: var(--bg-card); }
.folder-head .folder-ic { color: var(--primary); flex-shrink: 0; }
.folder-head .chevron { color: var(--text-dim); transition: transform .2s ease; flex-shrink: 0; }
.folder-block[open] > .folder-head .chevron { transform: rotate(90deg); }
.folder-name-text { flex: 1; }
.folder-count {
  font-size: .72rem; color: var(--text-dim);
  background: var(--bg-card); border: 1px solid var(--border);
  padding: .05rem .5rem; border-radius: 999px; font-weight: 500;
}
.folder-body { padding: .8rem; }
.folder-tools { display: flex; align-items: flex-start; gap: .5rem; margin-bottom: .7rem; }
.folder-tools .btn-edit { width: auto; padding: 0 .6rem; gap: .3rem; white-space: nowrap; }
.folder-empty { color: var(--text-dim); font-size: .82rem; margin: 0; }

/* Secoes de projeto (recolhiveis) na tela de dashboards */
.project-section {
  margin-bottom: 1rem;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
}
.project-head {
  display: flex; align-items: center; gap: .6rem;
  padding: 1rem 1.2rem;
  cursor: pointer;
  list-style: none;
  user-select: none;
  transition: background .18s ease;
}
.project-head::-webkit-details-marker { display: none; }
.project-head:hover { background: var(--bg-elev); }
.project-head svg { color: var(--primary); flex-shrink: 0; }
.project-head .chevron {
  color: var(--text-dim);
  transition: transform .2s ease;
}
.project-section[open] > .project-head .chevron { transform: rotate(90deg); }
.project-head h2 { margin: 0; font-size: 1.15rem; }
.project-count {
  margin-left: auto;
  font-size: .75rem; color: var(--text-dim);
  background: var(--bg-elev); border: 1px solid var(--border);
  padding: .1rem .6rem; border-radius: 999px;
}
.project-section .grid { padding: 0 1.2rem 1.2rem; }

/* ============================================================
   Edicao (renomear / editar)
   ============================================================ */
.row-actions { display: flex; align-items: center; gap: .4rem; }
.manage-item-editable { display: block; }
.manage-row { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }

.btn-edit {
  list-style: none; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px;
  background: none; border: 1px solid var(--border);
  color: var(--text-dim); border-radius: 8px; font-size: .85rem;
  transition: color .2s, border-color .2s;
}
.btn-edit::-webkit-details-marker { display: none; }
.btn-edit:hover { color: var(--accent); border-color: var(--accent); }
.edit-pop[open] .btn-edit { color: var(--accent); border-color: var(--accent); }

/* Formulario de edicao que abre abaixo */
.edit-form {
  margin-top: .7rem;
  padding: .9rem;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  width: 100%;
  box-sizing: border-box;
}
.edit-pop { position: relative; }
.edit-pop .edit-form.form-inline { margin-top: .5rem; }

/* Ao abrir a edicao, a linha inteira empilha verticalmente e o
   formulario ocupa a largura total, em vez de ficar espremido
   ao lado dos botoes */
.manage-item:has(.edit-pop[open]) .manage-row {
  flex-direction: column;
  align-items: stretch;
}
.manage-item:has(.edit-pop[open]) .row-actions {
  width: 100%;
  justify-content: flex-end;
}
.edit-pop[open] { width: 100%; }

/* Botoes Salvar/Cancelar lado a lado no formulario de edicao */
.edit-buttons { display: flex; gap: .5rem; margin-top: .3rem; }
.edit-buttons .btn { flex: 1; justify-content: center; }

/* ============================================================
   Usuarios / login footer / permissoes
   ============================================================ */
/* Rodape da sidebar com usuario logado */
.sidebar-footer {
  margin-top: auto;
  padding: 1rem;
  border-top: 1px solid var(--border);
}
.user-chip { display: flex; align-items: center; gap: .6rem; margin-bottom: .7rem; }
.user-avatar {
  width: 36px; height: 36px; flex-shrink: 0;
  border-radius: 50%;
  background: var(--primary); color: var(--primary-ink);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: .95rem; overflow: hidden;
}
.user-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.user-meta { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.user-meta strong { font-size: .85rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.logout-btn {
  width: 100%; justify-content: center;
  border: 1px solid var(--border);
}
.logout-btn:hover { border-color: var(--danger); color: var(--danger); }

/* Badge de papel */
.role-badge {
  font-size: .68rem; font-weight: 600;
  padding: .1rem .5rem; border-radius: 999px;
  width: fit-content;
}
.role-admin { background: var(--primary-tint-strong); color: var(--primary); }
.role-viewer { background: rgba(79, 140, 255, .15); color: var(--accent); }

/* Linha de usuario na lista */
.user-line { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.user-login { font-size: .8rem; color: var(--text-dim); }

/* Permissoes por pasta (checkboxes) */
.pastas-perm { display: block; }
.perm-label { font-size: .8rem; color: var(--text-dim); display: block; margin-bottom: .5rem; }
.check-list {
  display: flex; flex-direction: column; gap: .4rem;
  max-height: 180px; overflow-y: auto;
  border: 1px solid var(--border); border-radius: 9px;
  padding: .6rem; background: var(--bg-elev);
}
.check-item { display: flex; align-items: center; gap: .5rem; font-size: .88rem; cursor: pointer; }
.check-item input { width: 16px; height: 16px; accent-color: var(--primary); cursor: pointer; }

/* ============================================================
   Minha conta
   ============================================================ */
.user-chip-link {
  text-decoration: none; color: inherit;
  padding: .4rem; margin: -.4rem -.4rem .5rem;
  border-radius: 9px; transition: background .18s ease;
}
.user-chip-link:hover, .user-chip-link.active { background: var(--bg-card); }

.conta-grid {
  display: grid; grid-template-columns: minmax(0, 320px) minmax(0, 1fr);
  gap: 1.5rem; align-items: start;
}
.conta-info { display: flex; align-items: center; gap: 1rem; }
.user-avatar.big { width: 56px; height: 56px; font-size: 1.4rem; }
.conta-info .user-login { margin: .2rem 0 .4rem; }

@media (max-width: 860px) { .conta-grid { grid-template-columns: 1fr; } }

/* Dica de regra de senha */
.hint { font-size: .78rem; color: var(--text-dim); margin: -.3rem 0 .2rem; line-height: 1.4; }

/* Barra de pesquisa de usuarios */
.toolbar-dash {
  display: flex; align-items: center; gap: .8rem; flex-wrap: wrap;
  margin-bottom: 1rem;
}
.toolbar-dash .search-box { flex: 1; min-width: 220px; margin-bottom: 0; }
.toolbar-acoes { display: flex; align-items: center; gap: .6rem; flex-shrink: 0; }

.visualizacao-toggle {
  display: flex; border: 1px solid var(--border); border-radius: 10px; overflow: hidden;
}
.btn-vis {
  display: flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  background: var(--bg-elev); border: none; border-right: 1px solid var(--border);
  color: var(--text-dim); cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.btn-vis:last-child { border-right: none; }
.btn-vis:hover { color: var(--text); }
.btn-vis.ativo { background: var(--primary); color: var(--primary-ink); }


.search-box {
  display: flex; align-items: center; gap: .5rem;
  padding: .55rem .75rem; margin-bottom: 1rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text-dim);
}
.search-box:focus-within { border-color: var(--accent); }
.search-box svg { flex-shrink: 0; }
.search-box input {
  flex: 1; border: none; outline: none; background: none;
  color: var(--text); font-size: .9rem;
}
.user-group { margin-bottom: .7rem; }

/* Link voltar / esqueci senha */
.link-voltar { color: var(--text-dim); }
.link-voltar:hover { color: var(--text); }

/* ============================================================
   Arvore de permissao (pastas + dashboards) e etiquetas
   ============================================================ */
.user-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .35rem; }
.access-tags { display: flex; flex-wrap: wrap; gap: .3rem; }
.access-tag {
  font-size: .7rem; color: var(--accent);
  background: rgba(79, 140, 255, .12); border: 1px solid rgba(79, 140, 255, .25);
  padding: .08rem .5rem; border-radius: 999px;
}
.access-tag.alt { color: var(--primary); background: var(--primary-tint); border-color: var(--primary-border-tint); }
.access-all {
  font-size: .7rem; color: var(--primary);
  background: var(--primary-tint); border: 1px solid var(--primary-border-tint);
  padding: .08rem .5rem; border-radius: 999px;
}
.access-none { font-size: .72rem; color: var(--text-dim); }

/* Arvore de permissao — cards no mesmo estilo das pastas de Dashboards */
.perm-tree {
  border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--bg); padding: .8rem;
  max-height: 420px; overflow-y: auto;
}
.perm-toolbar { display: flex; align-items: center; gap: .5rem; margin-bottom: .7rem; }
.perm-search-box {
  flex: 1; display: flex; align-items: center; gap: .4rem;
  padding: .4rem .6rem; background: var(--bg-elev); color: var(--text-dim);
  border: 1px solid var(--border); border-radius: 8px;
}
.perm-search-box:focus-within { border-color: var(--accent); }
.perm-search-box input { flex: 1; border: none; outline: none; background: none; color: var(--text); font-size: .85rem; }
.link-mini { background: none; border: none; color: var(--accent); font-size: .8rem; cursor: pointer; padding: 0; white-space: nowrap; }
.link-mini:hover { text-decoration: underline; }

/* Pasta: cabecalho de uma linha so + lista de dashboards, tudo dentro
   de uma unica caixa com borda (grupo visualmente coeso) */
.perm-card {
  border: 1px solid var(--border);
  border-radius: 9px;
  overflow: hidden;
  margin-bottom: .5rem;
}
.perm-card:last-child { margin-bottom: 0; }
.perm-card-head {
  display: flex; align-items: center; gap: .5rem;
  padding: .6rem .7rem;
  cursor: pointer; list-style: none; user-select: none;
  background: var(--bg-elev);
  font-size: .85rem; color: var(--text);
  border-bottom: 1px solid transparent;
  transition: background .15s ease;
}
.perm-card[open] > .perm-card-head { border-bottom-color: var(--border); }
.perm-card-head::-webkit-details-marker { display: none; }
.perm-card-head:hover { background: var(--bg-card); }
.perm-card-head .chevron { color: var(--text-dim); transition: transform .2s ease; flex-shrink: 0; }
.perm-card[open] > .perm-card-head .chevron { transform: rotate(90deg); }
.perm-card-head .folder-ic { color: var(--text-dim); flex-shrink: 0; }
.perm-card-name { flex: 1; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.perm-badge {
  font-size: .68rem; color: var(--text-dim);
  background: var(--bg-card); border: 1px solid var(--border);
  padding: .05rem .5rem; border-radius: 999px;
}

/* "Toda a pasta": checkbox simples + texto (nao mais uma pilula) */
.perm-all-pill {
  display: flex; align-items: center; gap: .35rem;
  font-size: .76rem; color: var(--text-dim);
  cursor: pointer; flex-shrink: 0;
}
.perm-all-pill input { width: 14px; height: 14px; accent-color: var(--primary); cursor: pointer; }
.perm-all-pill.on { color: var(--text); }

/* Dashboards dentro da pasta: uma linha por item, checkbox de verdade a
   esquerda, com um divisor sutil entre as linhas */
.perm-dash-grid {
  display: flex;
  flex-direction: column;
  max-height: 260px;
  overflow-y: auto;
}
.perm-dash-card {
  display: flex; align-items: center; gap: .6rem;
  padding: .5rem .7rem .5rem 2.1rem;
  cursor: pointer;
  font-size: .84rem; color: var(--text);
  border-bottom: 1px solid var(--border);
  transition: background .15s ease, color .15s ease;
}
.perm-dash-grid .perm-dash-card:last-child { border-bottom: none; }
.perm-dash-card:hover { background: var(--bg-elev); }
.perm-dash-card input { width: 15px; height: 15px; flex-shrink: 0; accent-color: var(--primary); cursor: pointer; }
.perm-dash-card.selected {
  background: var(--primary-tint); color: var(--primary); font-weight: 600;
}
.perm-dash-card.locked { cursor: default; opacity: .8; }
.perm-dash-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.perm-empty { font-size: .8rem; color: var(--text-dim); margin: 0; padding: .7rem; }

/* ============================================================
   Acessos (tabela de auditoria)
   ============================================================ */
.acessos-filtros-topo {
  margin-bottom: 1.4rem;
  padding: 1rem 1.1rem;
  background: var(--bg-card);
  border: 1px solid var(--primary);
  border-radius: 12px;
}
.filtros-topo-linha {
  display: flex; align-items: end; gap: .6rem; flex-wrap: nowrap;
  overflow-x: auto; padding-bottom: .3rem;
}
.filtro-periodo .filtro-input { border-color: var(--primary); min-width: 140px; }
.filtro-periodo span { color: var(--primary); font-weight: 600; }
.filtro-busca .filtro-input { min-width: 200px; }
.periodo-aviso { display: block; font-size: .82rem; color: var(--text-dim); margin-top: .6rem; }
.periodo-aviso-dim { opacity: .75; }

.filtro-campo {
  display: flex; flex-direction: column; gap: .3rem;
  font-size: .76rem; color: var(--text-dim);
  flex: 0 0 auto;
}
.filtro-input {
  padding: .55rem .6rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 9px;
  color: var(--text);
  font-size: .85rem;
  outline: none;
  font-family: inherit;
  min-width: 100px;
  transition: border-color .2s ease;
}
select.filtro-input { min-width: 130px; max-width: 170px; }
.filtro-input:focus { border-color: var(--accent); }

.acessos-acao-linha { display: flex; justify-content: flex-end; margin-bottom: .9rem; }
.acessos-export { white-space: nowrap; }

.table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 10px; }
.acessos-table { width: 100%; border-collapse: collapse; font-size: .87rem; }
.acessos-table th, .acessos-table td {
  text-align: left; padding: .6rem .8rem;
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
}
.acessos-table th {
  background: var(--bg-elev); color: var(--text-dim);
  font-weight: 600; font-size: .76rem;
  text-transform: uppercase; letter-spacing: .03em;
  position: sticky; top: 0;
}
.acessos-table tbody tr:hover { background: var(--bg-elev); }
.acessos-table tbody tr:last-child td { border-bottom: none; }
.acessos-table .col-data { color: var(--text-dim); font-variant-numeric: tabular-nums; }
.acessos-table .user-login { margin-left: .4rem; }

@media (max-width: 860px) {
  .table-wrap { max-width: 100%; }
}

/* ============================================================
   Acessos: resumo (cards + grafico)
   ============================================================ */
.stat-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: .8rem;
  margin-bottom: 1.4rem;
}
.stat-card {
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 1rem 1.1rem;
  display: flex; flex-direction: column; gap: .3rem;
}
.stat-value { font-size: 1.6rem; font-weight: 700; color: var(--text); line-height: 1.1; }
.stat-value-text { font-size: 1.05rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.stat-label { font-size: .76rem; color: var(--text-dim); }
.stat-card-alerta .stat-value { color: var(--danger); }

.chart-box h4 { margin: 0 0 .8rem; font-size: .92rem; color: var(--text-dim); font-weight: 600; }
.chart-svg { width: 100%; height: auto; display: block; }
.chart-bar { fill: var(--primary); transition: opacity .15s ease; }
.chart-bar:hover { opacity: .75; }
.chart-value { fill: var(--text); font-size: 11px; font-weight: 700; }
.chart-label { fill: var(--text-dim); font-size: 9px; }

/* ============================================================
   Acessos: ranking e detalhes
   ============================================================ */
.ranking-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1.4rem;
}
.ranking-col h4 { margin: 0 0 .8rem; font-size: .88rem; color: var(--text-dim); font-weight: 600; }
.ranking-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.ranking-list li {
  padding: .5rem .7rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 9px;
  font-size: .85rem;
}
.ranking-list:not(.ranking-list-plain) { counter-reset: rank; }
.ranking-list:not(.ranking-list-plain) li {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
}
.ranking-nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ranking-qtd {
  font-weight: 700; color: var(--primary);
  background: var(--primary-tint);
  padding: .05rem .55rem; border-radius: 999px; font-size: .78rem;
  flex-shrink: 0;
}

/* ============================================================
   Acessos: badges de status, paginacao, cabecalhos ordenaveis
   ============================================================ */
.status-badge {
  font-size: .72rem; font-weight: 600;
  padding: .12rem .55rem; border-radius: 999px;
}
.status-sucesso { background: rgba(79, 200, 130, .15); color: #4fc882; }
.status-negado { background: rgba(255, 93, 93, .15); color: var(--danger); }

.acessos-table th[data-col] { cursor: pointer; user-select: none; }
.acessos-table th[data-col]:hover { color: var(--text); }
.sort-ind { font-size: .65rem; margin-left: .2rem; color: var(--primary); }

.acessos-paginacao {
  display: none;
  align-items: center; justify-content: center; gap: 1rem;
  margin-top: 1rem;
}
.acessos-paginacao:not([hidden]) { display: flex; }
.paginacao-info { font-size: .82rem; color: var(--text-dim); }
.acessos-paginacao .btn:disabled { opacity: .4; cursor: not-allowed; }



/* ============================================================
   Alternar tema (claro/escuro)
   ============================================================ */
.tema-toggle {
  position: fixed;
  top: 8px;
  right: 16px;
  z-index: 50;
  width: 38px; height: 38px;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--text-dim);
  cursor: pointer;
  box-shadow: var(--shadow);
  transition: color .18s ease, border-color .18s ease, transform .1s ease;
}
.tema-toggle:hover { color: var(--primary); border-color: var(--primary); }
.tema-toggle:active { transform: scale(.92); }
.tema-toggle svg { width: 18px; height: 18px; }
.tema-toggle .icone-lua { display: block; }
.tema-toggle .icone-sol { display: none; }
[data-theme="claro"] .tema-toggle .icone-lua { display: none; }
[data-theme="claro"] .tema-toggle .icone-sol { display: block; }

/* ============================================================
   Modo lista compacta
   ============================================================ */
.visualizacao-lista .grid { display: flex; flex-direction: column; gap: .5rem; }
.visualizacao-lista .card {
  flex-direction: row; align-items: center;
  padding: .7rem 1rem;
  gap: 1rem;
}
.visualizacao-lista .card-top { flex: 1; min-width: 0; margin-bottom: 0; }
.visualizacao-lista .card-title-wrap { display: flex; align-items: baseline; gap: .5rem; min-width: 0; }
.visualizacao-lista .card-title {
  font-size: .95rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.visualizacao-lista .card-pasta-tag { margin-bottom: 0; flex-shrink: 0; }
.visualizacao-lista .card-desc { display: none; }
.visualizacao-lista .card-actions { flex-shrink: 0; margin: 0; }
.visualizacao-lista .card-actions .btn { padding: .45rem .8rem; font-size: .82rem; }

/* ============================================================
   Aviso fixado (mensagem do admin no topo da tela de Dashboards)
   ============================================================ */
.aviso-fixado {
  display: flex; align-items: flex-start; gap: .7rem;
  padding: .9rem 1.1rem;
  margin-bottom: 1.2rem;
  background: var(--primary-tint);
  border: 1px solid var(--primary);
  border-radius: var(--radius);
  color: var(--text);
}
.aviso-fixado svg { flex-shrink: 0; color: var(--primary); margin-top: .1rem; }
.aviso-fixado p { margin: 0; font-size: .9rem; line-height: 1.5; white-space: pre-wrap; }

/* Comunicado temporario no Dashboard: independente do aceite do modal. */
.dashboard-comunicado { display: flex; align-items: flex-start; gap: 16px; padding: 22px; margin-bottom: 24px; border: 1px solid var(--border); border-left: 4px solid var(--primary); border-radius: 16px; background: linear-gradient(115deg, var(--primary-tint), transparent 65%), var(--bg-card); color: var(--text); box-shadow: 0 5px 18px #0000000a; }
.dashboard-comunicado[hidden] { display: none; }
.dashboard-comunicado-icone { display: flex; align-items: center; justify-content: center; flex: 0 0 44px; height: 44px; border-radius: 13px; background: var(--primary-tint); color: var(--primary); }
.dashboard-comunicado-conteudo { flex: 1; min-width: 0; }
.dashboard-comunicado-topo { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 9px; }
.dashboard-comunicado-legenda { font-size: .68rem; text-transform: uppercase; letter-spacing: .1em; color: var(--text-dim); font-weight: 600; }
.dashboard-comunicado-selo { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--border); border-radius: 20px; padding: 4px 9px; font-size: .68rem; color: var(--text-dim); }
.dashboard-comunicado h2 { margin: 0 0 8px; font-size: 1rem; line-height: 1.4; overflow-wrap: anywhere; }
.dashboard-comunicado-mensagem { margin: 0; font-size: .9rem; line-height: 1.65; white-space: pre-wrap; overflow-wrap: anywhere; }
.dashboard-comunicado-prazo { margin: 14px 0 0; font-size: .7rem; color: var(--text-dim); line-height: 1.5; }
@media (max-width: 600px) { .dashboard-comunicado { padding: 16px; gap: 12px; } .dashboard-comunicado-icone { flex-basis: 34px; height: 34px; border-radius: 10px; } .dashboard-comunicado-icone svg { width: 20px; height: 20px; } }

/* ============================================================
   Aviso de sessao inativa
   ============================================================ */
.modal-inatividade {
  display: none;
  position: fixed; inset: 0; z-index: 100;
  align-items: center; justify-content: center;
  background: rgba(0, 0, 0, .55);
  padding: 1rem;
}
.modal-inatividade:not([hidden]) { display: flex; }
.modal-inatividade-caixa {
  max-width: 380px; width: 100%;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 2rem;
  text-align: center;
}
.modal-inatividade-caixa svg { color: var(--primary); margin-bottom: 1rem; }
.modal-inatividade-caixa h3 { margin: 0 0 .6rem; font-size: 1.15rem; }
.modal-inatividade-caixa p { margin: 0 0 1.4rem; color: var(--text-dim); font-size: .9rem; line-height: 1.5; }
.modal-inatividade-caixa p strong { color: var(--text); }
.modal-inatividade-botoes { display: flex; flex-direction: column; gap: .6rem; }
.modal-inatividade-botoes .btn { justify-content: center; }

/* ============================================================
   Arvore de pastas/dashboards DENTRO da barra lateral
   ============================================================ */
.nav-arvore-raiz { border-radius: 10px; overflow: hidden; }
.nav-arvore-raiz.dashboard-tree-root-controls { position: relative; }
.nav-arvore-raiz > summary.nav-item {
  cursor: pointer; list-style: none;
}
.nav-arvore-raiz.dashboard-tree-root-controls > summary.nav-item { padding-right: .8rem; }
.nav-arvore-raiz > summary.nav-item::-webkit-details-marker { display: none; }
.nav-arvore-raiz > summary.nav-item .chevron { flex-shrink: 0; transition: transform .2s ease; }
.nav-arvore-raiz[open] > summary.nav-item .chevron { transform: rotate(90deg); }
.nav-arvore-raiz > summary.nav-item a { color: inherit; flex: 1; }
.nav-arvore-raiz.dashboard-tree-root-controls > summary.nav-item > .dashboard-tree-global-actions {
  display: inline-flex !important;
  align-items: center;
  gap: 2px;
  flex: 0 0 auto;
  margin-left: auto;
  opacity: 1;
  pointer-events: auto;
}
.dashboard-tree-global-action {
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  margin: 0;
  padding: 2px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg-card);
  color: var(--text-dim);
  cursor: pointer;
}
.dashboard-tree-global-action:hover { border-color: var(--primary); color: var(--primary); }
.dashboard-tree-global-action svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
@media (hover: none) {
  .nav-arvore-raiz.dashboard-tree-root-controls > summary.nav-item > .dashboard-tree-global-actions { opacity: 1; }
}

.nav-arvore-corpo { padding: .2rem 0 .3rem .5rem; }

.nav-arvore-pasta { margin: .1rem 0; }
.nav-arvore-pasta-head {
  display: flex; align-items: center; gap: .45rem;
  padding: .4rem .5rem;
  cursor: pointer; list-style: none; user-select: none;
  border-radius: 7px;
  font-size: .8rem; color: var(--text-dim);
  transition: background .15s ease, color .15s ease;
}
.nav-arvore-pasta-head::-webkit-details-marker { display: none; }
.nav-arvore-pasta-head:hover { background: var(--bg-card); color: var(--text); }
.nav-arvore-pasta-head .chevron { flex-shrink: 0; transition: transform .2s ease; }
.nav-arvore-pasta[open] > .nav-arvore-pasta-head .chevron { transform: rotate(90deg); }
.nav-arvore-pasta-head svg:nth-child(2) { flex-shrink: 0; }
.nav-arvore-pasta-head span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.nav-arvore-lista { display: flex; flex-direction: column; padding: 0 0 .2rem .9rem; }
.nav-arvore-item {
  display: block;
  padding: .4rem .5rem;
  font-size: .78rem; color: var(--text-dim);
  border-radius: 7px;
  border-left: 2px solid var(--border);
  margin-left: .2rem;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  transition: color .15s ease, background .15s ease, border-color .15s ease;
}
.nav-arvore-item:hover { color: var(--text); background: var(--bg-card); }
.nav-arvore-item.ativo {
  color: var(--primary); background: var(--primary-tint);
  border-left-color: var(--primary); font-weight: 600;
}

/* Painel de conteudo (dashboard selecionado) na tela de Dashboards */
.dash-conteudo-topo {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 1rem; margin-bottom: .9rem;
}
.dash-conteudo-titulo { min-width: 0; flex: 1 1 auto; }
.dash-conteudo-titulo-linha { display: flex; align-items: center; gap: .55rem; min-width: 0; }
.dash-conteudo-titulo-linha h2 { min-width: 0; margin: 0; font-size: 1.3rem; overflow-wrap: anywhere; }
.dash-conteudo-titulo-linha .btn-favorito { width: 36px; height: 36px; }
.dash-mobile-voltar, .dash-mobile-ambiente { display: none; }
.dash-conteudo-frame {
  height: calc(100vh - 165px);
  min-height: 560px;
}

/* Quando um dashboard estiver aberto, aproveita melhor a area util da tela. */
.content:has(.dash-conteudo-frame) {
  max-width: none;
  width: 100%;
  padding: 1.45rem 1.55rem 1.25rem;
}
.content:has(.dash-conteudo-frame) .page-head p { margin-bottom: 1rem; }
.content:has(.dash-conteudo-frame) .dash-conteudo-topo { margin-bottom: .65rem; }

@media (max-width: 860px) {
  .dash-conteudo-titulo-linha .btn-favorito { width: 40px; height: 40px; }
  .dash-conteudo-frame {
    height: calc(100vh - 185px);
    min-height: 480px;
  }
  .content:has(.dash-conteudo-frame) { padding: 1rem; }
}

.dash-vazio {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center;
  min-height: 420px;
  background: var(--bg-card);
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  color: var(--text-dim);
  padding: 2rem;
}
.dash-vazio svg { color: var(--border); margin-bottom: 1rem; }
.dash-vazio h3 { margin: 0 0 .3rem; color: var(--text); font-size: 1.05rem; }
.dash-vazio p { margin: 0; font-size: .88rem; }

@media (max-width: 900px) {
  .dash-split { grid-template-columns: 1fr; }
  .dash-arvore { position: static; max-height: none; }
}

/* ============================================================
   Tela inicial (antes de escolher um dashboard)
   ============================================================ */
.home-topo {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 1.5rem; flex-wrap: wrap;
  margin-bottom: 1.2rem;
}
.home-topo h1 { margin: 0 0 .2rem; }
.home-topo p { margin: 0; color: var(--text-dim); }
.home-busca { min-width: 280px; margin-bottom: 0; }
.home-busca kbd {
  font-size: .7rem; color: var(--text-dim);
  background: var(--bg-card); border: 1px solid var(--border);
  border-radius: 5px; padding: .1rem .4rem; font-family: inherit;
}

.aviso-fixado-icone {
  flex-shrink: 0; width: 32px; height: 32px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%; background: var(--primary); color: var(--primary-ink);
}

.home-secao { margin-bottom: 1.6rem; }
.home-secao-titulo { display: flex; align-items: center; gap: .5rem; margin-bottom: .8rem; }
.home-secao-titulo h2 { margin: 0; font-size: 1.05rem; }

.home-favoritos-grade {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: .9rem;
}
.home-card {
  display: flex; flex-direction: column; gap: .8rem;
  background: var(--bg-card); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1rem;
}
.home-card-icone {
  width: 38px; height: 38px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: 9px; background: var(--primary-tint); color: var(--primary);
}
.home-card-icone-sm { width: 26px; height: 26px; border-radius: 6px; }
.home-card-corpo h3 { margin: .2rem 0 0; font-size: .98rem; }
.home-card-acoes { display: flex; align-items: center; gap: .6rem; margin-top: auto; }
.home-card-acoes .btn { flex: 1; justify-content: center; }

.home-tabela-wrap {
  min-width: 0;
}
/* Compartilha os espaçamentos, títulos e divisórias das tabelas de Avisos e Acessos. */
.home-tabela { min-width: 780px; }
.home-tabela-master { min-width: 900px; }
.home-tabela td { vertical-align: middle; overflow-wrap: anywhere; max-width: 350px; }
.home-tabela-nome { display: flex; align-items: center; gap: .6rem; }
.home-tabela .btn { padding: .4rem .8rem; font-size: .8rem; }

/* ============================================================
   Cadastro de Dashboard: largura mais compacta e centralizada
   ============================================================ */
.cadastro-page-col {
  width: 100%;
  max-width: 920px;
  margin-left: auto;
  margin-right: auto;
}

@media (max-width: 1024px) {
  .cadastro-page-col {
    max-width: 100%;
  }
}

/* ============================================================
   Subpastas de dashboards
   ============================================================ */
.nav-arvore-subpasta {
  margin: .15rem 0 .1rem .2rem;
}
.nav-arvore-subpasta-head {
  display: flex;
  align-items: center;
  gap: .4rem;
  padding: .38rem .45rem;
  cursor: pointer;
  list-style: none;
  user-select: none;
  border-radius: 7px;
  color: var(--text-dim);
  font-size: .77rem;
  transition: background .15s ease, color .15s ease;
}
.nav-arvore-subpasta-head::-webkit-details-marker { display: none; }
.nav-arvore-subpasta-head:hover { background: var(--bg-card); color: var(--text); }
.nav-arvore-subpasta-head .chevron { flex-shrink: 0; transition: transform .2s ease; }
.nav-arvore-subpasta[open] > .nav-arvore-subpasta-head .chevron { transform: rotate(90deg); }
.nav-arvore-subpasta-head span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.nav-arvore-sublista {
  display: flex;
  flex-direction: column;
  padding: 0 0 .15rem .65rem;
}
.nav-arvore-item-sub {
  font-size: .76rem;
  padding-top: .35rem;
  padding-bottom: .35rem;
  margin-left: .35rem;
}

.subfolder-root-section {
  margin-bottom: .8rem;
}
.subfolder-section-title {
  margin: .1rem 0 .5rem;
  color: var(--text-dim);
  font-size: .74rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .03em;
}
.subfolder-block {
  margin-top: .65rem;
  border: 1px solid var(--border);
  border-radius: 9px;
  overflow: hidden;
  background: var(--bg);
}
.subfolder-head {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .58rem .7rem;
  cursor: pointer;
  list-style: none;
  user-select: none;
  background: var(--bg-elev);
  color: var(--text);
  font-size: .84rem;
  transition: background .15s ease;
}
.subfolder-head::-webkit-details-marker { display: none; }
.subfolder-head:hover { background: var(--bg-card); }
.subfolder-head .chevron { color: var(--text-dim); transition: transform .2s ease; flex-shrink: 0; }
.subfolder-block[open] > .subfolder-head .chevron { transform: rotate(90deg); }
.subfolder-head > svg:not(.chevron) { color: var(--primary); flex-shrink: 0; }
.subfolder-name {
  flex: 1;
  min-width: 0;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.subfolder-body {
  padding: .75rem;
  border-top: 1px solid var(--border);
}
.subfolder-tools { margin-bottom: .6rem; }
.dashboard-manage-name { min-width: 0; flex: 1; }
.dashboard-manage-name strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

@media (max-width: 640px) {
  .nav-arvore-subpasta { margin-left: 0; }
  .subfolder-body { padding: .6rem; }
}

/* ============================================================
   Terceiro nivel: Tema (Pasta > Divisao > Tema > Dashboard)
   ============================================================ */
.nav-arvore-tema {
  margin: .12rem 0 .08rem .35rem;
}
.nav-arvore-tema-head {
  display: flex;
  align-items: center;
  gap: .35rem;
  padding: .34rem .4rem;
  cursor: pointer;
  list-style: none;
  user-select: none;
  border-radius: 7px;
  color: var(--text-dim);
  font-size: .74rem;
  transition: background .15s ease, color .15s ease;
}
.nav-arvore-tema-head::-webkit-details-marker { display: none; }
.nav-arvore-tema-head:hover { background: var(--bg-card); color: var(--text); }
.nav-arvore-tema-head .chevron { flex-shrink: 0; transition: transform .2s ease; }
.nav-arvore-tema[open] > .nav-arvore-tema-head .chevron { transform: rotate(90deg); }
.nav-arvore-tema-head span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.nav-arvore-tema-lista {
  display: flex;
  flex-direction: column;
  padding: 0 0 .12rem .55rem;
}
.nav-arvore-item-tema {
  font-size: .74rem;
  padding-top: .32rem;
  padding-bottom: .32rem;
  margin-left: .45rem;
}

.structure-badge {
  flex-shrink: 0;
  font-size: .64rem;
  font-weight: 600;
  color: var(--accent);
  background: rgba(79, 140, 255, .12);
  border: 1px solid rgba(79, 140, 255, .22);
  padding: .04rem .42rem;
  border-radius: 999px;
}
.structure-badge-theme {
  color: var(--primary);
  background: var(--primary-tint);
  border-color: var(--primary-border-tint);
}

.theme-block {
  margin: .55rem 0 0 .7rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
  background: var(--bg-card);
}
.theme-head {
  display: flex;
  align-items: center;
  gap: .45rem;
  padding: .52rem .65rem;
  cursor: pointer;
  list-style: none;
  user-select: none;
  background: var(--bg);
  color: var(--text);
  font-size: .8rem;
  transition: background .15s ease;
}
.theme-head::-webkit-details-marker { display: none; }
.theme-head:hover { background: var(--bg-elev); }
.theme-head .chevron { color: var(--text-dim); transition: transform .2s ease; flex-shrink: 0; }
.theme-block[open] > .theme-head .chevron { transform: rotate(90deg); }
.theme-head > svg:not(.chevron) { color: var(--accent); flex-shrink: 0; }
.theme-name {
  flex: 1;
  min-width: 0;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.theme-body {
  padding: .65rem;
  border-top: 1px solid var(--border);
}

@media (max-width: 640px) {
  .nav-arvore-tema { margin-left: .1rem; }
  .theme-block { margin-left: .2rem; }
  .theme-body { padding: .55rem; }
}


/* ============================================================
   Permissoes: Cliente -> Divisao -> Tema -> Dashboard
   ============================================================ */
.perm-card-body {
  background: var(--bg);
  border-top: 1px solid var(--border);
  padding: .6rem;
}

.perm-raiz-bloco { margin-bottom: .55rem; }
.perm-nivel-caption {
  padding: .25rem .45rem .4rem;
  font-size: .7rem;
  color: var(--text-dim);
  text-transform: uppercase;
  letter-spacing: .04em;
}

.perm-divisao {
  border: 1px solid var(--border);
  border-radius: 9px;
  overflow: hidden;
  margin-top: .5rem;
  background: var(--bg-card);
}
.perm-divisao:first-of-type { margin-top: 0; }
.perm-divisao-head,
.perm-tema-head {
  display: flex;
  align-items: center;
  gap: .45rem;
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.perm-divisao-head::-webkit-details-marker,
.perm-tema-head::-webkit-details-marker { display: none; }
.perm-divisao-head {
  padding: .55rem .65rem;
  background: var(--bg-elev);
  font-size: .82rem;
}
.perm-divisao-head:hover,
.perm-tema-head:hover { background: var(--bg-card); }
.perm-divisao-head .chevron,
.perm-tema-head .chevron {
  color: var(--text-dim);
  flex-shrink: 0;
  transition: transform .2s ease;
}
.perm-divisao[open] > .perm-divisao-head .chevron,
.perm-tema[open] > .perm-tema-head .chevron { transform: rotate(90deg); }
.perm-divisao-head > svg:not(.chevron) { color: var(--accent); flex-shrink: 0; }
.perm-divisao-body { padding: .45rem .55rem .55rem; border-top: 1px solid var(--border); }

.perm-tema {
  margin: .45rem 0 0 .8rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
  background: var(--bg);
}
.perm-tema-head {
  padding: .48rem .55rem;
  background: var(--bg);
  font-size: .78rem;
}
.perm-tema-head > svg:not(.chevron) { color: var(--primary); flex-shrink: 0; }
.perm-nivel-nome {
  flex: 1;
  min-width: 0;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.perm-group-pill {
  display: flex;
  align-items: center;
  gap: .3rem;
  flex-shrink: 0;
  font-size: .7rem;
  color: var(--text-dim);
  cursor: pointer;
}
.perm-group-pill input {
  width: 14px;
  height: 14px;
  accent-color: var(--primary);
  cursor: pointer;
}
.perm-group-pill.on { color: var(--text); }
.perm-group-pill:has(input:disabled) { opacity: .55; cursor: default; }

.perm-dash-grid-raiz .perm-dash-card { padding-left: 1rem; }
.perm-dash-grid-divisao .perm-dash-card { padding-left: 1.2rem; }
.perm-dash-grid-tema .perm-dash-card { padding-left: 1.35rem; }
.perm-divisao .perm-dash-grid,
.perm-tema .perm-dash-grid { max-height: none; }

@media (max-width: 700px) {
  .perm-card-head,
  .perm-divisao-head,
  .perm-tema-head { flex-wrap: wrap; }
  .perm-all-pill,
  .perm-group-pill { margin-left: auto; }
  .perm-tema { margin-left: .25rem; }
  .structure-badge { display: none; }
}

/* ============================================================
   Administração de Usuários — layout mestre/detalhe + permissões em cascata
   Cliente -> Divisão -> Tema -> Dashboard
   ============================================================ */
.users-admin-page {
  width: 100%;
  max-width: 1420px;
  margin: 0 auto;
}

.users-admin-topbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.2rem;
  margin-bottom: 1.25rem;
}

.users-admin-heading { margin-bottom: 0; }
.users-admin-heading p { margin-bottom: 0; }

.users-admin-top-actions {
  display: flex;
  align-items: stretch;
  gap: .75rem;
  flex-shrink: 0;
}

.users-help-card {
  display: flex;
  align-items: center;
  gap: .7rem;
  min-width: 245px;
  padding: .75rem .95rem;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 11px;
}

.users-help-icon {
  width: 25px;
  height: 25px;
  flex: 0 0 25px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--accent);
  border-radius: 50%;
  color: var(--accent);
  font-weight: 700;
}

.users-help-card strong,
.users-help-card small { display: block; }
.users-help-card strong { font-size: .84rem; }
.users-help-card small { margin-top: .12rem; color: var(--text-dim); font-size: .72rem; }
.users-new-btn { align-self: stretch; justify-content: center; white-space: nowrap; }

.users-admin-shell {
  display: grid;
  grid-template-columns: 320px minmax(0, 1fr);
  gap: 1rem;
  align-items: stretch;
}

.users-directory,
.user-detail { padding: 0; overflow: hidden; }

.users-directory {
  min-height: 690px;
  display: flex;
  flex-direction: column;
}

.users-directory-head { padding: 1.2rem 1.2rem .85rem; }
.users-directory-head h3 { margin: 0 0 .2rem; font-size: 1rem; }
.users-directory-head p { margin: 0; color: var(--text-dim); font-size: .78rem; }

.users-directory-tools {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .55rem;
  padding: 0 1.05rem .9rem;
}

.users-search-box { margin-bottom: 0; }
.users-role-filter { width: 100%; max-width: none !important; min-width: 0 !important; }

.users-directory-list {
  border-top: 1px solid var(--border);
  overflow-y: auto;
  max-height: 540px;
}

.users-directory-entry {
  border-bottom: 1px solid var(--border);
}
.users-directory-entry[hidden] { display: none !important; }
.users-directory-row {
  display: flex;
  align-items: stretch;
  min-width: 0;
}

.users-directory-item {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto;
  align-items: center;
  gap: .65rem;
  flex: 1 1 auto;
  min-width: 0;
  padding: .85rem 1rem;
  border-bottom: 0;
  transition: background .15s ease, box-shadow .15s ease;
}

/* Garante que os filtros de busca/perfil possam ocultar usuarios,
   mesmo com o layout da linha definido como display:grid. */
.users-directory-item[hidden] { display: none !important; }

.users-directory-item:hover { background: var(--bg-elev); }
.users-directory-item.active {
  background: var(--primary-tint);
  box-shadow: inset 3px 0 0 var(--primary);
}

.users-avatar {
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--primary-tint-strong);
  color: var(--primary);
  border: 1px solid var(--primary-border-tint);
  font-size: .78rem;
  font-weight: 700;
}

.users-avatar-lg { width: 48px; height: 48px; font-size: 1rem; }
.users-directory-main { min-width: 0; }
.users-directory-main strong,
.users-directory-main small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.users-directory-main strong { font-size: .84rem; }
.users-directory-main small { margin-top: .15rem; color: var(--text-dim); font-size: .72rem; }
.users-directory-item .role-badge { white-space: nowrap; }
.users-directory-arrow { color: var(--text-dim); }
.users-directory-toggle {
  width: 42px;
  flex: 0 0 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-left: 1px solid var(--border);
  background: transparent;
  color: var(--text-dim);
  cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.users-directory-toggle:hover,
.users-directory-toggle:focus-visible {
  background: var(--bg-elev);
  color: var(--text);
  outline: none;
}
.users-directory-toggle.is-open {
  background: var(--primary-tint);
  color: var(--primary);
}
.users-directory-toggle.is-open .users-directory-arrow { transform: rotate(90deg); }
.users-directory-arrow { transition: transform .15s ease; }

.users-environment-list {
  margin: 0 .7rem .65rem 3.35rem;
  padding: .35rem 0 .2rem .7rem;
  border-left: 1px solid var(--primary-border-tint);
}
.users-environment-list[hidden] { display: none; }
.users-environment-heading {
  margin: 0 0 .25rem .55rem;
  color: var(--text-dim);
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.users-environment-item {
  display: flex;
  align-items: center;
  gap: .45rem;
  min-height: 34px;
  padding: .35rem .55rem;
  border: 1px solid transparent;
  border-radius: 7px;
  color: var(--text-dim);
  font-size: .73rem;
  text-decoration: none;
}
.users-environment-item:hover { background: var(--bg-elev); color: var(--text); }
.users-environment-item.active {
  background: var(--primary-tint);
  border-color: var(--primary-border-tint);
  color: var(--primary);
}
.users-environment-item svg { flex: 0 0 auto; color: var(--primary); }
.users-environment-item span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.users-environment-item small { margin-left: auto; color: var(--danger); font-size: .62rem; }
.users-environment-empty {
  display: block;
  padding: .4rem .55rem;
  color: var(--text-dim);
  font-size: .72rem;
}
.users-directory-count { margin-top: auto; padding: .75rem 1rem; color: var(--text-dim); font-size: .72rem; border-top: 1px solid var(--border); }
.users-no-results { padding: 1rem; }

.user-detail { min-width: 0; }
.user-detail-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.15rem 1.25rem;
  border-bottom: 1px solid var(--border);
}

.user-detail-identity { display: flex; align-items: center; gap: .8rem; min-width: 0; }
.user-detail-name-row { display: flex; align-items: center; gap: .55rem; flex-wrap: wrap; }
.user-detail-name-row h2 { margin: 0; font-size: 1.08rem; }
.user-detail-identity p { margin: .18rem 0 0; color: var(--text-dim); font-size: .78rem; }
.user-edit-toggle { white-space: nowrap; }

.users-permission-environment {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .9rem;
  padding: .75rem 1.25rem;
  border-bottom: 1px solid var(--border);
  background: var(--bg-elev);
}
.users-permission-environment-copy { min-width: 0; }
.users-permission-environment-copy strong,
.users-permission-environment-copy span { display: block; }
.users-permission-environment-copy strong { font-size: .76rem; }
.users-permission-environment-copy span { margin-top: .12rem; color: var(--text-dim); font-size: .68rem; }
.users-permission-environment-list {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: .35rem;
  margin: 0;
  padding: 0;
  border-left: 0;
}
.users-permission-environment-tabs { display: flex; align-items: center; gap: .35rem; min-width: 0; }
.users-environment-page-button {
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--bg-card);
  color: var(--text-dim);
  cursor: pointer;
  font-size: 1rem;
  line-height: 1;
}
.users-environment-page-button:hover:not(:disabled) { color: var(--primary); border-color: var(--primary-border-tint); }
.users-environment-page-button:disabled { opacity: .4; cursor: default; }
.users-permission-environment-chip {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .35rem .55rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--bg-card);
  color: var(--text-dim);
  font-size: .68rem;
  text-decoration: none;
  white-space: nowrap;
}
.users-permission-environment-chip:hover { border-color: var(--primary-border-tint); color: var(--text); }
.users-permission-environment-chip.active { border-color: var(--primary); background: var(--primary-tint); color: var(--primary); }
.users-permission-environment-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--text-dim); }
.users-permission-environment-chip.active .users-permission-environment-dot { background: var(--primary); }
.users-permission-environment-empty { color: var(--danger); font-size: .7rem; text-align: right; }

.user-profile-editor {
  padding: 1rem 1.25rem;
  background: var(--bg-elev);
  border-bottom: 1px solid var(--border);
}
.user-profile-editor[hidden] { display: none; }
.user-profile-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .8rem;
}
.user-profile-actions { display: flex; gap: .55rem; margin-top: .85rem; }
.user-profile-actions .user-delete-inline-form {
  display: inline-flex;
  align-items: center;
  margin: 0;
}
.user-profile-actions .user-delete-inline-form .btn { white-space: nowrap; }
.user-delete-form { margin-top: .7rem; padding-top: .7rem; border-top: 1px solid var(--border); }
.btn-danger-soft {
  background: rgba(255, 93, 93, .08);
  border-color: rgba(255, 93, 93, .28);
  color: var(--danger);
}
.btn-danger-soft:hover { background: rgba(255, 93, 93, .14); border-color: var(--danger); }

.admin-full-access-state {
  margin: 1.25rem;
  padding: 1.25rem;
  display: flex;
  align-items: center;
  gap: .9rem;
  background: var(--primary-tint);
  border: 1px solid var(--primary-border-tint);
  border-radius: 12px;
}
.admin-full-access-icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--primary);
  color: var(--primary-ink);
  font-weight: 800;
}
.admin-full-access-state h3 { margin: 0 0 .25rem; font-size: 1rem; }
.admin-full-access-state p { margin: 0; color: var(--text-dim); font-size: .82rem; }

.permission-workspace-form { padding: 1.15rem 1.25rem 1.25rem; }
.users-modern-picker { display: grid; gap: .28rem; min-width: 230px; color: var(--text-dim); font-size: .68rem; }
.users-modern-picker select { min-height: 38px; font-size: .76rem; font-weight: 650; }
.users-modern-permissions { margin: 0 0 1rem; }
.users-modern-permissions-tools { display:flex; align-items:center; justify-content:space-between; gap:.7rem; flex-wrap:wrap; padding:.7rem .8rem; border:1px solid var(--border); border-radius:11px 11px 0 0; background:var(--bg-card); }
.users-modern-permissions-tools input { width:min(360px,100%); min-height:36px; font-size:.76rem; }
.users-modern-permissions-tools span { color:var(--text-dim); font-size:.72rem; }.users-modern-permissions-tools strong { color:var(--primary); font-size:.95rem; }
.users-modern-permissions-list { display:grid; gap:.5rem; padding:.65rem; border:1px solid var(--border); border-top:0; border-radius:0 0 11px 11px; background:var(--bg); }
.users-modern-permission-folder { display:grid; grid-template-columns:minmax(180px,.65fr) minmax(0,1.35fr); gap:.65rem; align-items:center; padding:.7rem; border:1px solid var(--border); border-radius:9px; background:var(--bg-elev); }
.users-modern-permission-folder[hidden] { display:none; }.users-modern-folder-toggle { display:flex; align-items:center; gap:.55rem; min-width:0; font-size:.78rem; font-weight:700; cursor:pointer; }.users-modern-folder-toggle input,.users-modern-dash input { width:15px; height:15px; flex:0 0 15px; accent-color:var(--primary); }.users-modern-folder-toggle small { display:block; margin-top:.2rem; color:var(--text-dim); font-size:.64rem; font-weight:400; }
.users-modern-dashes { display:flex; flex-wrap:wrap; gap:.38rem; }.users-modern-subfolders { display:flex; flex-wrap:wrap; gap:.38rem; width:100%; padding-bottom:.38rem; border-bottom:1px dashed var(--border); }.users-modern-subfolder,.users-modern-dash { display:flex; align-items:center; gap:.35rem; padding:.38rem .5rem; border:1px solid var(--border); border-radius:7px; color:var(--text-dim); background:var(--bg-card); font-size:.69rem; cursor:pointer; }.users-modern-subfolder { border-style:dashed; }.users-modern-subfolder input,.users-modern-dash input { width:15px; height:15px; flex:0 0 15px; accent-color:var(--primary); }.users-modern-subfolder:has(input:checked),.users-modern-dash:has(input:checked) { border-color:var(--primary-border-tint); color:var(--primary); background:var(--primary-tint); }
.users-modern-no-dashboard { margin: 0; color: var(--text-dim); font-size: .7rem; }
.permission-columns { display:none; }
@media (max-width:760px) { .user-detail-head { flex-wrap:wrap; }.users-modern-picker { order:3; width:100%; }.users-modern-permission-folder { grid-template-columns:1fr; }.users-permission-environment-tabs { width:100%; }.users-permission-environment-list { flex:1; overflow:hidden; }.users-permission-environment-chip { max-width:calc(100vw - 120px); overflow:hidden; text-overflow:ellipsis; } }
.permission-section-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: .8rem;
}
.permission-section-head h3 { margin: 0 0 .2rem; font-size: 1rem; }
.permission-section-head p { margin: 0; color: var(--text-dim); font-size: .78rem; }
.permission-clear { flex-shrink: 0; }

.permission-tip {
  display: flex;
  align-items: flex-start;
  gap: .55rem;
  margin-bottom: .9rem;
  padding: .7rem .8rem;
  border: 1px solid var(--primary-border-tint);
  border-radius: 9px;
  background: var(--primary-tint);
  color: var(--text);
}
.permission-tip > span { color: var(--primary); font-weight: 700; }
.permission-tip p { margin: 0; font-size: .75rem; line-height: 1.45; }

.permission-columns {
  display: grid;
  grid-template-columns: repeat(4, minmax(195px, 1fr));
  gap: .65rem;
  overflow-x: auto;
  padding-bottom: .25rem;
}

.permission-column {
  min-width: 195px;
  min-height: 420px;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg);
  overflow: hidden;
}
.permission-column-head { padding: .7rem; border-bottom: 1px solid var(--border); background: var(--bg-card); }
.permission-column-title { display: flex; align-items: center; gap: .38rem; margin-bottom: .55rem; font-size: .78rem; font-weight: 700; }
.permission-level-number {
  width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--primary-tint-strong);
  color: var(--primary);
  font-size: .68rem;
}
.permission-total-badge {
  margin-left: auto;
  min-width: 20px;
  padding: .05rem .38rem;
  text-align: center;
  border-radius: 999px;
  background: var(--primary);
  color: var(--primary-ink);
  font-size: .64rem;
}
.permission-column-search {
  display: flex;
  align-items: center;
  gap: .35rem;
  padding: .42rem .5rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text-dim);
}
.permission-column-search:focus-within { border-color: var(--accent); }
.permission-column-search input { width: 100%; min-width: 0; border: none; outline: none; background: none; color: var(--text); font-size: .74rem; }
.permission-options { flex: 1; overflow-y: auto; padding: .45rem; }
.permission-column-foot { padding: .48rem .65rem; border-top: 1px solid var(--border); color: var(--text-dim); background: var(--bg-card); font-size: .65rem; }

.permission-option {
  display: flex;
  align-items: center;
  gap: .38rem;
  min-height: 40px;
  margin-bottom: .28rem;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  transition: background .13s ease, border-color .13s ease;
}
.permission-option:last-child { margin-bottom: 0; }
.permission-option:hover { background: var(--bg-elev); }
/* Navegação ativa não deve parecer uma permissão selecionada.
   O item aberto na hierarquia permanece neutro; somente checkbox marcado
   ou acesso herdado recebe preenchimento de cor. */
.permission-option.is-active-nav {
  border-color: var(--border);
  background: transparent;
}
.permission-option.is-active-nav:hover { background: var(--bg-elev); }

/* Acesso explícito: item marcado diretamente pelo administrador. */
.permission-option.is-selected {
  background: var(--primary-tint-strong);
  border-color: var(--primary);
}
.permission-option.is-selected .permission-option-name {
  color: var(--primary);
  font-weight: 700;
}

/* Acesso herdado: ao marcar Cliente, Divisão ou Tema, todos os itens
   abaixo ficam visualmente pintados para deixar evidente o alcance. */
.permission-option.is-inherited,
.permission-option.has-access.is-inherited {
  background: var(--primary-tint);
  border-color: var(--primary-border-tint);
}
.permission-option.is-inherited .permission-option-name {
  color: var(--primary);
  font-weight: 650;
}
.permission-option.is-inherited .permission-option-count,
.permission-option.is-inherited .permission-option-arrow {
  color: var(--primary);
}
.permission-option.is-inherited .permission-option-name::after {
  content: " incluído";
  margin-left: .35rem;
  color: var(--primary);
  font-size: .58rem;
  font-weight: 700;
  opacity: .82;
}

/* Quando o item herdado também é o caminho atualmente aberto, mantém
   o destaque de navegação sem perder a indicação de acesso. */
.permission-option.is-active-nav.is-inherited {
  box-shadow: inset 3px 0 0 var(--primary);
}

.permission-checkbox {
  width: 31px;
  min-width: 31px;
  align-self: stretch;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.permission-checkbox input {
  width: 15px;
  height: 15px;
  accent-color: var(--primary);
  cursor: pointer;
}
.permission-checkbox input:disabled { cursor: default; }
.permission-nav-placeholder { width: 31px; min-width: 31px; text-align: center; color: var(--border); }

.permission-option-main {
  min-width: 0;
  flex: 1;
  align-self: stretch;
  display: flex;
  align-items: center;
  gap: .35rem;
  padding: .48rem .52rem .48rem .1rem;
  border: none;
  background: none;
  color: var(--text);
  text-align: left;
  font: inherit;
  cursor: pointer;
}
.permission-option-main-static { cursor: default; }
.permission-option-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .74rem; }
.permission-option-count { color: var(--text-dim); font-size: .62rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 999px; padding: .02rem .35rem; }
.permission-option-arrow { color: var(--text-dim); font-size: 1rem; line-height: 1; }
.permission-option-dashboard { cursor: pointer; }
.permission-option-dashboard .permission-option-main { padding-left: .1rem; }
.permission-option-nav-only .permission-option-name { color: var(--text-dim); font-style: italic; }

.permission-summary {
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: .8rem;
  margin-top: .8rem;
  padding: .75rem .85rem;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg-elev);
}
.permission-summary-main { min-width: 0; flex: 1; }
.permission-summary-main > strong { display: block; margin-bottom: .45rem; font-size: .72rem; }
.permission-summary-path { display: flex; align-items: center; gap: .35rem; flex-wrap: wrap; color: var(--text-dim); font-size: .7rem; }
.permission-path-chip { padding: .25rem .48rem; border: 1px solid var(--border); border-radius: 7px; background: var(--bg-card); color: var(--text); }
.permission-path-sep { color: var(--text-dim); }
.permission-summary-total {
  min-width: 125px;
  display: grid;
  grid-template-columns: auto auto;
  align-content: center;
  column-gap: .45rem;
  padding-left: .85rem;
  border-left: 1px solid var(--border);
}
.permission-summary-total span { grid-column: 1 / -1; color: var(--text-dim); font-size: .64rem; }
.permission-summary-total strong { font-size: 1.45rem; line-height: 1; color: var(--text); }
.permission-summary-total small { align-self: end; color: var(--text-dim); font-size: .62rem; }

.permission-save-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-top: .8rem;
}
.permission-save-note { color: var(--text-dim); font-size: .68rem; line-height: 1.4; }
.permission-save-btn { min-width: 150px; justify-content: center; }

@media (max-width: 1180px) {
  .users-admin-shell { grid-template-columns: 280px minmax(0, 1fr); }
  .permission-columns { grid-template-columns: repeat(4, minmax(210px, 1fr)); }
}

@media (max-width: 900px) {
  .users-admin-topbar { flex-direction: column; }
  .users-admin-top-actions { width: 100%; }
  .users-help-card { flex: 1; min-width: 0; }
  .users-admin-shell { grid-template-columns: 1fr; }
  .users-directory { min-height: 0; }
  .users-directory-list { max-height: 300px; }
  .user-profile-grid { grid-template-columns: 1fr; }
  .permission-columns { grid-template-columns: repeat(4, minmax(225px, 1fr)); }
}

@media (max-width: 640px) {
  .users-admin-top-actions { flex-direction: column; }
  .users-new-btn { width: 100%; }
  .user-detail-head,
  .users-permission-environment,
  .permission-section-head,
  .permission-save-row,
  .permission-summary { flex-direction: column; align-items: stretch; }
  .users-permission-environment-list { justify-content: flex-start; }
  .users-permission-environment-empty { text-align: left; }
  .permission-summary-total { border-left: none; border-top: 1px solid var(--border); padding: .7rem 0 0; }
  .permission-save-btn { width: 100%; }
}

/* ============================================================
   Botoes outline — comportamento consistente nos temas claro/escuro
   ============================================================ */
.btn-outline {
  background: var(--bg-card);
  color: var(--text);
  border-color: var(--border);
}
.btn-outline:hover {
  background: var(--bg-elev);
  color: var(--text);
  border-color: var(--accent);
}

/* ============================================================
   Visao geral de Usuarios
   ============================================================ */
.users-overview-page { width: 100%; }
.users-overview-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.15rem;
}
.users-overview-heading { margin-bottom: 0; }
.users-overview-heading p { margin-bottom: 0; }
.users-overview-actions { display: flex; align-items: center; gap: .65rem; flex-shrink: 0; }
.users-overview-actions .btn { justify-content: center; white-space: nowrap; }

.users-kpi-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .75rem;
  margin-bottom: .85rem;
}
.users-kpi-card {
  min-width: 0;
  min-height: 106px;
  display: flex;
  align-items: center;
  gap: .8rem;
  padding: .9rem 1rem;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 3px 14px rgba(0,0,0,.035);
}
.users-kpi-card > div:last-child { min-width: 0; }
.users-kpi-card span,
.users-kpi-card small { display: block; color: var(--text-dim); }
.users-kpi-card span { margin-bottom: .25rem; font-size: .72rem; }
.users-kpi-card strong { display: block; margin-bottom: .18rem; font-size: 1.55rem; line-height: 1; }
.users-kpi-card small { font-size: .66rem; }
.users-kpi-warning { border-color: rgba(245, 165, 36, .38); }
.users-kpi-icon {
  width: 48px;
  height: 48px;
  flex: 0 0 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
}
.tone-blue { color: var(--accent); background: rgba(79, 140, 255, .12); }
.tone-green { color: #45b868; background: rgba(69, 184, 104, .12); }
.tone-purple { color: #8b5cf6; background: rgba(139, 92, 246, .12); }
.tone-orange { color: #f59e0b; background: rgba(245, 158, 11, .12); }
.tone-cyan { color: #18a9bf; background: rgba(24, 169, 191, .12); }

.users-overview-mid-grid {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.05fr) minmax(300px, 1.2fr);
  gap: .75rem;
  margin-bottom: .75rem;
}
.users-overview-bottom-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(330px, .9fr);
  gap: .75rem;
  margin-bottom: .75rem;
}
.users-overview-panel { min-width: 0; padding: 1rem; }
.users-panel-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .7rem;
  margin-bottom: .85rem;
}
.users-panel-head h3 { margin: 0 0 .18rem; font-size: .9rem; }
.users-panel-head p { margin: 0; color: var(--text-dim); font-size: .68rem; line-height: 1.4; }

.users-donut-layout {
  min-height: 185px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
}
.users-donut {
  position: relative;
  width: 145px;
  height: 145px;
  flex: 0 0 145px;
  border-radius: 50%;
}
.users-profile-donut {
  background: conic-gradient(var(--accent) 0 var(--split), #8b5cf6 var(--split) 100%);
}
.users-permission-donut {
  background: conic-gradient(
    var(--accent) 0 var(--c1),
    #45b868 var(--c1) var(--c2),
    #f59e0b var(--c2) var(--c3),
    #8b5cf6 var(--c3) 100%
  );
}
.users-donut::after {
  content: "";
  position: absolute;
  inset: 26px;
  border-radius: 50%;
  background: var(--bg-card);
  border: 1px solid var(--border);
}
.users-donut-center {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.users-donut-center strong { font-size: 1.35rem; line-height: 1; }
.users-donut-center span { margin-top: .25rem; color: var(--text-dim); font-size: .62rem; }

.users-chart-legend { display: flex; flex-direction: column; gap: .7rem; min-width: 135px; }
.users-chart-legend > div {
  display: grid;
  grid-template-columns: 9px minmax(0, 1fr) auto;
  align-items: center;
  column-gap: .45rem;
  row-gap: .08rem;
  font-size: .68rem;
}
.users-chart-legend span { min-width: 0; }
.users-chart-legend strong { font-size: .72rem; }
.users-chart-legend small { grid-column: 2 / 4; color: var(--text-dim); font-size: .6rem; }
.users-chart-legend-compact { gap: .5rem; }
.legend-dot { width: 9px; height: 9px; border-radius: 50%; }
.legend-admin, .legend-client { background: var(--accent); }
.legend-viewer, .legend-none { background: #8b5cf6; }
.legend-structure { background: #45b868; }
.legend-dashboard { background: #f59e0b; }

.users-alert-count {
  min-width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: rgba(255, 93, 93, .12);
  color: var(--danger);
  font-size: .7rem;
  font-weight: 700;
}
.users-no-access-list { display: flex; flex-direction: column; gap: .45rem; }
.users-no-access-item {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  align-items: center;
  gap: .55rem;
  padding: .55rem .6rem;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--bg-elev);
  transition: border-color .15s ease, transform .08s ease;
}
.users-no-access-item:hover { border-color: var(--accent); transform: translateY(-1px); }
.users-mini-avatar,
.users-table-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--primary-tint-strong);
  color: var(--primary);
  border: 1px solid var(--primary-border-tint);
  font-weight: 700;
}
.users-mini-avatar { width: 34px; height: 34px; font-size: .68rem; }
.users-no-access-main { min-width: 0; }
.users-no-access-main strong,
.users-no-access-main small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.users-no-access-main strong { font-size: .72rem; }
.users-no-access-main small { margin-top: .1rem; color: var(--text-dim); font-size: .6rem; }
.users-no-access-meta { text-align: right; }
.users-no-access-meta b,
.users-no-access-meta small { display: block; }
.users-no-access-meta b {
  width: fit-content;
  margin-left: auto;
  padding: .12rem .4rem;
  border-radius: 999px;
  background: rgba(255, 93, 93, .12);
  color: var(--danger);
  font-size: .58rem;
  font-weight: 600;
}
.users-no-access-meta small { margin-top: .2rem; color: var(--text-dim); font-size: .56rem; }
.users-empty-good { min-height: 145px; display: flex; align-items: center; justify-content: center; gap: .65rem; text-align: left; color: #45b868; }
.users-empty-good > span { width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: rgba(69,184,104,.12); font-weight: 800; }
.users-empty-good strong { display: block; color: var(--text); font-size: .78rem; }
.users-empty-good small { display: block; margin-top: .15rem; color: var(--text-dim); font-size: .64rem; }

.users-overview-table-wrap { overflow-x: auto; }
.users-overview-table { width: 100%; border-collapse: collapse; font-size: .7rem; }
.users-overview-table th { text-align: left; padding: .48rem .5rem; color: var(--text-dim); border-bottom: 1px solid var(--border); font-size: .62rem; font-weight: 600; }
.users-overview-table td { padding: .5rem; border-bottom: 1px solid var(--border); vertical-align: middle; }
.users-overview-table tbody tr:last-child td { border-bottom: none; }
.users-overview-table tbody tr:hover { background: var(--bg-elev); }
.users-table-user { display: flex; align-items: center; gap: .45rem; min-width: 130px; }
.users-table-avatar { width: 28px; height: 28px; flex: 0 0 28px; font-size: .58rem; }
.users-table-user strong,
.users-table-user small { display: block; }
.users-table-user strong { font-size: .68rem; }
.users-table-user small { margin-top: .08rem; color: var(--text-dim); font-size: .57rem; }
.users-date-cell { color: var(--text-dim); white-space: nowrap; }
.users-dashboard-chip {
  display: inline-block;
  max-width: 250px;
  padding: .25rem .45rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  border-radius: 999px;
  background: var(--primary-tint);
  color: var(--primary);
  font-weight: 600;
}

.users-top-dash-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.users-top-dash-list li {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr) 38px;
  align-items: center;
  gap: .55rem;
  padding: .55rem 0;
  border-bottom: 1px solid var(--border);
}
.users-top-dash-list li:last-child { border-bottom: none; }
.users-rank { color: var(--text-dim); font-size: .65rem; font-weight: 700; text-align: center; }
.users-top-dash-main { min-width: 0; }
.users-top-dash-main > a { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .68rem; font-weight: 600; }
.users-access-bar { height: 4px; margin-top: .35rem; border-radius: 999px; background: var(--bg-elev); overflow: hidden; }
.users-access-bar span { display: block; height: 100%; border-radius: inherit; background: var(--accent); }
.users-top-dash-list li > strong { text-align: right; color: var(--text-dim); font-size: .65rem; }

.users-events-panel { margin-bottom: .2rem; }
.users-events-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(175px, 1fr));
  gap: .45rem;
}
.users-event-item {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .6rem;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--bg-elev);
}
.users-event-icon {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: var(--accent);
  background: rgba(79,140,255,.12);
  font-weight: 800;
}
.users-event-icon.event-usuario_criado { color: #45b868; background: rgba(69,184,104,.12); }
.users-event-icon.event-usuario_excluido { color: var(--danger); background: rgba(255,93,93,.12); }
.users-event-icon.event-permissoes_atualizadas { color: var(--accent); background: rgba(79,140,255,.12); }
.users-event-item > div:last-child { min-width: 0; }
.users-event-item strong,
.users-event-item span,
.users-event-item small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.users-event-item strong { font-size: .66rem; }
.users-event-item span { margin-top: .08rem; font-size: .65rem; }
.users-event-item small { margin-top: .12rem; color: var(--text-dim); font-size: .56rem; }
.users-empty-line { margin: .75rem 0 .25rem; color: var(--text-dim); font-size: .7rem; }

@media (max-width: 1250px) {
  .users-kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .users-overview-mid-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .users-no-access-panel { grid-column: 1 / -1; }
}

@media (max-width: 950px) {
  .users-overview-head { flex-direction: column; }
  .users-overview-actions { width: 100%; }
  .users-overview-actions .btn { flex: 1; }
  .users-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .users-overview-mid-grid,
  .users-overview-bottom-grid { grid-template-columns: 1fr; }
  .users-no-access-panel { grid-column: auto; }
}

@media (max-width: 620px) {
  .users-overview-actions { flex-direction: column; }
  .users-overview-actions .btn { width: 100%; }
  .users-kpi-grid { grid-template-columns: 1fr; }
  .users-donut-layout { flex-direction: column; }
  .users-no-access-item { grid-template-columns: 34px minmax(0, 1fr); }
  .users-no-access-meta { grid-column: 2; text-align: left; }
  .users-no-access-meta b { margin-left: 0; }
}

/* ============================================================
   Home: paginação discreta dos favoritos
   Mantém apenas uma linha de cards por página.
   ============================================================ */
.home-favoritos-grade {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.favoritos-paginacao {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .8rem;
  margin-top: .9rem;
  min-height: 34px;
}

.favoritos-paginacao[hidden] { display: none; }

.favoritos-paginacao-btn {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--bg-card);
  color: var(--text-dim);
  cursor: pointer;
  transition: color .16s ease, border-color .16s ease, background .16s ease, transform .08s ease;
}

.favoritos-paginacao-btn:hover:not(:disabled) {
  color: var(--primary);
  border-color: var(--primary);
  background: var(--primary-tint);
}

.favoritos-paginacao-btn:active:not(:disabled) { transform: scale(.95); }
.favoritos-paginacao-btn:disabled { opacity: .35; cursor: default; }

.favoritos-paginacao-info {
  min-width: 92px;
  text-align: center;
  color: var(--text-dim);
  font-size: .78rem;
  font-variant-numeric: tabular-nums;
}

.favoritos-paginacao-info strong {
  color: var(--text);
  font-weight: 600;
}

@media (max-width: 1179px) {
  .home-favoritos-grade { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 899px) {
  .home-favoritos-grade { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 619px) {
  .home-favoritos-grade { grid-template-columns: minmax(0, 1fr); }
}

/* ============================================================
   Cadastro de Dashboard — fluxo em 5 etapas
   ============================================================ */
.cadastro-dashboard-page {
  width: 100%;
  max-width: 1420px;
  margin: 0 auto;
}

.cadastro-dashboard-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.2rem;
}
.cadastro-dashboard-head h1 { margin: 0 0 .25rem; font-size: 1.8rem; }
.cadastro-dashboard-head p { margin: 0; color: var(--text-dim); }
.cadastro-cancel-top { flex-shrink: 0; }

.cadastro-stepper {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .45rem;
  padding: .8rem;
  margin-bottom: 1rem;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow-x: auto;
}
.cadastro-step {
  position: relative;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  padding: .55rem .5rem;
  border-radius: 10px;
  color: var(--text-dim);
  text-align: center;
  transition: background .18s ease, color .18s ease;
}
.cadastro-step:not(:last-child)::after {
  content: "";
  position: absolute;
  right: -.38rem;
  width: .32rem;
  height: 1px;
  background: var(--border);
}
.cadastro-step > span {
  width: 25px;
  height: 25px;
  flex: 0 0 25px;
  display: grid;
  place-items: center;
  border: 1px solid var(--border);
  border-radius: 50%;
  font-size: .72rem;
  font-weight: 700;
  background: var(--bg-elev);
  color: var(--text-dim);
}
.cadastro-step strong { flex: 1; min-width: 0; font-size: .75rem; line-height: 1.25; font-weight: 600; text-align: center; }
.cadastro-step:hover { color: var(--text); background: var(--bg-elev); }
.cadastro-step.ativo { color: var(--primary); background: var(--primary-tint); }
.cadastro-step.ativo > span { background: var(--primary); border-color: var(--primary); color: var(--primary-ink); }

.cadastro-dashboard-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 310px;
  gap: 1rem;
  align-items: start;
}
.cadastro-dashboard-form { display: flex; flex-direction: column; gap: .9rem; }

.cadastro-etapa {
  scroll-margin-top: 82px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.2rem;
}
.cadastro-etapa-title {
  display: flex;
  align-items: flex-start;
  gap: .7rem;
  padding-bottom: .85rem;
  margin-bottom: .95rem;
  border-bottom: 1px solid var(--border);
}
.cadastro-etapa-num {
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--primary);
  color: var(--primary-ink);
  font-size: .78rem;
  font-weight: 700;
}
.cadastro-etapa-title h2 { margin: 0 0 .15rem; font-size: 1rem; }
.cadastro-etapa-title p { margin: 0; color: var(--text-dim); font-size: .78rem; }

.cadastro-fields,
.cadastro-hierarchy-grid,
.cadastro-options-grid {
  display: grid;
  gap: .85rem;
}
.cadastro-fields { grid-template-columns: 1fr; }
.cadastro-hierarchy-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  align-items: end;
}
.cadastro-hierarchy-grid > label { min-width: 0; }
.cadastro-hierarchy-grid > label > select { min-height: 42px; }
.cadastro-options-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.cadastro-dashboard-form label,
.cadastro-structure-admin label {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  color: var(--text-dim);
  font-size: .78rem;
  font-weight: 500;
}
.cadastro-dashboard-form input,
.cadastro-dashboard-form select,
.cadastro-dashboard-form textarea,
.cadastro-structure-admin input,
.cadastro-structure-admin select,
.cadastro-structure-admin textarea {
  width: 100%;
  padding: .68rem .75rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 9px;
  color: var(--text);
  font: inherit;
  outline: none;
  transition: border-color .18s ease, box-shadow .18s ease;
}
.cadastro-dashboard-form textarea { resize: vertical; min-height: 100px; }
.cadastro-dashboard-form input:focus,
.cadastro-dashboard-form select:focus,
.cadastro-dashboard-form textarea:focus,
.cadastro-structure-admin input:focus,
.cadastro-structure-admin select:focus,
.cadastro-structure-admin textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(79,140,255,.08);
}
.cadastro-dashboard-form select:disabled { opacity: .55; cursor: not-allowed; }
.field-optional { font-weight: 400; color: var(--text-dim); opacity: .8; }
.char-count { align-self: flex-end; margin-top: -.2rem; color: var(--text-dim); font-size: .68rem; }
.cadastro-dashboard-form small { color: var(--text-dim); font-size: .7rem; line-height: 1.35; }

.estrutura-preview {
  margin-top: .85rem;
  padding: .9rem 1rem;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 10px;
}
.estrutura-preview > strong { font-size: .75rem; }
.estrutura-preview-path {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .5rem;
  margin: .7rem 0 .45rem;
  color: var(--text);
  font-size: .8rem;
}
.estrutura-preview-path span {
  padding: .32rem .55rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 7px;
}
.estrutura-preview-path b { color: var(--text-dim); font-weight: 400; }
.estrutura-preview p { margin: 0; color: var(--text-dim); font-size: .72rem; }

.cadastro-info-box,
.cadastro-warning-box {
  display: flex;
  align-items: flex-start;
  gap: .55rem;
  padding: .75rem .85rem;
  border-radius: 9px;
  font-size: .74rem;
  line-height: 1.4;
}
.cadastro-info-box { background: rgba(79,140,255,.09); border: 1px solid rgba(79,140,255,.18); color: var(--accent); }
.cadastro-info-box div { display: flex; flex-direction: column; gap: .12rem; }
.cadastro-info-box small { color: var(--text-dim); }
.cadastro-warning-box { margin-top: .8rem; background: var(--primary-tint); border: 1px solid var(--primary-border-tint); color: var(--text); }

.switch-field {
  flex-direction: row !important;
  align-items: center;
  justify-content: space-between;
  gap: 1rem !important;
  min-height: 64px;
  padding: .7rem .8rem;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--bg-elev);
}
.switch-field > span:first-child { display: flex; flex-direction: column; gap: .18rem; color: var(--text); }
.switch-field > span:first-child small { font-weight: 400; }
.switch-control { position: relative; flex: 0 0 auto; width: 38px; height: 22px; }
.switch-control input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.switch-track {
  position: absolute;
  inset: 0;
  border-radius: 999px;
  background: var(--border);
  cursor: pointer;
  transition: background .18s ease;
}
.switch-track::after {
  content: "";
  position: absolute;
  width: 16px;
  height: 16px;
  left: 3px;
  top: 3px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,.22);
  transition: transform .18s ease;
}
.switch-control input:checked + .switch-track { background: var(--accent); }
.switch-control input:checked + .switch-track::after { transform: translateX(16px); }

.cadastro-permission-note {
  padding: .72rem .8rem;
  border: 1px dashed var(--border);
  border-radius: 9px;
  background: var(--bg);
}
.cadastro-permission-note strong { display: block; margin-bottom: .25rem; font-size: .78rem; }
.cadastro-permission-note p { margin: 0; color: var(--text-dim); font-size: .72rem; line-height: 1.45; }
.cadastro-permission-note a { color: var(--accent); font-weight: 600; }

.review-card {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .55rem .9rem;
  padding: .85rem;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 10px;
}
.review-card > div {
  display: grid;
  grid-template-columns: minmax(110px, .8fr) minmax(0, 1.2fr);
  gap: .5rem;
  align-items: center;
  padding: .45rem .5rem;
  border-bottom: 1px solid var(--border);
}
.review-card > div:nth-last-child(-n+2) { border-bottom: none; }
.review-card span { color: var(--text-dim); font-size: .7rem; }
.review-card strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .74rem; }
.review-status { color: var(--text-dim); }
.review-status.ok { color: #4fc882; }

.cadastro-publish-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .7rem;
  padding-top: .15rem;
}
.cadastro-publish-btn { gap: .45rem; min-width: 190px; justify-content: center; }

.cadastro-summary-side { position: sticky; top: 78px; display: flex; flex-direction: column; gap: .8rem; }
.cadastro-summary-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem;
}
.cadastro-summary-card h3 { margin: 0 0 .25rem; font-size: .95rem; }
.cadastro-summary-card > p { margin: 0 0 .8rem; color: var(--text-dim); font-size: .72rem; line-height: 1.4; }
.summary-list { display: flex; flex-direction: column; }
.summary-list > div {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: .55rem;
  padding: .62rem .1rem;
  border-bottom: 1px solid var(--border);
}
.summary-list > div:last-child { border-bottom: 0; }
.summary-list span { color: var(--text-dim); font-size: .7rem; }
.summary-list strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .72rem; font-weight: 600; }
.summary-pill { width: fit-content; padding: .1rem .45rem; border-radius: 999px; color: var(--text-dim); background: var(--bg-elev); }
.summary-pill.ok { color: #4fc882; background: rgba(79,200,130,.12); }

.cadastro-tips-card ul { list-style: none; margin: .7rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .7rem; }
.cadastro-tips-card li { position: relative; padding-left: 1.25rem; color: var(--text-dim); font-size: .72rem; line-height: 1.45; }
.cadastro-tips-card li::before { content: "✓"; position: absolute; left: 0; color: var(--accent); font-weight: 700; }

.cadastro-structure-admin {
  margin-top: 1.15rem;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
}
.cadastro-structure-admin > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.1rem;
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.cadastro-structure-admin > summary::-webkit-details-marker { display: none; }
.cadastro-structure-admin > summary > div { display: flex; flex-direction: column; gap: .18rem; }
.cadastro-structure-admin > summary strong { font-size: .9rem; }
.cadastro-structure-admin > summary span { color: var(--text-dim); font-size: .72rem; }
.cadastro-structure-admin > summary .chevron { color: var(--text-dim); transition: transform .2s ease; }
.cadastro-structure-admin[open] > summary .chevron { transform: rotate(90deg); }
.cadastro-structure-body { padding: 0 1rem 1rem; border-top: 1px solid var(--border); }
.cadastro-structure-create-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .85rem; margin-top: .9rem; }
.cadastro-structure-create-grid .panel { padding: 1rem; }
.cadastro-existing-structure { margin-top: .9rem; }
.cadastro-existing-title { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .6rem; }
.cadastro-existing-title h3 { margin: 0; font-size: .9rem; }
.cadastro-existing-title span { color: var(--text-dim); font-size: .72rem; }
.edit-option-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.cadastro-empty-first { margin-bottom: 1rem; }

@media (max-width: 1180px) {
  .cadastro-dashboard-layout { grid-template-columns: 1fr; }
  .cadastro-summary-side { position: static; display: grid; grid-template-columns: 1fr 1fr; }
}
@media (max-width: 900px) {
  .cadastro-step { min-width: 170px; justify-content: flex-start; text-align: left; }
  .cadastro-step strong { text-align: left; }
  .cadastro-dashboard-head { flex-direction: column; }
  .cadastro-cancel-top { display: none; }
  .cadastro-hierarchy-grid,
  .cadastro-options-grid,
  .cadastro-structure-create-grid { grid-template-columns: 1fr; }
  .review-card { grid-template-columns: 1fr; }
  .review-card > div:nth-last-child(-n+2) { border-bottom: 1px solid var(--border); }
  .review-card > div:last-child { border-bottom: none; }
  .cadastro-summary-side { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  .cadastro-etapa { padding: .95rem; }
  .cadastro-dashboard-head h1 { font-size: 1.5rem; }
  .cadastro-publish-actions { flex-direction: column-reverse; align-items: stretch; }
  .cadastro-publish-actions .btn { width: 100%; justify-content: center; }
  .review-card > div { grid-template-columns: 1fr; gap: .2rem; }
  .edit-option-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   Cadastro de Dashboard — gerenciamento no topo e 2 niveis explicitos
   ============================================================ */
.cadastro-structure-admin-top {
  margin: 0 0 1rem;
}
.cadastro-structure-admin-top > summary {
  background: var(--bg-card);
}
.cadastro-structure-admin-top[open] > summary {
  background: var(--bg-elev);
}
.cadastro-structure-create-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.structure-create-card {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: .8rem;
}
.structure-create-card > .form,
.structure-create-card > .form-inline {
  margin-top: auto;
}
.structure-create-head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .22rem;
}
.structure-create-head h3 {
  margin: 0;
  font-size: .95rem;
}
.structure-create-head p {
  margin: 0;
  color: var(--text-dim);
  font-size: .7rem;
  line-height: 1.4;
}
.structure-level-badge {
  display: inline-flex;
  align-items: center;
  min-height: 21px;
  padding: .08rem .48rem;
  margin-bottom: .18rem;
  border: 1px solid var(--primary-border-tint);
  border-radius: 999px;
  background: var(--primary-tint);
  color: var(--primary);
  font-size: .62rem;
  font-weight: 700;
}
.structure-level-badge-theme {
  border-color: rgba(139, 92, 246, .25);
  background: rgba(139, 92, 246, .1);
  color: #8b5cf6;
}
.structure-create-inline {
  align-items: stretch;
}
.structure-create-inline .btn {
  justify-content: center;
}
.structure-create-card .form .btn {
  width: 100%;
  justify-content: center;
}

@media (max-width: 1180px) {
  .cadastro-structure-create-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .structure-create-theme {
    grid-column: 1 / -1;
  }
}
@media (max-width: 900px) {
  .cadastro-structure-create-grid {
    grid-template-columns: 1fr;
  }
  .structure-create-theme {
    grid-column: auto;
  }
}

/* ============================================================
   Cadastro de Dashboard — layout simples e objetivo
   ============================================================ */
.cadastro-simple-page {
  position: relative;
  max-width: 1500px;
}
.cadastro-simple-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}
.cadastro-simple-head h1 { margin: 0 0 .25rem; font-size: 1.75rem; }
.cadastro-simple-head p { margin: 0; color: var(--text-dim); font-size: .9rem; }

.cadastro-simple-card {
  margin-right: 270px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.cadastro-simple-stepper {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-bottom: 1px solid var(--border);
  padding: 1rem 1.25rem 0;
}
.cadastro-simple-step {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .4rem;
  min-width: 0;
  padding: 0 .75rem .95rem;
  color: var(--text-dim);
  font-size: .82rem;
  text-align: center;
}
.cadastro-simple-step::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 2px;
  background: transparent;
}
.cadastro-simple-step.ativo { color: var(--primary); }
.cadastro-simple-step.ativo::after { background: var(--primary); }
.cadastro-simple-step span {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: var(--bg-elev);
  color: var(--text-dim);
  font-weight: 700;
}
.cadastro-simple-step.ativo span {
  background: var(--primary);
  border-color: var(--primary);
  color: var(--primary-ink);
}
.cadastro-simple-step strong { font-size: .8rem; white-space: nowrap; }

.cadastro-simple-form { padding: 1.25rem; }
.cadastro-simple-columns {
  display: grid;
  grid-template-columns: minmax(0, .95fr) minmax(0, 1.1fr) minmax(0, .95fr);
  gap: 0;
}
.cadastro-simple-section {
  min-width: 0;
  padding: .2rem 1.35rem 1rem;
  border-right: 1px solid var(--border);
}
.cadastro-simple-section:first-child { padding-left: 0; }
.cadastro-simple-section:last-child { padding-right: 0; border-right: 0; }
.cadastro-simple-section-title {
  display: flex;
  align-items: flex-start;
  gap: .45rem;
  margin-bottom: 1rem;
}
.cadastro-simple-section-title > span { font-weight: 800; font-size: .95rem; color: var(--text); }
.cadastro-simple-section-title h2 { margin: 0; font-size: .95rem; }
.cadastro-simple-section-title p { margin: .16rem 0 0; color: var(--text-dim); font-size: .68rem; }
.cadastro-simple-section > label {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: .35rem;
  margin-bottom: .9rem;
  color: var(--text-dim);
  font-size: .72rem;
  font-weight: 600;
}
.cadastro-simple-section input,
.cadastro-simple-section select,
.cadastro-simple-section textarea {
  width: 100%;
  min-width: 0;
  padding: .62rem .7rem;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 9px;
  color: var(--text);
  font: inherit;
  font-size: .84rem;
  font-weight: 400;
  outline: none;
}
.cadastro-simple-section textarea { min-height: 142px; resize: vertical; }
.cadastro-simple-section input:focus,
.cadastro-simple-section select:focus,
.cadastro-simple-section textarea:focus { border-color: var(--accent); }
.cadastro-simple-section select:disabled { opacity: .55; cursor: not-allowed; }
.cadastro-simple-section small { color: var(--text-dim); font-size: .64rem; font-weight: 400; }
.cadastro-simple-section .char-count {
  position: absolute;
  right: .45rem;
  bottom: .45rem;
  color: var(--text-dim);
  font-size: .62rem;
  font-weight: 400;
}
.cadastro-simple-order input { max-width: 150px; }
.cadastro-simple-note {
  display: flex;
  align-items: flex-start;
  gap: .5rem;
  margin-top: 1.15rem;
  padding: .75rem;
  border: 1px solid var(--primary-border-tint);
  border-radius: 9px;
  background: var(--primary-tint);
  color: var(--text-dim);
  font-size: .68rem;
  line-height: 1.45;
}
.cadastro-simple-note svg { flex-shrink: 0; color: var(--primary); margin-top: .05rem; }
.cadastro-simple-note strong { color: var(--text); }
.cadastro-simple-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-top: 1.15rem;
  margin-top: .2rem;
  border-top: 1px solid var(--border);
}
.cadastro-simple-publish { min-width: 230px; justify-content: center; }

.cadastro-simple-summary {
  position: absolute;
  top: 78px;
  right: 0;
  width: 245px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1rem;
}
.cadastro-simple-summary h3 { margin: 0 0 .7rem; font-size: .95rem; }
.cadastro-simple-summary-item {
  display: flex;
  flex-direction: column;
  gap: .22rem;
  padding: .72rem 0;
  border-bottom: 1px solid var(--border);
}
.cadastro-simple-summary-item:last-child { border-bottom: 0; }
.cadastro-simple-summary-item span { color: var(--text-dim); font-size: .68rem; }
.cadastro-simple-summary-item strong { font-size: .78rem; line-height: 1.35; overflow-wrap: anywhere; }
.cadastro-simple-empty { max-width: 760px; margin: 2rem auto; }
.cadastro-simple-empty .btn { margin-top: .8rem; }

/* Terceiro nivel de subpasta na arvore lateral */
.nav-arvore-subnivel { margin: .1rem 0 .1rem .45rem; }
.nav-arvore-subnivel-head {
  display: flex;
  align-items: center;
  gap: .35rem;
  padding: .35rem .45rem;
  cursor: pointer;
  list-style: none;
  border-radius: 6px;
  color: var(--text-dim);
  font-size: .72rem;
}
.nav-arvore-subnivel-head::-webkit-details-marker { display: none; }
.nav-arvore-subnivel-head:hover { background: var(--bg-card); color: var(--text); }
.nav-arvore-subnivel-head .chevron { transition: transform .2s ease; }
.nav-arvore-subnivel[open] > .nav-arvore-subnivel-head .chevron { transform: rotate(90deg); }
.nav-arvore-subnivel-head span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-arvore-subnivel-lista { padding-left: .55rem; }
.nav-arvore-item-subnivel { padding-left: .65rem; font-size: .7rem; }

/* Terceiro nivel na Administracao de Dashboard */
.cadastro-structure-create-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.structure-create-theme,
.structure-create-sublevel { grid-column: auto; }
.sublevel-block {
  margin: .55rem 0 0 .7rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
}
.sublevel-head {
  display: flex;
  align-items: center;
  gap: .45rem;
  padding: .5rem .6rem;
  cursor: pointer;
  list-style: none;
  background: var(--bg-elev);
  color: var(--text-dim);
  font-size: .78rem;
}
.sublevel-head::-webkit-details-marker { display: none; }
.sublevel-head .chevron { transition: transform .2s ease; }
.sublevel-block[open] > .sublevel-head .chevron { transform: rotate(90deg); }
.sublevel-name { flex: 1; color: var(--text); font-weight: 600; }
.sublevel-body { padding: .65rem; }

@media (max-width: 1250px) {
  .cadastro-simple-card { margin-right: 0; }
  .cadastro-simple-summary {
    position: static;
    width: auto;
    margin-top: 1rem;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .6rem;
  }
  .cadastro-simple-summary h3 { grid-column: 1 / -1; }
  .cadastro-simple-summary-item { border: 1px solid var(--border); border-radius: 9px; padding: .65rem; }
}
@media (max-width: 980px) {
  .cadastro-simple-columns { grid-template-columns: 1fr; }
  .cadastro-simple-section,
  .cadastro-simple-section:first-child,
  .cadastro-simple-section:last-child {
    padding: 1rem 0;
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }
  .cadastro-simple-section:last-child { border-bottom: 0; }
  .cadastro-simple-section textarea { min-height: 110px; }
  .cadastro-simple-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 650px) {
  .cadastro-simple-stepper { padding-left: .5rem; padding-right: .5rem; }
  .cadastro-simple-step { padding-left: .2rem; padding-right: .2rem; }
  .cadastro-simple-step strong { font-size: .7rem; white-space: normal; }
  .cadastro-simple-form { padding: 1rem; }
  .cadastro-simple-actions { flex-direction: column-reverse; align-items: stretch; }
  .cadastro-simple-actions .btn { width: 100%; justify-content: center; }
  .cadastro-simple-publish { min-width: 0; }
  .cadastro-simple-summary { grid-template-columns: 1fr; }
  .cadastro-structure-create-grid { grid-template-columns: 1fr; }
}


/* Cadastro de Dashboard — criacao rapida opcional de estrutura */
.cadastro-quick-structure {
  margin: 0 270px 1rem 0;
  box-shadow: var(--shadow);
}
.cadastro-quick-structure > summary {
  background: var(--bg-card);
}
.cadastro-quick-structure[open] > summary {
  background: var(--bg-elev);
}
.cadastro-quick-structure .cadastro-structure-body {
  background: var(--bg-card);
}
.cadastro-quick-structure .structure-create-card {
  box-shadow: none;
}
.cadastro-quick-structure .manage-empty {
  margin: .2rem 0 0;
}
@media (max-width: 1250px) {
  .cadastro-quick-structure { margin-right: 0; }
}

/* ============================================================
   Administração de Dashboards — layout mestre/detalhe
   Inspirado na Administração de Usuários
   ============================================================ */
.dash-admin-page { width: 100%; }
.dash-admin-page-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem;
  margin-bottom: 1rem;
}
.dash-admin-page-head h1 { margin: 0 0 .25rem; font-size: 1.85rem; }
.dash-admin-page-head p { margin: 0; color: var(--text-dim); }

.dash-admin-global-tools {
  display: grid;
  grid-template-columns: minmax(250px, 1fr) 150px 170px auto;
  align-items: center; gap: .65rem;
  padding: .75rem;
  margin-bottom: 1rem;
}
.dash-admin-global-search { margin: 0; min-width: 0; }
.dash-admin-global-tools > .filtro-input { width: 100%; min-width: 0; max-width: none; }
.dash-admin-tabs {
  display: flex; align-items: center; gap: .35rem;
  padding: .35rem;
  margin-bottom: 1rem;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 12px;
  width: fit-content;
  max-width: 100%;
}
.dash-admin-tab {
  display: inline-flex; align-items: center; gap: .5rem;
  padding: .65rem .9rem;
  border-radius: 9px;
  color: var(--text-dim);
  font-size: .88rem; font-weight: 650;
  white-space: nowrap;
  transition: background .18s ease, color .18s ease, box-shadow .18s ease;
}
.dash-admin-tab:hover { color: var(--text); background: var(--bg-elev); }
.dash-admin-tab.active {
  color: var(--primary);
  background: var(--primary-tint);
  box-shadow: inset 0 0 0 1px var(--primary-border-tint);
}

/* Administração: mesma navegação distribuída usada nas áreas de Acessos. */
.master-admin-tabs {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  width: auto;
  margin: 18px 0;
}
.master-admin-tabs .avisos-tab { min-width: 0; }
.master-admin-tabs .avisos-tab:only-child { grid-column: 1 / -1; }

.dash-admin-shell,
.structure-admin-shell {
  display: grid;
  grid-template-columns: minmax(310px, 370px) minmax(0, 1fr);
  gap: 1.1rem;
  align-items: stretch;
}
.dash-admin-directory,
.structure-admin-tree {
  padding: 0;
  overflow: hidden;
  position: sticky;
  top: 1rem;
  max-height: calc(100vh - 2rem);
  display: flex;
  flex-direction: column;
}
.dash-admin-detail,
.structure-admin-detail { padding: 0; overflow: hidden; min-width: 0; }

.dash-admin-directory-head,
.structure-admin-tree-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem;
  padding: 1.2rem 1.2rem .9rem;
  border-bottom: 1px solid var(--border);
}
.dash-admin-directory-head h3,
.structure-admin-tree-head h3 { margin: 0 0 .2rem; font-size: 1rem; }
.dash-admin-directory-head p,
.structure-admin-tree-head p { margin: 0; color: var(--text-dim); font-size: .82rem; }
.dash-admin-count {
  min-width: 30px; height: 26px; padding: 0 .55rem;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 999px; border: 1px solid var(--border);
  background: var(--bg-elev); color: var(--text-dim); font-size: .76rem; font-weight: 700;
}

.dash-admin-directory-tools { padding: .9rem 1rem; border-bottom: 1px solid var(--border); }
.dash-admin-search, .structure-admin-search { margin: 0 0 .7rem; }
.dash-admin-filter-row { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; }
.dash-admin-filter-row .filtro-input { width: 100%; min-width: 0; max-width: none; }

.dash-admin-directory-list,
.structure-admin-tree-list { overflow-y: auto; flex: 1; min-height: 0; }
.dash-admin-directory-item {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) auto auto 16px;
  align-items: center;
  gap: .7rem;
  padding: .78rem 1rem;
  border-bottom: 1px solid var(--border);
  color: var(--text);
  transition: background .16s ease, border-color .16s ease;
}
.dash-admin-directory-item[hidden] { display: none !important; }
.dash-admin-directory-item:hover { background: var(--bg-elev); }
.dash-admin-directory-item.active {
  background: var(--primary-tint);
  box-shadow: inset 3px 0 0 var(--primary);
}
.dash-admin-item-icon {
  width: 34px; height: 34px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 9px;
  background: var(--primary-tint); color: var(--primary);
  flex-shrink: 0;
}
.dash-admin-item-main { min-width: 0; display: flex; flex-direction: column; gap: .16rem; }
.dash-admin-item-main strong { font-size: .86rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dash-admin-item-main small { color: var(--text-dim); font-size: .72rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dash-admin-item-arrow { color: var(--text-dim); }
.dash-admin-directory-foot {
  padding: .72rem 1rem;
  color: var(--text-dim); font-size: .76rem;
  border-top: 1px solid var(--border);
  background: var(--bg-elev);
}
.dash-admin-no-results { padding: 1rem; }

.dash-admin-detail-head,
.structure-admin-detail-head {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 1.15rem 1.35rem;
  border-bottom: 1px solid var(--border);
  background: var(--bg-card);
}
.dash-admin-detail-identity,
.structure-admin-detail-identity { display: flex; align-items: center; gap: .85rem; min-width: 0; }
.dash-admin-detail-icon,
.structure-admin-big-icon {
  width: 48px; height: 48px;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0; border-radius: 12px;
  color: var(--primary); background: var(--primary-tint);
  border: 1px solid var(--primary-border-tint);
}
.structure-admin-big-icon { font-size: 1.55rem; }
.dash-admin-title-row,
.structure-admin-title-row { display: flex; align-items: center; gap: .55rem; flex-wrap: wrap; }
.dash-admin-title-row h2,
.structure-admin-title-row h2 { margin: 0; font-size: 1.22rem; }
.dash-admin-detail-identity p { margin: .2rem 0 0; color: var(--text-dim); font-size: .8rem; }
.dash-admin-head-actions { display: flex; align-items: center; justify-content: flex-end; gap: .55rem; flex-wrap: wrap; }
.dash-admin-head-actions form { margin: 0; }
.structure-admin-readonly { color: var(--text-dim); font-size: .76rem; }

.dash-admin-tip {
  display: flex; align-items: flex-start; gap: .55rem;
  margin: 1rem 1.2rem 0;
  padding: .72rem .85rem;
  border: 1px solid var(--primary-border-tint);
  border-radius: 10px;
  background: var(--primary-tint); color: var(--text);
}
.dash-admin-tip span { color: var(--primary); font-weight: 700; }
.dash-admin-tip p { margin: 0; font-size: .8rem; line-height: 1.45; }

.dash-admin-integrity-alert {
  display: flex; align-items: flex-start; gap: .7rem;
  margin: 1rem 1.2rem 0; padding: .85rem .95rem;
  border-radius: 11px;
}
.dash-admin-integrity-alert.warning { color: var(--text); background: rgba(245, 158, 11, .11); border: 1px solid rgba(245, 158, 11, .38); }
.dash-admin-integrity-alert.success { color: var(--text); background: rgba(34, 197, 94, .09); border: 1px solid rgba(34, 197, 94, .3); }
.dash-admin-integrity-alert-icon {
  width: 25px; height: 25px; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; font-weight: 800;
}
.dash-admin-integrity-alert.warning .dash-admin-integrity-alert-icon { color: #f6b73c; background: rgba(245, 158, 11, .16); }
.dash-admin-integrity-alert.success .dash-admin-integrity-alert-icon { color: #55d681; background: rgba(34, 197, 94, .15); }
.dash-admin-integrity-alert strong { display: block; font-size: .84rem; }
.dash-admin-integrity-alert p { margin: .15rem 0 0; color: var(--text-dim); font-size: .75rem; }
.dash-admin-integrity-alert ul { display: flex; flex-wrap: wrap; gap: .35rem .8rem; margin: .55rem 0 0; padding-left: 1rem; color: #f6c76a; font-size: .74rem; }

.dash-admin-summary {
  padding: 1rem 1.2rem 1.2rem;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .8rem;
}
.dash-admin-summary-card {
  position: relative;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 1rem;
  min-width: 0;
}
.dash-admin-summary-card:first-child { grid-column: 1 / -1; }
.dash-admin-summary-number {
  position: absolute; top: .9rem; right: .9rem;
  width: 24px; height: 24px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--primary-tint); color: var(--primary); font-size: .72rem; font-weight: 800;
}
.dash-admin-summary-title { padding-right: 2rem; margin-bottom: .85rem; }
.dash-admin-summary-title h3 { margin: 0 0 .15rem; font-size: .92rem; }
.dash-admin-summary-title span { color: var(--text-dim); font-size: .74rem; }
.dash-admin-kv { margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: .65rem 1rem; }
.dash-admin-kv > div { min-width: 0; }
.dash-admin-kv > div.full { grid-column: 1 / -1; }
.dash-admin-kv dt { color: var(--text-dim); font-size: .7rem; margin-bottom: .16rem; }
.dash-admin-kv dd { margin: 0; font-size: .84rem; line-height: 1.4; overflow-wrap: anywhere; }
.dash-admin-link-value { color: var(--accent); }
.dash-admin-breadcrumb { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem; }
.dash-admin-breadcrumb span {
  display: inline-flex; align-items: center;
  padding: .3rem .55rem; border-radius: 7px;
  border: 1px solid var(--border); background: var(--bg-card);
  font-size: .76rem; color: var(--text);
}
.dash-admin-breadcrumb b { color: var(--text-dim); font-size: .75rem; }
.dash-admin-breadcrumb.compact span { padding: .18rem .4rem; font-size: .72rem; }
.dash-admin-config-chips { display: flex; flex-wrap: wrap; gap: .45rem; }
.dash-admin-config-chips span {
  padding: .4rem .58rem; border-radius: 8px; background: var(--bg-card); border: 1px solid var(--border);
  font-size: .76rem;
}
.dash-admin-usage-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem; }
.dash-admin-usage-grid > div { min-width: 0; padding: .55rem .6rem; border-radius: 9px; background: var(--bg-card); border: 1px solid var(--border); }
.dash-admin-usage-grid strong, .dash-admin-usage-grid span { display: block; }
.dash-admin-usage-grid strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .82rem; }
.dash-admin-usage-grid span { margin-top: .16rem; color: var(--text-dim); font-size: .68rem; }
.dash-admin-history-item { display: flex; align-items: center; gap: .6rem; }
.dash-admin-history-dot { width: 25px; height: 25px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; color: var(--primary); background: var(--primary-tint); font-size: .74rem; font-weight: 800; }
.dash-admin-history-item strong, .dash-admin-history-item small { display: block; }
.dash-admin-history-item strong { font-size: .8rem; }
.dash-admin-history-item small { margin-top: .14rem; color: var(--text-dim); font-size: .7rem; }
.dash-admin-history-note { margin: .7rem 0 0; color: var(--text-dim); font-size: .7rem; line-height: 1.4; }

.dash-admin-editor { padding: 1rem 1.2rem 1.2rem; }
.dash-admin-modal-backdrop {
  position: fixed; inset: 0; z-index: 1200;
  display: grid; place-items: center; padding: 1rem;
  background: rgba(4, 7, 12, .72); backdrop-filter: blur(3px);
}
.dash-admin-modal-backdrop[hidden] { display: none !important; }
.dash-admin-modal {
  width: min(100%, 510px); max-height: min(720px, calc(100vh - 2rem)); overflow: auto;
  padding: 1.15rem; color: var(--text);
  background: var(--bg-card); border: 1px solid var(--border); border-radius: 15px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, .4);
}
.dash-admin-modal-head { display: flex; align-items: flex-start; gap: .7rem; }
.dash-admin-modal-head > div { min-width: 0; flex: 1; }
.dash-admin-modal-head h2 { margin: .05rem 0 .2rem; font-size: 1.05rem; }
.dash-admin-modal-head p { margin: 0; color: var(--text-dim); font-size: .76rem; }
.dash-admin-modal-danger-icon { width: 34px; height: 34px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 10px; color: #f6b73c; background: rgba(245, 158, 11, .15); font-weight: 800; }
.dash-admin-modal-close { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: 8px; background: transparent; color: var(--text-dim); cursor: pointer; font-size: 1.2rem; line-height: 1; }
.dash-admin-modal-close:hover { color: var(--text); background: var(--bg-elev); }
.dash-admin-modal-target { display: flex; flex-direction: column; gap: .18rem; margin: 1rem 0 .8rem; padding: .75rem .8rem; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-elev); }
.dash-admin-modal-target strong { font-size: .84rem; }
.dash-admin-modal-target span { color: var(--text-dim); font-size: .72rem; overflow-wrap: anywhere; }
.dash-admin-linked-list { list-style: none; display: grid; gap: .45rem; margin: 0; padding: 0; }
.dash-admin-linked-list li { display: flex; align-items: center; justify-content: space-between; gap: .7rem; padding: .58rem .65rem; border: 1px solid var(--border); border-radius: 9px; background: var(--bg-elev); font-size: .74rem; }
.dash-admin-linked-list li span { color: var(--text-dim); }
.dash-admin-linked-list li strong { font-size: .78rem; }
.dash-admin-modal-warning { margin: .85rem 0 0; color: #f6c76a; font-size: .74rem; line-height: 1.45; }
.dash-admin-modal-actions { display: flex; justify-content: flex-end; gap: .55rem; margin-top: 1rem; }
.dash-admin-modal-move-icon { width: 34px; height: 34px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 10px; color: var(--primary); background: var(--primary-tint); font-weight: 800; }
.dash-admin-move-modal { width: min(100%, 820px); padding: 0; }
.dash-admin-move-modal .dash-admin-modal-head { padding: 1.1rem 1.2rem; border-bottom: 1px solid var(--border); }
.dash-admin-move-current { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .55rem; margin: 1rem 1.2rem 0; padding: .7rem .8rem; border: 1px solid var(--border); border-radius: 9px; background: var(--bg-elev); font-size: .76rem; }
.dash-admin-move-current span { color: var(--text-dim); }
.dash-admin-move-current strong { overflow-wrap: anywhere; }
.dash-admin-move-body { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(220px, .75fr); gap: .8rem; padding: 1rem 1.2rem; }
.dash-admin-move-tree-panel, .dash-admin-move-selection { min-width: 0; padding: .85rem; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-elev); }
.dash-admin-move-panel-head { margin-bottom: .65rem; }
.dash-admin-move-panel-head h3 { margin: 0 0 .12rem; font-size: .85rem; }
.dash-admin-move-panel-head p { margin: 0; color: var(--text-dim); font-size: .7rem; }
.dash-admin-move-tree { max-height: 360px; overflow: auto; padding-right: .15rem; }
.dash-admin-move-tree-node, .dash-admin-move-environment { margin: .12rem 0; }
.dash-admin-move-tree-node > summary, .dash-admin-move-environment > summary { display: flex; align-items: center; gap: .35rem; min-height: 34px; cursor: pointer; list-style: none; }
.dash-admin-move-tree-node > summary::-webkit-details-marker, .dash-admin-move-environment > summary::-webkit-details-marker { display: none; }
.dash-admin-move-tree-node > summary > .chevron, .dash-admin-move-environment > summary > .chevron { flex: 0 0 auto; transition: transform .16s ease; }
.dash-admin-move-tree-node[open] > summary > .chevron, .dash-admin-move-environment[open] > summary > .chevron { transform: rotate(90deg); }
.dash-admin-move-tree-select { display: flex; align-items: center; gap: .45rem; flex: 1; min-width: 0; padding: .42rem .5rem; border: 1px solid transparent; border-radius: 7px; color: var(--text-dim); background: transparent; cursor: pointer; text-align: left; font-size: .78rem; }
.dash-admin-move-tree-select:hover { color: var(--text); background: var(--bg-card); }
.dash-admin-move-tree-select.selected { color: var(--primary); border-color: var(--primary-border-tint); background: var(--primary-tint); box-shadow: inset 2px 0 0 var(--primary); }
.dash-admin-move-tree-select span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dash-admin-move-tree-select small { margin-left: auto; color: var(--text-dim); font-size: .64rem; }
.dash-admin-move-environment > summary { padding: .42rem .5rem; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-card); color: var(--text); font-size: .78rem; font-weight: 650; }
.dash-admin-move-environment > .portal-tree-children, .dash-admin-move-tree-node > .portal-tree-children { margin-left: .9rem; padding-left: .55rem; border-left: 1px solid var(--border); }
.dash-admin-move-selection { display: flex; flex-direction: column; }
.dash-admin-move-selection > span { color: var(--text-dim); font-size: .7rem; }
.dash-admin-move-selection > strong { margin-top: .45rem; padding: .65rem; border: 1px solid var(--primary-border-tint); border-radius: 8px; background: var(--primary-tint); font-size: .78rem; line-height: 1.45; overflow-wrap: anywhere; }
.dash-admin-move-selection p { margin: .8rem 0 0; color: var(--text-dim); font-size: .72rem; line-height: 1.45; }
.dash-admin-move-selection small { margin-top: auto; padding-top: .8rem; color: var(--primary); font-size: .7rem; }
.dash-admin-move-actions { margin: 0; padding: 0 1.2rem 1.15rem; }
.dash-admin-editor[hidden],
.dash-admin-summary[hidden],
.structure-admin-editor[hidden],
.structure-admin-content[hidden] { display: none !important; }
.dashboard-admin-edit-form { gap: .8rem; }
.dash-admin-form-section {
  padding: 1rem;
  border: 1px solid var(--border); border-radius: 12px;
  background: var(--bg-elev);
}
.dash-admin-form-section + .dash-admin-form-section { margin-top: .75rem; }
.dash-admin-form-section-head { display: flex; align-items: flex-start; gap: .65rem; margin-bottom: .85rem; }
.dash-admin-form-section-head > span {
  width: 28px; height: 28px; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; background: var(--primary); color: var(--primary-ink);
  font-size: .76rem; font-weight: 800;
}
.dash-admin-form-section-head h3 { margin: 0 0 .1rem; font-size: .9rem; }
.dash-admin-form-section-head p { margin: 0; color: var(--text-dim); font-size: .74rem; }
.dash-admin-form-grid { display: grid; grid-template-columns: 2fr 1fr; gap: .7rem; }
.dash-admin-form-grid label.full { grid-column: 1 / -1; }
.dash-admin-location-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .65rem; }
.dash-admin-settings-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.dash-admin-editor-actions { display: flex; align-items: center; justify-content: flex-end; gap: .55rem; margin-top: .85rem; }
.dash-admin-empty { padding: 3rem 1.5rem; text-align: center; color: var(--text-dim); }
.dash-admin-empty h3 { color: var(--text); margin: 0 0 .25rem; }
.dash-admin-empty p { margin: 0; }

/* ---------- Estrutura ---------- */
.structure-admin-search { margin: .85rem 1rem; }
.structure-admin-tree-list { padding: 0 .55rem .75rem; }
.structure-tree-group[hidden] { display: none !important; }
.structure-tree-group.collapsed > .structure-tree-children { display: none; }
.structure-tree-row {
  display: grid;
  grid-template-columns: 16px 18px minmax(0, 1fr) auto;
  align-items: center; gap: .42rem;
  min-height: 38px; padding: .35rem .5rem;
  border-radius: 8px;
  color: var(--text-dim); font-size: .8rem;
  transition: background .15s ease, color .15s ease;
}
.structure-tree-row:hover { background: var(--bg-elev); color: var(--text); }
.structure-tree-row.active {
  background: var(--primary-tint); color: var(--primary); font-weight: 650;
  box-shadow: inset 2px 0 0 var(--primary);
}
.structure-tree-row.level-1 { padding-left: 1rem; }
.structure-tree-row.level-2 { padding-left: 1.65rem; }
.structure-tree-row.level-3 { padding-left: 2.3rem; }
.structure-tree-toggle {
  color: var(--text-dim);
  display: inline-flex; align-items: center; justify-content: center;
  width: 16px; height: 16px; border-radius: 4px; cursor: default;
  user-select: none;
}
.structure-tree-toggle .chevron {
  flex-shrink: 0;
  transition: transform .2s ease;
  transform: rotate(90deg);
}
.structure-tree-group.collapsed > .structure-tree-row .structure-tree-toggle .chevron {
  transform: rotate(0deg);
}
.structure-tree-toggle-empty { pointer-events: none; }
.structure-tree-row.has-children .structure-tree-toggle { cursor: pointer; }
.structure-tree-row.has-children .structure-tree-toggle:hover { background: var(--bg-card); color: var(--text); }
.structure-folder-icon { color: inherit; font-size: 1rem; }
.structure-tree-count {
  min-width: 24px; padding: .08rem .38rem; border-radius: 999px;
  background: var(--bg-card); border: 1px solid var(--border); color: var(--text-dim);
  text-align: center; font-size: .68rem;
}
.structure-tree-children { border-left: 1px dashed var(--border); margin-left: .95rem; }
.structure-admin-no-results { padding: 1rem; }

.structure-level-badge {
  display: inline-flex; align-items: center;
  padding: .18rem .5rem; border-radius: 999px;
  background: var(--primary-tint); color: var(--primary); border: 1px solid var(--primary-border-tint);
  font-size: .68rem; font-weight: 700;
}
.structure-admin-stats {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .65rem;
  padding: 1rem 1.2rem 0;
}
.structure-admin-stats > div {
  display: grid; grid-template-columns: 34px auto; grid-template-rows: auto auto;
  column-gap: .6rem; align-items: center;
  padding: .8rem; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-elev);
}
.structure-stat-icon {
  grid-row: 1 / 3; width: 34px; height: 34px; border-radius: 9px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--primary-tint); color: var(--primary); font-size: 1rem;
}
.structure-admin-stats strong { font-size: 1.15rem; line-height: 1; }
.structure-admin-stats small { color: var(--text-dim); font-size: .68rem; }
.structure-admin-editor { margin: 1rem 1.2rem 0; padding: 1rem; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-elev); }
.structure-admin-content { padding: 1rem 1.2rem 1.2rem; display: grid; gap: .85rem; }
.structure-content-card { border: 1px solid var(--border); border-radius: 12px; overflow: hidden; background: var(--bg-elev); }
.structure-content-card-head { padding: .85rem 1rem; border-bottom: 1px solid var(--border); }
.structure-content-card-head h3 { margin: 0 0 .12rem; font-size: .9rem; }
.structure-content-card-head p { margin: 0; color: var(--text-dim); font-size: .72rem; }
.structure-children-list, .structure-dashboard-list { display: flex; flex-direction: column; }
.structure-child-row {
  display: grid; grid-template-columns: 20px minmax(140px, 1fr) auto 16px;
  align-items: center; gap: .55rem; padding: .68rem 1rem;
  border-bottom: 1px solid var(--border); font-size: .8rem;
}
.structure-child-row:last-child { border-bottom: none; }
.structure-child-row:hover { background: var(--bg-card); }
.structure-child-row > span:nth-child(3) { color: var(--text-dim); font-size: .72rem; }
.structure-child-arrow { color: var(--text-dim); }
.structure-dashboard-row {
  display: grid; grid-template-columns: 34px minmax(0,1fr) 16px;
  align-items: center; gap: .65rem; padding: .65rem 1rem;
  border-bottom: 1px solid var(--border);
}
.structure-dashboard-row:last-child { border-bottom: none; }
.structure-dashboard-row:hover { background: var(--bg-card); }
.structure-dashboard-row > span:nth-child(2) { min-width: 0; display: flex; flex-direction: column; gap: .1rem; }
.structure-dashboard-row strong { font-size: .8rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.structure-dashboard-row small { color: var(--text-dim); font-size: .68rem; }
.structure-dashboard-row > b { color: var(--text-dim); font-weight: 500; }

/* ---------- Botão de tema no rodapé da sidebar ---------- */
.sidebar-footer-actions { display: grid; grid-template-columns: 1fr 1fr; gap: .45rem; align-items: stretch; }
.sidebar-footer-actions .logout-btn { margin: 0; min-width: 0; }
.sidebar-theme-toggle.tema-toggle {
  position: static;
  width: 100%; height: auto; min-height: 38px;
  padding: .45rem .65rem;
  border-radius: 9px;
  box-shadow: none;
  display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
  background: transparent;
  color: var(--text-dim);
  font-size: .8rem; font-weight: 600;
}
.sidebar-theme-toggle.tema-toggle:hover { background: var(--bg-card); color: var(--primary); border-color: var(--primary-border-tint); }
.sidebar-theme-toggle.tema-toggle svg { width: 16px; height: 16px; }
.sidebar-theme-toggle.tema-toggle span { display: inline; }

@media (max-width: 1250px) {
  .dash-admin-global-tools { grid-template-columns: minmax(220px, 1fr) 150px 170px auto; }
  .dash-admin-shell, .structure-admin-shell { grid-template-columns: minmax(285px, 330px) minmax(0, 1fr); }
  .dash-admin-location-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .dash-admin-detail-head, .structure-admin-detail-head { align-items: flex-start; flex-direction: column; }
  .dash-admin-head-actions { justify-content: flex-start; }
}

@media (max-width: 980px) {
  .dash-admin-global-tools { grid-template-columns: 1fr 1fr; }
  .dash-admin-global-search { grid-column: 1 / -1; }
  .dash-admin-shell, .structure-admin-shell { grid-template-columns: 1fr; }
  .dash-admin-directory, .structure-admin-tree { position: static; max-height: 460px; }
  .dash-admin-summary { grid-template-columns: 1fr; }
  .dash-admin-summary-card:first-child { grid-column: auto; }
  .dash-admin-form-grid, .dash-admin-location-grid, .dash-admin-settings-grid { grid-template-columns: 1fr; }
  .dash-admin-form-grid label.full { grid-column: auto; }
  .structure-admin-stats { grid-template-columns: 1fr 1fr 1fr; }
}

@media (max-width: 640px) {
  .dash-admin-global-tools { grid-template-columns: 1fr; }
  .dash-admin-global-search { grid-column: auto; }
  .dash-admin-global-tools .btn { width: 100%; }
  .dash-admin-tabs { width: 100%; overflow-x: auto; }
  .dash-admin-filter-row { grid-template-columns: 1fr; }
  .dash-admin-directory-item { grid-template-columns: 34px minmax(0,1fr) auto auto; }
  .dash-admin-directory-item .dash-admin-item-arrow { display: none; }
  .dash-admin-detail-head, .structure-admin-detail-head { padding: 1rem; }
  .dash-admin-head-actions { width: 100%; }
  .dash-admin-head-actions .btn, .dash-admin-head-actions form { flex: 1; }
  .dash-admin-head-actions form .btn { width: 100%; justify-content: center; }
  .dash-admin-summary, .dash-admin-editor, .structure-admin-content { padding-left: .8rem; padding-right: .8rem; }
  .dash-admin-tip { margin-left: .8rem; margin-right: .8rem; }
  .dash-admin-integrity-alert { margin-left: .8rem; margin-right: .8rem; }
  .dash-admin-usage-grid { grid-template-columns: 1fr; }
  .dash-admin-move-modal { max-height: calc(100vh - 1rem); }
  .dash-admin-move-body { grid-template-columns: 1fr; padding: .8rem; }
  .dash-admin-move-current { margin-left: .8rem; margin-right: .8rem; }
  .dash-admin-move-actions { padding-left: .8rem; padding-right: .8rem; }
  .dash-admin-move-actions .btn { flex: 1; }
  .structure-admin-stats { grid-template-columns: 1fr; padding-left: .8rem; padding-right: .8rem; }
  .structure-admin-editor { margin-left: .8rem; margin-right: .8rem; }
  .structure-child-row { grid-template-columns: 20px minmax(0, 1fr) 16px; }
  .structure-child-row > span:nth-child(3) { display: none; }
  .sidebar-footer-actions { grid-template-columns: 1fr; }
}

/* ============================================================
   Administração de Dashboards — preservar botoes de acao
   e remover apenas o delay visual do Cancelar na troca de tema.
   ============================================================ */
.dash-admin-editor-actions .btn,
#cancelDashboardEdit,
#cancelStructureEdit {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  visibility: visible !important;
  opacity: 1 !important;
}

#cancelDashboardEdit,
#cancelStructureEdit {
  background: var(--bg-card) !important;
  color: var(--text) !important;
  border: 1px solid var(--border) !important;
  transition: transform .06s ease !important;
}

#cancelDashboardEdit:hover,
#cancelStructureEdit:hover {
  background: var(--bg-elev) !important;
  color: var(--text) !important;
  border-color: var(--accent) !important;
}

/* ============================================================
   Visao geral — Gestao de Dashboards
   ============================================================ */
.dashboard-overview-mid-grid {
  grid-template-columns: minmax(0, .9fr) minmax(0, .9fr) minmax(340px, 1.25fr);
}
.dashboard-status-donut {
  background: conic-gradient(#45b868 0 var(--split), rgba(245, 158, 11, .82) var(--split) 100%);
}
.dashboard-favorite-donut {
  background: conic-gradient(var(--accent) 0 var(--split), #8b5cf6 var(--split) 100%);
}
.dashboard-legend-active { background: #45b868; }
.dashboard-legend-inactive { background: #f59e0b; }
.dashboard-legend-favorite { background: var(--accent); }
.dashboard-legend-blocked { background: #8b5cf6; }
.dashboard-structure-list { display: flex; flex-direction: column; gap: .42rem; }
.dashboard-structure-item {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) auto 12px;
  gap: .55rem;
  align-items: center;
  min-height: 44px;
  padding: .48rem .55rem;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--bg-elev);
  transition: border-color .15s ease, transform .08s ease, background .15s ease;
}
.dashboard-structure-item:hover {
  border-color: var(--accent);
  background: var(--bg-card);
  transform: translateY(-1px);
}
.dashboard-structure-main,
.dashboard-structure-count { min-width: 0; }
.dashboard-structure-main strong,
.dashboard-structure-main small,
.dashboard-structure-count strong,
.dashboard-structure-count small { display: block; }
.dashboard-structure-main strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .7rem;
}
.dashboard-structure-main small,
.dashboard-structure-count small { color: var(--text-dim); font-size: .58rem; }
.dashboard-structure-count { text-align: right; }
.dashboard-structure-count strong { font-size: .72rem; }
.dashboard-overview-name {
  display: inline-block;
  max-width: 220px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  font-weight: 650;
}
.dashboard-overview-name:hover { color: var(--primary); }
.dashboard-overview-location {
  display: inline-block;
  max-width: 280px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text-dim);
}
.dashboard-ranking-location {
  display: block;
  margin-top: .12rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text-dim);
  font-size: .56rem;
}
.dashboard-overview-page .users-top-dash-main .users-access-bar { margin-top: .28rem; }

@media (max-width: 1250px) {
  .dashboard-overview-mid-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dashboard-structure-panel { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  .dashboard-overview-mid-grid { grid-template-columns: 1fr; }
  .dashboard-structure-panel { grid-column: auto; }
  .dashboard-overview-location { max-width: 180px; }
}

/* Estados primários: azul translúcido em gradiente, aprovado para os dois temas. */
:is(
  .nav-item.active,
  .btn-vis.ativo,
  .avisos-tab.ativo,
  .avisos-tab.ativo .avisos-tab-icon,
  .users-permission-environment-chip.active,
  .users-directory-item.active,
  .users-environment-item.active,
  .dash-admin-tab.active,
  .dash-admin-directory-item.active,
  .dash-admin-move-tree-select.selected,
  .structure-tree-row.active,
  .cad-tree-row.selected,
  [data-portal-tree] .portal-tree-row.selected,
  .dashboard-tree .portal-tree-dashboard.ativo,
  .dash-admin-directory .portal-tree-dashboard.selected,
  .users-permissions-modern-page .users-modern-tab.active
) {
  background: var(--primary-gradient) !important;
  border-color: var(--primary-border-tint) !important;
  color: var(--primary-ink) !important;
}

:is(
  .nav-item.active svg,
  .avisos-tab.ativo .avisos-tab-icon svg,
  .users-permission-environment-chip.active small,
  .users-permission-environment-chip.active strong,
  .users-permission-environment-chip.active svg
) { color: var(--primary-ink) !important; }

.avisos-tab.ativo .avisos-tab-icon,
.users-permissions-modern-page .users-permission-tabs .avisos-tab.ativo .avisos-tab-icon {
  box-shadow: 0 7px 15px rgba(47, 111, 237, .16);
}

/* =========================================================
   Cadastro de Dashboard — árvore de pastas/subpastas
   ========================================================= */
.cadastro-tree-page {
  display: grid;
  gap: 1.35rem;
}
.cadastro-tree-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
}
.cadastro-tree-head h1 {
  margin: 0;
  font-size: 1.95rem;
}
.cadastro-tree-head p {
  margin: .3rem 0 0;
  color: var(--text-dim);
}
.cadastro-environment-picker {
  display: grid;
  grid-template-columns: minmax(220px, 280px);
  gap: .35rem;
  min-width: 250px;
  padding: .72rem .85rem;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--bg-card);
}
.cadastro-environment-picker label {
  display: grid;
  gap: .35rem;
  color: var(--text-dim);
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.cadastro-environment-picker select {
  width: 100%;
  min-height: 40px;
  padding: .5rem .7rem;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--bg-elev);
  color: var(--text);
  font: inherit;
  letter-spacing: normal;
  text-transform: none;
}
.cadastro-environment-picker select:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}
.cadastro-environment-picker small {
  color: var(--text-dim);
  font-size: .72rem;
  line-height: 1.35;
}
.cadastro-tree-head-actions {
  display: flex;
  gap: .8rem;
  align-items: center;
  flex-wrap: wrap;
}
.cadastro-tree-alerts {
  display: grid;
  gap: .75rem;
}
.cadastro-tree-grid {
  display: grid;
  grid-template-columns: minmax(340px, 1fr) minmax(360px, 1.15fr);
  gap: 1.35rem;
  align-items: start;
}
.cadastro-tree-form-card,
.cadastro-tree-structure-card {
  padding: 1.4rem;
  border-radius: 22px;
}
.cadastro-tree-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.1rem;
}
.cadastro-tree-card-head-compact {
  margin-bottom: .95rem;
}
.cadastro-tree-card-head h2 {
  margin: 0;
  font-size: 1.18rem;
}
.cadastro-tree-card-head p {
  margin: .28rem 0 0;
  color: var(--text-dim);
}
.cadastro-tree-form {
  display: grid;
  gap: 1.05rem;
}
.cadastro-tree-form label {
  display: grid;
  gap: .45rem;
  font-weight: 600;
}
.cadastro-tree-form textarea,
.cadastro-tree-form input[type="text"],
.cadastro-tree-form input[type="url"],
.cadastro-tree-form input[type="search"] {
  width: 100%;
}
.cadastro-tree-location {
  display: grid;
  gap: .45rem;
}
.cadastro-tree-location-label {
  font-size: .96rem;
  font-weight: 700;
}
.cadastro-tree-location-box {
  min-height: 58px;
  display: flex;
  align-items: center;
  padding: .95rem 1rem;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: var(--primary-tint);
  color: var(--primary);
  font-weight: 600;
}
.cadastro-tree-location-box[data-empty="true"] {
  background: var(--bg-elev);
  color: var(--text-dim);
}
.cadastro-tree-location-help {
  margin: 0;
  font-size: .88rem;
  color: var(--text-dim);
}
.cadastro-tree-note {
  display: grid;
  grid-template-columns: 18px 1fr;
  gap: .75rem;
  align-items: start;
  padding: .95rem 1rem;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: var(--bg-elev);
  color: var(--text-dim);
}
.cadastro-tree-note strong,
.cadastro-tree-note span {
  display: block;
}
.cadastro-tree-note strong {
  color: var(--primary);
  margin-bottom: .22rem;
}
.cadastro-tree-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: .75rem;
  flex-wrap: wrap;
  margin-top: .2rem;
}
.cadastro-tree-search {
  position: relative;
  margin-bottom: 1rem;
}
.cadastro-tree-search input {
  width: 100%;
  padding-right: 2.6rem;
}
.cadastro-tree-search svg {
  position: absolute;
  right: .95rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--text-dim);
  pointer-events: none;
}
.cadastro-tree-browser {
  display: grid;
  gap: .85rem;
}
.cadastro-tree-root-row,
.cad-tree-row {
  display: grid;
  grid-template-columns: 16px minmax(0,1fr) auto;
  align-items: center;
  gap: .65rem;
}
.cadastro-tree-root-row {
  grid-template-columns: 18px minmax(0,1fr) auto;
  color: var(--text);
  padding: .45rem .2rem;
}
.cadastro-tree-root-icon,
.cad-tree-folder-icon {
  color: inherit;
  font-size: 1rem;
  line-height: 1;
}
.cadastro-tree-list {
  display: grid;
  gap: .1rem;
  max-height: 520px;
  overflow: auto;
  padding-right: .2rem;
}
.cad-tree-node,
.cad-tree-leaf {
  display: block;
}
.cad-tree-node[hidden],
.cad-tree-leaf[hidden] {
  display: none !important;
}
.cad-tree-node > summary {
  list-style: none;
  cursor: default;
}
.cad-tree-node > summary::-webkit-details-marker { display: none; }
.cad-tree-row {
  min-height: 42px;
  padding: .25rem .25rem;
  border-radius: 12px;
  color: var(--text-dim);
}
.cad-tree-row:hover {
  background: var(--bg-elev);
}
.cad-tree-row.selected {
  background: var(--primary-tint);
  color: var(--primary);
  box-shadow: inset 2px 0 0 var(--primary);
}
.cad-tree-caret {
  width: 16px;
  height: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-dim);
}
.cad-tree-caret .chevron {
  flex-shrink: 0;
  transition: transform .2s ease;
  transform: rotate(0deg);
}
.cad-tree-node[open] > summary .cad-tree-caret .chevron {
  transform: rotate(90deg);
}
.cad-tree-caret-empty { pointer-events: none; }
.cad-tree-select {
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  min-width: 0;
  padding: .55rem .7rem;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.cad-tree-select:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}
.cad-tree-name {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cad-tree-actions {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}
.cad-tree-icon-btn {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg);
  color: var(--primary);
  cursor: pointer;
  font-size: 1rem;
  line-height: 1;
  transition: background .15s ease, border-color .15s ease, color .15s ease, transform .15s ease;
}
.cad-tree-icon-btn:hover {
  background: var(--primary-tint);
  border-color: rgba(var(--primary-rgb), .26);
}
.cad-tree-icon-btn.danger {
  color: #ff4d4f;
}
.cad-tree-icon-btn.danger:hover {
  background: rgba(255, 77, 79, .12);
  border-color: rgba(255, 77, 79, .3);
}
.cad-tree-actions form { margin: 0; }
.cad-tree-children {
  margin-left: 1.05rem;
  padding-left: .85rem;
  border-left: 1px dashed var(--border);
}
.cad-tree-node.level-1 > .cad-tree-children,
.cad-tree-leaf.level-1 { margin-left: 1.7rem; }
.cad-tree-node.level-2 > .cad-tree-children,
.cad-tree-leaf.level-2 { margin-left: 2.35rem; }
.cad-tree-leaf.level-3 { margin-left: 3rem; }
.cadastro-tree-selected-footer {
  padding: .95rem 1rem;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--bg-elev);
  display: grid;
  gap: .28rem;
}
.cadastro-tree-selected-footer span {
  font-size: .82rem;
  color: var(--text-dim);
  text-transform: uppercase;
  letter-spacing: .04em;
}
.cadastro-tree-selected-footer strong {
  color: var(--primary);
  font-size: .96rem;
}
.cadastro-tree-composer {
  padding: 1rem;
  border-radius: 16px;
  border: 1px solid var(--border);
  background: var(--bg-elev);
}
.cadastro-tree-composer-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .75rem;
  margin-bottom: .9rem;
}
.cadastro-tree-composer-head p {
  margin: .22rem 0 0;
  color: var(--text-dim);
  font-size: .9rem;
}
.cadastro-tree-composer-form {
  display: grid;
  gap: .9rem;
}
.cadastro-tree-composer-form label {
  display: grid;
  gap: .45rem;
}
.cadastro-tree-composer-actions {
  display: flex;
  justify-content: flex-end;
  gap: .75rem;
  flex-wrap: wrap;
}
.cadastro-tree-empty {
  padding: .9rem 1rem;
  border-radius: 12px;
  background: var(--bg-elev);
  color: var(--text-dim);
  font-size: .9rem;
}

@media (max-width: 1180px) {
  .cadastro-tree-grid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 780px) {
  .cadastro-tree-head {
    flex-direction: column;
  }
  .cadastro-environment-picker {
    width: 100%;
  }
  .cadastro-tree-head-actions,
  .cadastro-tree-form-actions,
  .cadastro-tree-composer-actions {
    width: 100%;
  }
  .cadastro-tree-head-actions .btn,
  .cadastro-tree-form-actions .btn,
  .cadastro-tree-composer-actions .btn {
    flex: 1 1 180px;
  }
  .cad-tree-row,
  .cadastro-tree-root-row {
    grid-template-columns: 14px minmax(0,1fr) auto;
  }
  .cad-tree-actions {
    gap: .25rem;
  }
  .cad-tree-icon-btn {
    width: 30px;
    height: 30px;
  }
}

/* Controles globais da árvore no Cadastro de Dashboard */
.cadastro-tree-header-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .55rem;
  flex-wrap: wrap;
}
.cadastro-tree-header-actions .btn {
  white-space: nowrap;
}

@media (max-width: 900px) {
  .cadastro-tree-card-head-compact {
    flex-direction: column;
  }
  .cadastro-tree-header-actions {
    width: 100%;
    justify-content: flex-start;
  }
}


/* Cadastro de Dashboard: campos coerentes com o tema ativo */
.cadastro-tree-form input[type="text"],
.cadastro-tree-form input[type="url"],
.cadastro-tree-form textarea,
.cadastro-tree-search input,
.cadastro-tree-composer-form input[type="text"],
.cadastro-tree-composer-form select {
  background: var(--bg-elev);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 10px;
  outline: none;
  font: inherit;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.cadastro-tree-form input[type="text"],
.cadastro-tree-form input[type="url"],
.cadastro-tree-search input,
.cadastro-tree-composer-form input[type="text"] {
  min-height: 42px;
  padding: .68rem .78rem;
}
.cadastro-tree-composer-form select {
  width: 100%;
  min-height: 42px;
  padding: .68rem .78rem;
}
.cadastro-tree-form textarea {
  padding: .72rem .78rem;
  resize: vertical;
}
.cadastro-tree-form input::placeholder,
.cadastro-tree-form textarea::placeholder,
.cadastro-tree-search input::placeholder,
.cadastro-tree-composer-form input::placeholder {
  color: var(--text-dim);
  opacity: .78;
}
.cadastro-tree-form input:focus,
.cadastro-tree-form textarea:focus,
.cadastro-tree-search input:focus,
.cadastro-tree-composer-form input:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 14%, transparent);
}
:root:not([data-theme="claro"]) .cadastro-tree-form input,
:root:not([data-theme="claro"]) .cadastro-tree-form textarea,
:root:not([data-theme="claro"]) .cadastro-tree-search input,
:root:not([data-theme="claro"]) .cadastro-tree-composer-form input {
  color-scheme: dark;
}
:root[data-theme="claro"] .cadastro-tree-form input,
:root[data-theme="claro"] .cadastro-tree-form textarea,
:root[data-theme="claro"] .cadastro-tree-search input,
:root[data-theme="claro"] .cadastro-tree-composer-form input {
  color-scheme: light;
}

/* =========================================================
   Barra lateral recolhível — desktop
   ========================================================= */
:root {
  --portal-sidebar-width: 290px;
  --portal-sidebar-toggle-size: 34px;
  --portal-sidebar-rail-width: 48px;
  --portal-sidebar-duration: .24s;
  --portal-sidebar-ease: cubic-bezier(.4, 0, .2, 1);
}

.sidebar {
  width: var(--portal-sidebar-width);
  transition: transform var(--portal-sidebar-duration) var(--portal-sidebar-ease);
}

/* Um unico espacador anima a area reservada de 290px para 48px.
   O menu desliza com largura fixa, sem reorganizar seus textos durante o movimento. */
@media (min-width: 861px) {
  html:has(.app-shell) { scrollbar-gutter: stable; }
  /* O menu ocupa o espaco entre a marca e o rodape e rola internamente. */
  .sidebar {
    position: fixed;
    left: 0;
    z-index: 20;
    width: var(--portal-sidebar-width);
    min-width: var(--portal-sidebar-width);
    will-change: transform;
    height: 100vh;
    height: 100dvh;
    min-height: 0;
    align-self: flex-start;
  }

  .sidebar > .sidebar-brand,
  .sidebar > .sidebar-footer {
    flex-shrink: 0;
  }

  .sidebar > .side-nav {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior-y: contain;
    scrollbar-gutter: stable;
    scrollbar-width: thin;
    scrollbar-color: var(--text-dim) var(--bg-elev);
  }

  .sidebar > .side-nav > * {
    flex-shrink: 0;
  }

  .app-shell::before {
    content: "";
    box-sizing: border-box;
    flex: 0 0 var(--portal-sidebar-width);
    width: auto;
    min-width: 0;
    height: 100vh;
    position: sticky;
    top: 0;
    align-self: flex-start;
    background: var(--bg-elev);
    border-right: 1px solid var(--border);
    transition: flex-basis var(--portal-sidebar-duration) var(--portal-sidebar-ease);
    z-index: 1;
  }

  html.portal-sidebar-collapsed .app-shell::before {
    flex-basis: var(--portal-sidebar-rail-width);
  }
}

.sidebar-collapse-toggle {
  position: fixed;
  z-index: 1200;
  top: 50%;
  left: calc(var(--portal-sidebar-width) - (var(--portal-sidebar-toggle-size) / 2));
  transform: translateY(-50%);
  width: var(--portal-sidebar-toggle-size);
  height: var(--portal-sidebar-toggle-size);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg-card);
  color: var(--text-dim);
  box-shadow: 0 3px 10px rgba(0, 0, 0, .10);
  cursor: pointer;
  transition: left var(--portal-sidebar-duration) var(--portal-sidebar-ease), background .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
}
.sidebar-collapse-toggle:hover {
  background: var(--primary-tint);
  border-color: var(--primary-border-tint);
  color: var(--primary);
  box-shadow: 0 4px 12px rgba(0, 0, 0, .13);
}
.sidebar-collapse-toggle svg {
  transition: transform var(--portal-sidebar-duration) var(--portal-sidebar-ease);
}

/* Ao recolher, a sidebar sai para a esquerda. No lugar dela fica somente uma
   pequena faixa dedicada ao botão, mantendo a área útil totalmente livre. */
html.portal-sidebar-collapsed .sidebar {
  transform: translateX(-100%);
}
html.portal-sidebar-collapsed .sidebar-collapse-toggle {
  left: calc((var(--portal-sidebar-rail-width) - var(--portal-sidebar-toggle-size)) / 2);
}
html.portal-sidebar-collapsed .sidebar-collapse-toggle svg {
  transform: rotate(180deg);
}

/* O conteúdo permanece fluido nos dois estados. A faixa recolhida participa do
   flex, então nenhuma guia fica escondida atrás do botão. */
@media (min-width: 861px) {
  .app-shell > .content {
    flex: 1 1 0;
    width: auto;
    max-width: none;
    min-width: 0;
  }

  .app-shell > .content > * {
    max-width: none !important;
  }

  html.portal-sidebar-collapsed .content {
    width: auto;
    max-width: none;
  }
}

/* LAYOUT MOBILE — barra superior, menu lateral em gaveta e dashboard em tela ampla. */
.mobile-app-bar,
.mobile-nav-backdrop {
  display: none;
}
.mobile-user-logout { display: none; }
.mobile-dashboard-reveal-zone { display: none; }

@media (max-width: 860px) {
  body.mobile-nav-open {
    overflow: hidden;
  }

  body:has(.app-shell) {
    overflow-x: hidden;
  }

  .mobile-app-bar {
    position: fixed;
    inset: 0 0 auto;
    z-index: 1100;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 56px;
    padding: 0 .85rem;
    background: color-mix(in srgb, var(--bg-elev) 94%, transparent);
    border-bottom: 1px solid var(--border);
    box-shadow: 0 3px 16px rgba(0, 0, 0, .12);
    backdrop-filter: blur(12px);
    transform: translateY(0);
    will-change: transform, opacity;
    transition: transform .36s cubic-bezier(.16, 1, .3, 1), opacity .28s ease;
  }

  body.mobile-dashboard-bar-hidden .mobile-app-bar {
    transform: translateY(-105%);
    opacity: 0;
    pointer-events: none;
  }

  .mobile-dashboard-reveal-zone {
    position: fixed;
    inset: 0 0 auto;
    z-index: 30;
    display: none;
    width: 100%;
    height: 30px;
    padding: 0;
    border: 0;
    background: transparent;
  }

  body.mobile-dashboard-bar-hidden .mobile-dashboard-reveal-zone {
    display: block;
  }

  .mobile-app-title {
    flex: 1;
    margin: 0 .5rem;
    color: var(--text);
    font-size: .95rem;
    font-weight: 700;
    letter-spacing: .02em;
    text-align: center;
  }

  .mobile-theme-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--bg-card);
    color: var(--text);
    cursor: pointer;
  }
  .mobile-theme-toggle:hover,
  .mobile-theme-toggle:focus-visible { border-color: var(--primary); color: var(--primary); outline: none; }
  .mobile-theme-toggle svg { width: 18px; height: 18px; }

  .mobile-menu-toggle {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    min-height: 40px;
    padding: .45rem .65rem;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--bg-card);
    color: var(--text);
    font: inherit;
    font-size: .8rem;
    font-weight: 600;
    cursor: pointer;
  }

  .mobile-menu-toggle:hover,
  .mobile-menu-toggle:focus-visible {
    border-color: var(--primary);
    color: var(--primary);
    outline: none;
  }

  .mobile-menu-icon-close { display: none; }
  body.mobile-nav-open .mobile-menu-icon-open { display: none; }
  body.mobile-nav-open .mobile-menu-icon-close { display: block; }

  .mobile-nav-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1140;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    background: rgba(4, 7, 13, .58);
    opacity: 0;
    pointer-events: none;
    transition: opacity .2s ease;
  }

  body.mobile-nav-open .mobile-nav-backdrop {
    display: block;
    opacity: 1;
    pointer-events: auto;
  }

  .app-shell {
    display: block;
    min-height: 100dvh;
  }

  .sidebar-collapse-toggle {
    display: none !important;
  }
  .app-shell::before {
    display: none !important;
  }
  .sidebar,
  html.portal-sidebar-collapsed .sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 1150;
    width: min(88vw, 340px);
    min-width: 0;
    height: 100dvh;
    flex-basis: auto;
    transform: translateX(-102%);
    overflow: hidden;
    border-right-color: var(--border);
    box-shadow: 10px 0 32px rgba(0, 0, 0, .2);
    transition: transform .22s cubic-bezier(.4, 0, .2, 1);
  }

  body.mobile-nav-open .sidebar,
  html.portal-sidebar-collapsed body.mobile-nav-open .sidebar {
    transform: translateX(0);
  }

  .sidebar > .side-nav {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 1rem;
    scrollbar-width: thin;
  }

  .sidebar > .sidebar-brand,
  .sidebar > .sidebar-footer {
    flex-shrink: 0;
  }

  .mobile-user-row {
    display: flex;
    align-items: center;
    gap: .55rem;
  }
  .mobile-user-row .user-chip { flex: 1; min-width: 0; margin-bottom: 0; }
  .mobile-user-logout {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    min-height: 38px;
    padding: .45rem .7rem;
    white-space: nowrap;
  }

  .content {
    width: 100%;
    max-width: none;
    min-height: 100dvh;
    padding: calc(56px + 1rem) .9rem calc(1.25rem + env(safe-area-inset-bottom));
  }

  html.portal-sidebar-collapsed .content {
    width: auto;
    max-width: 1600px;
  }

  .app-shell > .app-shell-sidebar-footer-actions {
    display: none;
  }

  .sidebar-footer-actions { grid-template-columns: 1fr 1fr; }

  .dash-conteudo-topo {
    gap: .6rem;
    margin-bottom: .55rem;
  }
  .dash-conteudo-titulo-linha .btn-favorito { width: 40px; height: 40px; }
  .dash-mobile-ambiente { display: inline; }
  .dash-mobile-voltar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    gap: .25rem;
    min-height: 40px;
    padding: .35rem .5rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--bg-elev);
    color: var(--text-dim);
    font-size: .72rem;
    font-weight: 600;
    white-space: nowrap;
  }
  .dash-mobile-voltar svg { width: 15px; height: 15px; }
  .dash-mobile-voltar:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
  /* Com a barra superior recolhida, os controles do título recebem o toque
     antes da faixa transparente que revela a barra. */
  body.mobile-dashboard-bar-hidden:not(.mobile-nav-open) .dash-mobile-voltar,
  body.mobile-dashboard-bar-hidden:not(.mobile-nav-open) .dash-conteudo-titulo-linha .btn-favorito {
    position: relative;
    z-index: 31;
  }
  /* Ao revelar a barra, o botão superior já leva ao menu principal. */
  body.mobile-dashboard-bar-visible .dash-mobile-voltar { display: none; }

  .dash-conteudo-titulo h2 {
    font-size: .95rem;
    line-height: 1.25;
    font-weight: 700;
  }

  .dash-conteudo-topo .card-pasta-tag {
    display: none;
  }

  .dash-conteudo-frame {
    height: calc(100dvh - 154px);
    /* A altura mínima do desktop não deve fazer o quadro ultrapassar a tela
       ao girar um celular para a orientação horizontal. */
    min-height: 0;
    border-radius: 12px;
  }

  .content:has(.dash-conteudo-frame) {
    --dash-mobile-zoom-area-height: 44px;
    display: flex;
    flex-direction: column;
    height: 100vh;
    height: 100dvh;
    min-height: 100vh;
    min-height: 100dvh;
    padding: calc(56px + .25rem) 0 0;
  }

  /* Controle deslizante de zoom exibido somente no mobile. */
  .dash-mobile-zoom-area {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .65rem;
    flex: 0 0 var(--dash-mobile-zoom-area-height);
    height: var(--dash-mobile-zoom-area-height);
    padding: .25rem .75rem;
    border-bottom: 1px solid var(--border);
    background: var(--bg-elev);
    color: var(--text-dim);
    user-select: none;
    -webkit-user-select: none;
    -webkit-touch-callout: none;
  }
  .dash-mobile-zoom-area label { flex: 0 0 auto; font-size: .72rem; color: var(--text-dim); }
  .dash-mobile-zoom-slider {
    -webkit-appearance: none;
    appearance: none;
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    height: 40px;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    touch-action: none;
    cursor: pointer;
  }
  .dash-mobile-zoom-slider::-webkit-slider-runnable-track { height: 4px; border-radius: 99px; background: var(--text-dim); }
  .dash-mobile-zoom-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 18px;
    height: 18px;
    margin-top: -7px;
    border: 2px solid var(--bg-elev);
    border-radius: 50%;
    background: var(--primary);
  }
  .dash-mobile-zoom-slider::-moz-range-track { height: 4px; border-radius: 99px; background: var(--text-dim); }
  .dash-mobile-zoom-slider::-moz-range-thumb { width: 16px; height: 16px; border: 2px solid var(--bg-elev); border-radius: 50%; background: var(--primary); }
  .dash-mobile-zoom-slider:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; border-radius: 6px; }
  .dash-mobile-zoom-value {
    flex: 0 0 auto;
    padding: .18rem .35rem;
    border: 1px solid var(--border);
    border-radius: 7px;
    font-size: .72rem;
    font-variant-numeric: tabular-nums;
  }

  body.mobile-dashboard-bar-hidden .content:has(.dash-conteudo-frame) {
    padding-top: .25rem;
  }

  .content:has(.dash-conteudo-frame) .page-head {
    display: none;
  }

  .content:has(.dash-conteudo-frame) .page-head,
  .content:has(.dash-conteudo-frame) .dash-conteudo-topo {
    padding-right: .75rem;
    padding-left: .75rem;
  }

  .content:has(.dash-conteudo-frame) .dash-conteudo-topo { flex: 0 0 auto; margin-bottom: .2rem; }
  .content:has(.dash-conteudo-frame) .dash-conteudo-titulo-linha { gap: .4rem; }
  .content:has(.dash-conteudo-frame) .dash-conteudo-titulo-linha .btn-favorito svg { width: 16px; height: 16px; }

  .content:has(.dash-conteudo-frame) .page-head p {
    margin-bottom: .65rem;
    font-size: .82rem;
  }

  .content:has(.dash-conteudo-frame) .dash-conteudo-frame {
    /* A área restante se ajusta inclusive a títulos com mais de uma linha. */
    flex: 1 1 auto;
    height: auto;
    min-height: 0;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    border-right: 0;
    border-left: 0;
    border-radius: 0;
  }

  .home-topo {
    gap: .8rem;
    margin-bottom: 1rem;
  }

  .home-topo h1 { font-size: 1.35rem; }
  .home-busca { width: 100%; min-width: 0; }
  .home-busca kbd { display: none; }

  .home-favoritos-grade {
    grid-template-columns: minmax(0, 1fr);
    gap: .7rem;
  }

  .home-card { padding: .75rem; }

  .home-tabela-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .home-tabela { min-width: 700px; }

  .panel,
  .cadastro-grid,
  .col {
    gap: .9rem;
  }

  .panel { padding: 1rem; }
}

@media (prefers-reduced-motion: reduce) {
  .sidebar, .app-shell::before, .sidebar-collapse-toggle, .sidebar-collapse-toggle svg { transition: none; }
}


/* Mantem o perfil no rodape da navegacao e leva Tema/Sair para depois da pagina
   somente em telas menores. No desktop, as acoes continuam no pe da sidebar. */
:root { --portal-sidebar-actions-height: 64px; }
@media (min-width: 861px) {
  .sidebar-footer {
    position: absolute;
    right: 0;
    bottom: var(--portal-sidebar-actions-height);
    left: 0;
    z-index: 2;
    margin-top: 0;
    padding: .85rem 1rem .55rem;
    background: var(--bg-elev);
  }
  .sidebar-footer .user-chip { margin-bottom: 0; }
  .sidebar > .side-nav {
    padding-bottom: calc(var(--portal-sidebar-actions-height) + 5rem);
  }
  .app-shell > .app-shell-sidebar-footer-actions {
    position: fixed;
    z-index: 21;
    right: auto;
    bottom: 0;
    left: 0;
    width: var(--portal-sidebar-width);
    margin: 0;
    padding: .45rem 1rem 1rem;
    border-top: 1px solid var(--border);
    background: var(--bg-elev);
    transition: transform var(--portal-sidebar-duration) var(--portal-sidebar-ease), visibility var(--portal-sidebar-duration) var(--portal-sidebar-ease);
  }
  html.portal-sidebar-collapsed .app-shell > .app-shell-sidebar-footer-actions {
    transform: translateX(-100%);
    visibility: hidden;
    pointer-events: none;
  }
}

@media (max-width: 860px) {
  .sidebar-footer {
    position: static;
    margin-top: 0;
    padding: .75rem 1rem;
  }
  .sidebar-footer .user-chip { margin-bottom: 0; }
  .app-shell > .app-shell-sidebar-footer-actions {
    position: static;
    z-index: auto;
    right: auto;
    bottom: auto;
    left: auto;
    width: auto;
    margin: 0;
    padding: 1rem 1rem calc(1rem + env(safe-area-inset-bottom));
    transform: none;
    visibility: visible;
    pointer-events: auto;
    border-top: 1px solid var(--border);
    background: var(--bg-elev);
    transition: none;
  }
  html.portal-sidebar-collapsed .app-shell > .app-shell-sidebar-footer-actions {
    transform: none;
    visibility: visible;
    pointer-events: auto;
  }
  .sidebar-footer-actions { grid-template-columns: 1fr; }
}

/* =========================================================
   Administração de Usuários — exceção individual por dashboard
   ========================================================= */
.permission-option-dashboard.is-inherited .permission-checkbox {
  cursor: pointer;
}
.permission-option-dashboard.is-inherited .permission-checkbox input {
  cursor: pointer;
}
.permission-option-dashboard.is-exception,
.permission-option-dashboard.is-inherited.is-exception {
  background: rgba(224, 82, 82, .08);
  border-color: rgba(224, 82, 82, .30);
}
.permission-option-dashboard.is-exception .permission-option-name,
.permission-option-dashboard.is-inherited.is-exception .permission-option-name {
  color: #d85b5b;
  font-weight: 700;
}
.permission-option-dashboard.is-exception .permission-option-name::after,
.permission-option-dashboard.is-inherited.is-exception .permission-option-name::after {
  content: " bloqueado";
  margin-left: .35rem;
  color: #d85b5b;
  font-size: .58rem;
  font-weight: 700;
  opacity: .9;
}
.permission-option-dashboard.is-exception.has-access {
  background: rgba(224, 82, 82, .08);
  border-color: rgba(224, 82, 82, .30);
}

/* =========================================================
   Administração de Usuários — autonomia em todos os níveis
   ========================================================= */
.permission-option.is-exception:not(.permission-option-dashboard) {
  background: rgba(224, 82, 82, .08);
  border-color: rgba(224, 82, 82, .30);
}
.permission-option.is-exception:not(.permission-option-dashboard) .permission-option-name {
  color: #d85b5b;
  font-weight: 700;
}
.permission-option.is-exception:not(.permission-option-dashboard) .permission-option-name::after {
  content: " bloqueado";
  margin-left: .35rem;
  color: #d85b5b;
  font-size: .58rem;
  font-weight: 700;
  opacity: .9;
}
.permission-option.is-exception:not(.permission-option-dashboard) .permission-option-count,
.permission-option.is-exception:not(.permission-option-dashboard) .permission-option-arrow {
  color: #d85b5b;
}
.permission-input-divisao,
.permission-input-tema,
.permission-input-dashboard {
  cursor: pointer;
}


/* Administração de usuários — filtro hierárquico estrito por cliente */
.permission-options .permission-option[hidden],
.permission-options .permission-option[aria-hidden="true"] {
  display: none !important;
}

/* Selecionar todas as divisões visíveis */
.permission-select-all-row {
  display: flex;
  align-items: center;
  gap: .55rem;
  margin-top: .55rem;
  padding: .5rem .55rem;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--bg-elev);
  color: var(--text);
  cursor: pointer;
  user-select: none;
}
.permission-select-all-row:hover {
  border-color: var(--primary-border-tint);
  background: var(--primary-tint);
}
.permission-select-all-row .permission-checkbox {
  flex: 0 0 auto;
}
.permission-select-all-copy {
  display: grid;
  min-width: 0;
  gap: .05rem;
}
.permission-select-all-copy strong {
  font-size: .74rem;
  line-height: 1.1;
}
.permission-select-all-copy small {
  color: var(--text-dim);
  font-size: .66rem;
  line-height: 1.15;
}
.permission-select-all-row:has(input:disabled) {
  opacity: .55;
  cursor: default;
}

/* =========================================================
   Sidebar — fechamento com a mesma fluidez visual da abertura
   ========================================================= */
/* O mesmo timing e curva sao usados nos dois sentidos. A transicao fica na
   regra base (acima), portanto ocultar e reexibir usam exatamente o mesmo
   comportamento, sem troca de duracao no meio do clique. */

/* =========================================================
   Árvores de Cadastro e Administração
   Mesmo padrão visual da árvore da guia Dashboards.
   As ações de gestão continuam disponíveis, mas os nós passam a usar
   os mesmos recuos, tamanho, hover, seleção e conectores da navegação.
   ========================================================= */
.cadastro-tree-browser {
  padding: .2rem 0 .3rem .5rem;
  background: transparent;
}
.cadastro-tree-root-row {
  display: none;
}
.cadastro-tree-list { padding: 0 0 .2rem; }
.cad-tree-node, .cad-tree-leaf { margin: .1rem 0; }
.cad-tree-row {
  min-height: 0;
  padding: 0;
  border-radius: 0;
  gap: 0;
}
.cad-tree-node > summary { border-radius: 7px; }
.cad-tree-node > summary:hover,
.cad-tree-leaf > .cad-tree-row:hover { background: var(--bg-card); }
.cad-tree-caret {
  width: auto;
  height: auto;
  padding: .4rem .15rem .4rem .5rem;
  color: var(--text-dim);
}
.cad-tree-select {
  gap: .45rem;
  min-height: 0;
  padding: .4rem .5rem .4rem .2rem;
  border-radius: 7px;
  color: var(--text-dim);
  font-size: .8rem;
}
.cad-tree-select:hover { color: var(--text); }
.cad-tree-row.selected,
.cad-tree-row:has(.cad-tree-select:focus-visible) {
  background: var(--primary-tint);
  box-shadow: inset 2px 0 0 var(--primary);
}
.cad-tree-row.selected .cad-tree-select,
.cad-tree-row:has(.cad-tree-select:focus-visible) .cad-tree-select { color: var(--primary); font-weight: 600; }
.cad-tree-actions { gap: .1rem; padding-right: .25rem; }
.cad-tree-icon-btn { width: 25px; height: 25px; border-radius: 6px; font-size: .78rem; }
.cad-tree-children { border-left: 1px dashed var(--border); margin-left: .95rem; }
.cad-tree-node.level-1 > .cad-tree-children, .cad-tree-leaf.level-1 { margin-left: 1.55rem; }
.cad-tree-node.level-2 > .cad-tree-children, .cad-tree-leaf.level-2 { margin-left: 2.2rem; }
.cad-tree-leaf.level-3 { margin-left: 2.85rem; }

.structure-admin-tree-list { padding: .2rem .55rem .75rem 1.05rem; }
.structure-tree-row {
  min-height: 0;
  padding: .4rem .5rem;
  border-radius: 7px;
  color: var(--text-dim);
}
.structure-tree-row.level-1 { padding-left: 1rem; }
.structure-tree-row.level-2 { padding-left: 1.65rem; }
.structure-tree-row.level-3 { padding-left: 2.3rem; }
.structure-tree-row:hover { background: var(--bg-card); color: var(--text); }
.structure-tree-row.active {
  background: var(--primary-tint);
  color: var(--primary);
  box-shadow: inset 2px 0 0 var(--primary);
}
.structure-tree-children { border-left: 1px dashed var(--border); margin-left: .95rem; }
.structure-tree-toggle { color: var(--text-dim); }
.structure-tree-count { background: transparent; border-color: transparent; padding-right: 0; }

.cad-tree-folder-icon,
.structure-folder-icon {
  flex: 0 0 auto;
}

/* Pastas: mesma cor da navegação lateral, nos dois temas.
   A seleção continua destacada na linha; não recolore o ícone de pasta. */
.cad-tree-folder-icon,
.structure-tree-row .structure-folder-icon {
  color: var(--text-dim);
}
.cad-tree-row:hover .cad-tree-folder-icon,
.structure-tree-row:hover .structure-folder-icon {
  color: var(--text);
}
.cad-tree-select {
  font-family: inherit;
  font-weight: 400;
}
.structure-admin-tree .structure-tree-row:not(.active) strong {
  font-weight: 400;
}

/* Árvore compartilhada: as classes nav-arvore-* são as da guia Dashboard. */
[data-portal-tree] .portal-tree-node[hidden],
[data-portal-tree] .portal-tree-dashboard[hidden] { display: none !important; }
[data-portal-tree] .portal-tree-name { flex: 1; min-width: 0; }
[data-portal-tree] .portal-tree-name-control {
  display: block; min-height: 0; margin: 0; padding: 0;
  border: 0; border-radius: 0; background: transparent;
  color: inherit; font: inherit; text-align: left; text-decoration: none;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer;
}
[data-portal-tree] .portal-tree-name-control:hover { color: inherit; background: transparent; }
[data-portal-tree] .portal-tree-row > svg { flex-shrink: 0; }
[data-portal-tree] .portal-tree-actions {
  display: inline-flex; align-items: center; gap: .15rem; flex-shrink: 0;
  overflow: visible; margin-left: auto;
}
[data-portal-tree] .portal-tree-action {
  display: inline-flex; align-items: center; justify-content: center;
  width: auto; min-height: 26px; margin: 0; padding: .2rem .35rem;
  border: 1px solid var(--border); border-radius: 5px;
  background: transparent; color: var(--text-dim);
  font: inherit; font-size: .7rem; font-weight: 400; cursor: pointer;
  text-decoration: none;
}
[data-portal-tree] .portal-tree-action:hover { color: var(--text); background: var(--bg-elev); }
[data-portal-tree] .portal-tree-row.selected { background: var(--primary-tint); box-shadow: inset 2px 0 0 var(--primary); }
[data-portal-tree] .portal-tree-action[aria-pressed="true"],
[data-portal-tree] .portal-tree-action[aria-current="page"] { color: var(--primary); border-color: var(--primary); }
[data-portal-tree] summary:focus-visible,
[data-portal-tree] a:focus-visible,
[data-portal-tree] button:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.portal-tree-empty { display: block; padding: .35rem .5rem; color: var(--text-dim); font-size: .72rem; }
.portal-tree-tools { display: flex; flex-wrap: wrap; gap: .35rem; padding: 0 1rem .5rem; }
@media (max-width: 600px) {
  [data-portal-tree] .portal-tree-row { flex-wrap: wrap; }
  [data-portal-tree] .portal-tree-actions { max-width: 100%; }
}

/* Árvores de dashboards: hierarquia visual comum, estados independentes.
   Escopo próprio para preservar a árvore de usuários da Administração Master. */
.dashboard-tree {
  --tree-indent: 18px;
  --tree-row-height: 38px;
  min-width: 0;
  color: var(--text);
}
.dashboard-tree .portal-tree-node { min-width: 0; margin: 3px 0; }
.dashboard-tree .portal-tree-row {
  position: relative; display: flex; align-items: center; flex-wrap: nowrap;
  gap: 9px; min-height: var(--tree-row-height); margin: 0; padding: 7px 9px;
  border: 1px solid transparent; border-radius: 8px;
  color: var(--text); background: transparent;
  font-size: .84rem; font-weight: 400; line-height: 1.4;
  list-style: none; cursor: pointer;
  transition: background-color .16s ease, border-color .16s ease, color .16s ease;
}
.dashboard-tree .portal-tree-row::-webkit-details-marker { display: none; }
.dashboard-tree .portal-tree-row::marker { content: ''; }
.dashboard-tree .portal-tree-row:hover { background: var(--bg-card); border-color: var(--border); }
.dashboard-tree .portal-tree-row .chevron { width: 14px; height: 14px; color: var(--text-dim); }
.dashboard-tree .portal-tree-folder-icon { width: 20px; height: 20px; color: var(--text-dim); }
.dashboard-tree .portal-tree-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-tree .portal-tree-row.selected {
  background: var(--primary-tint); color: var(--primary);
  border-color: var(--primary-border-tint); box-shadow: inset 3px 0 0 var(--primary);
}
.dashboard-tree .portal-tree-row.selected .chevron { color: var(--primary); }
.dashboard-tree .portal-tree-children {
  display: flex; flex-direction: column; gap: 2px;
  margin: 2px 0 5px 16px; padding: 0 0 0 var(--tree-indent);
  border-left: 1px solid var(--border); min-width: 0;
}
.dashboard-tree .portal-tree-children > .portal-tree-node,
.dashboard-tree .portal-tree-children > .portal-tree-dashboard,
.dashboard-tree .portal-tree-children > .portal-tree-empty { position: relative; }
.dashboard-tree .portal-tree-children > .portal-tree-node::before,
.dashboard-tree .portal-tree-children > .portal-tree-dashboard::before,
.dashboard-tree .portal-tree-children > .portal-tree-empty::before {
  content: ''; position: absolute; left: calc(-1 * var(--tree-indent));
  top: calc(var(--tree-row-height) / 2); width: var(--tree-indent);
  border-top: 1px solid var(--border); pointer-events: none;
}
.dashboard-tree .portal-tree-dashboard {
  display: flex; align-items: center; gap: 9px; min-width: 0;
  min-height: var(--tree-row-height); margin: 0; padding: 7px 9px;
  border: 1px solid transparent; border-radius: 8px;
  color: var(--text-dim); background: transparent;
  font-size: .81rem; font-weight: 400; line-height: 1.4;
  white-space: normal; overflow: visible;
}
.dashboard-tree .portal-tree-dashboard-link {
  display: flex; align-items: center; flex: 1 1 auto; gap: 7px;
  min-width: 0; overflow: hidden; color: inherit; text-decoration: none;
}
.dashboard-tree .portal-tree-report-icon { width: 18px; height: 18px; flex-shrink: 0; }
.dashboard-tree .portal-tree-label { min-width: 0; overflow-wrap: anywhere; }
.dashboard-tree .portal-tree-dashboard-link .portal-tree-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-tree a.portal-tree-dashboard:hover,
.dashboard-tree .portal-tree-dashboard-row:hover { color: var(--text); background: var(--bg-card); border-color: var(--border); }
.portal-tree-favorite-toggle {
  display: inline-flex; align-items: center; justify-content: center; flex: 0 0 26px;
  width: 26px; height: 26px; margin: 0 0 0 auto; padding: 0;
  border: 1px solid transparent; border-radius: 6px;
  background: transparent; color: var(--text-dim); cursor: pointer;
  transition: color .15s ease, background-color .15s ease, border-color .15s ease, transform .1s ease;
}
.portal-tree-favorite-toggle:hover,
.portal-tree-favorite-toggle:focus-visible {
  color: var(--primary); background: var(--primary-tint); border-color: var(--primary-border-tint);
}
.portal-tree-favorite-toggle:active { transform: scale(.92); }
.portal-tree-favorite-toggle.ativo { color: var(--primary); }
.portal-tree-favorite-toggle:disabled { opacity: .65; cursor: wait; }
@media (max-width: 860px) {
  .dashboard-tree .portal-tree-favorite-toggle {
    flex-basis: 32px; width: 32px; height: 32px;
    border-color: var(--border); background: var(--bg-elev);
  }
}
.dashboard-tree .portal-tree-dashboard.ativo {
  color: var(--primary); background: var(--primary-tint);
  border-color: var(--primary-border-tint); box-shadow: inset 3px 0 0 var(--primary);
}
.dashboard-tree .portal-tree-empty { min-height: var(--tree-row-height); padding: 9px; }
.dashboard-tree .portal-tree-row > .portal-tree-actions { gap: 5px; overflow: visible; }
.dashboard-tree .portal-tree-actions .cad-tree-icon-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; min-height: 30px; flex-shrink: 0;
  margin: 0; padding: 0; border: 1px solid var(--border); border-radius: 7px;
  background: var(--bg-elev); color: var(--text); font-size: 1.05rem; line-height: 1;
}
.dashboard-tree .portal-tree-actions .cad-tree-icon-btn:hover { border-color: var(--primary); color: var(--primary); }
.dashboard-tree .portal-tree-actions .cad-tree-icon-btn.danger { color: var(--danger); }
.dashboard-tree .portal-tree-actions .cad-tree-icon-btn.danger:hover { border-color: var(--danger); }
.dashboard-tree-favorites { margin: 2px 0 12px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.dashboard-tree-favorites > summary { min-height: 38px; gap: 9px; color: var(--text); font-size: .84rem; }
.dashboard-tree-favorites > summary > svg:nth-child(2) { width: 18px; height: 18px; fill: none; }
:is(#sidebarDashboardTree, .dashboard-tree-favorites, .dashboard-tree-menu) { --tree-indent: 12px; --tree-row-height: 35px; }
#sidebarDashboardTree { padding: 0 2px 8px 0; }
.dashboard-tree-menu > .portal-tree-children { margin-top: 4px; margin-bottom: 10px; margin-right: 4px; }
:is(#sidebarDashboardTree, .dashboard-tree-favorites, .dashboard-tree-menu) .portal-tree-row { gap: 6px; padding: 6px 4px; font-size: .8rem; }
:is(#sidebarDashboardTree, .dashboard-tree-favorites, .dashboard-tree-menu) .portal-tree-children { margin-left: 10px; }
:is(#sidebarDashboardTree, .dashboard-tree-favorites, .dashboard-tree-menu) .portal-tree-dashboard { padding: 6px; gap: 7px; font-size: .77rem; }

/* Sidebar do Master: ambiente como nível raiz da navegação.  O conteúdo de
   cada ambiente reutiliza a mesma árvore de pastas/subpastas/dashboards, mas
   ganha um cabeçalho próprio para eliminar ambiguidades entre nomes iguais. */
#sidebarDashboardTree .portal-tree-environment-node { margin: 4px 0; }
#sidebarDashboardTree .portal-tree-environment-node { position: relative; }
#sidebarDashboardTree .portal-tree-environment-row {
  min-height: 38px;
  padding: 6px;
  border-color: var(--border);
  background: var(--bg-elev);
  font-weight: 650;
}
#sidebarDashboardTree .portal-tree-environment-row:hover {
  background: var(--bg-card);
  border-color: var(--primary-border-tint);
}
#sidebarDashboardTree .portal-tree-environment-row .portal-tree-environment-icon {
  flex-shrink: 0;
  color: var(--primary);
}
#sidebarDashboardTree .portal-tree-environment-status {
  flex-shrink: 0;
  color: var(--danger);
  font-size: .62rem;
  font-weight: 600;
}
#sidebarDashboardTree .portal-tree-environment-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 21px;
  height: 20px;
  margin-left: 0;
  padding: 0 .34rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--bg-card);
  color: var(--text-dim);
  font-size: .64rem;
  font-weight: 700;
}
#sidebarDashboardTree .portal-tree-environment-name {
  flex: 1 1 auto;
  max-width: none;
}
#sidebarDashboardTree .portal-tree-environment-controls {
  display: inline-flex !important;
  align-items: center;
  gap: 2px;
  flex: 0 0 auto;
  opacity: 0;
  pointer-events: none;
  transition: opacity .14s ease;
}
#sidebarDashboardTree .portal-tree-environment-row:hover .portal-tree-environment-controls,
#sidebarDashboardTree .portal-tree-environment-node:focus-within .portal-tree-environment-controls,
#sidebarDashboardTree .portal-tree-environment-controls:hover,
#sidebarDashboardTree .portal-tree-environment-controls:focus-within {
  opacity: 1;
  pointer-events: auto;
}
#sidebarDashboardTree .portal-tree-environment-row:has(+ .portal-tree-environment-controls) {
  position: relative;
  padding-right: 82px;
}
#sidebarDashboardTree .portal-tree-environment-row:has(+ .portal-tree-environment-controls) .portal-tree-environment-count {
  position: absolute;
  right: 7px;
}
#sidebarDashboardTree .portal-tree-environment-row + .portal-tree-environment-controls {
  position: absolute;
  z-index: 2;
  top: 7px;
  right: 35px;
}
#sidebarDashboardTree .portal-tree-environment-row:hover + .portal-tree-environment-controls {
  opacity: 1;
  pointer-events: auto;
}
#sidebarDashboardTree .portal-tree-environment-action {
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  margin: 0;
  padding: 2px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg-card);
  color: var(--text-dim);
  cursor: pointer;
}
#sidebarDashboardTree .portal-tree-environment-action:hover {
  border-color: var(--primary);
  color: var(--primary);
}
#sidebarDashboardTree .portal-tree-environment-action svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
@media (hover: none) {
  #sidebarDashboardTree .portal-tree-environment-controls {
    opacity: 1;
    pointer-events: auto;
  }
}
#sidebarDashboardTree .portal-tree-environment-children {
  margin-top: 3px;
  margin-bottom: 6px;
  margin-left: 10px;
  padding-left: 12px;
}
#sidebarDashboardTree .portal-tree-environment-children > .portal-tree-empty {
  padding: 8px 6px;
  font-size: .7rem;
}

/* Árvore completa do Master: ambiente como primeiro nível, sem misturar
   dashboards de pastas que pertencem a outro ambiente. */
.dashboard-admin-environment-tree { padding: .45rem .65rem .8rem; scrollbar-width: thin; scrollbar-color: var(--border) transparent; }
.dashboard-admin-environment-node { margin: 3px 0; }
.dashboard-admin-environment-row { min-height: 42px !important; background: var(--bg-elev) !important; border-color: var(--border) !important; font-weight: 600 !important; }
.dashboard-admin-environment-row:hover { background: var(--bg-card) !important; }
.dashboard-admin-environment-row .chevron { color: var(--text-dim); }
.dashboard-admin-environment-icon { flex-shrink: 0; color: var(--primary); }
.dashboard-admin-environment-count { display: inline-flex; align-items: center; justify-content: center; min-width: 25px; height: 22px; padding: 0 .42rem; border: 1px solid var(--border); border-radius: 999px; background: var(--bg-card); color: var(--text-dim); font-size: .7rem; font-weight: 700; }
.dashboard-admin-environment-children { margin-left: 16px !important; padding-left: 13px !important; }
.dashboard-admin-environment-children .portal-tree-dashboard { font-size: .79rem; }
.dash-admin-directory .portal-tree-dashboard.ativo { color: var(--text-dim); background: transparent; border-color: transparent; box-shadow: none; }
.dash-admin-directory .portal-tree-dashboard.ativo .portal-tree-report-icon { color: var(--primary); }
.dash-admin-directory .portal-tree-dashboard.selected { color: var(--primary); background: var(--primary-tint); border-color: var(--primary-border-tint); box-shadow: inset 3px 0 0 var(--primary); }
.dashboard-admin-environment-children .portal-tree-dashboard small { color: var(--danger); font-size: .68rem; }
.admin-filter-hidden { display: none !important; }
.dash-admin-owner-card { grid-column: 1 / -1; }
.dash-admin-owner { display: flex; align-items: center; gap: .75rem; padding: .72rem .8rem; border: 1px solid var(--primary-border-tint); border-radius: 9px; background: linear-gradient(100deg, var(--primary-tint), transparent); }
.dash-admin-owner-avatar { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; flex: 0 0 36px; border-radius: 50%; background: var(--bg-glow); border: 1px solid var(--border); color: var(--text); font-size: .78rem; font-weight: 700; }
.dash-admin-owner strong, .dash-admin-owner small { display: block; min-width: 0; overflow-wrap: anywhere; }
.dash-admin-owner strong { font-size: .84rem; }
.dash-admin-owner small { margin-top: .18rem; color: var(--text-dim); font-size: .72rem; }
.dash-admin-owner-missing { margin: 0; color: var(--text-dim); font-size: .8rem; }
.cadastro-tree-structure-card {
  background: var(--bg-card);
  border: 1px solid var(--border); border-radius: 18px;
}
.structure-admin-tree.panel {
  background: linear-gradient(145deg, var(--bg-glow), transparent 60%), var(--bg-elev);
  border: 1px solid var(--border); border-radius: 18px;
}
.cadastro-tree-browser { padding: 0; min-width: 0; }
.structure-admin-tree-list.dashboard-tree { padding: 4px 12px 16px; scrollbar-width: thin; scrollbar-color: var(--border) transparent; }
.cadastro-tree-header-actions .btn, .structure-admin-tree .portal-tree-tools .btn { border-radius: 8px; font-weight: 400; }
.cadastro-tree-header-actions .btn:hover, .structure-admin-tree .portal-tree-tools .btn:hover { color: var(--primary); border-color: var(--primary); }
@media (max-width: 600px) {
  #estruturaTree { --tree-indent: 10px; }
  #estruturaTree .portal-tree-children { margin-left: 8px; }
  #estruturaTree .portal-tree-row { gap: 6px; padding: 6px 4px; }
  #estruturaTree .portal-tree-actions { gap: 3px; }
}
@media (prefers-reduced-motion: reduce) {
  .dashboard-tree .portal-tree-row, .dashboard-tree .chevron { transition: none; }
}

/* Favoritos: prévia do relatório e somente a identificação compacta. */
.home-card.home-card-preview {
  --favorite-glass-base: rgba(30, 40, 61, .78);
  --favorite-glass-shine: rgba(207, 225, 255, .15);
  --favorite-glass-tint: rgba(93, 117, 211, .12);
  --favorite-glass-border: rgba(191, 211, 255, .25);
  --favorite-glass-shadow: rgba(0, 0, 0, .24);
  position: relative; isolation: isolate;
  padding: 12px 12px 0; gap: 0; min-width: 0; overflow: hidden;
  border: 1px solid var(--favorite-glass-border); border-radius: 22px;
  background:
    linear-gradient(135deg, var(--favorite-glass-shine), transparent 45%),
    linear-gradient(155deg, transparent 40%, var(--favorite-glass-tint)),
    var(--favorite-glass-base);
  -webkit-backdrop-filter: blur(14px) saturate(130%);
  backdrop-filter: blur(14px) saturate(130%);
  box-shadow: 0 8px 22px var(--favorite-glass-shadow),
              0 2px 5px rgba(25, 49, 100, .08),
              inset 0 1px 0 var(--favorite-glass-shine);
  cursor: pointer;
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}
:root[data-theme="claro"] .home-card.home-card-preview {
  --favorite-glass-base: rgba(242, 246, 255, .76);
  --favorite-glass-shine: rgba(255, 255, 255, .94);
  --favorite-glass-tint: rgba(154, 173, 248, .15);
  --favorite-glass-border: rgba(255, 255, 255, .95);
  --favorite-glass-shadow: rgba(63, 86, 148, .14);
}
.home-card.home-card-preview::before {
  content: ''; position: absolute; inset: 0; z-index: 0;
  border-radius: inherit; pointer-events: none;
  background: linear-gradient(130deg, var(--favorite-glass-shine) 0%, transparent 19%, transparent 83%, var(--favorite-glass-tint) 100%);
}
.home-card.home-card-preview:hover {
  transform: translateY(-4px); border-color: var(--accent);
  box-shadow: 0 12px 28px var(--favorite-glass-shadow),
              0 0 0 1px var(--accent), inset 0 1px 0 var(--favorite-glass-shine);
}
.home-card-preview:focus-within { outline: 2px solid var(--accent); outline-offset: 3px; }
.home-card-previa {
  position: relative; z-index: 1; width: 100%; aspect-ratio: 16 / 9; overflow: hidden;
  border: 1px solid var(--border); border-radius: 11px;
  background: var(--bg-elev);
  box-shadow: 0 5px 14px var(--favorite-glass-shadow);
  pointer-events: none; user-select: none;
}
.home-card-previa iframe {
  position: absolute; top: 0; left: 0; width: 1280px; height: 720px;
  max-width: none; border: 0; transform-origin: top left;
  transform: scale(var(--preview-scale, .25)); pointer-events: none;
}
.home-card-previa-status {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  color: var(--text-dim); font-size: .75rem;
}
.home-card-previa.is-loaded .home-card-previa-status { visibility: hidden; }
.home-card-link { display: block; z-index: 2; padding: .85rem .25rem .95rem; color: inherit; text-decoration: none; }
.home-card-link::after { content: ''; position: absolute; inset: 0; z-index: 3; border-radius: 22px; cursor: pointer; }
.home-card-link .card-pasta-tag { display: block; margin: 0; font-weight: 400; }
@media (prefers-reduced-motion: reduce) {
  .home-card.home-card-preview { transition: none; }
  .home-card.home-card-preview:hover { transform: none; }
}


/* Minha Conta: perfil, senha e recuperação por e-mail. */
#minhaConta {
  --mc-surface: var(--bg-card); --mc-text: var(--text); --mc-muted: var(--text-dim);
  --mc-border: var(--border); --mc-accent: var(--primary); --mc-ink: var(--primary-ink);
  --mc-tint: var(--primary-tint); --mc-soft: var(--bg-elev); --mc-green: #74d9b3;
  --mc-red: var(--danger); --mc-radius: 18px;
  color: var(--mc-text); font-size: 14px; line-height: 1.5; min-width: 0;
}
:root[data-theme="claro"] #minhaConta { --mc-green: #187354; --mc-soft: #f8fafc; }
#minhaConta *{box-sizing:border-box}
#minhaConta h1,#minhaConta h2,#minhaConta p{margin:0}
#minhaConta button,#minhaConta input{font:inherit}
#minhaConta button{cursor:pointer}
#minhaConta [hidden]{display:none!important}
#minhaConta i,#minhaConta svg{width:18px;height:18px;flex:none}
#minhaConta .mc-eyebrow{font-size:11px;letter-spacing:1.6px;text-transform:uppercase;color:var(--mc-muted);margin-bottom:5px}
#minhaConta h1{font-size:28px;letter-spacing:-.9px;font-weight:500;line-height:1.2}
#minhaConta .mc-subtitle{color:var(--mc-muted);margin-top:7px;font-size:13px}
#minhaConta .mc-identity{background:var(--mc-surface);border:1px solid var(--mc-border);border-radius:var(--mc-radius);margin-top:24px;padding:22px;display:flex;align-items:center;gap:18px;position:relative}
#minhaConta .mc-identity:before{content:"";position:absolute;left:0;top:22px;bottom:22px;width:3px;background:var(--mc-accent);border-radius:0 4px 4px 0}
#minhaConta .mc-avatar{width:58px;height:58px;display:grid;place-items:center;flex:none;border-radius:17px;background:var(--mc-tint);color:var(--mc-accent);font-size:26px;font-weight:500;overflow:hidden}
#minhaConta .mc-avatar img{width:100%;height:100%;object-fit:cover;display:block}
#minhaConta .mc-name{font-size:19px;font-weight:500;letter-spacing:-.3px}
#minhaConta .mc-login{color:var(--mc-muted);font-size:13px}
#minhaConta .mc-role{margin-left:auto;display:flex;align-items:center;gap:7px;border:1px solid var(--mc-border);border-radius:30px;padding:7px 11px;font-size:12px;white-space:nowrap}
#minhaConta .mc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:20px;align-items:stretch}
#minhaConta .mc-section{min-width:0;display:flex;flex-direction:column;background:var(--mc-surface);border:1px solid var(--mc-border);border-radius:var(--mc-radius);padding:22px}
#minhaConta .mc-section-top{display:flex;gap:12px;align-items:center;margin-bottom:12px}
#minhaConta .mc-icon{width:36px;height:36px;display:grid;place-items:center;background:var(--mc-soft);border:1px solid var(--mc-border);border-radius:11px;color:var(--mc-accent);flex:none}
#minhaConta h2{font-size:17px;font-weight:500;letter-spacing:-.25px}
#minhaConta .mc-description{color:var(--mc-muted);font-size:12px;min-height:38px}
#minhaConta .mc-form{display:flex;flex-direction:column;gap:17px;margin-top:22px;flex:1}
#minhaConta .mc-field{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:500;min-width:0}
#minhaConta .mc-input-wrap{display:flex;border:1px solid var(--mc-border);border-radius:10px;background:var(--mc-soft);min-width:0;align-items:center}
#minhaConta .mc-input-wrap:focus-within{outline:2px solid var(--mc-accent);outline-offset:2px}
#minhaConta input{color:var(--mc-text);background:transparent;border:none;padding:11px 12px;min-width:0;width:100%;font-size:16px;font-weight:400}
#minhaConta input::placeholder{color:var(--mc-muted);font-size:12px}
#minhaConta .mc-eye{background:transparent;border:none;color:var(--mc-muted);display:grid;place-items:center;min-width:42px;min-height:44px}
#minhaConta .mc-rules{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;margin:0;padding:0;list-style:none;font-size:11px;color:var(--mc-muted)}
#minhaConta .mc-rules li{display:flex;align-items:center;gap:5px}
#minhaConta .mc-rules svg{width:12px;height:12px}
#minhaConta .mc-rules li[data-met="true"]{color:var(--mc-green)}
#minhaConta .mc-submit{display:flex;align-items:center;justify-content:center;gap:8px;min-height:43px;border-radius:10px;font-weight:500;font-size:13px;margin-top:auto;padding:11px 15px}
#minhaConta .mc-primary{background:var(--mc-accent);color:var(--mc-ink);border:1px solid var(--mc-accent)}
#minhaConta .mc-secondary{background:var(--mc-surface);color:var(--mc-text);border:1px solid var(--mc-border)}
#minhaConta .mc-feedback{font-size:12px;color:var(--mc-green);background:var(--mc-soft);padding:10px 12px;border-radius:9px;margin-top:10px}
#minhaConta .mc-feedback[data-error="true"]{color:var(--mc-red)}
#minhaConta .mc-footer{display:flex;gap:7px;align-items:center;color:var(--mc-muted);font-size:11px;margin-top:20px}
#minhaConta .mc-footer svg{width:14px;height:14px}
#minhaConta .mc-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
#minhaConta .mc-photo-section { grid-column: 1 / -1; }
#minhaConta .mc-password-section { grid-column: 1 / -1; }
#minhaConta .mc-photo-section .mc-description { min-height: 0; }
#minhaConta .mc-photo-form { margin-top: 18px; gap: 14px; }
#minhaConta .mc-photo-upload-row { display: flex; align-items: center; gap: 14px; min-width: 0; }
#minhaConta .mc-photo-preview { width: 70px; height: 70px; flex: none; display: grid; place-items: center; overflow: hidden; border-radius: 50%; color: var(--mc-accent); background: var(--mc-tint); border: 1px solid var(--mc-border); font-size: 26px; font-weight: 500; }
#minhaConta .mc-photo-preview img { width: 100%; height: 100%; object-fit: cover; display: block; }
#minhaConta .mc-photo-file-field { display: flex; flex: 1; flex-direction: column; gap: 7px; min-width: 0; font-size: 12px; font-weight: 500; }
#minhaConta .mc-photo-file-field input[type="file"] { width: 100%; min-height: 43px; padding: 9px 10px; color: var(--mc-muted); border: 1px solid var(--mc-border); border-radius: 10px; background: var(--mc-soft); font-size: 12px; }
#minhaConta .mc-photo-file-field small { color: var(--mc-muted); font-size: 11px; font-weight: 400; line-height: 1.45; }
#minhaConta .mc-photo-actions { display: flex; justify-content: flex-end; }
#minhaConta .mc-photo-actions .mc-submit { min-width: 175px; margin-top: 0; }
#minhaConta .mc-photo-remove { display: flex; align-items: center; gap: 12px; margin-top: 12px; }
#minhaConta .mc-photo-remove-btn { display: inline-flex; align-items: center; gap: 7px; border: 0; background: transparent; color: var(--mc-red); padding: 4px 0; font-size: 12px; }
#minhaConta .mc-photo-remove-btn:hover { text-decoration: underline; }
#minhaConta .mc-alert { margin-top: 20px; }
#minhaConta .mc-identity > div:not(.mc-avatar) { min-width: 0; overflow-wrap: anywhere; }
#minhaConta .mc-input-wrap { width: 100%; }
#minhaConta .mc-input-wrap input:focus { outline: none; }
#minhaConta .mc-submit:disabled { opacity: .65; cursor: wait; }
#minhaConta .mc-eye:hover { color: var(--mc-accent); }
@media (max-width: 600px) {
  #minhaConta .mc-identity { padding: 18px; flex-wrap: wrap; gap: 12px; }
  #minhaConta .mc-role { margin-left: 70px; margin-top: -7px; white-space: normal; }
  #minhaConta .mc-section { padding: 20px; }
  #minhaConta h1 { font-size: 25px; }
  #minhaConta .mc-description { min-height: 0; }
  #minhaConta .mc-photo-upload-row { align-items: flex-start; }
  #minhaConta .mc-photo-preview { width: 58px; height: 58px; }
  #minhaConta .mc-photo-actions .mc-submit { width: 100%; }
}

/* Minha Conta — visual compacto, igual para Master, Administrador e Visualizador. */
#minhaConta .mc-page-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 22px; }
#minhaConta .mc-title-line { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
#minhaConta .mc-header-identity { display: inline-flex; align-items: center; gap: 9px; color: var(--mc-muted); font-size: 13px; }
#minhaConta .mc-header-identity strong { color: var(--mc-text); font-weight: 500; }
#minhaConta .mc-header-role { color: var(--mc-accent); }
#minhaConta .mc-secure-status { display: inline-flex; align-items: center; gap: 7px; flex: none; color: var(--mc-green); font-size: 12px; font-weight: 600; padding-top: 9px; }
#minhaConta .mc-secure-status svg { width: 17px; height: 17px; }
#minhaConta .mc-grid { grid-template-columns: minmax(255px, .85fr) minmax(310px, 1fr) minmax(310px, 1fr); gap: 16px; margin-top: 30px; align-items: stretch; }
#minhaConta .mc-section { padding: 23px; border-radius: 15px; min-height: 0; }
#minhaConta .mc-photo-section { grid-column: auto; }
#minhaConta .mc-section-top { gap: 11px; margin-bottom: 9px; }
#minhaConta .mc-section-top .mc-icon { width: 42px; height: 42px; border-radius: 50%; background: color-mix(in srgb, var(--mc-accent) 10%, var(--mc-soft)); }
#minhaConta .mc-section h2 { font-size: 18px; font-weight: 600; }
#minhaConta .mc-description { min-height: 39px; line-height: 1.45; }
#minhaConta .mc-form { margin-top: 19px; gap: 15px; }
#minhaConta .mc-profile-summary { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 7px 0 15px; border-bottom: 1px solid var(--mc-border); }
#minhaConta .mc-photo-preview { width: 138px; height: 138px; border-radius: 50%; font-size: 46px; border-color: color-mix(in srgb, var(--mc-accent) 38%, var(--mc-border)); box-shadow: 0 8px 25px rgba(0, 0, 0, .16); }
#minhaConta .mc-profile-text { display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; }
#minhaConta .mc-profile-text strong { font-size: 17px; font-weight: 600; }
#minhaConta .mc-profile-text span { color: var(--mc-accent); background: color-mix(in srgb, var(--mc-accent) 12%, transparent); border-radius: 99px; padding: 3px 9px; font-size: 11px; font-weight: 600; }
#minhaConta .mc-photo-dropzone { position: relative; display: flex; min-height: 150px; flex-direction: column; align-items: center; justify-content: center; gap: 7px; padding: 18px; border: 1px dashed color-mix(in srgb, var(--mc-muted) 55%, transparent); border-radius: 11px; color: var(--mc-muted); text-align: center; font-size: 12px; }
#minhaConta .mc-photo-dropzone > svg { width: 28px; height: 28px; color: var(--mc-accent); }
#minhaConta .mc-photo-dropzone small { max-width: 235px; color: var(--mc-muted); font-size: 11px; line-height: 1.45; }
#minhaConta .mc-photo-picker { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; width: 100%; margin-top: 6px; border: 1px solid var(--mc-accent); border-radius: 9px; background: var(--mc-accent); color: var(--mc-ink); font-size: 13px; font-weight: 600; cursor: pointer; transition: filter .16s ease; }
#minhaConta .mc-photo-picker:hover { filter: brightness(1.08); }
#minhaConta .mc-photo-file-input { position: absolute; width: 1px !important; height: 1px; padding: 0 !important; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0 !important; }
#minhaConta .mc-photo-file-input:focus + * { outline: none; }
#minhaConta .mc-photo-form > .mc-submit { width: 100%; margin-top: 0; }
#minhaConta .mc-photo-remove { justify-content: center; margin-top: 10px; }
#minhaConta .mc-photo-remove-btn { color: var(--mc-text); }
#minhaConta .mc-photo-remove-btn:hover { color: var(--mc-red); }
#minhaConta .mc-field { gap: 6px; }
#minhaConta .mc-input-wrap { min-height: 46px; border-radius: 9px; }
#minhaConta .mc-rules { grid-template-columns: 1fr; gap: 5px; padding: 3px 0 1px; }
@media (max-width: 1180px) {
  #minhaConta .mc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #minhaConta .mc-photo-section { grid-row: span 2; }
}
@media (max-width: 760px) {
  #minhaConta .mc-page-head { flex-direction: column; gap: 4px; }
  #minhaConta .mc-secure-status { padding-top: 0; }
  #minhaConta .mc-grid { grid-template-columns: 1fr; margin-top: 22px; }
  #minhaConta .mc-photo-section { grid-row: auto; }
}
@media (max-width: 460px) {
  #minhaConta .mc-title-line { align-items: flex-start; flex-direction: column; gap: 5px; }
  #minhaConta .mc-header-identity { font-size: 12px; }
  #minhaConta .mc-section { padding: 18px; }
  #minhaConta .mc-photo-preview { width: 120px; height: 120px; }
}

/* Minha Conta — composição perfil + senha, compartilhada entre os três perfis. */
#minhaConta .mc-header-identity,#minhaConta .mc-secure-status{display:none}
#minhaConta .mc-page-head{margin-bottom:26px}
#minhaConta .mc-account-layout{display:grid;grid-template-columns:minmax(280px,34%) minmax(0,1fr);gap:22px;align-items:stretch}
#minhaConta .mc-profile-card,#minhaConta .mc-password-panel{min-width:0;background:linear-gradient(145deg,var(--mc-surface),var(--mc-soft));border:1px solid var(--mc-border);border-radius:18px;padding:30px}
#minhaConta .mc-profile-card{display:flex;flex-direction:column;text-align:center}
#minhaConta .mc-profile-summary{display:flex;flex-direction:column;align-items:center;gap:9px;padding:0 0 20px;border-bottom:1px solid var(--mc-border)}
#minhaConta .mc-profile-avatar{width:146px;height:146px;margin-bottom:7px;border:4px solid color-mix(in srgb,var(--mc-accent) 28%,var(--mc-border));box-shadow:0 10px 28px rgba(0,0,0,.2)}
#minhaConta .mc-profile-summary h2{font-size:25px;font-weight:650;letter-spacing:-.55px}
#minhaConta .mc-profile-role{display:inline-flex;color:var(--mc-accent);background:color-mix(in srgb,var(--mc-accent) 13%,transparent);border:1px solid color-mix(in srgb,var(--mc-accent) 38%,transparent);border-radius:99px;padding:4px 11px;font-size:12px;font-weight:650}
#minhaConta .mc-profile-details{display:grid;gap:16px;margin:24px 0 0;text-align:left}
#minhaConta .mc-profile-details div{display:grid;gap:4px}
#minhaConta .mc-profile-details dt{color:var(--mc-muted);font-size:11px}
#minhaConta .mc-profile-details dd{margin:0;color:var(--mc-text);font-size:14px;font-weight:550;overflow-wrap:anywhere}
#minhaConta .mc-account-active{display:flex;align-items:center;gap:8px;color:var(--mc-green)!important}
#minhaConta .mc-account-active span{width:9px;height:9px;border-radius:50%;background:var(--mc-green);box-shadow:0 0 10px color-mix(in srgb,var(--mc-green) 70%,transparent)}
#minhaConta .mc-profile-photo-form{margin-top:auto;padding-top:28px;gap:10px}
#minhaConta .mc-profile-photo-form .mc-photo-picker{width:100%;margin:0;background:transparent;color:var(--mc-accent);border-color:var(--mc-accent);gap:8px}
#minhaConta .mc-profile-photo-form .mc-photo-picker:hover{background:color-mix(in srgb,var(--mc-accent) 12%,transparent);filter:none}
#minhaConta .mc-profile-photo-form .mc-photo-picker svg{width:17px;height:17px}
#minhaConta .mc-profile-photo-form small{color:var(--mc-muted);font-size:11px}
#minhaConta .mc-profile-photo-form .mc-submit{margin-top:3px;width:100%}
#minhaConta .mc-password-panel{display:flex;flex-direction:column}
#minhaConta .mc-password-panel .mc-section-top{padding-bottom:20px;border-bottom:1px solid var(--mc-border);margin-bottom:18px}
#minhaConta .mc-password-panel .mc-icon{width:46px;height:46px;border-radius:12px;border-color:color-mix(in srgb,var(--mc-accent) 40%,var(--mc-border));background:color-mix(in srgb,var(--mc-accent) 12%,var(--mc-soft))}
#minhaConta .mc-password-panel h2{font-size:23px;font-weight:650}
#minhaConta .mc-password-panel .mc-description{min-height:0}
#minhaConta .mc-password-panel .mc-form{max-width:780px;margin-top:23px;gap:16px}
#minhaConta .mc-password-panel .mc-input-wrap{background:color-mix(in srgb,var(--mc-soft) 78%,black);min-height:49px}
#minhaConta .mc-password-panel .mc-submit{min-height:52px;margin-top:8px;font-size:14px;font-weight:700}
#minhaConta .mc-footer{margin:20px 0 0;padding:14px 18px;border:1px solid var(--mc-border);border-radius:11px;background:color-mix(in srgb,var(--mc-soft) 65%,transparent)}
@media (max-width:860px){#minhaConta .mc-account-layout{grid-template-columns:1fr}#minhaConta .mc-profile-card{max-width:none}#minhaConta .mc-profile-photo-form{margin-top:24px}}
@media (max-width:560px){#minhaConta .mc-profile-card,#minhaConta .mc-password-panel{padding:21px}#minhaConta .mc-profile-avatar{width:118px;height:118px}#minhaConta .mc-profile-summary h2{font-size:21px}#minhaConta .mc-password-panel h2{font-size:20px}}

/* Avisos: acompanhamento e confirmacao individual. */
.avisos-admin { display: grid; gap: 24px; min-width: 0; }
.avisos-admin .panel { min-width: 0; }
.avisos-admin h3 { margin-top: 0; }
.avisos-destino-acoes { display: flex; align-items: flex-end; gap: .55rem; flex-wrap: wrap; }
.avisos-destino-acoes select { flex: 1 1 260px; min-width: 180px; }
.avisos-destino-acoes .btn { flex: 0 0 auto; justify-content: center; white-space: nowrap; }
.avisos-filtro { margin: 20px 0; }
.avisos-filtro select { max-width: 100%; }
.avisos-mensagem { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.65; }
.avisos-tabela { overflow-x: auto; margin: 20px 0; }
.avisos-tabela table { width: 100%; border-collapse: collapse; }
.avisos-tabela th, .avisos-tabela td { text-align: left; padding: 14px 12px; border-bottom: 1px solid var(--border); }
.avisos-tabela th { color: var(--text-dim); font-size: .78rem; white-space: nowrap; }
.avisos-tabela td { font-size: .85rem; }
.avisos-tabela small { display: block; color: var(--text-dim); margin-top: 4px; }
.avisos-acompanhamento-consolidado { margin-top: 1rem; }
.avisos-acompanhamento-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.avisos-acompanhamento-head h3 { margin-bottom: 6px; }
.avisos-acompanhamento-head .hint { margin: 0; max-width: 820px; }
.avisos-acompanhamento-head-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 10px; }
.avisos-tabela-consolidada { margin-top: 16px; }
.avisos-tabela-consolidada table { min-width: 980px; }
.avisos-tabela-consolidada th, .avisos-tabela-consolidada td { vertical-align: top; }
.avisos-tabela-consolidada td:first-child { min-width: 130px; font-weight: 600; }
.avisos-tabela-consolidada td:nth-child(2) { min-width: 180px; }
.avisos-tabela-vazia { padding: 24px 12px !important; color: var(--text-dim); text-align: center !important; }
.avisos-filtro-acoes { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; }
.avisos-filtro-acoes .btn { white-space: nowrap; }
.avisos-filtro-acoes svg { flex: 0 0 auto; }
.avisos-periodo-resumo { display: inline-flex; align-items: center; min-height: 34px; padding: 0 10px; border: 1px solid color-mix(in srgb, var(--primary) 45%, var(--border)); border-radius: 999px; background: var(--primary-tint); color: var(--text); font-size: .76rem; white-space: nowrap; }
.avisos-periodo-limpar { padding: 0 4px; min-height: 30px; color: var(--text-dim); font-size: .76rem; }
.avisos-periodo-limpar:hover { color: var(--primary); }
.avisos-periodo-erro { margin: 0; color: #b42318; font-size: .78rem; }
.avisos-filtro > .avisos-periodo-erro { flex-basis: 100%; }
.aviso-periodo-dialog { width: min(520px, calc(100vw - 32px)); margin: auto; padding: 0; border: 1px solid var(--border); border-radius: 18px; background: var(--bg-card); color: var(--text); box-shadow: 0 24px 80px #0006; }
.aviso-periodo-dialog::backdrop { background: #080d19a6; backdrop-filter: blur(5px); }
.aviso-periodo-form { display: grid; gap: 20px; padding: clamp(22px, 5vw, 30px); }
.aviso-periodo-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.aviso-periodo-heading h2 { margin: 5px 0 0; font-size: 1.3rem; }
.aviso-periodo-fechar { width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 9px; background: transparent; color: var(--text-dim); font-size: 1.45rem; line-height: 1; cursor: pointer; }
.aviso-periodo-fechar:hover { border-color: var(--primary); color: var(--primary); }
.aviso-periodo-form > .hint { margin: 0; line-height: 1.55; }
.aviso-periodo-campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.aviso-periodo-campos label { display: grid; gap: 7px; color: var(--text-dim); font-size: .8rem; }
.aviso-periodo-campos input { width: 100%; box-sizing: border-box; min-height: 42px; }
.aviso-periodo-campos input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-tint); outline: none; }
.aviso-periodo-acoes { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 10px; }
.aviso-periodo-acoes .btn { white-space: nowrap; }
@media (max-width: 680px) {
  .avisos-acompanhamento-head { flex-direction: column; }
  .avisos-acompanhamento-head-actions { width: 100%; justify-content: flex-start; }
  .avisos-destino-acoes .btn { flex: 1 1 100%; }
}
.avisos-status { display: inline-block; padding: 4px 10px; border-radius: 99px; background: var(--bg-elev); color: var(--text-dim); white-space: nowrap; }
.avisos-status.confirmado { background: #15803d; color: #fff; }
.avisos-status.nao-aceito, .avisos-status.nao-visualizado { background: #b42318; color: #fff; }
#avisoModal { width: min(560px, calc(100% - 32px)); max-height: calc(100dvh - 40px); padding: 0; border: 1px solid var(--border); border-radius: 20px; background: var(--bg-card); color: var(--text); box-shadow: 0 24px 80px #0005; overflow-y: auto; }
#avisoModal::backdrop { background: #080d19a6; backdrop-filter: blur(5px); }
.aviso-modal-corpo { padding: clamp(20px, 5vw, 36px); }
.aviso-modal-tag { color: var(--primary); font-size: .9rem; font-weight: 700; letter-spacing: .12em; }
#avisoModal h2 { margin: 0 0 20px; }
#avisoModal .avisos-mensagem { max-height: 35vh; overflow-y: auto; }
#avisoModal .aviso-concordo { display: flex; align-items: flex-start; gap: 12px; margin: 24px 0; padding: 16px; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 12px; cursor: pointer; }
#avisoModal input[type="checkbox"] { width: 15px; height: 15px; flex: 0 0 15px; margin: 2px 0 0; accent-color: var(--primary); }
.aviso-modal-acoes { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 10px; }
#avisoModal .hint { font-size: .76rem; margin-bottom: 0; }
#avisoModalErro { color: var(--text); border-left: 3px solid #e7a43b; padding-left: 10px; }
#avisoModal button:disabled { opacity: .5; cursor: not-allowed; }

#avisoModal .aviso-modal-assunto { margin: 0 0 12px; font-size: 1.1rem; line-height: 1.4; overflow-wrap: anywhere; }

.avisos-admin .aviso-campo-assunto { display: grid; grid-template-columns: minmax(0, 1fr); gap: .35rem; }
.avisos-admin .aviso-campo-assunto > label { display: block; margin: 0; }
.avisos-admin .aviso-campo-assunto > input { display: block; width: 100%; box-sizing: border-box; min-width: 0; }
.avisos-admin .aviso-publicar-todos { display: flex; flex-direction: row; align-items: flex-start; gap: .65rem; margin: 0; padding: .75rem .85rem; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-elev); cursor: pointer; }
.avisos-admin .aviso-publicar-todos input { width: 15px; height: 15px; flex: 0 0 15px; margin: .18rem 0 0; accent-color: var(--primary); }
.avisos-admin .aviso-publicar-todos span { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.avisos-admin .aviso-publicar-todos strong { color: var(--text); font-size: .82rem; font-weight: 600; }
.avisos-admin .aviso-publicar-todos small { color: var(--text-dim); font-size: .74rem; line-height: 1.45; }
.avisos-admin .aviso-publicar-todos:has(input:checked) { border-color: var(--primary); background: var(--primary-tint); }
.avisos-admin .aviso-destino-select { display: grid; gap: .42rem; margin: 0; color: var(--text-dim); font-size: .8rem; font-weight: 500; }
.avisos-admin .aviso-destino-select select { width: 100%; min-height: 42px; padding: .6rem .75rem; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-elev); color: var(--text); font: inherit; }
.avisos-admin .aviso-destino-select:has(select:focus) select { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-tint); outline: none; }
.avisos-admin .aviso-destino-select small { color: var(--text-dim); font-size: .73rem; font-weight: 400; line-height: 1.4; }

/* Prévia do aviso ativo para o Master. A lista aparece quando o destino é
   "Todos os ambientes"; cada cartão mantém a exclusão isolada por ambiente. */
.avisos-preview-panel { display: grid; gap: 16px; }
.avisos-preview-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.avisos-preview-head h3 { margin-bottom: 6px; }
.avisos-preview-head .hint { margin: 0; max-width: 760px; }
.avisos-preview-head-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 10px; }
.avisos-preview-count { flex: 0 0 auto; padding: 5px 10px; border: 1px solid var(--border); border-radius: 99px; color: var(--text-dim); font-size: .75rem; white-space: nowrap; }
.avisos-preview-list { display: grid; gap: 12px; }
.avisos-preview-item { min-width: 0; padding: 15px 16px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-elev); }
.avisos-preview-item-current { border-color: color-mix(in srgb, var(--primary) 38%, var(--border)); background: color-mix(in srgb, var(--primary-tint) 55%, var(--bg-elev)); }
.avisos-preview-item-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.avisos-preview-item-head > div { min-width: 0; }
.avisos-preview-item-head strong { display: inline-block; margin-right: 8px; color: var(--text); font-size: .9rem; }
.avisos-preview-item-head small { display: block; margin-top: 5px; color: var(--text-dim); font-size: .72rem; }
.avisos-preview-item-head .avisos-status { padding: 2px 7px; font-size: .65rem; vertical-align: middle; }
.avisos-preview-item h4 { margin: 13px 0 6px; font-size: .98rem; overflow-wrap: anywhere; }
.avisos-preview-text { margin: 0; color: var(--text-dim); white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.55; font-size: .86rem; }
.avisos-preview-empty { margin: 0; padding: 14px; border: 1px dashed var(--border); border-radius: 10px; color: var(--text-dim); font-size: .84rem; }
@media (max-width: 560px) {
  .avisos-preview-head, .avisos-preview-item-head { flex-direction: column; }
  .avisos-preview-head-actions { width: 100%; justify-content: flex-start; }
  .avisos-preview-item-head .btn { width: 100%; justify-content: center; }
  .aviso-periodo-campos { grid-template-columns: 1fr; }
  .aviso-periodo-acoes { justify-content: stretch; }
  .aviso-periodo-acoes .btn { flex: 1 1 100%; justify-content: center; }
}

/* Administracao exclusiva do Master — layout por grupos de permissoes. */
.master-page { --master-surface: var(--bg-elev); max-width: 1480px; margin: 0 auto; }
.master-page-head { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 18px; margin: 8px 0 26px; }
.master-eyebrow { display: block; margin-bottom: 10px; color: var(--primary); font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; }
.master-page-head h1 { margin: 0 0 9px; font-size: 1.8rem; line-height: 1.2; }
.master-page-head p { margin: 0; color: var(--text-dim); font-size: .88rem; }
.master-badge { display: inline-flex; align-items: center; gap: 8px; padding: 9px 13px; border: 1px solid var(--border); border-radius: 10px; font-size: .82rem; white-space: nowrap; }
.master-layout { display: grid; grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); gap: 24px; align-items: stretch; }
.master-layout > .panel { margin: 0; min-width: 0; border-radius: 18px; border: 1px solid var(--border); background: linear-gradient(145deg, var(--bg-card), var(--master-surface)); box-shadow: 0 8px 26px #0000000a; }
.master-layout > .master-diretorio { padding: 24px 18px; }
.master-diretorio h2 { margin: 0 6px 22px; font-size: 1.05rem; }
.master-busca { display: flex; align-items: center; gap: 9px; margin: 0 5px; padding: 10px 11px; border: 1px solid var(--border); border-radius: 9px; background: var(--bg-elev); color: var(--text-dim); }
.master-busca > svg { flex: 0 0 17px; }
.master-busca > input { min-width: 0; width: 100%; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--text); font: inherit; font-size: .77rem; outline: none; box-shadow: none; }
.master-busca:focus-within { outline: 2px solid var(--primary); outline-offset: 2px; }
.master-lista { display: grid; gap: 18px; margin-top: 24px; max-height: 65vh; overflow: auto; scrollbar-width: thin; padding: 2px; }
.master-lista > details { min-width: 0; }
.master-lista .nav-arvore-pasta-head { gap: 10px; padding: 9px 4px; color: var(--text); font-size: .88rem; }
.master-lista .nav-arvore-pasta-head .chevron { width: 13px; height: 13px; }
.master-lista .nav-arvore-pasta-head > svg:nth-child(2) { width: 20px; height: 20px; color: var(--text-dim); }
.master-lista .portal-tree-children { margin: 5px 0 0 10px; padding: 0 0 0 13px; border-left: 1px solid var(--border); gap: 3px; }
.master-lista .master-usuario { position: relative; display: flex; align-items: center; gap: 10px; margin: 0; padding: 10px 8px; min-width: 0; border-left-color: transparent; white-space: normal; overflow: visible; text-decoration: none; color: var(--text); font-weight: 400; }
.master-usuario::before { content: ''; position: absolute; width: 13px; height: 1px; background: var(--border); left: -15px; top: 50%; }
.master-lista .master-usuario.ativo { border-left-color: var(--primary); background: var(--primary-tint); }
.master-usuario[hidden] { display: none; }
.master-avatar { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; background: var(--bg-card); border: 1px solid var(--border); color: var(--text); font-weight: 400; }
.master-avatar-pequeno { width: 32px; height: 32px; border-radius: 50%; font-size: .72rem; }
.master-usuario-texto { display: grid; gap: 4px; min-width: 0; overflow-wrap: anywhere; font-size: .79rem; }
.master-usuario-texto small { color: var(--text-dim); font-size: .7rem; }
.master-layout > .master-detalhe { padding: 0; min-height: 560px; container-type: inline-size; display: flex; flex-direction: column; }
.master-cabecalho { display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; margin: 0 24px; padding: 24px 0; border-bottom: 1px solid var(--border); }
.master-identidade { display: flex; align-items: center; gap: 16px; min-width: 0; }
.master-identidade > div { min-width: 0; overflow-wrap: anywhere; }
.master-avatar-grande { width: 64px; height: 64px; border-radius: 15px; font-size: 1.5rem; }
.master-cabecalho h2 { margin: 0 0 8px; font-size: 1.2rem; }
.master-identidade-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; color: var(--text-dim); font-size: .82rem; }
.master-perfil { padding: 4px 8px; border-radius: 5px; background: var(--bg-card); color: var(--text); font-size: .7rem; }
.master-cabecalho .btn { gap: 8px; font-size: .78rem; white-space: nowrap; }
.master-cabecalho .btn svg { width: 18px; height: 18px; }
.master-form { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.master-guias { min-width: 0; border: 0; padding: 0 24px; margin: 24px 0; }
.master-guias legend { padding: 0; font-size: .98rem; font-weight: 600; margin-bottom: 12px; }
.master-instrucao { color: var(--text-dim); font-size: .82rem; margin: 0 0 22px; line-height: 1.5; }
.master-grupos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: stretch; }
.master-grupo-guias { min-width: 0; border: 1px solid var(--border); border-radius: 12px; }
.master-grupo-guias > summary { display: flex; align-items: center; gap: 10px; padding: 18px 14px; color: var(--text); cursor: pointer; list-style: none; border-radius: 12px; font-size: .85rem; }
.master-grupo-guias > summary::-webkit-details-marker { display: none; }
.master-grupo-guias > summary > span { flex: 1; min-width: 0; }
.master-grupo-guias > summary > svg { flex-shrink: 0; width: 19px; height: 19px; }
.master-grupo-guias > summary .master-guia-seta { width: 14px; height: 14px; transition: transform .2s ease; }
.master-grupo-guias[open] > summary .master-guia-seta { transform: rotate(90deg); }
.master-subguias { display: grid; gap: 5px; margin: 0 14px 20px 21px; padding-left: 14px; border-left: 1px solid var(--border); }
.master-opcao { position: relative; display: flex; align-items: center; gap: 9px; min-width: 0; padding: 10px 4px; min-height: 43px; border-radius: 7px; font-size: .8rem; line-height: 1.4; cursor: pointer; }
.master-opcao > span { min-width: 0; overflow-wrap: anywhere; }
.master-opcao input { width: 18px; height: 18px; flex: 0 0 18px; margin: 0; padding: 0; accent-color: var(--primary); cursor: pointer; }
.master-subguias > .master-opcao::before { content: ''; position: absolute; width: 14px; height: 1px; background: var(--border); top: 50%; left: -15px; }
.master-grupo-guias > summary:hover, .master-opcao:hover { background: var(--primary-tint); }
.master-grupo-guias > summary:focus-visible, .master-opcao:focus-within, .master-lista a:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.master-guias-diretas { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 22px; }
.master-opcao-direta { padding: 13px 10px; min-height: 58px; border: 1px solid var(--border); border-radius: 10px; gap: 7px; }
.master-opcao-direta svg { width: 18px; height: 18px; flex: 0 0 18px; }
.master-ajuda { color: var(--text-dim); margin-top: 18px; font-size: .74rem; line-height: 1.6; }
.master-ajuda > summary { cursor: pointer; }
.master-ajuda p { margin: 8px 0 0; }
.master-acoes { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 20px 24px; margin-top: auto; border-top: 1px solid var(--border); }
.master-acoes > span { color: var(--text-dim); font-size: .78rem; }
.master-acoes .btn { min-width: 160px; padding: 12px 18px; }
.master-acesso-fixo { margin: auto; max-width: 440px; padding: 40px 24px; text-align: center; }
.master-acesso-fixo > svg { color: var(--primary); width: 38px; height: 38px; }
.master-acesso-fixo h3 { margin: 18px 0 10px; }
.master-acesso-fixo p { color: var(--text-dim); font-size: .88rem; line-height: 1.7; }
@container (max-width: 680px) { .master-guias-diretas { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container (max-width: 520px) { .master-grupos { grid-template-columns: minmax(0, 1fr); } .master-cabecalho { margin-inline: 18px; } .master-guias, .master-acoes { padding-inline: 18px; } }
@container (max-width: 340px) { .master-guias-diretas { grid-template-columns: minmax(0, 1fr); } .master-avatar-grande { width: 48px; height: 48px; font-size: 1.1rem; } .master-identidade { gap: 10px; } }
@media (max-width: 1100px) { .master-layout { grid-template-columns: minmax(0, 1fr); } .master-layout > .master-detalhe { min-height: 0; } .master-lista { max-height: 300px; } }
@media (prefers-reduced-motion: reduce) { .master-grupo-guias > summary .master-guia-seta { transition: none; } }

/* Acessos: filtros, indicadores, ranking e histórico no padrão de Avisos. */
.access-page { display: grid; gap: 18px; min-width: 0; }
.access-page-head { margin: 0 0 4px; }
.access-page-head h1 { margin: 8px 0; font-size: clamp(1.65rem, 2.3vw, 2.25rem); letter-spacing: -.035em; line-height: 1.15; }
.access-page-head p { margin: 0; color: var(--text-dim); font-size: .9rem; }
.access-page-head .access-breadcrumb { font-size: .78rem; }
.access-breadcrumb span { padding: 0 8px; opacity: .5; }
.access-icon { display: inline-block; width: 20px; height: 20px; flex: 0 0 auto; vertical-align: middle; }
.access-filters, .access-section { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; min-width: 0; }
.access-filters { padding: 18px; }
.access-filter-grid { display: grid; grid-template-columns: 1.5fr repeat(2, minmax(135px, .9fr)) repeat(3, minmax(0, 1fr)); gap: 16px; }
.access-filter-grid label { display: flex; flex-direction: column; gap: 9px; min-width: 0; font-size: .8rem; font-weight: 500; }
.access-filter-grid input, .access-filter-grid select { display: block; width: 100%; min-width: 0; height: 42px; padding: 9px 11px; margin: 0; border: 1px solid var(--border); border-radius: 7px; background: var(--bg-elev); color: var(--text); font: inherit; font-size: .8rem; }
.access-filter-grid input::placeholder { color: var(--text-dim); }
.access-filter-grid input[type="date"] { color-scheme: dark; }
:root[data-theme="claro"] .access-filter-grid input[type="date"] { color-scheme: light; }
.access-search-input { position: relative; display: block; }
.access-search-input input { padding-right: 34px; }
.access-search-input > svg { position: absolute; right: 11px; top: 13px; width: 16px; height: 16px; pointer-events: none; color: var(--text-dim); }
.access-filter-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-top: 16px; }
.access-period { display: inline-flex; gap: 8px; align-items: center; font-size: .8rem; color: var(--text-dim); }
.access-period svg { width: 17px; height: 17px; }
.access-filter-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.access-page .btn { justify-content: center; font-size: .8rem; border-radius: 7px; min-height: 34px; }
.access-page .btn-outline { background: transparent; }
.access-page .btn-outline:hover { color: var(--primary); border-color: var(--primary); background: var(--primary-tint); }
.access-page .btn:disabled { opacity: .4; cursor: default; transform: none; }
.access-page :is(button, a, input, select, summary, [tabindex]):focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
.access-section-head { display: flex; align-items: center; gap: 12px; padding: 15px 18px; min-height: 50px; cursor: pointer; font-size: .9rem; font-weight: 600; list-style: none; }
.access-section-head::-webkit-details-marker { display: none; }
.access-chevron { width: 14px; height: 14px; color: var(--text-dim); transition: transform .18s ease; }
.access-section[open] > .access-section-head > .access-chevron { transform: rotate(90deg); }
.access-section-body { padding: 0 12px 12px; min-width: 0; }
.access-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)) minmax(0, 1.65fr); gap: 12px; margin-bottom: 12px; }
.access-stat { display: flex; align-items: center; gap: 14px; border: 1px solid var(--border); border-radius: 9px; padding: 18px 14px; min-width: 0; }
.access-stat > div { min-width: 0; }
.access-stat-icon { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid var(--primary-border-tint); border-radius: 50%; flex: 0 0 44px; color: var(--primary); background: var(--primary-tint); }
.access-stat-icon svg { width: 25px; height: 25px; }
.access-stat-label { display: block; color: var(--text-dim); font-size: .78rem; line-height: 1.4; }
.access-stat-value { display: block; margin-top: 5px; font-size: 1.8rem; font-weight: 650; line-height: 1.1; color: var(--primary); font-variant-numeric: tabular-nums; }
.access-stat-dashboard { display: block; margin: 5px 0; font-size: .88rem; line-height: 1.4; overflow-wrap: anywhere; }
.access-stat-count { font-size: .8rem; color: var(--primary); }
.access-chart { border: 1px solid var(--border); border-radius: 9px; padding: 16px 18px 10px; min-width: 0; }
.access-chart-heading h2, .access-ranking-panel h2 { margin: 0; font-size: .87rem; font-weight: 600; }
.access-chart-heading p { color: var(--text-dim); font-size: .76rem; margin: 6px 0 12px; }
.access-chart-scroll { overflow-x: auto; }
.access-chart-svg { display: block; width: 100%; height: auto; }
.access-chart-grid { stroke: var(--border); stroke-dasharray: 3 3; }
.access-chart-axis { fill: var(--text-dim); font-size: 11px; font-variant-numeric: tabular-nums; }
.access-chart-bar { fill: var(--primary); }
.access-chart-number { fill: var(--primary); font-size: 12px; font-weight: 600; }
.access-ranking-grid { display: grid; grid-template-columns: minmax(0, 28fr) minmax(0, 11fr) minmax(0, 11fr); gap: 14px; }
.access-ranking-panel { border: 1px solid var(--border); border-radius: 9px; padding: 15px; min-width: 0; }
.access-ranking-panel h2 { margin-bottom: 12px; }
.access-ranking-panel ul, .access-ranking-panel ol { list-style: none; margin: 0; padding: 0; max-height: 310px; overflow-y: auto; scrollbar-width: thin; }
.access-ranking-panel .access-ranking-list { padding-inline-end: clamp(28px, 3vw, 52px); scrollbar-gutter: stable; }
.access-ranking-panel li { border-bottom: 1px solid var(--border); padding: 12px 0; }
.access-ranking-panel li:last-child { border-bottom: 0; }
.access-ranking-list li { display: flex; gap: 12px; align-items: center; }
.access-ranking-list .access-icon { color: var(--text-dim); width: 18px; height: 18px; }
.access-rank-position { display: inline-flex; align-items: center; justify-content: center; width: 23px; height: 23px; flex: 0 0 23px; border: 1px solid var(--primary-border-tint); border-radius: 50%; color: var(--primary); font-size: .72rem; }
.access-rank-main { flex: 1; min-width: 0; font-size: .8rem; line-height: 1.4; }
.access-rank-main > span:first-child { display: block; overflow-wrap: anywhere; }
.access-rank-track { display: block; width: calc(100% - 24px); height: 4px; margin-top: 7px; border-radius: 8px; background: var(--bg-elev); overflow: hidden; }
.access-rank-track > span { display: block; height: 100%; border-radius: inherit; background: var(--primary); }
.access-rank-count { flex: 0 0 auto; min-width: 34px; text-align: center; color: var(--primary); background: var(--primary-tint); border: 1px solid var(--primary-border-tint); border-radius: 6px; font-size: .76rem; padding: 5px 7px; font-variant-numeric: tabular-nums; }
.access-unused-list li { display: flex; gap: 12px; align-items: center; font-size: .83rem; line-height: 1.5; overflow-wrap: anywhere; }
.access-unused-list svg { color: var(--text-dim); }
.access-panel-note { color: var(--text-dim); margin: 12px 0 0; font-size: .76rem; line-height: 1.5; }
.access-last-list li { display: flex; align-items: center; gap: 12px; }
.access-avatar { display: inline-flex; justify-content: center; align-items: center; border-radius: 50%; width: 38px; height: 38px; flex: 0 0 38px; background: var(--bg-elev); border: 1px solid var(--border); color: var(--text-dim); font-size: .85rem; font-weight: 600; }
.access-last-user { min-width: 0; flex: 1; }
.access-last-user > span { font-size: .84rem; overflow-wrap: anywhere; }
.access-last-user time { display: flex; gap: 6px; align-items: center; margin-top: 6px; color: var(--text-dim); font-size: .74rem; font-variant-numeric: tabular-nums; }
.access-last-user time svg { width: 14px; height: 14px; }
.access-empty { color: var(--text-dim); padding: 14px 4px; font-size: .83rem; line-height: 1.6; margin: 0; }
.access-history-head { flex-wrap: wrap; }
.access-record-count { color: var(--text-dim); border: 1px solid var(--border); border-radius: 20px; padding: 3px 9px; font-size: .72rem; font-weight: 400; }
.access-history-head .access-export { margin-left: auto; color: var(--primary); border-color: var(--primary-border-tint); }
.access-export svg { width: 17px; height: 17px; }
/* Reutiliza as mesmas regras de células e cabeçalhos de .avisos-tabela. */
.access-page .access-history-table { margin: 0 0 12px; }
.access-table { min-width: 780px; }
.access-table td { overflow-wrap: anywhere; max-width: 350px; }
.access-table td:first-child, .access-table td:last-child { white-space: nowrap; font-variant-numeric: tabular-nums; }
.access-table tr[hidden] { display: none; }
.access-sort { display: inline-flex; gap: 12px; align-items: center; text-align: left; border: 0; padding: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; }
.access-sort:hover { color: var(--text); }
.access-sort .sort-ind { font-weight: normal; }
.access-history-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; color: var(--text-dim); font-size: .78rem; padding: 4px 12px; }
.access-pagination { display: flex; align-items: center; gap: 8px; }
.access-pagination[hidden] { display: none; }
.access-pagination > span { margin-right: 12px; }
.access-pagination .btn { width: 34px; height: 34px; padding: 0; font-size: 1.25rem; }
@media (max-width: 1400px) {
  .access-filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .access-stat { flex-direction: column; align-items: flex-start; gap: 10px; }
}
@media (max-width: 1100px) {
  .access-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .access-stat { flex-direction: row; align-items: center; }
  .access-stat-featured { grid-column: 1 / -1; }
  .access-ranking-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 600px) {
  .access-filters { padding: 14px; }
  .access-ranking-panel .access-ranking-list { padding-inline-end: 16px; }
  .access-rank-track { width: 100%; }
  .access-filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .access-filter-grid .access-search { grid-column: 1 / -1; }
  .access-filter-actions { width: 100%; justify-content: flex-end; }
  .access-stat { padding: 12px; gap: 10px; flex-direction: column; align-items: flex-start; }
  .access-stat-featured { flex-direction: row; align-items: center; }
  .access-section-head { padding: 14px 12px; gap: 8px; }
  .access-section-body { padding: 0 8px 8px; }
  .access-history-head .access-export { margin-left: 22px; }
  .access-history-footer { padding: 4px; }
}

/* ============================================================
   Avisos — remodelação completa em cinco áreas
   ============================================================ */
.avisos-workspace { display: grid; gap: 18px; min-width: 0; }
.avisos-page-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; flex-wrap: wrap; }
.avisos-eyebrow, .avisos-section-kicker { display: block; color: var(--primary); font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.avisos-page-head h1 { margin: 6px 0 7px; font-size: clamp(1.65rem, 2.4vw, 2.25rem); letter-spacing: -.035em; line-height: 1.1; }
.avisos-page-head p { margin: 0; color: var(--text-dim); font-size: .88rem; }
.avisos-page-badge { display: inline-flex; align-items: center; gap: 8px; min-height: 34px; padding: 0 12px; border: 1px solid var(--border); border-radius: 999px; color: var(--text-dim); background: var(--bg-card); font-size: .72rem; white-space: nowrap; }
.avisos-page-badge-dot { width: 7px; height: 7px; border-radius: 50%; background: #4fc882; box-shadow: 0 0 0 4px rgba(79,200,130,.12); }
.avisos-tabs { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; padding: 7px; border: 1px solid var(--border); border-radius: 14px; background: var(--bg-card); box-shadow: var(--shadow); }
.avisos-tab { display: flex; align-items: center; gap: 9px; min-width: 0; padding: 11px 12px; border: 1px solid transparent; border-radius: 9px; color: var(--text-dim); text-decoration: none; transition: background .18s ease, color .18s ease, border-color .18s ease; }
.avisos-tab:hover { color: var(--text); background: var(--bg-elev); }
.avisos-tab.ativo { border-color: var(--primary-border-tint); color: var(--text); background: var(--primary-tint); }
.avisos-tab-icon { display: inline-flex; align-items: center; justify-content: center; width: 31px; height: 31px; flex: 0 0 31px; border-radius: 8px; background: var(--bg-elev); color: var(--text-dim); }
.avisos-tab.ativo .avisos-tab-icon { background: var(--primary); color: var(--primary-ink); }
.avisos-tab-icon svg { width: 17px; height: 17px; }
.avisos-tab > span:last-child { display: grid; gap: 3px; min-width: 0; }
.avisos-tab strong { color: inherit; font-size: .77rem; font-weight: 650; }
.avisos-tab small { overflow: hidden; color: var(--text-dim); font-size: .64rem; text-overflow: ellipsis; white-space: nowrap; }
.avisos-view { display: grid; gap: 16px; min-width: 0; }
.avisos-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; flex-wrap: wrap; }
.avisos-section-head h2 { margin: 5px 0 6px; font-size: 1.35rem; letter-spacing: -.02em; }
.avisos-section-head p { max-width: 820px; margin: 0; color: var(--text-dim); font-size: .78rem; line-height: 1.55; }
.avisos-head-actions { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.avisos-head-actions form { margin: 0; }
.avisos-count-pill, .avisos-preview-label { display: inline-flex; align-items: center; min-height: 28px; padding: 0 10px; border: 1px solid var(--border); border-radius: 999px; color: var(--text-dim); font-size: .69rem; white-space: nowrap; }
.avisos-preview-label { border-color: var(--primary-border-tint); color: var(--primary); background: var(--primary-tint); font-weight: 700; letter-spacing: .08em; }
.avisos-kpi-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 11px; }
.avisos-kpi { display: flex; align-items: center; gap: 11px; min-width: 0; padding: 15px 14px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-card); box-shadow: var(--shadow); }
.avisos-kpi-icon { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; flex: 0 0 38px; border: 1px solid var(--border); border-radius: 10px; color: var(--accent); background: var(--bg-elev); }
.avisos-kpi-icon-primary { color: var(--primary); border-color: var(--primary-border-tint); background: var(--primary-tint); }
.avisos-kpi-icon-success { color: #4fc882; background: rgba(79,200,130,.1); border-color: rgba(79,200,130,.2); }
.avisos-kpi-icon-warning { color: #e7a43b; background: rgba(231,164,59,.1); border-color: rgba(231,164,59,.2); }
.avisos-kpi-icon svg { width: 19px; height: 19px; }
.avisos-kpi > span:last-child { display: grid; gap: 3px; min-width: 0; }
.avisos-kpi small, .avisos-kpi em { color: var(--text-dim); font-size: .65rem; font-style: normal; }
.avisos-kpi strong { color: var(--text); font-size: 1.35rem; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.avisos-overview-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(260px, .75fr); gap: 16px; align-items: stretch; }
.avisos-card { min-width: 0; padding: 18px; border: 1px solid var(--border); border-radius: 14px; background: var(--bg-card); box-shadow: var(--shadow); }
.avisos-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.avisos-card-head h3 { margin: 0 0 5px; font-size: .95rem; }
.avisos-card-head p { margin: 0; color: var(--text-dim); font-size: .72rem; line-height: 1.45; }
.avisos-overview-table-card { align-self: stretch; min-height: 0; display: flex; flex-direction: column; }
.avisos-overview-table {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
  max-height: none;
  margin: 14px 0 0;
  overflow: auto;
}
.avisos-overview-table table { min-width: 720px; }
.avisos-overview-table th, .avisos-overview-table td { padding-top: 10px; padding-bottom: 10px; }
.avisos-overview-table thead th { position: sticky; top: 0; z-index: 1; background: var(--bg-card); }
.avisos-overview-table td { vertical-align: top; }
.avisos-overview-table td strong { display: block; font-size: .78rem; }
.avisos-overview-table td small { display: block; margin-top: 4px; color: var(--text-dim); font-size: .66rem; }
.avisos-overview-info { padding: 22px; }
.avisos-overview-info h3 { margin: 6px 0 8px; font-size: 1rem; }
.avisos-overview-info > p { margin: 0; color: var(--text-dim); font-size: .76rem; line-height: 1.55; }
.avisos-overview-info ol { display: grid; gap: 0; margin: 20px 0 0; padding: 0; list-style: none; }
.avisos-overview-info li { display: flex; gap: 11px; padding: 12px 0; border-top: 1px solid var(--border); }
.avisos-overview-info li > b { color: var(--primary); font-size: .68rem; font-variant-numeric: tabular-nums; }
.avisos-overview-info li > span { display: grid; gap: 3px; }
.avisos-overview-info li strong { font-size: .76rem; }
.avisos-overview-info li small { color: var(--text-dim); font-size: .67rem; line-height: 1.4; }
.avisos-muted { color: var(--text-dim); }

.avisos-compose-grid { display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(300px, .88fr); gap: 16px; align-items: start; }
.avisos-compose-card, .avisos-compose-preview-card { display: grid; gap: 17px; }
.avisos-compose-form { display: grid; gap: 14px; }
.avisos-destino-box, .avisos-destino-readonly { display: grid; gap: 6px; padding: 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-elev); }
.avisos-destino-box label, .avisos-destino-readonly span, .avisos-field > label { color: var(--text-dim); font-size: .72rem; font-weight: 600; }
.avisos-destino-box select, .avisos-field input, .avisos-field textarea { width: 100%; box-sizing: border-box; min-width: 0; padding: .68rem .75rem; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-card); color: var(--text); font: inherit; font-size: .82rem; outline: none; }
.avisos-destino-box select:focus, .avisos-field input:focus, .avisos-field textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-tint); }
.avisos-destino-box small, .avisos-destino-readonly small, .avisos-field small { color: var(--text-dim); font-size: .66rem; line-height: 1.4; }
.avisos-destino-readonly strong { font-size: .84rem; }
.avisos-global-toggle { display: flex; align-items: flex-start; gap: 9px; margin: 0; padding: 11px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-elev); cursor: pointer; }
.avisos-global-toggle:has(input:checked) { border-color: var(--primary); background: var(--primary-tint); }
.avisos-global-toggle input { width: 15px; height: 15px; flex: 0 0 15px; margin: 2px 0 0; accent-color: var(--primary); }
.avisos-global-toggle span { display: grid; gap: 4px; }
.avisos-global-toggle strong { font-size: .76rem; }
.avisos-global-toggle small { color: var(--text-dim); font-size: .66rem; line-height: 1.4; }
.avisos-field { position: relative; display: grid; gap: 6px; }
.avisos-field-message textarea { min-height: 150px; resize: vertical; line-height: 1.5; }
.avisos-char-count { position: absolute; right: 9px; bottom: 8px; pointer-events: none; }
.avisos-compose-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding-top: 5px; border-top: 1px solid var(--border); }
.avisos-compose-actions > div { display: flex; gap: 8px; flex-wrap: wrap; }
.avisos-current-inline { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px; border: 1px solid var(--primary-border-tint); border-radius: 10px; background: var(--primary-tint); }
.avisos-current-inline > div { display: grid; gap: 3px; min-width: 0; }
.avisos-current-inline strong { overflow-wrap: anywhere; font-size: .8rem; }
.avisos-current-inline small { color: var(--text-dim); font-size: .66rem; }
.avisos-modal-preview { display: grid; gap: 13px; padding: 20px; border: 1px solid var(--border); border-radius: 14px; background: linear-gradient(145deg, var(--bg-elev), var(--bg)); box-shadow: 0 15px 35px rgba(0,0,0,.12); }
.avisos-modal-preview h3 { margin: 0; font-size: 1.05rem; line-height: 1.35; overflow-wrap: anywhere; }
.avisos-modal-preview > p { min-height: 92px; margin: 0; color: var(--text-dim); white-space: pre-wrap; overflow-wrap: anywhere; font-size: .8rem; line-height: 1.6; }
.avisos-modal-preview > label { display: flex; align-items: flex-start; gap: 8px; padding: 10px; border: 1px solid var(--border); border-radius: 8px; color: var(--text-dim); font-size: .7rem; }
.avisos-modal-preview > label input { margin: 2px 0 0; accent-color: var(--primary); }
.avisos-modal-preview > div { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.avisos-preview-note { margin: 0; line-height: 1.5; }
.avisos-preview-dialog { width: min(540px, calc(100vw - 32px)); margin: auto; padding: 0; border: 1px solid var(--border); border-radius: 18px; background: var(--bg-card); color: var(--text); box-shadow: 0 24px 80px #0007; }
.avisos-preview-dialog::backdrop { background: #080d19a6; backdrop-filter: blur(5px); }
.avisos-preview-dialog-body { display: grid; gap: 18px; padding: 25px; }
.avisos-preview-dialog-actions { display: flex; justify-content: flex-end; }

.avisos-active-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; }
.avisos-active-card { display: grid; gap: 11px; min-width: 0; padding: 17px; border: 1px solid var(--border); border-radius: 13px; background: var(--bg-card); box-shadow: var(--shadow); }
.avisos-active-card-inactive { opacity: .82; }
.avisos-active-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.avisos-active-top > div { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; min-width: 0; }
.avisos-active-environment { color: var(--primary); font-size: .73rem; font-weight: 700; }
.avisos-active-card h3 { margin: 0; font-size: .98rem; overflow-wrap: anywhere; }
.avisos-active-message { min-height: 67px; margin: 0; color: var(--text-dim); white-space: pre-wrap; overflow-wrap: anywhere; font-size: .78rem; line-height: 1.55; }
.avisos-active-card time { color: var(--text-dim); font-size: .67rem; }
.avisos-active-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding-top: 4px; border-top: 1px solid var(--border); }
.avisos-active-actions form { margin: 0; }
.avisos-empty-state { display: grid; justify-items: center; gap: 9px; padding: 48px 18px; border: 1px dashed var(--border); border-radius: 14px; text-align: center; background: var(--bg-card); }
.avisos-empty-state svg { width: 33px; height: 33px; color: var(--text-dim); }
.avisos-empty-state h3 { margin: 0; font-size: .95rem; }
.avisos-empty-state p { margin: 0 0 7px; color: var(--text-dim); font-size: .75rem; }
.avisos-empty-state-compact { padding: 28px 18px; }

.avisos-filter-card { padding: 14px 16px; }
.avisos-filter-form { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; }
.avisos-filter-form > label { display: grid; flex: 1 1 220px; gap: 6px; color: var(--text-dim); font-size: .72rem; font-weight: 600; }
.avisos-filter-form input, .avisos-filter-form select { width: 100%; box-sizing: border-box; min-height: 36px; padding: .5rem .65rem; border: 1px solid var(--border); border-radius: 7px; background: var(--bg-elev); color: var(--text); font: inherit; font-size: .78rem; }
.avisos-filter-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.avisos-filter-actions .btn { white-space: nowrap; }
.avisos-filter-actions svg { flex: 0 0 auto; }
.avisos-periodo-resumo { display: inline-flex; align-items: center; min-height: 34px; padding: 0 9px; border: 1px solid color-mix(in srgb, var(--primary) 45%, var(--border)); border-radius: 999px; background: var(--primary-tint); color: var(--text); font-size: .68rem; white-space: nowrap; }
.avisos-periodo-limpar { padding: 0 3px; min-height: 30px; color: var(--text-dim); font-size: .7rem; }
.avisos-periodo-limpar:hover { color: var(--primary); }
.avisos-periodo-erro { flex-basis: 100%; margin: 0; color: #b42318; font-size: .75rem; }
.avisos-audit-card { padding-bottom: 12px; }
.avisos-audit-card .avisos-tabela { margin: 17px 0 10px; }
.avisos-audit-card .avisos-tabela table { min-width: 950px; }
.avisos-audit-card td { vertical-align: top; }
.avisos-audit-card td strong { display: block; font-size: .76rem; }
.avisos-audit-card td small { display: block; margin-top: 4px; color: var(--text-dim); font-size: .65rem; }
.avisos-history-table table { min-width: 1120px !important; }
.avisos-history-message { margin-top: 7px; }
.avisos-history-message summary { color: var(--accent); cursor: pointer; font-size: .66rem; }
.avisos-history-message p { max-width: 280px; margin: 7px 0 0; color: var(--text-dim); white-space: pre-wrap; overflow-wrap: anywhere; font-size: .68rem; line-height: 1.45; }
.avisos-metric-line { display: block; color: var(--text-dim); font-size: .68rem; line-height: 1.55; white-space: nowrap; }
.avisos-metric-line b { color: var(--text); }
.avisos-history-actions { display: flex; gap: 6px; flex-wrap: wrap; }

.aviso-periodo-atalhos { display: flex; gap: 7px; flex-wrap: wrap; }
.aviso-periodo-atalhos button { min-height: 30px; padding: 0 10px; border: 1px solid var(--border); border-radius: 999px; background: var(--bg-elev); color: var(--text-dim); font: inherit; font-size: .7rem; cursor: pointer; }
.aviso-periodo-atalhos button:hover, .aviso-periodo-atalhos button:focus-visible { border-color: var(--primary); color: var(--primary); outline: none; }

@media (max-width: 1120px) {
  .avisos-kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .avisos-overview-grid, .avisos-compose-grid { grid-template-columns: minmax(0, 1fr); }
  .avisos-overview-grid { align-items: start; }
  .avisos-overview-table-card { display: block; }
  .avisos-overview-table { height: 220px; max-height: 220px; }
  .avisos-compose-preview-card { order: -1; }
}
@media (max-width: 800px) {
  .avisos-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .avisos-tab { align-items: flex-start; }
  .avisos-tab > span:last-child { display: none; }
  .avisos-tab { justify-content: center; }
  .avisos-active-grid { grid-template-columns: minmax(0, 1fr); }
  .avisos-section-head { align-items: flex-start; }
}
@media (max-width: 560px) {
  .avisos-page-head { gap: 10px; }
  .avisos-page-badge { width: 100%; justify-content: center; }
  .avisos-tabs { grid-template-columns: repeat(5, minmax(52px, 1fr)); padding: 5px; }
  .avisos-tab { padding: 8px 5px; }
  .avisos-tab-icon { width: 28px; height: 28px; flex-basis: 28px; }
  .avisos-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .avisos-kpi { padding: 12px 10px; }
  .avisos-kpi-icon { width: 32px; height: 32px; flex-basis: 32px; }
  .avisos-kpi strong { font-size: 1.15rem; }
  .avisos-card { padding: 14px; }
  .avisos-compose-actions { align-items: stretch; }
  .avisos-compose-actions > div { width: 100%; }
  .avisos-compose-actions .btn { flex: 1 1 0; justify-content: center; }
  .avisos-current-inline { align-items: flex-start; flex-direction: column; }
  .avisos-current-inline .btn { width: 100%; justify-content: center; }
  .avisos-filter-form > label { flex-basis: 100%; }
  .avisos-filter-actions { width: 100%; }
  .avisos-filter-actions .btn { flex: 1 1 auto; justify-content: center; }
  .aviso-periodo-campos { grid-template-columns: 1fr; }
  .aviso-periodo-acoes { justify-content: stretch; }
  .aviso-periodo-acoes .btn { flex: 1 1 100%; justify-content: center; }
}
@media (prefers-reduced-motion: reduce) { .access-chevron { transition: none; } }

/* Seleção inicial de ambiente e seletor compacto compartilhado. */
.environment-page { min-height: 100vh; color: var(--text); background: radial-gradient(ellipse at 50% 10%, var(--bg-elev), transparent 70%), var(--bg); }
.environment-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 24px 40px; border-bottom: 1px solid var(--border); }
.environment-brand { display: inline-flex; align-items: center; gap: 12px; font-weight: 700; font-size: 1.25rem; }
.environment-brand > span { width: 24px; height: 24px; border-radius: 6px; background: var(--primary); box-shadow: 0 0 22px var(--primary-tint); }
.environment-header-actions { display: flex; gap: 10px; }
.environment-main { width: min(1080px, calc(100% - 48px)); margin: 0 auto; padding: clamp(38px, 6vh, 80px) 0 38px; text-align: center; }
.environment-eyebrow { color: var(--primary); font-size: .76rem; font-weight: 700; letter-spacing: .24em; margin: 0 0 14px; }
.environment-main h1 { margin: 0; font-size: clamp(1.8rem, 3vw, 2.75rem); line-height: 1.2; letter-spacing: -.025em; }
.environment-intro { margin: 16px 0 30px; color: var(--text-dim); line-height: 1.6; }
.environment-search { display: flex; align-items: center; gap: 12px; width: min(100%, 540px); margin: 0 auto; padding: 0 16px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-card); color: var(--text-dim); }
.environment-search:focus-within { border-color: var(--primary); }
.environment-search input { min-width: 0; width: 100%; height: 48px; background: transparent; color: var(--text); border: 0; outline: 0; box-shadow: none; padding: 0; font: inherit; }
.environment-result-count { margin: 22px 0; color: var(--text-dim); font-size: .82rem; }
.environment-cards { display: flex; justify-content: center; align-items: stretch; flex-wrap: wrap; gap: 22px; }
.environment-card-form { width: min(100%, 310px); margin: 0; }
.environment-card-form[hidden], .environment-empty[hidden] { display: none; }
.environment-card { display: flex; flex-direction: column; width: 100%; height: 100%; padding: 0; background: linear-gradient(140deg, var(--bg-card), var(--bg-elev)); color: var(--text); border: 1px solid var(--border); border-radius: 17px; overflow: hidden; text-align: left; cursor: pointer; font: inherit; transition: border-color .18s, transform .18s, box-shadow .18s; }
.environment-card:hover { transform: translateY(-3px); border-color: var(--primary); box-shadow: 0 12px 32px var(--primary-tint); }
.environment-card:focus-visible { outline: 3px solid var(--primary); outline-offset: 4px; }
.environment-card-art { display: grid; place-items: center; height: 155px; border-bottom: 1px solid var(--border); color: var(--primary); background-image: linear-gradient(35deg, transparent 49.8%, var(--border) 50%, transparent 50.3%); background-size: 42px 42px; }
.environment-card-art svg { width: 82%; max-height: 135px; }
.environment-card-art.has-image { padding: 0; background: #fff; }
.environment-card-art.has-image img { display: block; width: 100%; height: 100%; object-fit: contain; background: #fff; }
.environment-card-body { display: flex; flex-direction: column; gap: 8px; padding: 24px; }
.environment-card-tag { font-size: .68rem; color: var(--text-dim); letter-spacing: .14em; }
.environment-card-body strong { font-size: 1.32rem; line-height: 1.4; overflow-wrap: anywhere; }
.environment-card-footer { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 18px 24px; margin-top: auto; border-top: 1px solid var(--border); font-size: .86rem; }
.environment-card-footer svg { color: var(--primary); flex-shrink: 0; }
.environment-footnote { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 38px 0 0; font-size: .8rem; color: var(--text-dim); }
.environment-footnote svg { flex-shrink: 0; }
.environment-empty { color: var(--text-dim); padding: 30px 0; }
.environment-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
.environment-toolbar { display: flex; justify-content: flex-end; margin: -12px 0 22px; }
.environment-switcher { position: relative; width: 200px; max-width: 100%; z-index: 35; }
.environment-switcher > summary { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid var(--border); border-radius: 11px; background: var(--bg-card); color: var(--text-dim); cursor: pointer; list-style: none; }
.environment-switcher > summary::-webkit-details-marker { display: none; }
.environment-switcher > summary:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
.environment-switcher > summary > span { flex: 1; min-width: 0; }
.environment-switcher summary small { display: block; font-size: .56rem; letter-spacing: .07em; }
.environment-switcher summary strong { display: block; font-size: .8rem; font-weight: 500; color: var(--text); white-space: nowrap; text-overflow: ellipsis; overflow: hidden; }
.environment-switcher summary > svg { flex-shrink: 0; }
.environment-switcher[open] .environment-chevron { transform: rotate(180deg); }
.environment-switch-panel { position: absolute; right: 0; top: calc(100% + 8px); width: min(260px, calc(100vw - 40px)); padding: 16px; border: 1px solid var(--border); border-radius: 13px; background: var(--bg-card); box-shadow: 0 16px 40px #0005; box-sizing: border-box; }
.environment-switch-panel fieldset { min-width: 0; margin: 0 0 14px; padding: 0; border: 0; max-height: 45vh; overflow-y: auto; }
.environment-switch-panel legend { color: var(--text); font-size: .85rem; font-weight: 600; margin-bottom: 12px; }
.environment-switch-option { display: flex; align-items: center; gap: 9px; margin: 0; padding: 10px 8px; border-radius: 8px; color: var(--text); cursor: pointer; font-size: .8rem; }
.environment-switch-option:has(input:checked) { background: var(--primary-tint); }
.environment-switch-option input { width: 15px; height: 15px; flex: 0 0 15px; accent-color: var(--primary); margin: 0; }
.environment-switch-option > span { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.environment-switch-option small { font-size: .64rem; color: var(--text-dim); }
.environment-switch-confirm { width: 100%; justify-content: center; }
.environment-switch-confirm:disabled { opacity: .45; cursor: default; }
@media (max-width: 600px) {
 .environment-header { padding: 18px 20px; gap: 12px; }
 .environment-brand { font-size: 1rem; gap: 8px; }
 .environment-brand > span { width: 20px; height: 20px; }
 .environment-header-actions { gap: 6px; }
 .environment-header-actions .btn { padding: 8px 10px; font-size: .75rem; }
 .environment-main { width: calc(100% - 36px); }
 .environment-intro { font-size: .9rem; }
 .environment-toolbar { margin: 0 0 20px; }
}
@media (prefers-reduced-motion: reduce) { .environment-card { transition: none; } .environment-card:hover { transform: none; } }

/* Permissão de Ambiente — diretório de associações exclusivo do Master. */
.env-admin{max-width:1480px;margin:0 auto}.env-admin-header{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:8px 0 26px}.env-eyebrow{font-size:.69rem;letter-spacing:.16em;font-weight:600;color:var(--primary);margin:0 0 8px}.env-admin-header h1{font-size:1.8rem;line-height:1.2;margin:0 0 9px}.env-admin-header p:not(.env-eyebrow){color:var(--text-dim);margin:0;font-size:.88rem}.env-admin-header .btn{flex-shrink:0;gap:9px}.env-context{display:flex;align-items:center;gap:18px;padding:20px 24px!important;margin-bottom:22px}.env-context form{display:block;min-width:230px;max-width:400px;flex:1}.env-context label{display:block;font-size:.76rem;color:var(--text-dim);margin-bottom:6px}.env-context-select{display:flex;align-items:center;gap:10px}.env-context-select>svg{color:var(--primary);flex-shrink:0}.env-context select{width:100%;font-size:1rem;font-weight:600;min-height:42px}.env-context-actions{display:flex;gap:10px;margin-left:auto}.env-status{border-radius:100px;padding:5px 12px;font-size:.73rem;white-space:nowrap}.env-status.is-active{background:rgba(42,185,124,.13);color:#39c889;border:1px solid rgba(42,185,124,.3)}.env-status.is-inactive{background:rgba(242,77,88,.13);color:#f56a75;border:1px solid rgba(242,77,88,.3)}.env-danger{color:#ee6573!important}.env-image{display:flex;align-items:center;gap:18px;padding:16px 24px!important;margin-bottom:22px}.env-image-preview{width:116px;height:76px;flex:0 0 116px;display:grid;place-items:center;overflow:hidden;border:1px solid var(--border);border-radius:11px;background:var(--bg-elev);color:var(--primary)}.env-image-preview img{display:block;width:100%;height:100%;object-fit:cover}.env-image-placeholder{display:grid;place-items:center;width:100%;height:100%;background-image:linear-gradient(35deg,transparent 49.8%,var(--border) 50%,transparent 50.3%);background-size:22px 22px}.env-image-placeholder svg{width:30px;height:30px}.env-image-content{min-width:0;flex:1}.env-image-content h2{margin:0 0 5px;font-size:.99rem}.env-image-content p{margin:0 0 12px;color:var(--text-dim);font-size:.77rem;line-height:1.45}.env-image-form{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.env-image-form label{font-size:.76rem;color:var(--text-dim);margin:0}.env-image-form input[type=file]{min-width:220px;max-width:100%;font-size:.75rem;color:var(--text-dim)}.env-image-form .btn{white-space:nowrap}.env-image-help{display:block;margin-top:8px;color:var(--text-dim);font-size:.69rem}.env-image-remove{display:inline-block;margin-top:9px}.env-image-remove .btn{padding:5px 9px;font-size:.72rem}.env-association{padding:0!important;overflow:hidden}.env-association-header{padding:24px 26px 4px;display:flex;align-items:center;justify-content:space-between;gap:20px}.env-association-header h2{margin:0 0 8px;font-size:1.13rem}.env-association-header p{margin:0;font-size:.83rem;color:var(--text-dim)}.env-selection-help{display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:.74rem}.env-feedback{min-height:35px;font-size:.8rem;color:var(--text-dim);padding:10px 26px 6px}.env-feedback.is-error{color:#ef6571}.env-transfer{display:grid;grid-template-columns:minmax(0,1fr) 110px minmax(0,1fr);gap:18px;padding:0 26px 26px;align-items:stretch}.env-user-panel{position:relative;border:1px solid var(--border);border-radius:13px;overflow:hidden;background:var(--bg-elev);min-width:0;min-height:438px;display:flex;flex-direction:column}.env-user-panel>header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:19px 18px 15px}.env-user-panel h3{margin:0 0 6px;font-size:.94rem}.env-user-panel header p{margin:0;font-size:.74rem;color:var(--text-dim)}.env-count{display:inline-flex;min-width:25px;height:25px;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:8px;font-size:.74rem;color:var(--text-dim);padding:0 5px}.env-list-tools{padding:0 15px 0}.env-user-search{display:flex;align-items:center;gap:8px;border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:0 11px}.env-user-search svg{flex-shrink:0;width:17px;color:var(--text-dim)}.env-user-search input{width:100%;border:0!important;box-shadow:none!important;background:transparent!important;min-height:39px;padding:8px 0!important;font-size:.79rem;color:var(--text)}.env-select-all{display:flex;align-items:center;gap:8px;min-height:46px;margin:0;color:var(--text-dim);font-size:.72rem}.env-select-all small{margin-left:auto;font-size:.69rem}.env-admin input[type=checkbox]{width:15px;height:15px;flex:0 0 15px;accent-color:var(--primary);margin:0}.env-user-list{height:310px;overflow-y:auto;scrollbar-gutter:stable;padding:0 9px 10px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.env-user-row{display:flex;align-items:center;gap:12px;min-height:65px;padding:10px 12px;margin:3px 0;border-radius:9px;border:1px solid transparent;cursor:pointer;transition:background .14s,border-color .14s}.env-user-row:hover{background:rgba(148,163,184,.07)}.env-user-row:has(input:checked){background:color-mix(in srgb,var(--primary) 10%,transparent);border-color:color-mix(in srgb,var(--primary) 65%,transparent)}.env-user-row:focus-within{outline:2px solid var(--primary);outline-offset:-2px}.env-user-avatar{width:35px;height:35px;flex:0 0 35px;display:flex;align-items:center;justify-content:center;font-size:.75rem;color:var(--text-dim);border:1px solid var(--border);border-radius:50%;background:var(--bg-card)}.env-user-text{display:flex;flex-direction:column;gap:4px;min-width:0}.env-user-text strong{font-size:.84rem;font-weight:500;overflow-wrap:anywhere}.env-user-text small{font-size:.71rem;color:var(--text-dim)}.env-transfer-actions{display:flex;flex-direction:column;gap:14px;align-items:stretch;justify-content:center}.env-move{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elev);color:var(--text);padding:9px 8px;cursor:pointer;font-size:.73rem;font-weight:600;min-height:77px}.env-move>span:first-child{font-size:1.65rem;line-height:1.1}.env-move-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}.env-move:disabled{opacity:.38;cursor:default}.env-move:not(:disabled):hover{filter:brightness(1.1)}.env-list-empty{position:absolute;left:15px;right:15px;top:245px;text-align:center;font-size:.8rem;color:var(--text-dim)}.env-association-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 26px;border-top:1px solid var(--border);background:var(--bg-elev)}.env-association-footer p{font-size:.76rem;color:var(--text-dim);margin:0}.env-association-footer a{gap:8px;font-size:.78rem}.env-content-links{display:flex;align-items:center;flex-wrap:wrap;gap:14px 25px;padding:19px 3px;font-size:.77rem;color:var(--text-dim)}.env-content-links>span{margin-right:auto}.env-content-links a{display:flex;align-items:center;gap:4px;color:var(--text-dim)}.env-content-links a:hover{color:var(--primary)}.env-content-links svg{width:13px}.env-master-context{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:.8rem;color:var(--text-dim);padding:10px 14px;margin-bottom:18px;border:1px solid var(--border);border-radius:8px}.env-dialog{color:var(--text);background:var(--bg-card);border:1px solid var(--border);border-radius:17px;width:min(460px,calc(100vw - 32px));padding:27px;box-shadow:0 25px 80px rgba(0,0,0,.3)}.env-dialog::backdrop{background:rgba(0,0,0,.6);backdrop-filter:blur(3px)}.env-dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.env-dialog h2{font-size:1.18rem;margin:0}.env-dialog-close{font-size:1.65rem;background:transparent;color:var(--text-dim);border:0;cursor:pointer}.env-dialog label{display:block;font-size:.8rem;margin-bottom:8px}.env-dialog input[type=text]{width:100%}.env-dialog footer{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.env-dialog p{color:var(--text-dim);font-size:.88rem;line-height:1.6}.env-no-environments{padding:40px;text-align:center}
/* Os filtros da associação seguem o mesmo padrão de busca + select usado
   nas listas de usuários, dashboards e demais telas administrativas. */
.env-list-tools{display:grid;grid-template-columns:minmax(0,1fr) minmax(125px,.65fr);gap:.55rem}
.env-list-tools .env-user-search{padding:.55rem .75rem;margin-bottom:0;border-radius:10px;background:var(--bg-elev);border-color:var(--border)}
.env-list-tools .env-user-search input{min-height:0;padding:0!important;font-size:.9rem}
.env-list-tools .env-user-search:focus-within{border-color:var(--accent)}
.env-list-tools .env-role-filter{width:100%;min-width:0;max-width:none}
.env-context select.filtro-input{font-size:.85rem;font-weight:400;min-height:42px}
.env-context-main{display:flex;align-items:flex-end;gap:18px;min-width:0}
.env-context-main form{min-width:0;flex:0 0 auto}
.env-context-main .env-status{margin-bottom:7px}
.env-context-fixed{display:flex;flex-direction:column;gap:6px;min-width:230px}.env-context-fixed>span{font-size:.76rem;color:var(--text-dim)}.env-context-fixed>strong{display:flex;align-items:center;gap:10px;min-height:42px;font-size:.85rem;font-weight:500;color:var(--text)}.env-context-fixed svg{width:20px;height:20px;color:var(--primary)}
@media(max-width:1150px){.env-selection-help{display:none}.env-transfer{gap:12px;grid-template-columns:minmax(0,1fr) 84px minmax(0,1fr);padding:0 16px 20px}.env-user-panel>header{padding:15px 12px}.env-user-row{padding:10px 8px;gap:9px}.env-select-all{flex-wrap:wrap}.env-select-all small{margin-left:0}}
@media(max-width:780px){.env-admin-header{align-items:flex-start;flex-direction:column;gap:15px}.env-admin-header h1{font-size:1.5rem}.env-context{flex-wrap:wrap;padding:16px!important}.env-context-actions{width:100%;margin-left:0}.env-image{align-items:flex-start;padding:16px!important}.env-image-preview{width:92px;height:62px;flex-basis:92px}.env-image-form{align-items:flex-start;flex-direction:column}.env-image-form input[type=file]{min-width:0;width:100%}.env-association-header{padding:20px 16px 4px}.env-transfer{grid-template-columns:1fr;gap:15px}.env-transfer-actions{flex-direction:row}.env-move{flex:1;min-height:56px;flex-direction:row;gap:10px}.env-move>span:first-child{transform:rotate(90deg)}.env-user-panel{min-height:360px}.env-user-list{height:250px}.env-association-footer{flex-direction:column;align-items:flex-start;padding:17px}.env-content-links{flex-direction:column;align-items:flex-start}.env-user-panel header p{font-size:.74rem}.env-list-tools{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.env-user-row{transition:none}}

/* Prévia e resultado padronizado da imagem do ambiente. */
.env-image-preview img,.env-image-preview canvas{display:block;width:100%;height:100%;object-fit:contain;background:#fff}
.env-image-preview img[hidden]{display:none}
.env-image-preview canvas[hidden]{display:none}
.env-image-processing{margin:7px 0 0!important;color:var(--text-dim);font-size:.69rem!important;line-height:1.4}

/* O bloco visual do cartão tem sempre a mesma área, independentemente da
   proporção ou das dimensões da imagem enviada pelo cliente. */
.environment-card-art{box-sizing:border-box;flex:0 0 155px;min-height:155px;max-height:155px;overflow:hidden}
.environment-card-art.has-image{display:grid;place-items:center;min-width:0}
.environment-card-art.has-image img{min-width:0;min-height:0;max-width:100%;max-height:100%;object-fit:contain}

/* Regra final do cartão: a área permanece fixa e a imagem inteira é exibida. */
.environment-card-art{display:grid!important;place-items:center!important;width:100%!important;height:155px!important;min-height:155px!important;max-height:155px!important;flex:0 0 155px!important;overflow:hidden!important;box-sizing:border-box!important}
.environment-card-art.has-image{background:#fff!important}
.environment-card-art.has-image img{display:block!important;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important;object-position:center!important;background:#fff!important}

/* O Ambiente inicial é estrutural e não pode ser removido fisicamente. */
.env-delete-disabled:disabled{opacity:.45;cursor:not-allowed;filter:none}
.env-delete-disabled:disabled:hover{background:transparent;border-color:var(--border);color:#ee6573}

/* Complementos do seletor compartilhado, inclusive para o contexto do Master. */
.environment-switch-note{margin:10px 8px 0;color:var(--text-dim);font-size:.68rem;line-height:1.45}
.environment-switch-management{display:block;margin-top:10px;text-align:center;color:var(--text-dim);font-size:.72rem;text-decoration:none}
.environment-switch-management:hover{color:var(--primary)}

/* ============================================================
   Acessos — navegação em abas no mesmo padrão visual de Avisos
   ============================================================ */
.access-workspace .access-tabs { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.access-workspace .access-filter-card { padding: 17px 18px 16px; }
.access-filter-card .avisos-card-head h2 { margin: 5px 0 5px; font-size: 1.02rem; }
.access-filter-card .avisos-card-head p { max-width: 760px; }
.access-filter-form { margin-top: 16px; }
.access-filter-field > span:first-child { color: var(--text-dim); font-size: .7rem; font-weight: 650; }
.access-filter-card .access-filter-grid { grid-template-columns: 1.5fr repeat(2, minmax(135px, .9fr)) repeat(3, minmax(0, 1fr)); gap: 12px; }
.access-filter-card .access-filter-grid input,
.access-filter-card .access-filter-grid select { min-height: 39px; height: 39px; border-radius: 8px; }
.access-filter-card .access-filter-footer { margin-top: 14px; }
.access-filter-card .access-filter-actions { gap: 8px; }
.access-view { gap: 16px; }
.access-overview-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(300px, .75fr); gap: 16px; align-items: stretch; }
.access-chart-card, .access-highlight-card, .access-user-summary, .access-user-list-card, .access-history-card { min-width: 0; }
.access-chart-card { display: grid; grid-template-rows: auto minmax(260px, 1fr); align-content: stretch; min-height: 0; }
.access-chart-card .access-chart { display: flex; height: 100%; min-height: 260px; margin-top: 14px; }
.access-chart-card .access-chart-scroll { display: flex; width: 100%; height: 100%; min-height: 0; overflow-x: auto; overflow-y: hidden; }
.access-chart-card .access-chart-svg { display: block; width: 100%; height: 100%; min-height: 260px; }
.access-highlight-card { display: grid; align-content: start; gap: 8px; }
.access-highlight-card > h3 { margin: 1px 0 0; font-size: 1rem; }
.access-highlight-card > p { margin: 0 0 5px; color: var(--text-dim); font-size: .74rem; line-height: 1.5; }
.access-highlight-list { display: grid; gap: 0; margin-top: 2px; }
.access-highlight-item { display: flex; align-items: flex-start; gap: 11px; padding: 13px 0; border-top: 1px solid var(--border); }
.access-highlight-icon { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; flex: 0 0 32px; border: 1px solid var(--primary-border-tint); border-radius: 9px; color: var(--primary); background: var(--primary-tint); }
.access-highlight-icon svg { width: 17px; height: 17px; }
.access-highlight-item > div { display: grid; gap: 3px; min-width: 0; }
.access-highlight-item small, .access-highlight-item em { color: var(--text-dim); font-size: .66rem; font-style: normal; line-height: 1.4; }
.access-highlight-item strong { overflow-wrap: anywhere; font-size: .82rem; line-height: 1.35; }
.access-highlight-item em { color: var(--primary); }
.access-highlight-link { justify-self: start; margin-top: 4px; }
.access-users-layout { display: grid; grid-template-columns: minmax(250px, .72fr) minmax(0, 1.28fr); gap: 16px; align-items: start; }
.access-user-summary { display: grid; gap: 18px; }
.access-mini-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.access-mini-kpis > div { display: grid; gap: 5px; min-width: 0; padding: 12px 10px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-elev); }
.access-mini-kpis strong { color: var(--primary); font-size: 1.35rem; line-height: 1; font-variant-numeric: tabular-nums; }
.access-mini-kpis span { color: var(--text-dim); font-size: .65rem; line-height: 1.35; }
.access-user-note { padding-top: 14px; border-top: 1px solid var(--border); color: var(--text-dim); font-size: .74rem; line-height: 1.55; }
.access-user-list-card .access-last-list-expanded { max-height: none; overflow: visible; }
.access-last-list-expanded li { padding: 11px 0; border-bottom: 1px solid var(--border); }
.access-last-list-expanded li:last-child { border-bottom: 0; }
.access-user-badge { flex: 0 0 auto; padding: 4px 8px; border: 1px solid rgba(79,200,130,.2); border-radius: 999px; color: #4fc882; background: rgba(79,200,130,.1); font-size: .64rem; }
.access-dashboard-grid { grid-template-columns: minmax(0, 1.35fr) minmax(280px, .85fr); }
.access-dashboard-grid .access-ranking-panel { padding: 18px; }
.access-dashboard-grid .access-ranking-panel .avisos-card-head { margin-bottom: 12px; }
.access-dashboard-grid .access-ranking-list { max-height: 430px; }
.access-dashboard-grid .access-unused-list { max-height: 430px; }
.access-history-card { padding-bottom: 13px; }
.access-history-card .access-history-table { margin: 16px 0 10px; }
.access-history-card .access-history-footer { padding-inline: 0; }

@media (max-width: 1400px) {
  .access-filter-card .access-filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 1100px) {
  .access-overview-grid, .access-users-layout, .access-dashboard-grid { grid-template-columns: minmax(0, 1fr); }
  .access-highlight-card { grid-template-columns: minmax(0, 1fr); }
  .access-highlight-list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
  .access-highlight-item { border: 1px solid var(--border); border-radius: 10px; padding: 11px; }
  .access-highlight-link { margin-top: 5px; }
}
@media (max-width: 800px) {
  .access-workspace .access-tabs { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .access-filter-card { padding: 14px; }
  .access-filter-card .access-filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .access-filter-card .access-filter-search { grid-column: 1 / -1; }
  .access-filter-card .access-filter-actions { width: 100%; justify-content: flex-end; }
  .access-highlight-list { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .access-highlight-item { border: 0; border-top: 1px solid var(--border); border-radius: 0; padding: 12px 0; }
  .access-mini-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .access-user-badge { display: none; }
  .access-chart-card { grid-template-rows: auto minmax(220px, 1fr); }
  .access-chart-card .access-chart { min-height: 220px; }
  .access-chart-card .access-chart-svg { min-height: 220px; }
}
@media (max-width: 560px) {
  .access-workspace .access-tabs { grid-template-columns: repeat(4, minmax(58px, 1fr)); padding: 5px; }
  .access-workspace .avisos-tab { padding: 8px 5px; }
  .access-workspace .avisos-tab-icon { width: 28px; height: 28px; flex-basis: 28px; }
}

/* O editor em colunas permanece no DOM para manter os campos submetidos ao
   servidor, mas a apresentação ativa desta tela é o editor moderno. */
#permissionColumns { display: none !important; }

/* Visual aprovado da tela de Permissões: a navegação de usuários continua
   disponível pelo seletor do cabeçalho, enquanto o editor ocupa toda a área. */
.users-permissions-modern-page .users-directory { display: none; }
.users-permissions-modern-page .users-admin-shell { display: block; }
.users-permissions-modern-page .users-admin-topbar { margin-bottom: .85rem; }
.users-permissions-modern-page .users-help-card { display: none; }
.users-permissions-modern-page .user-detail {
  min-width: 0;
  padding: 0;
  overflow: visible;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.users-permissions-modern-page .user-detail-head {
  padding: 1rem 1.25rem;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--bg-card);
}
.users-permissions-modern-page .users-modern-picker { margin-left: auto; }
.users-permissions-modern-page .user-detail-name-row h2 { font-size: 1.16rem; }
.users-permissions-modern-page .user-detail-identity p { font-size: .84rem; }
.users-permissions-modern-page .users-permission-environment { padding: .7rem 1.25rem; }
.users-permissions-modern-page .users-permission-environment-copy { display: none; }
.users-permissions-modern-page .users-permission-environment-tabs { width: 100%; justify-content: center; }
.users-permissions-modern-page .users-permission-environment-list { flex: 1; justify-content: center; border-left: 0; }
.users-permissions-modern-page .users-permission-environment-chip { flex: 1; justify-content: center; max-width: 190px; }
.users-permissions-modern-page .permission-section-head { display: none; }
.users-permissions-modern-page .permission-tip { display: none; }
.users-permissions-modern-page .permission-workspace-form { padding-top: 1rem; }
.users-permissions-modern-page .users-modern-permissions { margin-top: 0; }
.users-permissions-modern-page .permission-summary { display: none; }
.users-permissions-modern-page .permission-save-row { margin-top: 1rem; }
@media (max-width: 900px) {
  .users-permissions-modern-page .users-permission-environment-list { justify-content: flex-start; }
  .users-permissions-modern-page .users-permission-environment-chip { max-width: none; }
}

/* Componentes da prévia aprovada: cartão de usuário e abas horizontais. */
.users-permissions-modern-page .users-modern-picker {
  position: relative;
  display: block;
  min-width: 245px;
  color: var(--text);
  font-size: .78rem;
}
.users-permissions-modern-page .users-modern-identity {
  width: 100%;
  display: flex;
  align-items: center;
  gap: .65rem;
  padding: .62rem .78rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg-card);
  color: var(--text);
  text-align: left;
  cursor: pointer;
}
.users-permissions-modern-page .users-modern-identity:hover,
.users-permissions-modern-page .users-modern-identity[aria-expanded="true"] {
  border-color: var(--primary-border-tint);
  background: var(--bg-elev);
}
.users-permissions-modern-page .users-avatar-picker { width: 34px; height: 34px; flex: 0 0 34px; }
.users-permissions-modern-page .users-modern-identity-copy { display: grid; gap: .16rem; min-width: 0; }
.users-permissions-modern-page .users-modern-identity-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .94rem; }
.users-permissions-modern-page .users-modern-identity-copy small { color: var(--text-dim); font-size: .78rem; }
.users-permissions-modern-page .users-modern-picker-chevron { margin-left: auto; color: var(--text-dim); font-size: 1rem; line-height: 1; }
.users-permissions-modern-page .users-modern-user-menu {
  position: absolute;
  z-index: 20;
  top: calc(100% + .4rem);
  right: 0;
  width: 280px;
  padding: .5rem;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: var(--bg-card);
  box-shadow: 0 18px 35px rgba(0, 0, 0, .35);
}
.users-permissions-modern-page .users-modern-user-menu[hidden] { display: none; }
.users-permissions-modern-page .users-modern-user-filter { width: 100%; margin-bottom: .35rem; min-height: 34px; font-size: .72rem; }
.users-permissions-modern-page .users-modern-user-filter,
.users-permissions-modern-page .users-modern-permissions-tools input {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--bg);
  color: var(--text);
  padding: .5rem .65rem;
}
.users-permissions-modern-page .users-modern-user-filter::placeholder,
.users-permissions-modern-page .users-modern-permissions-tools input::placeholder { color: var(--text-dim); }
.users-permissions-modern-page .users-modern-user-options { display: grid; gap: .15rem; max-height: 260px; overflow-y: auto; }
.users-permissions-modern-page .users-modern-user-option { display: flex; align-items: center; gap: .5rem; padding: .45rem; border: 1px solid transparent; border-radius: 7px; color: var(--text); text-decoration: none; }
.users-permissions-modern-page .users-modern-user-option:hover,
.users-permissions-modern-page .users-modern-user-option.active { border-color: var(--border); background: var(--bg-elev); }
.users-permissions-modern-page .users-modern-user-option[hidden] { display: none; }
.users-permissions-modern-page .users-avatar-sm { width: 28px; height: 28px; flex: 0 0 28px; font-size: .68rem; }
.users-permissions-modern-page .users-modern-user-option span:last-child { display: grid; gap: .12rem; min-width: 0; }
.users-permissions-modern-page .users-modern-user-option strong { font-size: .78rem; }
.users-permissions-modern-page .users-modern-user-option small { color: var(--text-dim); font-size: .67rem; }
.users-permissions-modern-page .users-modern-profile-editor { padding: 1rem 1.25rem; border-bottom: 1px solid var(--border); background: var(--bg-elev); }
.users-permissions-modern-page .users-modern-profile-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: .85rem; }
.users-permissions-modern-page .users-modern-profile-head > div { display: grid; gap: .2rem; }
.users-permissions-modern-page .users-modern-profile-head strong { font-size: .9rem; }
.users-permissions-modern-page .users-modern-profile-head small { color: var(--text-dim); font-size: .74rem; }
.users-permissions-modern-page .users-modern-profile-editor .user-profile-grid {
  align-items: start;
  gap: .8rem;
}
.users-permissions-modern-page .users-modern-profile-editor .user-profile-grid label {
  display: grid;
  align-self: start;
  min-width: 0;
  gap: .35rem;
  color: var(--text-dim);
  font-size: .76rem;
}
.users-permissions-modern-page .users-modern-profile-editor .user-profile-grid input,
.users-permissions-modern-page .users-modern-profile-editor .user-profile-grid select {
  width: 100%;
  height: 39px;
  min-height: 39px;
  box-sizing: border-box;
  padding: .5rem .65rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--bg);
  color: var(--text);
  font: inherit;
  font-size: .82rem;
}
.users-permissions-modern-page .users-password-reset-note { color: var(--text-dim); font-size: .68rem; font-weight: 400; line-height: 1.45; }
.users-permissions-modern-page .users-password-reset-note strong { color: var(--text); }
.users-permissions-modern-page .users-modern-profile-editor .user-profile-actions { margin-top: .85rem; }
.users-permissions-modern-page .users-modern-tabbar {
  display: flex;
  align-items: center;
  gap: .45rem;
  padding: .55rem 1.25rem;
  border-bottom: 1px solid var(--border);
  background: var(--bg-card);
}
.users-permissions-modern-page .users-modern-tab {
  min-height: 38px;
  padding: .5rem .9rem;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--text-dim);
  font: inherit;
  font-size: .82rem;
  font-weight: 650;
  cursor: pointer;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.users-permissions-modern-page .users-modern-tab:hover:not(:disabled) { background: var(--bg-elev); color: var(--text); }
.users-permissions-modern-page .users-modern-tab.active { border-color: var(--primary); background: var(--primary); color: var(--primary-ink); }
.users-permissions-modern-page .users-modern-tab:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.users-permissions-modern-page .users-modern-tab:disabled { opacity: .48; cursor: not-allowed; }
.users-permissions-modern-page .users-modern-tab-panel[hidden] { display: none !important; }
.users-permissions-modern-page .users-modern-edit-blocked { display: grid; gap: .3rem; margin: 1rem 1.25rem; padding: 1rem; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-elev); }
.users-permissions-modern-page .users-modern-edit-blocked strong { font-size: .88rem; }
.users-permissions-modern-page .users-modern-edit-blocked span { color: var(--text-dim); font-size: .76rem; }
.users-permissions-modern-page #permissionsTabPanel .permission-workspace-form { padding-top: 1rem; }
.users-permissions-modern-page .users-permission-tabs {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 8px !important;
  padding: 7px !important;
  margin: 18px 0 !important;
}
.users-permissions-modern-page .users-permission-tabs .avisos-tab { width: auto; min-width: 0; border: 1px solid transparent; background: transparent; color: var(--text-dim); font: inherit; text-align: left; cursor: pointer; }
.users-permissions-modern-page .users-permission-tabs .avisos-tab:not(.ativo):hover:not(:disabled) { color: var(--text); background: var(--bg-elev); }
.users-permissions-modern-page .users-permission-tabs .avisos-tab strong { font-size: .9rem; }
.users-permissions-modern-page .users-permission-tabs .avisos-tab small { font-size: .74rem; }
.users-permissions-modern-page .users-permission-tabs .avisos-tab.ativo { border-color: var(--primary-border-tint); color: var(--text); background: var(--primary-tint); }
.users-permissions-modern-page .users-permission-tabs .avisos-tab.ativo .avisos-tab-icon { background: var(--primary); color: var(--primary-ink); }
.users-permissions-modern-page .users-permission-tabs .avisos-tab:disabled { opacity: .45; cursor: not-allowed; }
.users-permissions-modern-page .users-permission-tabs .avisos-tab:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.users-permissions-modern-page .users-modern-tab-panel {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--bg-card);
}

.users-permissions-modern-page .users-permission-environment {
  display: flex;
  justify-content: center;
  padding: .55rem 1.1rem;
  background: var(--bg-card);
}
.users-permissions-modern-page .users-permission-environment-tabs { width: 100%; gap: .35rem; }
.users-permissions-modern-page .users-permission-environment-list {
  display: flex;
  flex: 1;
  flex-wrap: nowrap;
  justify-content: center;
  gap: .35rem;
  overflow: hidden;
}
.users-permissions-modern-page .users-environment-page-button {
  width: 30px;
  height: 30px;
  flex: 0 0 30px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  font-size: 1.1rem;
}
.users-permissions-modern-page .users-environment-page-button:hover:not(:disabled) { background: var(--bg-elev); }
.users-permissions-modern-page .users-permission-environment-chip {
  display: flex;
  flex: 1;
  min-width: 0;
  max-width: 190px;
  align-items: center;
  justify-content: center;
  gap: .38rem;
  padding: .45rem .6rem;
  border: 1px solid transparent;
  border-radius: 9px;
  background: var(--bg-card);
  color: var(--text-dim);
  text-align: center;
}
.users-permissions-modern-page .users-permission-environment-chip:hover { border-color: var(--border); background: var(--bg-elev); }
.users-permissions-modern-page .users-permission-environment-chip.active { border-color: var(--primary); background: var(--primary-tint); color: var(--primary); }
.users-permissions-modern-page .users-permission-environment-dot { display: none; }
.users-permissions-modern-page .users-permission-environment-chip-copy { display: grid; gap: .08rem; min-width: 0; }
.users-permissions-modern-page .users-permission-environment-chip-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .86rem; }
.users-permissions-modern-page .users-permission-environment-chip-copy small { color: var(--text-dim); font-size: .7rem; }
.users-permissions-modern-page .users-permission-environment-chip.active .users-permission-environment-chip-copy small { color: var(--primary); }
.env-environment-navigation { margin-bottom: 22px; }
.env-environment-navigation .users-permission-environment { border: 1px solid var(--border); border-radius: 16px; }
.env-environment-navigation .users-permission-environment-list { flex-wrap: wrap; }
.env-environment-navigation .users-environment-page-button:disabled { opacity: .35; cursor: default; }
.env-environment-navigation .users-permission-environment-chip[hidden],
.env-environment-navigation .users-environment-page-button[hidden] { display: none !important; }
.users-permissions-modern-page .users-modern-permissions-tools input { font-size: .84rem; }
.users-permissions-modern-page .users-modern-permissions-tools span { font-size: .78rem; }
.users-permissions-modern-page .users-modern-folder-toggle { font-size: .86rem; }
.users-permissions-modern-page .users-modern-folder-toggle small { font-size: .7rem; }
.users-permissions-modern-page .users-modern-subfolder,
.users-permissions-modern-page .users-modern-dash { font-size: .76rem; }
.users-permissions-modern-page .users-modern-no-dashboard { font-size: .76rem; }

/* Carrossel exclusivo das ações do ambiente, acima do seletor de ambientes. */
.env-actions-carousel {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  align-items: stretch;
  margin: 18px 0 12px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--bg-card);
}
.env-actions-carousel .btn {
  width: 100%;
  min-height: 40px;
  justify-content: center;
  white-space: nowrap;
  font-size: .78rem;
}

/* Controles de imagem alinhados e com o mesmo padrão de altura/formato. */
.env-image-controls {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.env-image-controls .env-image-form,
.env-image-controls .env-image-remove {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
}
.env-file-input {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}
.env-file-button,
.env-image-controls .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  padding: 0 12px;
  border: 1px solid var(--border);
  border-radius: 9px;
  color: var(--text);
  font-size: .75rem;
  font-weight: 600;
  white-space: nowrap;
  cursor: pointer;
}
.env-file-button:hover,
.env-image-controls .btn-outline:hover {
  border-color: var(--primary-border-tint);
  color: var(--text);
}
.env-image-controls .env-file-name {
  max-width: 220px;
  overflow: hidden;
  color: var(--text-dim);
  font-size: .72rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
@media (max-width: 780px) {
  .env-actions-carousel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .env-image-controls { align-items: flex-start; }
  .env-image-controls .env-image-form,
  .env-image-controls .env-image-remove { flex-wrap: wrap; }
}
@media (max-width: 520px) {
  .env-actions-carousel { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 760px) {
  .users-permissions-modern-page .users-modern-picker { width: 100%; min-width: 0; }
  .users-permissions-modern-page .users-modern-user-menu { left: 0; right: auto; width: min(280px, 100%); }
  .users-permissions-modern-page .users-permission-environment-chip { max-width: none; }
  .users-permissions-modern-page .users-permission-tabs { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 8px !important; padding: 5px !important; margin: 14px 0 !important; }
  .users-permissions-modern-page .users-modern-tabbar { padding-inline: .8rem; }
  .users-permissions-modern-page .users-modern-tab { flex: 1; padding-inline: .45rem; font-size: .76rem; }
}

/* ============================================================
   Transição global de tema — light / dark
   ============================================================
   As cores do tema são interpoladas no :root. Os painéis deixam de
   animar individualmente, evitando o efeito de "camadas"/atraso entre
   cards, tabelas e conteúdos internos.
   ============================================================ */
@property --bg { syntax: "<color>"; inherits: true; initial-value: #0f1218; }
@property --bg-elev { syntax: "<color>"; inherits: true; initial-value: #171b24; }
@property --bg-card { syntax: "<color>"; inherits: true; initial-value: #1c212c; }
@property --border { syntax: "<color>"; inherits: true; initial-value: #2a3140; }
@property --text { syntax: "<color>"; inherits: true; initial-value: #e8ebf0; }
@property --text-dim { syntax: "<color>"; inherits: true; initial-value: #9aa4b2; }
@property --primary { syntax: "<color>"; inherits: true; initial-value: #2f6fed; }
@property --primary-ink { syntax: "<color>"; inherits: true; initial-value: #f7fbff; }
@property --accent { syntax: "<color>"; inherits: true; initial-value: #2f6fed; }
@property --danger { syntax: "<color>"; inherits: true; initial-value: #ff5d5d; }
@property --bg-glow { syntax: "<color>"; inherits: true; initial-value: #1b2130; }
@property --primary-tint { syntax: "<color>"; inherits: true; initial-value: rgba(47, 111, 237, .14); }
@property --primary-tint-strong { syntax: "<color>"; inherits: true; initial-value: rgba(47, 111, 237, .20); }
@property --primary-glow { syntax: "<color>"; inherits: true; initial-value: rgba(47, 111, 237, .46); }
@property --primary-border-tint { syntax: "<color>"; inherits: true; initial-value: rgba(91, 157, 255, .54); }
@property --primary-hover { syntax: "<color>"; inherits: true; initial-value: #4c9dff; }
@property --primary-grad-a { syntax: "<color>"; inherits: true; initial-value: rgba(24, 74, 162, .68); }
@property --primary-grad-b { syntax: "<color>"; inherits: true; initial-value: rgba(31, 95, 202, .44); }
@property --primary-grad-c { syntax: "<color>"; inherits: true; initial-value: rgba(76, 157, 255, .23); }

:root {
  --theme-transition-duration: 420ms;
  --theme-transition-ease: cubic-bezier(.22, .72, .22, 1);
  --primary-grad-a: rgba(24, 74, 162, .68);
  --primary-grad-b: rgba(31, 95, 202, .44);
  --primary-grad-c: rgba(76, 157, 255, .23);
  --primary-gradient: linear-gradient(118deg, var(--primary-grad-a), var(--primary-grad-b) 55%, var(--primary-grad-c));
}

:root[data-theme="claro"] {
  --primary-grad-a: rgba(31, 85, 186, .32);
  --primary-grad-b: rgba(47, 111, 237, .22);
  --primary-grad-c: rgba(75, 145, 245, .12);
  --primary-gradient: linear-gradient(118deg, var(--primary-grad-a), var(--primary-grad-b) 55%, var(--primary-grad-c));
}

/* Uma única animação, na origem das cores. Cards e painéis recebem os
   valores já interpolados e mudam juntos, inclusive quando usam gradientes. */
html.theme-transitioning {
  transition:
    --bg var(--theme-transition-duration) var(--theme-transition-ease),
    --bg-elev var(--theme-transition-duration) var(--theme-transition-ease),
    --bg-card var(--theme-transition-duration) var(--theme-transition-ease),
    --border var(--theme-transition-duration) var(--theme-transition-ease),
    --text var(--theme-transition-duration) var(--theme-transition-ease),
    --text-dim var(--theme-transition-duration) var(--theme-transition-ease),
    --primary var(--theme-transition-duration) var(--theme-transition-ease),
    --primary-ink var(--theme-transition-duration) var(--theme-transition-ease),
    --accent var(--theme-transition-duration) var(--theme-transition-ease),
    --danger var(--theme-transition-duration) var(--theme-transition-ease),
    --bg-glow var(--theme-transition-duration) var(--theme-transition-ease),
    --primary-tint var(--theme-transition-duration) var(--theme-transition-ease),
    --primary-tint-strong var(--theme-transition-duration) var(--theme-transition-ease),
    --primary-glow var(--theme-transition-duration) var(--theme-transition-ease),
    --primary-border-tint var(--theme-transition-duration) var(--theme-transition-ease),
    --primary-hover var(--theme-transition-duration) var(--theme-transition-ease),
    --primary-grad-a var(--theme-transition-duration) var(--theme-transition-ease),
    --primary-grad-b var(--theme-transition-duration) var(--theme-transition-ease),
    --primary-grad-c var(--theme-transition-duration) var(--theme-transition-ease);
}

/* Durante esses 420 ms, transições próprias de cards, abas e controles não
   disputam com a animação do tema. Isso elimina o efeito estranho nos painéis. */
html.theme-transitioning body,
html.theme-transitioning body *,
html.theme-transitioning body *::before,
html.theme-transitioning body *::after {
  transition: none !important;
}

/* Iframes e mídia continuam completamente fora da animação. */
html.theme-transitioning iframe,
html.theme-transitioning video,
html.theme-transitioning canvas {
  transition: none !important;
}

/* A árvore não usa transições próprias de fundo/cor; ela acompanha diretamente
   as variáveis animadas do :root, no mesmo instante dos demais painéis. */
:is(#sidebarDashboardTree, .dashboard-tree-favorites, .dashboard-tree-menu) :is(
  .portal-tree-row,
  .portal-tree-dashboard,
  .portal-tree-actions .cad-tree-icon-btn
),
.dashboard-tree-menu > summary.nav-item,
.dashboard-tree-favorites > summary.nav-item {
  transition: none !important;
}

/* A abertura/fechamento dos níveis continua com sua animação funcional fora
   da troca de tema. */
:is(#sidebarDashboardTree, .dashboard-tree-favorites, .dashboard-tree-menu) .chevron {
  transition: transform .2s ease !important;
}

/* Remove os selos de contexto do cabeçalho em Avisos e Acessos,
   mantendo a área livre sem inserir outro elemento. */
.avisos-workspace:not(.access-workspace) > .avisos-page-head .avisos-page-badge {
  display: none !important;
}
.access-workspace .avisos-page-badge {
  display: none !important;
}

@media (prefers-reduced-motion: reduce) {
  html.theme-transitioning,
  html.theme-transitioning body,
  html.theme-transitioning body *,
  html.theme-transitioning body *::before,
  html.theme-transitioning body *::after {
    transition: none !important;
  }
}

/* ============================================================
   Associação de usuários — controles centrais compactos
   ============================================================
   Mantém a lógica e o HTML atuais; altera apenas a apresentação dos
   botões Associar / Remover para um controle menor, mais claro e alinhado.
   ============================================================ */
.env-transfer {
  grid-template-columns: minmax(0, 1fr) 132px minmax(0, 1fr);
  gap: 20px;
}

.env-transfer-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  gap: 10px;
}

.env-move {
  min-height: 46px;
  padding: 0 12px;
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  align-items: center;
  justify-items: start;
  gap: 8px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg-card);
  color: var(--text-dim);
  font-size: .76rem;
  font-weight: 650;
  line-height: 1;
  box-shadow: none;
  cursor: pointer;
  transition:
    background-color .16s ease,
    border-color .16s ease,
    color .16s ease,
    box-shadow .16s ease,
    transform .12s ease;
}

.env-move > span:first-child {
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border-radius: 7px;
  background: color-mix(in srgb, var(--border) 62%, transparent);
  color: var(--text);
  font-size: 1.05rem;
  line-height: 1;
}

.env-move-primary {
  background: color-mix(in srgb, var(--primary) 12%, var(--bg-card));
  border-color: color-mix(in srgb, var(--primary) 55%, var(--border));
  color: var(--primary-hover);
}

.env-move-primary > span:first-child {
  background: var(--primary);
  color: var(--primary-ink);
}

.env-move:not(:disabled):hover {
  filter: none;
  transform: translateY(-1px);
  border-color: var(--primary);
  background: color-mix(in srgb, var(--primary) 15%, var(--bg-card));
  color: var(--text);
  box-shadow: 0 8px 18px color-mix(in srgb, var(--primary) 13%, transparent);
}

.env-move:not(:disabled):active {
  transform: translateY(0);
  box-shadow: none;
}

.env-move:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.env-move:disabled {
  opacity: 1;
  cursor: default;
  background: color-mix(in srgb, var(--bg-elev) 84%, transparent);
  border-color: color-mix(in srgb, var(--border) 82%, transparent);
  color: color-mix(in srgb, var(--text-dim) 62%, transparent);
  box-shadow: none;
}

.env-move:disabled > span:first-child {
  background: color-mix(in srgb, var(--border) 45%, transparent);
  color: color-mix(in srgb, var(--text-dim) 72%, transparent);
}

@media (max-width: 1150px) {
  .env-transfer {
    grid-template-columns: minmax(0, 1fr) 118px minmax(0, 1fr);
    gap: 14px;
  }
}

@media (max-width: 780px) {
  .env-transfer {
    grid-template-columns: 1fr;
  }

  .env-transfer-actions {
    flex-direction: row;
    gap: 10px;
  }

  .env-move {
    flex: 1 1 0;
    min-height: 44px;
    grid-template-columns: 24px minmax(0, 1fr);
  }

  .env-move > span:first-child {
    width: 24px;
    height: 24px;
    transform: rotate(90deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .env-move {
    transition: none;
  }
}
