/* ==========================================================================
   TEMA DO PROTÓTIPO — todos os valores visuais nascem aqui (tokens).
   Trocar identidade visual = editar os tokens do :root e registrar no UI-GUIDE.md.
   Componentes usam SOMENTE tokens; nunca cores soltas.
   ========================================================================== */
:root{
  /* Escala tipográfica = classes do Tailwind (text-xs … text-3xl), em rem. Estilo Mira: texto normal = text-sm (14px). */
  --text-xs:.75rem; --text-sm:.875rem; --text-base:1rem; --text-lg:1.125rem; --text-xl:1.25rem; --text-2xl:1.5rem; --text-3xl:1.875rem;
  --font-sans:'Inter',system-ui,sans-serif;

  /* Tokens de tema — nomes do shadcn/ui, cores do Zenith */
  --background:#ffffff;
  --foreground:#001969;
  --card:#ffffff;
  --card-foreground:#001969;
  --popover:#ffffff;
  --popover-foreground:#001969;
  --primary:#001969;               /* menu ativo, botão primário */
  --primary-foreground:#ffffff;
  --secondary:#eef1fa;
  --secondary-foreground:#001969;
  --muted:#f7f8fc;                 /* fundos suaves */
  --muted-foreground:#4a5a8c;      /* texto secundário */
  --accent:#ab83f3;                /* destaque (contadores) */
  --accent-foreground:#001969;
  --destructive:#a12d3c;
  --border:#e3e6f2;
  --input:#e3e6f2;
  --ring:#001969;
  --chart-1:#001969; --chart-2:#2eb8ff; --chart-3:#ab83f3; --chart-4:#c9cfe6; --chart-5:#5f6b93;
  --radius:.375rem;                /* Mira: raio pequeno (6px) */
  --sidebar:#f7f8fc;
  --sidebar-foreground:#001969;
  --sidebar-primary:#001969;
  --sidebar-primary-foreground:#ffffff;
  --sidebar-accent:#eceff8;
  --sidebar-accent-foreground:#001969;
  --sidebar-border:#e3e6f2;
  --sidebar-ring:#001969;

  /* Extras do Zenith (sem equivalente no shadcn) */
  --faint:#5f6b93;                 /* rótulos */
  --info:#2eb8ff; --success:#0b6b3a; --warn:#8a4b00;
  --r-ctl:var(--radius); --r-card:var(--radius); --r-panel:var(--radius);
  --ctl-h:2rem;                    /* Mira: controles de 32px (h-8) */
  --sidebar-w:14rem; --topbar-h:3rem;
  --code-bg:#0b1b4d; --code-ink:#e8ecfa;
  /* famílias de etiqueta (fundo / texto) */
  --tag-neutral-bg:#eef1fa; --tag-neutral-fg:#001969;
  --tag-muted-bg:#eef1fa;   --tag-muted-fg:#5f6b93;
  --tag-danger-bg:#fdecef;  --tag-danger-fg:#a12d3c;
  --tag-warn-bg:#fff1dc;    --tag-warn-fg:#8a4b00;
  --tag-info-bg:#e3f5ff;    --tag-info-fg:#00507a;
  --tag-violet-bg:#eee8fd;  --tag-violet-fg:#3d2a7a;
  --tag-success-bg:#e4f6ec; --tag-success-fg:#0b6b3a;
  --chip-on-bg:#f3eefd; --chip-on-line:#cdbbf5; --chip-on-fg:#3d2a7a;
  /* superfícies e estados (antes eram cores soltas nos componentes) */
  --surface:#ffffff;               /* painéis, cartões, campos, menus, diálogos */
  --hover:#eceff8; --hover-soft:#fafbfe;
  --border-strong:#c9cfe6; --disabled-fg:#a7aec9; --check-border:#9aa3c4; --busy-bg:#e9ecf6;
  --invalid-line:#e08794; --invalid-bg:#fffafb; --danger-line:#f0c4cb;
  --ring-soft:rgba(0,25,105,.10); --overlay:rgba(0,25,105,.38); --shadow:rgba(0,25,105,.14);
  --on-primary-hover:brightness(1.15);
  --on-destructive:#ffffff;
  color-scheme:light;
}

/* ==========================================================================
   TEMA ESCURO — mesmos nomes de token, valores para fundo escuro.
   Ativado por <html data-theme="dark"> (Proto.theme.set('dark') ou ?theme=dark).
   ========================================================================== */
:root[data-theme="dark"]{
  color-scheme:dark;
  --background:#0a1128;
  --foreground:#e8ecfa;
  --card:#111a3a; --card-foreground:#e8ecfa;
  --popover:#111a3a; --popover-foreground:#e8ecfa;
  --primary:#3b5bdb; --primary-foreground:#ffffff;
  --secondary:#17224a; --secondary-foreground:#e8ecfa;
  --muted:#0f1836; --muted-foreground:#a3b0d9;
  --accent:#ab83f3; --accent-foreground:#0a1128;
  --destructive:#ff8a99;
  --border:#243059; --input:#2a3665; --ring:#8fa8ff;
  --chart-1:#8fa8ff; --chart-2:#2eb8ff; --chart-3:#ab83f3; --chart-4:#3a4676; --chart-5:#8b98c7;
  --sidebar:#0d1531; --sidebar-foreground:#e8ecfa;
  --sidebar-primary:#3b5bdb; --sidebar-primary-foreground:#ffffff;
  --sidebar-accent:#18224a; --sidebar-accent-foreground:#e8ecfa;
  --sidebar-border:#243059; --sidebar-ring:#8fa8ff;
  --faint:#8b98c7;
  --info:#2eb8ff; --success:#6fe0a8; --warn:#ffc47a;
  --code-bg:#050a1c; --code-ink:#e8ecfa;
  --tag-neutral-bg:#1b2757; --tag-neutral-fg:#dfe6ff;
  --tag-muted-bg:#1b2757;   --tag-muted-fg:#9fb0e0;
  --tag-danger-bg:#3a1a26;  --tag-danger-fg:#ff9aa8;
  --tag-warn-bg:#3a2a12;    --tag-warn-fg:#ffc47a;
  --tag-info-bg:#0e2f45;    --tag-info-fg:#7fd4ff;
  --tag-violet-bg:#2a1f52;  --tag-violet-fg:#cdb8ff;
  --tag-success-bg:#12332a; --tag-success-fg:#6fe0a8;
  --chip-on-bg:#2a1f52; --chip-on-line:#5a47a0; --chip-on-fg:#d7c8ff;
  --surface:#111a3a;
  --hover:#1b2757; --hover-soft:#141e45;
  --border-strong:#3a4676; --disabled-fg:#5d6a99; --check-border:#5d6a99; --busy-bg:#1b2757;
  --invalid-line:#c0586a; --invalid-bg:#2a1620; --danger-line:#6b2f3c;
  --ring-soft:rgba(143,168,255,.22); --overlay:rgba(2,6,20,.66); --shadow:rgba(0,0,0,.5);
  --on-primary-hover:brightness(1.12); --on-destructive:#2a0a12;
}


html,body{margin:0;height:100%}
body{font-family:var(--font-sans);color:var(--foreground);background:var(--background);font-size:var(--text-sm);-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}
svg.lucide{flex-shrink:0}
button{font-family:inherit;color:inherit}
input,textarea,select{font-family:inherit;color:inherit}
.tnum{font-variant-numeric:tabular-nums}

/* ---------- Estrutura ---------- */
#app{min-height:100vh}
.app{display:flex;width:100%;min-height:100vh}
.sidebar{flex:0 0 var(--sidebar-w);width:var(--sidebar-w);height:100vh;position:sticky;top:0;z-index:40;display:flex;flex-direction:column;gap:0.75rem;padding:0.75rem;background:var(--sidebar);color:var(--sidebar-foreground);border-right:1px solid var(--sidebar-border)}
.brand{display:flex;align-items:center;gap:0.625rem;padding:0.5rem;border:1px solid var(--border);background:var(--surface);border-radius:var(--r-ctl)}
.brand img{width:2.25rem;height:2.25rem;border-radius:var(--r-ctl)}
.brand .t1{font-size:var(--text-sm);font-weight:600;line-height:1.2}
.brand .t2{font-size:var(--text-xs);color:var(--muted-foreground);line-height:1.2}
.nav{display:flex;flex-direction:column;gap:0.125rem;flex:1;padding-top:0.25rem}
.nav-item{display:flex;align-items:center;gap:0.5rem;height:var(--ctl-h);padding:0 0.5rem;border-radius:var(--r-ctl);color:var(--foreground);font-size:var(--text-sm);font-weight:400;text-decoration:none;cursor:pointer;border:0;background:transparent;width:100%;text-align:left}
.nav-item:hover{background:var(--hover)}
.nav-item.active{background:var(--primary);color:var(--primary-foreground);font-weight:500}
.nav-item .count{margin-left:auto;min-width:1.5rem;height:1.5rem;padding:0 0.5rem;border-radius:999px;background:var(--accent);color:var(--accent-foreground);font-size:var(--text-xs);font-weight:600;display:flex;align-items:center;justify-content:center}
.sidebar-foot{padding-top:0.5rem;border-top:1px solid var(--border)}
.user{display:flex;align-items:center;gap:0.625rem;padding:0.5rem;width:100%;border:0;background:transparent;border-radius:var(--r-ctl);text-align:left;cursor:pointer;color:inherit}
.user:hover,.user[aria-expanded="true"]{background:var(--hover)}
.user .name{font-size:var(--text-sm);font-weight:600;line-height:1.2}
.user .role{font-size:var(--text-xs);color:var(--muted-foreground);line-height:1.2}
.avatar{width:2.25rem;height:2.25rem;border-radius:50%;object-fit:cover;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent),var(--info));font-size:var(--text-xs);font-weight:600;color:var(--accent-foreground)}
.main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:100vh}
.topbar{display:flex;align-items:center;gap:0.625rem;height:var(--topbar-h);flex:0 0 var(--topbar-h);padding:0 1.5rem;border-bottom:1px solid var(--border);background:var(--background)}
.topbar .sep{width:1px;height:1rem;background:var(--border)}
.topbar .crumb{font-size:var(--text-xs);color:var(--muted-foreground)}
.topbar .crumb.cur{font-weight:600;color:var(--foreground)}
.sprint-clock{margin-left:auto;display:flex;align-items:center;gap:0.5rem;height:var(--ctl-h);padding:0 0.75rem;border-radius:var(--r-ctl);background:var(--chip-on-bg);color:var(--chip-on-fg);font-size:var(--text-xs)}
.page{flex:1;display:flex;flex-direction:column;gap:0.75rem;padding:1rem 1.5rem 1.5rem;min-width:0}
.page-title{font-size:var(--text-xl);font-weight:600;margin:0}

/* ---------- Superfícies ---------- */
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-panel);overflow:hidden}
.panel-pad{padding:1rem}
.card{display:flex;flex-direction:column;gap:0.5rem;padding:0.75rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card)}
.card.clickable{cursor:pointer}
.card.clickable:hover{border-color:var(--border-strong)}
.h2{font-size:var(--text-sm);font-weight:600}
.sub{font-size:var(--text-xs);color:var(--muted-foreground)}
.lbl{font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.divider{height:1px;background:var(--border)}

/* ---------- Botões ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:0.375rem;height:var(--ctl-h);padding:0 0.75rem;border-radius:var(--r-ctl);font-size:var(--text-sm);font-weight:600;white-space:nowrap;cursor:pointer;border:1px solid transparent;background:var(--surface);text-decoration:none}
.btn.primary{background:var(--primary);color:var(--primary-foreground)}
.btn.primary:hover{filter:var(--on-primary-hover)}
.btn.secondary{background:var(--surface);border-color:var(--border);color:var(--foreground)}
.btn.secondary:hover{background:var(--muted)}
.btn.danger{background:var(--destructive);color:var(--on-destructive)}
.btn.danger-outline{background:var(--surface);border-color:var(--danger-line);color:var(--destructive)}
.btn.ghost{background:transparent;color:var(--foreground)}
.btn.sm{padding:0 0.75rem}
.btn.disabled,.btn:disabled{background:var(--border);color:var(--faint);cursor:not-allowed;border-color:transparent;filter:none}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--ctl-h);height:var(--ctl-h);border-radius:var(--r-ctl);border:0;background:transparent;cursor:pointer;color:var(--muted-foreground)}
.icon-btn:hover{background:var(--hover);color:var(--foreground)}
.icon-btn.danger:hover{background:var(--tag-danger-bg);color:var(--destructive)}

/* ---------- Etiquetas ---------- */
.tag{display:inline-flex;align-items:center;gap:0.25rem;height:1.25rem;padding:0 0.5rem;border-radius:var(--r-ctl);font-size:var(--text-xs);font-weight:500;white-space:nowrap}
.tag.neutral{background:var(--tag-neutral-bg);color:var(--tag-neutral-fg)}
.tag.muted{background:var(--tag-muted-bg);color:var(--tag-muted-fg)}
.tag.danger{background:var(--tag-danger-bg);color:var(--tag-danger-fg)}
.tag.warn{background:var(--tag-warn-bg);color:var(--tag-warn-fg)}
.tag.info{background:var(--tag-info-bg);color:var(--tag-info-fg)}
.tag.violet{background:var(--tag-violet-bg);color:var(--tag-violet-fg)}
.tag.success{background:var(--tag-success-bg);color:var(--tag-success-fg)}
.pill{display:inline-flex;align-items:center;gap:0.375rem;height:1.5rem;padding:0 0.625rem;border-radius:999px;font-size:var(--text-xs);font-weight:600;white-space:nowrap}
.pill.success{background:var(--tag-success-bg);color:var(--tag-success-fg)}
.pill.muted{background:var(--tag-muted-bg);color:var(--tag-muted-fg)}
.pill.danger{background:var(--tag-danger-bg);color:var(--tag-danger-fg)}
.pill.warn{background:var(--tag-warn-bg);color:var(--tag-warn-fg)}
.pill.info{background:var(--tag-info-bg);color:var(--tag-info-fg)}
.pill.violet{background:var(--tag-violet-bg);color:var(--tag-violet-fg)}
.flag{display:inline-flex;align-items:center;gap:0.375rem;font-size:var(--text-xs);font-weight:500;color:var(--tag-violet-fg)}

/* ---------- Formulários ---------- */
.field{display:flex;flex-direction:column;gap:0.375rem}
.input,.select,.textarea{width:100%;height:var(--ctl-h);padding:0 0.625rem;border:1px solid var(--input);border-radius:var(--r-ctl);background:var(--surface);font-size:var(--text-sm);outline:none}
.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--ring-soft)}
.select{appearance:none;padding-right:2.25rem;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235f6b93' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer}
.select.sm,.input.sm{height:var(--ctl-h)}
.textarea{height:auto;padding:0.625rem 0.75rem;line-height:1.45;resize:none}
.input.invalid,.select.invalid,.textarea.invalid{border-color:var(--invalid-line);background:var(--invalid-bg)}
.error-text{display:flex;align-items:center;gap:0.375rem;font-size:var(--text-xs);color:var(--destructive)}
.hint{font-size:var(--text-xs);color:var(--muted-foreground)}
.search{position:relative;display:inline-flex;align-items:center}
.search .input{padding-left:2.25rem;width:16rem}
.search svg{position:absolute;left:0.75rem;color:var(--faint);pointer-events:none}
.filter{display:inline-flex;align-items:center;gap:0.5rem;height:var(--ctl-h);padding:0 0.75rem;border:1px solid var(--border);border-radius:var(--r-ctl);background:var(--surface);font-size:var(--text-sm);white-space:nowrap}
.filter.on{background:var(--chip-on-bg);border-color:var(--chip-on-line);color:var(--chip-on-fg)}
select.filter{appearance:none;padding-right:2rem;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235f6b93' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 9px center}
.check{width:1.25rem;height:1.25rem;border-radius:5px;border:1.5px solid var(--check-border);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;color:#fff;padding:0}
.check.on{background:var(--primary);border-color:var(--primary)}
.seg{display:inline-flex;border:1px solid var(--border);border-radius:var(--r-ctl);padding:0.25rem;background:var(--surface);gap:0.125rem}
.seg button{height:calc(var(--ctl-h) - 0.5rem);padding:0 0.875rem;border:0;border-radius:calc(var(--r-ctl) - 3px);background:transparent;font-size:var(--text-sm);cursor:pointer}
.seg button.on{background:var(--primary);color:var(--primary-foreground);font-weight:600}
.seg button:disabled{color:var(--disabled-fg);cursor:not-allowed}

/* ---------- Tabelas / listas ---------- */
.data-table{display:block;width:100%;border-top:1px solid var(--border)}
.tr{display:grid;grid-template-columns:var(--cols);align-items:center;gap:0.75rem;min-height:2.75rem;padding:0 1rem;border-bottom:1px solid var(--border);font-size:var(--text-sm)}
.tr.th{min-height:2.25rem;background:var(--muted);font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.tr .cell-title{display:flex;flex-direction:column;gap:0.125rem;min-width:0}
.tr .cell-title .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tr.clickable{cursor:pointer}
.tr.clickable:hover{background:var(--hover-soft)}
.empty{padding:3rem 1rem;text-align:center;color:var(--muted-foreground)}

/* ---------- Menu de ações da linha ---------- */
.menu-wrap{position:relative;display:inline-flex}
.menu{position:absolute;right:0;top:2.25rem;z-index:30;min-width:13rem;padding:0.375rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-ctl);box-shadow:0 10px 30px var(--shadow)}
.menu-item{display:flex;align-items:center;gap:0.625rem;height:var(--ctl-h);padding:0 0.625rem;border-radius:var(--r-ctl);font-size:var(--text-sm);cursor:pointer;border:0;background:transparent;width:100%;text-align:left}
.menu-item:hover{background:var(--muted)}
.menu-item.danger{color:var(--destructive)}
.menu-sep{height:1px;background:var(--border);margin:0.25rem 0}

/* ---------- Paginação ---------- */
.pager{display:flex;align-items:center;gap:0.75rem;padding:0.75rem 1rem;font-size:var(--text-sm);color:var(--muted-foreground)}
.pager .pages{margin-left:auto;display:flex;align-items:center;gap:0.25rem}
.pager .pg{min-width:var(--ctl-h);height:var(--ctl-h);padding:0 0.625rem;border-radius:var(--r-ctl);border:1px solid transparent;background:transparent;font-size:var(--text-sm);cursor:pointer;color:var(--foreground)}
.pager .pg.on{background:var(--primary);color:var(--primary-foreground);font-weight:600}
.pager .pg:disabled{color:var(--disabled-fg);cursor:not-allowed}
.pager .dots{padding:0 0.25rem}

/* ---------- Diálogo / toast ---------- */
.overlay{position:fixed;inset:0;z-index:50;background:var(--overlay);display:flex;align-items:flex-start;justify-content:center;padding-top:var(--dialog-top,9rem)}
.dialog{width:min(32rem,92vw);background:var(--surface);border-radius:var(--r-panel);padding:1.5rem;display:flex;flex-direction:column;gap:0.875rem;box-shadow:0 24px 60px var(--shadow)}
.dialog.wide{width:min(36rem,92vw)}
.dialog h3{margin:0;font-size:var(--text-base);font-weight:600}
.dialog .body{font-size:var(--text-sm);line-height:1.45;color:var(--muted-foreground)}
.dialog .body b{color:var(--foreground);font-weight:600}
.dialog .actions{display:flex;justify-content:flex-end;gap:0.625rem;margin-top:0.25rem}
.banner{display:flex;align-items:flex-start;gap:0.625rem;padding:0.625rem 0.75rem;border-radius:var(--r-ctl);font-size:var(--text-sm)}
.banner.danger{background:var(--tag-danger-bg);color:var(--tag-danger-fg)}
.banner.warn{background:var(--tag-warn-bg);color:var(--tag-warn-fg)}
.banner.info{background:var(--tag-info-bg);color:var(--tag-info-fg)}
.banner.success{background:var(--tag-success-bg);color:var(--tag-success-fg)}
.toast-host{position:fixed;top:1.25rem;left:50%;transform:translateX(-50%);z-index:80;display:flex;flex-direction:column;align-items:center;gap:0.5rem;pointer-events:none}
.toast{display:flex;align-items:center;gap:0.625rem;padding:0.75rem 1rem;border-radius:var(--r-ctl);background:var(--primary);color:#fff;font-size:var(--text-sm);box-shadow:0 10px 30px var(--shadow)}
.toast.success svg{color:#7fe0a8}.toast.error{background:var(--destructive);color:var(--on-destructive)}

/* ---------- Abas / linha do tempo ---------- */
.tabs{display:flex;gap:0.25rem;border-bottom:1px solid var(--border)}
.tab{height:var(--ctl-h);padding:0 1rem;border:0;background:transparent;font-size:var(--text-sm);color:var(--muted-foreground);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.tab.on{color:var(--foreground);font-weight:600;border-bottom-color:var(--primary)}
.tl{display:flex;flex-direction:column}
.tl-item{display:grid;grid-template-columns:1.75rem 1fr;gap:0.75rem;position:relative;padding-bottom:1.25rem}
.tl-item:not(:last-child)::before{content:"";position:absolute;left:0.875rem;top:1.75rem;bottom:0;width:0.125rem;background:var(--border)}
.tl-dot{width:1.75rem;height:1.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--tag-neutral-bg);color:var(--foreground)}
.tl-dot.danger{background:var(--tag-danger-bg);color:var(--destructive)}
.tl-dot.violet{background:var(--tag-violet-bg);color:var(--tag-violet-fg)}
.tl-dot.info{background:var(--tag-info-bg);color:var(--tag-info-fg)}
.tl-dot.success{background:var(--tag-success-bg);color:var(--tag-success-fg)}
.tl-title{font-size:var(--text-sm);font-weight:600}
.tl-meta{font-size:var(--text-xs);color:var(--muted-foreground);margin-top:0.125rem}
.tl-note{margin-top:0.375rem;padding:0.5rem 0.75rem;background:var(--muted);border-radius:var(--r-ctl);font-size:var(--text-sm);color:var(--foreground)}

/* ---------- Markdown renderizado ---------- */
.md{font-size:var(--text-sm);line-height:1.55}
.md h1,.md h2,.md h3{font-weight:700;color:var(--foreground)}
.md h1{font-size:var(--text-xl);margin:0 0 0.625rem}.md h2{font-size:var(--text-base);margin:1rem 0 0.375rem}.md h3{font-size:var(--text-sm);margin:0.75rem 0 0.25rem}
.md p{margin:0 0 0.5rem}.md ul{margin:0 0 0.5rem;padding-left:1.25rem;list-style:disc}.md ol{margin:0 0 0.5rem;padding-left:1.25rem;list-style:decimal}
.md img{max-width:100%;border-radius:var(--r-ctl);border:1px solid var(--border)}
.md code{padding:1px 0.375rem;border-radius:var(--r-ctl);background:var(--muted);font-size:.9em}
.md figure{margin:0.5rem 0}.md figcaption{font-size:var(--text-xs);color:var(--muted-foreground);margin-top:0.25rem}

/* ---------- Indicadores / gráficos ---------- */
.kpi{display:flex;flex-direction:column;gap:0.25rem;padding:1rem 1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-panel)}
.kpi .v{font-size:var(--text-2xl);font-weight:600;line-height:1.1}
.kpi .l{font-size:var(--text-xs);color:var(--muted-foreground)}
.kpi .d{font-size:var(--text-xs);color:var(--muted-foreground)}
.bar{height:0.5rem;border-radius:999px;background:var(--border);overflow:hidden}
.bar > i{display:block;height:100%;border-radius:999px;background:var(--primary)}
.legend{display:inline-flex;align-items:center;gap:0.5rem;font-size:var(--text-sm);color:var(--muted-foreground)}
.legend i{display:block;width:0.625rem;height:0.625rem;border-radius:50%}

/* ---------- Tela de acesso negado ---------- */
.forbidden{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0.625rem;text-align:center;padding:3rem}
.forbidden .code{font-size:var(--text-xs);font-weight:600;letter-spacing:.16em;color:var(--faint)}
.forbidden h1{margin:0;font-size:var(--text-2xl);font-weight:600}
.forbidden p{margin:0;max-width:28rem;color:var(--muted-foreground);font-size:var(--text-sm)}

/* ---------- Utilitários de captura ---------- */
.no-anim *,.no-anim *::before,.no-anim *::after{animation:none!important;transition:none!important;caret-color:transparent!important}

/* ---------- Complementos Zenith ---------- */
.btn.blocked{background:var(--border);color:var(--faint);cursor:not-allowed;filter:none}
.cal{display:flex;flex-direction:column;gap:0.5rem}
.cal-head{display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:var(--text-sm)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:0.125rem 0}
.cal-dow{font-size:var(--text-xs);font-weight:600;color:var(--faint);text-align:center;padding:0.25rem 0}
.cal-day{position:relative;height:2.25rem;border:0;background:transparent;font-size:var(--text-sm);cursor:pointer;color:var(--foreground)}
.cal-day.empty{cursor:default}
.cal-day.busy{background:var(--busy-bg);color:var(--faint)}
.cal-day.busy.first{border-radius:var(--r-ctl) 0 0 var(--r-ctl)}.cal-day.busy.last{border-radius:0 var(--r-ctl) var(--r-ctl) 0}
.cal-day.range{background:var(--chip-on-bg);color:var(--chip-on-fg)}
.cal-day.edge{background:var(--primary);color:var(--primary-foreground);font-weight:600;border-radius:var(--r-ctl)}
.cal-day.today::after{content:"";position:absolute;left:50%;bottom:0.25rem;width:0.25rem;height:0.25rem;margin-left:-0.125rem;border-radius:50%;background:var(--accent)}
.swatch{display:inline-block;width:0.75rem;height:0.75rem;border-radius:4px;vertical-align:-1px;margin-right:0.375rem}
.md-editor{display:grid;grid-template-columns:2.75rem 1fr;border:1px solid var(--border);border-radius:var(--r-ctl);overflow:hidden;background:var(--surface)}
.md-gutter{background:var(--muted);color:var(--disabled-fg);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:var(--text-xs);line-height:1.55;padding:0.75rem 0.5rem;text-align:right;white-space:pre;user-select:none}
.md-editor textarea{border:0;outline:none;resize:none;padding:0.75rem 0.875rem;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:var(--text-sm);line-height:1.55;background:var(--surface);min-height:20rem;width:100%}
.md-tools{display:flex;align-items:center;gap:0.375rem}
.md-tools button{min-width:var(--ctl-h);height:var(--ctl-h);border:1px solid var(--border);background:var(--surface);border-radius:var(--r-ctl);font-size:var(--text-sm);font-weight:600;cursor:pointer}
.drawer-overlay{position:fixed;inset:0;z-index:45;background:var(--overlay);display:flex;justify-content:flex-end}
.drawer{width:min(36rem,96vw);height:100%;background:var(--surface);padding:1.5rem;display:flex;flex-direction:column;gap:1rem;overflow:auto;box-shadow:-20px 0 60px var(--shadow)}
.dropzone{display:flex;align-items:center;gap:0.5rem;padding:0.625rem 0.75rem;border:1.5px dashed var(--border-strong);border-radius:var(--r-ctl);color:var(--muted-foreground);font-size:var(--text-sm);background:var(--muted);cursor:pointer;width:100%;text-align:left}
.col{display:flex;flex-direction:column;gap:0.625rem;padding:0.625rem;background:var(--muted);border-radius:var(--r-panel);min-width:0}
.col-head{display:flex;align-items:center;gap:0.5rem;padding:0.125rem 0.25rem 0.25rem;font-size:var(--text-xs);font-weight:600}
.cnt{min-width:1.5rem;height:1.25rem;padding:0 0.375rem;border-radius:999px;background:var(--border);font-size:var(--text-xs);font-weight:600;display:flex;align-items:center;justify-content:center}
.card .ctitle{font-size:var(--text-xs);font-weight:500;line-height:1.3}
.card .meta{display:flex;align-items:center;gap:0.375rem;font-size:var(--text-xs);color:var(--muted-foreground)}
.link{display:inline-flex;align-items:center;gap:0.375rem;font-size:var(--text-xs);color:var(--muted-foreground);text-decoration:none}
.seg-bar{display:flex;height:0.625rem;border-radius:999px;overflow:hidden;gap:0.125rem;background:var(--surface)}
.seg-bar i{display:block;height:100%}
.row-gap{display:flex;gap:0.75rem}
.chart-box{display:flex;flex-direction:column;gap:0.625rem}
.hline{display:flex;align-items:center;gap:0.625rem}

/* ---------- Sidebar recolhida ---------- */
.sidebar.collapsed{flex-basis:4.5rem;width:4.5rem;padding:0.75rem 0.625rem}
.sidebar.collapsed .brand{justify-content:center;padding:0.5rem 0}
.sidebar.collapsed .brand > :not(img){display:none}
.sidebar.collapsed .nav-item{justify-content:center;padding:0;position:relative}
.sidebar.collapsed .nav-item > span:not(.count){display:none}
.sidebar.collapsed .nav-item .count{position:absolute;top:0.125rem;right:0.25rem;min-width:1rem;height:1rem;padding:0 0.25rem;font-size:var(--text-xs);margin:0}
.sidebar.collapsed .user{justify-content:center;padding:0.5rem 0}
.sidebar.collapsed .user > :not(.avatar){display:none}

/* ---------- Tooltip (componente) ---------- */
.tooltip{position:fixed;z-index:90;max-width:18rem;padding:0.375rem 0.625rem;border-radius:var(--r-ctl);background:var(--primary);color:var(--primary-foreground);font-size:var(--text-xs);line-height:1.3;box-shadow:0 6px 20px var(--shadow);pointer-events:none;opacity:0;visibility:hidden;white-space:nowrap}
.tooltip.show{opacity:1;visibility:visible}
.field > .tag,.field > .pill{align-self:flex-start}

/* ---------- Menu do usuário (sidebar) e interruptor ---------- */
.user-wrap{position:relative;display:block;width:100%}
.user-menu{position:absolute;left:calc(100% + 1rem);bottom:0;z-index:40;width:15.5rem;padding:0.375rem;background:var(--popover);color:var(--popover-foreground);border:1px solid var(--border);border-radius:var(--r-ctl);box-shadow:0 10px 30px var(--shadow)}
.sidebar.collapsed .user-menu{left:calc(100% + 0.875rem)}
.user-menu-head{display:flex;align-items:center;gap:0.625rem;padding:0.5rem 0.5rem 0.625rem}
.user-menu-head .name{font-size:var(--text-sm);font-weight:600;line-height:1.2}
.user-menu-head .role{font-size:var(--text-xs);color:var(--muted-foreground);line-height:1.2}
.menu-item .grow{flex:1}
.switch{position:relative;flex-shrink:0;width:2rem;height:1.125rem;border-radius:999px;background:var(--border-strong);transition:background .15s}
.switch::after{content:"";position:absolute;top:0.125rem;left:0.125rem;width:0.875rem;height:0.875rem;border-radius:50%;background:var(--surface);box-shadow:0 1px 2px var(--shadow);transition:transform .15s}
.switch.on{background:var(--primary)}
.switch.on::after{transform:translateX(0.875rem);background:#fff}
.sticky-foot{background:var(--background)}
