/* Identidade visual G.E.E.A.L. — paleta extraída da logo */
:root {
  --roxo-principal: #5B2A6B;
  --roxo-escuro:    #3D1A4A;
  --roxo-uva:       #7B3F8C;
  --roxo-claro:     #EDE3F1;
  --verde-folha:    #5A8F3C;
  --verde-claro:    #86B85E;
  --dourado:        #C9A24B;
  --branco:         #FFFFFF;
  --texto:          #2A2230;
  --texto-suave:    #6B7280;
  --borda:          #E5E7EB;
  --vermelho:       #B33A3A;
  --raio:           10px;
  --sombra:         0 1px 3px rgba(0,0,0,.08);
}

* { box-sizing: border-box; }
/* O atributo hidden deve sempre esconder, mesmo quando há display: block. */
[hidden] { display: none !important; }
body {
  margin: 0;
  font-family: "Segoe UI", system-ui, sans-serif;
  color: var(--texto);
  background: var(--branco);
  line-height: 1.5;
}

.auth-wrap {
  min-height: 100vh; display: grid; place-items: center;
  background: var(--roxo-claro);
}
.auth-card {
  width: 100%; max-width: 380px; background: var(--branco);
  border-radius: var(--raio); box-shadow: var(--sombra);
  padding: 2rem; border-top: 3px solid var(--dourado);
}
.auth-card h1 { margin: 0 0 1rem; color: var(--roxo-escuro); font-size: 1.25rem; text-align: center; }
.auth-card .logo { display: block; margin: 0 auto 1rem; max-height: 96px; }

label { display: block; font-size: .85rem; color: var(--texto-suave); margin: .75rem 0 .25rem; }
input[type=text], input[type=password], input[type=email], input[type=tel], input[type=number],
input[type=date], input[type=datetime-local], input[type=time], input[type=search], input[type=url], select {
  width: 100%; padding: .6rem .75rem; border: 1px solid var(--borda);
  border-radius: var(--raio); font-size: 1rem; font-family: inherit;
  background: var(--branco); color: var(--texto); height: 42px;
}
select:focus { outline: 2px solid var(--roxo-uva); outline-offset: 1px; }
input:focus { outline: 2px solid var(--roxo-uva); outline-offset: 1px; }

.btn {
  display: inline-block; width: 100%; margin-top: 1rem; padding: .65rem 1rem;
  background: var(--roxo-principal); color: #fff; border: none; text-decoration: none;
  border-radius: var(--raio); font-size: 1rem; cursor: pointer; text-align: center;
}
.btn:hover { background: var(--roxo-escuro); }
/* Botões e ícones de ação nunca sublinhados (são links <a>). */
.btn, .btn-secundario, .icone-acao { text-decoration: none; }
.btn:hover, .btn-secundario:hover, .icone-acao:hover { text-decoration: none; }
.alert-erro {
  background: #fdecea; color: var(--vermelho); border: 1px solid #f5c6cb;
  padding: .6rem .75rem; border-radius: var(--raio); font-size: .9rem; margin-bottom: .5rem;
}
.alert-sucesso {
  background: #e7f6ec; color: #1b7a3e; border: 1px solid #b6e0c4;
  padding: .6rem .75rem; border-radius: var(--raio); font-size: .9rem; margin-bottom: 1rem;
  display: flex; align-items: center; gap: .5rem;
}

.app { display: grid; grid-template-columns: 230px 1fr; min-height: 100vh; }
.sidebar { background: var(--roxo-escuro); color: #fff; padding: 1rem; }
.sidebar .marca { font-weight: 700; letter-spacing: .5px; margin-bottom: 1rem; }
.sidebar nav.menu { display: flex; flex-direction: column; gap: .1rem; overflow-y: auto; }
.topbar {
  display: flex; justify-content: flex-end; align-items: center;
  gap: .5rem; min-height: 56px; padding: .5rem 1.5rem; border-bottom: 1px solid var(--borda);
}
.topbar .usuario { display: inline-flex; align-items: center; gap: .5rem; color: var(--texto-suave); font-size: .9rem; }
.topbar .usuario a { display: inline-flex; align-items: center; gap: .3rem; }
.conteudo { padding: 1.5rem; }
.conteudo h1 { color: var(--roxo-escuro); border-bottom: 2px solid var(--dourado); padding-bottom: .35rem; display: inline-block; }
.sobre-tela { background: var(--roxo-claro); border-radius: var(--raio); padding: .75rem 1rem; margin: 1rem 0; font-size: .9rem; }

/* Listagem e formulário (módulo Pessoas e reutilizável) */
.barra-busca { display: flex; gap: .5rem; margin: 1rem 0; align-items: center; }
.barra-busca input[type=text] { flex: 1; max-width: 560px; }
/* Botões dentro da barra ficam compactos (sobrescreve o .btn full-width global). */
.barra-busca .btn,
.barra-busca .btn-secundario {
  width: auto; margin-top: 0; white-space: nowrap; padding: .55rem .9rem; flex: 0 0 auto;
}
.btn-secundario {
  display: inline-block; padding: .55rem 1rem; border: 1px solid var(--borda);
  border-radius: var(--raio); background: #fff; color: var(--texto); text-decoration: none; cursor: pointer;
}
.btn-secundario:hover { background: var(--roxo-claro); }

.tabela { width: 100%; border-collapse: collapse; margin-top: .5rem; }
.tabela th, .tabela td { text-align: left; padding: .6rem .5rem; border-bottom: 1px solid var(--borda); }
.tabela th { color: var(--roxo-escuro); font-size: .85rem; text-transform: uppercase; letter-spacing: .3px; }
.tabela th a { color: inherit; text-decoration: none; }
.tabela tbody tr:hover { background: var(--roxo-claro); }
.tabela th a.ordenavel { display: inline-flex; align-items: center; gap: .25rem; cursor: pointer; }
.tabela th a.ordenavel:hover { color: var(--roxo-principal); }
.tabela th a.ordenavel.ativa { color: var(--roxo-principal); }
.seta-ordem { font-size: .7rem; }
.tabela .col-acoes { text-align: center; width: 110px; white-space: nowrap; }
.tabela .col-acoes .icone-acao { color: var(--roxo-principal); padding: .25rem .4rem; }

.paginacao { display: flex; gap: .25rem; margin-top: 1rem; }
.paginacao a {
  padding: .35rem .6rem; border: 1px solid var(--borda); border-radius: 6px;
  text-decoration: none; color: var(--texto);
}
.paginacao a.ativa { background: var(--roxo-principal); color: #fff; border-color: var(--roxo-principal); }

.obrigatorio { color: var(--vermelho); }
.erro-campo { display: block; color: var(--vermelho); font-size: .82rem; margin-top: .15rem; }
.papeis { border: 1px solid var(--borda); border-radius: var(--raio); padding: .75rem; margin: 1rem 0; }
.papeis legend { color: var(--roxo-escuro); padding: 0 .35rem; }
.checkbox { display: inline-flex; align-items: center; gap: .35rem; margin-right: 1rem; font-size: .9rem; color: var(--texto); }

.acoes-topo { margin: 1rem 0; display: flex; gap: .5rem; }
.cartao { border: 1px solid var(--borda); border-radius: var(--raio); padding: 1rem 1.25rem; margin: 1rem 0; }
.cartao h2 { color: var(--roxo-escuro); margin-top: 0; font-size: 1.05rem; }
.dados { display: grid; grid-template-columns: 140px 1fr; gap: .35rem .75rem; }
.dados dt { color: var(--texto-suave); }
.timeline-item { border-left: 3px solid var(--dourado); padding: .35rem .75rem; margin: .5rem 0; }
.timeline-acao { font-weight: 600; color: var(--roxo-escuro); text-transform: capitalize; }
.timeline-data { color: var(--texto-suave); font-size: .82rem; margin-left: .5rem; }
.anexo-item { padding: .35rem 0; border-bottom: 1px solid var(--borda); }
.anexo-meta { color: var(--texto-suave); font-size: .82rem; margin-left: .5rem; }

/* ---- Formulário em grade (12 colunas) ---- */
.form-grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: .25rem 1rem;
  max-width: 880px;
  margin-top: 1rem;
}
.form-grid .campo { display: flex; flex-direction: column; }
.form-grid label { margin-top: 0; }
.campo-12 { grid-column: span 12; }
.campo-11 { grid-column: span 11; }
.campo-10 { grid-column: span 10; }
.campo-9  { grid-column: span 9; }
.campo-8  { grid-column: span 8; }
.campo-7  { grid-column: span 7; }
.campo-6  { grid-column: span 6; }
.campo-5  { grid-column: span 5; }
.campo-4  { grid-column: span 4; }
.campo-3  { grid-column: span 3; }
.campo-2  { grid-column: span 2; }
.form-grid .papeis { margin: 1rem 0 .5rem; }

/* Campo monetário com prefixo R$ (wrapper envolve só o input). */
.campo-moeda { position: relative; }
.campo-moeda .prefixo {
  position: absolute; left: .75rem; top: 50%; transform: translateY(-50%);
  color: var(--texto-suave); font-size: .95rem; pointer-events: none;
}
.campo-moeda input { padding-left: 2.1rem; text-align: right; }

/* Ações do formulário: botões lado a lado, alinhados à direita. */
.form-acoes { display: flex; justify-content: flex-end; gap: .5rem; margin-top: 1rem; }
.form-acoes .btn,
.form-acoes .btn-secundario {
  width: auto; margin-top: 0; padding: .6rem 1.4rem; flex: 0 0 auto;
}

/* Empilha os campos por linha em telas estreitas. */
@media (max-width: 720px) {
  .campo-2, .campo-3, .campo-4, .campo-5, .campo-6, .campo-7, .campo-8, .campo-9, .campo-10, .campo-11 { grid-column: span 12; }
  .form-acoes { justify-content: stretch; }
  .form-acoes .btn, .form-acoes .btn-secundario { flex: 1; text-align: center; }
}

/* ---- Sidebar com ícones + toggle recolhível ---- */
.sidebar .marca {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
}
.toggle-menu {
  background: transparent; border: none; color: #e8dcef; cursor: pointer;
  font-size: 1rem; padding: .35rem; border-radius: 6px; line-height: 1;
}
.toggle-menu:hover { background: rgba(255,255,255,.12); }

/* Item de menu (link) */
.menu-item {
  display: flex; align-items: center; gap: .65rem; white-space: nowrap;
  color: #e8dcef; text-decoration: none; padding: .5rem .55rem; border-radius: 6px;
}
.menu-item:hover { background: rgba(255,255,255,.08); }
.menu-item i { width: 1.1rem; text-align: center; flex: 0 0 auto; }
.menu-item.ativo { background: rgba(255,255,255,.14); color: #fff; box-shadow: inset 3px 0 0 var(--dourado); }

/* Grupo com título clicável (accordion) */
.menu-grupo { margin-top: .15rem; }
.menu-grupo-titulo {
  width: 100%; display: flex; align-items: center; gap: .65rem; white-space: nowrap;
  background: transparent; border: none; cursor: pointer; color: #cdbcd8;
  padding: .55rem .55rem; border-radius: 6px; font: inherit; font-size: .78rem;
  text-transform: uppercase; letter-spacing: .6px;
}
.menu-grupo-titulo:hover { background: rgba(255,255,255,.06); color: #fff; }
.menu-grupo-titulo i:first-child { width: 1.1rem; text-align: center; flex: 0 0 auto; }
.menu-grupo-titulo .chevron { margin-left: auto; font-size: .7rem; transition: transform .2s; }
.menu-grupo.aberto .menu-grupo-titulo .chevron { transform: rotate(180deg); }
.menu-grupo-itens { display: none; padding-left: .5rem; margin: .1rem 0 .3rem; }
.menu-grupo.aberto .menu-grupo-itens { display: block; }
.menu-grupo-itens .menu-item { font-size: .92rem; padding-left: .8rem; }

/* Estado recolhido: largura mínima, só ícones, centralizados. */
.app.menu-recolhido { grid-template-columns: 64px 1fr; }
.app.menu-recolhido .marca { justify-content: center; }
.app.menu-recolhido .marca-texto { display: none; }
.app.menu-recolhido .menu-item { justify-content: center; gap: 0; }
.app.menu-recolhido .rotulo { display: none; }
.app.menu-recolhido .menu-grupo-titulo { justify-content: center; }
/* Recolhido: mostra todos os itens (sem accordion), agrupados por espacinho */
.app.menu-recolhido .menu-grupo-itens { display: block; padding-left: 0; }
.app.menu-recolhido .menu-grupo-titulo { pointer-events: none; padding: .3rem 0 .1rem; opacity: .5; }

/* Botões na barra de ações do detalhe ficam compactos (não full-width). */
.acoes-topo .btn,
.acoes-topo .btn-secundario {
  width: auto; margin-top: 0; padding: .55rem 1.2rem; flex: 0 0 auto;
}

/* Tags de tipo (categorias). */
.tag { display: inline-block; padding: .15rem .55rem; border-radius: 999px; font-size: .8rem; }
.tag-receita { background: #e6f4ea; color: var(--verde-folha); }
.tag-despesa { background: #fdecea; color: var(--vermelho); }

/* Livro caixa: valores e saldo. */
.valor-receita { color: var(--verde-folha); font-weight: 600; }
.valor-despesa { color: var(--vermelho); font-weight: 600; }
.saldo-atual { margin: .5rem 0 1rem; font-size: 1.05rem; }
.saldo-atual strong { color: var(--roxo-escuro); }
.filtro-caixa { display: flex; gap: .5rem; align-items: center; }
.filtro-caixa label { margin: 0; }
.filtro-caixa select { width: auto; min-width: 180px; }
.form-inline { display: inline; }
.input-inline { width: auto; min-width: 160px; padding: 4px 8px; vertical-align: middle; }
.badge-capa { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: .72rem; font-weight: 600; background: #f1e0a0; color: #6b5800; vertical-align: middle; }
.dias-semana { display: flex; flex-wrap: wrap; gap: .4rem .9rem; margin-top: .3rem; }
.checkbox-dia { display: inline-flex; align-items: center; gap: .3rem; margin: 0; white-space: nowrap; }
.capa-campo { display: flex; gap: .5rem; align-items: center; }
.capa-campo input { flex: 1; }
.capa-preview { display: block; max-width: 240px; max-height: 150px; margin-top: .5rem; border-radius: 6px; border: 1px solid var(--borda, #ECE6F0); object-fit: cover; }
.icone-acao.icone-perigo { color: var(--vermelho); }
.icone-acao.icone-perigo:hover { background: #fdecea; }

/* Dashboard */
.filtro-mes { display: flex; gap: .5rem; align-items: center; margin: 1rem 0; }
.filtro-mes label { margin: 0; }
.filtro-mes select, .filtro-mes input { width: auto; }
.filtro-mes input[type=number] { width: 90px; }

.kpis { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1rem; margin: 1rem 0; }
.kpi {
  background: #fff; border: 1px solid var(--borda); border-radius: var(--raio);
  padding: 1rem; display: flex; flex-direction: column; gap: .35rem;
}
.kpi-destaque { border-top: 3px solid var(--dourado); }
.kpi-rotulo { color: var(--texto-suave); font-size: .82rem; }
.kpi-valor { font-size: 1.35rem; font-weight: 700; color: var(--roxo-escuro); }
.kpi-valor.verde { color: var(--verde-folha); }
.kpi-valor.vermelho { color: var(--vermelho); }

.painel-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 1rem; }
.lista-caixas { list-style: none; padding: 0; margin: 0; }
.lista-caixas li { display: flex; justify-content: space-between; padding: .5rem 0; border-bottom: 1px solid var(--borda); }
.lista-caixas strong { color: var(--roxo-escuro); }

@media (max-width: 900px) {
  .kpis { grid-template-columns: repeat(2, 1fr); }
  .painel-grid { grid-template-columns: 1fr; }
}

/* Relatórios / Prestação de Contas */
.rel-cabecalho { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; }
.rel-sub { color: var(--texto-suave); margin: .25rem 0 0; }
.rel-acoes { display: flex; gap: .5rem; }
.rel-acoes .btn, .rel-acoes .btn-secundario { width: auto; margin-top: 0; }
.rel-kpis { grid-template-columns: repeat(4, 1fr); }

/* Perfis: checkboxes de permissão por módulo */
.permissoes { border: 1px solid var(--borda); border-radius: var(--raio); padding: 1rem; margin: 1rem 0; }
.permissoes legend { color: var(--roxo-escuro); padding: 0 .35rem; }
.permissoes-modulo { margin-bottom: 1rem; }
.permissoes-modulo h3 { margin: .25rem 0 .5rem; font-size: .9rem; color: var(--roxo-principal); text-transform: capitalize; }
.permissoes-modulo .checkbox { display: inline-flex; align-items: center; gap: .35rem; margin: 0 1.25rem .35rem 0; font-size: .9rem; }

/* Auditoria */
.btn-link { background: none; border: none; color: var(--roxo-principal); cursor: pointer; padding: 0; font: inherit; text-decoration: underline; }
.btn-link:hover { color: var(--roxo-escuro); }

/* ---- Seção de endereço (grid interno) ---- */
.endereco { border: 1px solid var(--borda); border-radius: var(--raio); padding: .75rem 1rem 1rem; margin: 1rem 0 .5rem; }
.endereco legend { color: var(--roxo-escuro); padding: 0 .35rem; font-size: .95rem; }
.endereco-grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: .25rem 1rem;
}
.endereco-grid .campo { display: flex; flex-direction: column; }
.campo-cep        { grid-column: span 3; }
.campo-logradouro { grid-column: span 6; }
.campo-numero     { grid-column: span 3; }
.campo-bairro     { grid-column: span 6; }
.campo-cidade     { grid-column: span 6; }
.dica-cep { color: var(--texto-suave); font-size: .78rem; margin-top: .15rem; }

/* Feedback de validação inline (JS). */
input.invalido { border-color: var(--vermelho); }

@media (max-width: 720px) {
  .campo-cep, .campo-logradouro, .campo-numero, .campo-bairro, .campo-cidade { grid-column: span 12; }
}

/* ---- Título com ícone de ação + modal ---- */
.titulo-com-acao { display: flex; align-items: center; gap: .6rem; }
.icone-acao {
  background: transparent; border: none; cursor: pointer; color: var(--roxo-principal);
  font-size: 1rem; padding: .3rem .4rem; border-radius: 6px; line-height: 1;
}
.icone-acao:hover { background: var(--roxo-claro); }

.modal { position: fixed; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; }
.modal-fundo { position: absolute; inset: 0; background: rgba(0,0,0,.45); }
.modal-caixa {
  position: relative; background: #fff; border-radius: var(--raio); box-shadow: 0 10px 40px rgba(0,0,0,.25);
  width: min(560px, 92vw); max-height: 85vh; display: flex; flex-direction: column;
  border-top: 3px solid var(--dourado);
}
.modal-cabecalho {
  display: flex; align-items: center; justify-content: space-between;
  padding: .9rem 1.25rem; border-bottom: 1px solid var(--borda);
}
.modal-cabecalho h2 { margin: 0; color: var(--roxo-escuro); font-size: 1.1rem; }
.modal-corpo { padding: 1rem 1.25rem; overflow-y: auto; }

/* ---- Polimento UX (Plano 9) ---- */

/* Colunas monetárias alinhadas à direita */
.tabela th.col-valor, .tabela td.col-valor { text-align: right; white-space: nowrap; }

/* Tabelas largas rolam horizontalmente em telas estreitas */
.tabela-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* Form de upload de anexo (antes sem estilo) */
.form-anexo { display: flex; flex-direction: column; gap: .6rem; margin-top: 1rem; max-width: 480px; }
.form-anexo .campo { display: flex; flex-direction: column; }
.form-anexo .btn { align-self: flex-start; width: auto; }

/* textarea herda o estilo base dos campos */
textarea {
  width: 100%; padding: .5rem .6rem; border: 1px solid var(--borda); border-radius: var(--raio);
  font: inherit; resize: vertical; min-height: 2.5rem;
}
textarea:focus { outline: 2px solid var(--roxo-uva); outline-offset: 1px; }

/* Responsividade geral: empilha a sidebar em telas estreitas */
@media (max-width: 720px) {
  .app { grid-template-columns: 1fr; }
  .sidebar { padding: .6rem 1rem; }
  .conteudo { padding: 1rem; }
  .acoes-topo { flex-wrap: wrap; }
}

/* Larguras utilitarias de formulario (substituem style inline) */
.form-grid.estreito { max-width: 820px; }
.form-grid.mais-estreito { max-width: 520px; }
.cartao.espacado { margin-top: 1.5rem; }

/* ---- Avatar / perfil ---- */
.avatar-iniciais { display: inline-grid; place-items: center; background: var(--dourado); color: var(--roxo-escuro); font-weight: 700; border-radius: 50%; }
.avatar-mini { width: 30px; height: 30px; object-fit: cover; border-radius: 50%; font-size: .8rem; }
.avatar-grande { width: 110px; height: 110px; object-fit: cover; border-radius: 50%; font-size: 2.2rem; }
.usuario-link { display: inline-flex; align-items: center; gap: .5rem; text-decoration: none; color: var(--texto); }
.usuario-link:hover { color: var(--roxo-principal); }
.usuario-nome { font-size: .9rem; }
.perfil-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; align-items: start; }
.perfil-avatar { text-align: center; margin-bottom: 1rem; }
@media (max-width: 720px) { .perfil-grid { grid-template-columns: 1fr; } }

/* ---- Ajuda (wiki) ---- */
.ajuda-busca-wrap { margin: 1rem 0; }
#ajuda-busca { width: 100%; max-width: 520px; padding: .65rem .9rem; border: 1px solid var(--borda); border-radius: var(--raio); font: inherit; }
.ajuda-categorias { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; }
.ajuda-lista { list-style: none; padding: 0; margin: .25rem 0 0; }
.ajuda-lista li { padding: .3rem 0; }
.ajuda-lista a { text-decoration: none; color: var(--roxo-principal); }
.ajuda-lista a:hover { text-decoration: underline; }
.ajuda-lista a.ativo { font-weight: 700; }
.ajuda-resultados { display: flex; flex-direction: column; gap: .5rem; margin-top: .5rem; }
.ajuda-resultado { display: block; padding: .7rem .9rem; border: 1px solid var(--borda); border-radius: var(--raio); text-decoration: none; color: var(--texto); }
.ajuda-resultado:hover { background: var(--roxo-claro); }
.ajuda-cat { font-size: .75rem; color: #fff; background: var(--roxo-uva); border-radius: 999px; padding: .05rem .5rem; margin-left: .4rem; }
.ajuda-trecho { display: block; color: var(--texto-suave); font-size: .85rem; margin-top: .2rem; }
.ajuda-vazio { color: var(--texto-suave); }
.ajuda-artigo-grid { display: grid; grid-template-columns: 240px 1fr; gap: 1rem; align-items: start; }
.ajuda-nav h3 { font-size: .9rem; color: var(--roxo-escuro); margin: 1rem 0 .25rem; }
.ajuda-conteudo .markdown h1 { color: var(--roxo-escuro); margin-top: 0; }
.ajuda-conteudo .markdown h2 { color: var(--roxo-escuro); }
.ajuda-conteudo .markdown code { background: var(--roxo-claro); padding: .1rem .3rem; border-radius: 4px; }
.ajuda-conteudo .markdown pre { background: #2a2230; color: #f3ecf6; padding: 1rem; border-radius: var(--raio); overflow-x: auto; }
.ajuda-conteudo .markdown a { color: var(--roxo-principal); }
@media (max-width: 720px) { .ajuda-artigo-grid { grid-template-columns: 1fr; } }

/* ===== Painel do site (dashboard) ===== */
.painel-secao { margin-bottom: 2rem; }
.painel-titulo-site { margin: 1.5rem 0 .5rem; color: var(--roxo-principal); }
.kpis-site .kpi-rotulo i { margin-right: .3rem; color: var(--roxo-principal); }
.acoes-rapidas { display: flex; flex-wrap: wrap; gap: .6rem; margin: 1rem 0 1.5rem; }
.acoes-rapidas .atalho {
  display: inline-flex; align-items: center; gap: .55rem;
  padding: .7rem 1.1rem; border-radius: 10px;
  background: #fff; color: var(--roxo-principal);
  border: 1px solid var(--borda); box-shadow: var(--sombra);
  text-decoration: none !important; font-size: .92rem; font-weight: 600;
  transition: background .15s ease, color .15s ease, border-color .15s ease, transform .15s ease;
}
.acoes-rapidas .atalho i { font-size: 1.05rem; color: var(--dourado); transition: color .15s ease; }
.acoes-rapidas .atalho:hover {
  background: var(--roxo-principal); color: #fff;
  border-color: var(--roxo-principal); transform: translateY(-2px);
}
.acoes-rapidas .atalho:hover i { color: #fff; }
.badge-nao-lidas { display: inline-block; font-size: .72rem; font-weight: 600; padding: 1px 8px; border-radius: 10px; background: #fde2e2; color: #a12a2a; vertical-align: middle; margin-left: .4rem; }
.lista-mensagens { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .6rem; }
.lista-mensagens li { border-left: 3px solid var(--borda, #ECE6F0); padding: .3rem .7rem; }
.lista-mensagens li.nao-lida { border-left-color: var(--dourado); background: #fdfaf0; }
.lista-mensagens .msg-email { color: var(--texto-suave, #6b6276); font-size: .82rem; }
.lista-mensagens p { margin: .2rem 0 0; font-size: .9rem; color: var(--texto-suave, #6b6276); }
.lista-eventos { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .6rem; }
.lista-eventos li { display: flex; flex-direction: column; }
.lista-eventos .ev-meta { font-size: .82rem; color: var(--texto-suave, #6b6276); }

/* ===== Miniatura de foto na tabela do álbum ===== */
.foto-linha { display: flex; align-items: center; gap: .6rem; }
.foto-thumb { flex: 0 0 auto; display: block; line-height: 0; width: 44px; height: 44px; }
.foto-thumb img {
  width: 44px !important; height: 44px !important; max-width: 44px; object-fit: cover; border-radius: 6px;
  border: 1px solid var(--borda); background: #f3f3f3; display: block;
}
.foto-thumb:hover img { border-color: var(--roxo-principal); }
.foto-nome { word-break: break-all; }

/* ===== Seletor de painel (dashboard) ===== */
.dash-seletor { display: inline-flex; align-items: center; gap: .5rem; margin: 0 0 1rem; }
.dash-seletor label { margin: 0; font-weight: 600; color: var(--texto-suave); }
.dash-seletor select { width: auto; min-width: 170px; }

/* Moderação de comentários (orações) */
.mod-comentario { padding: 1rem 1.25rem; }
.mod-cab { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; }
.mod-cab strong { color: var(--roxo-escuro); }
.mod-data { color: var(--texto-suave); font-size: .82rem; }
.mod-curtidas { color: #B33A3A; font-size: .85rem; }
.mod-excluir { margin-left: auto; }
.mod-texto { margin: .5rem 0; }
.mod-resposta-form { display: flex; flex-direction: column; gap: .4rem; border-top: 1px solid var(--borda); padding-top: .6rem; margin-top: .5rem; }
.mod-resposta-form textarea { width: 100%; font-family: inherit; }
.mod-resposta-form .btn-secundario { align-self: flex-start; }

/* Biblioteca admin: seletor de tipo + dica */
.bib-tipo-toggle { display: flex; gap: 1.2rem; flex-wrap: wrap; }
.bib-tipo-toggle .radio { display: inline-flex; align-items: center; gap: .4rem; font-weight: 500; cursor: pointer; }
small.dica { display: block; color: var(--texto-suave, #8a8a8a); font-size: .78rem; margin-top: .2rem; }

/* Loja: estoque baixo + entrada inline + carrinho */
.estoque-baixo { color: #b3361f; font-weight: 700; }
.form-entrada { display: inline-flex; align-items: center; gap: .25rem; margin-left: .4rem; }
.input-qtd { width: 3.2rem; }

/* Dashboard de vendas: cards de resumo + lista estoque */
.cards-resumo { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; margin: 1rem 0; }
.card-num { border: 1px solid var(--borda); border-radius: var(--raio); padding: 1rem 1.25rem; background: #fff; }
.card-num-rotulo { display: block; font-size: .8rem; color: var(--texto-suave, #8a8a8a); margin-bottom: .3rem; }
.card-num-valor { display: block; font-size: 1.5rem; font-weight: 700; color: var(--roxo-escuro, #3D1A4A); }
.lista-estoque { list-style: none; padding: 0; margin: 0; }
.lista-estoque li { display: flex; justify-content: space-between; padding: .35rem 0; border-bottom: 1px solid var(--borda); }
.lista-estoque li:last-child { border-bottom: 0; }

/* Loja: botão "Adicionar" alinhado à base dos campos (label espaçador) */
.campo-botao label { visibility: hidden; }
.campo-botao .btn-secundario { width: 100%; }

/* Loja: miniatura do produto na listagem + estoque atual */
.col-thumb { width: 48px; }
.prod-thumb { width: 40px; height: 40px; object-fit: cover; border-radius: 6px; border: 1px solid var(--borda); display: block; }
.prod-thumb-vazia { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 6px; background: var(--uva-suave, #F3ECF6); color: var(--uva-clara, #7B3F8C); }
.estoque-atual { color: var(--texto-suave, #8a8a8a); }

/* Paginação (admin) */
.paginacao { display: flex; gap: .35rem; flex-wrap: wrap; margin-top: 1.25rem; align-items: center; }
.paginacao a { padding: .4rem .75rem; border: 1px solid var(--borda); border-radius: 8px; text-decoration: none; color: var(--roxo-principal, #5B2A6B); font-size: .9rem; line-height: 1; }
.paginacao a:hover { background: var(--uva-suave, #F3ECF6); }
.paginacao a.ativa { background: var(--roxo-principal, #5B2A6B); color: #fff; border-color: var(--roxo-principal, #5B2A6B); }

/* Início: atalhos de painel (Financeiro / Site / Loja) */
.dash-atalhos { display: flex; gap: .5rem; flex-wrap: wrap; margin: .25rem 0 1.25rem; }
.dash-atalho { display: inline-flex; align-items: center; gap: .4rem; padding: .55rem 1.1rem; border: 1px solid var(--borda); border-radius: 999px; text-decoration: none; color: var(--roxo-principal, #5B2A6B); font-weight: 600; font-size: .92rem; background: #fff; transition: background .15s, color .15s, border-color .15s; }
.dash-atalho:hover { background: var(--uva-suave, #F3ECF6); }
.dash-atalho.ativo { background: var(--roxo-principal, #5B2A6B); color: #fff; border-color: var(--roxo-principal, #5B2A6B); }
.dash-atalho-ic { font-size: 1.05rem; line-height: 1; }

/* Livro caixa: barra de filtros + cards de resumo */
.filtros-lancamentos { display: flex; flex-wrap: wrap; gap: .75rem; align-items: flex-end; margin: 1rem 0; padding: 1rem; background: var(--uva-suave, #F3ECF6); border-radius: var(--raio, 10px); }
.filtros-lancamentos .campo { display: flex; flex-direction: column; gap: .25rem; margin: 0; }
.filtros-lancamentos .campo label { margin: 0; font-size: .8rem; font-weight: 600; color: var(--texto-suave, #6b5b73); }
.filtros-lancamentos select, .filtros-lancamentos input { width: auto; }
.filtros-lancamentos input[type=number] { width: 90px; }
.filtros-lancamentos .campo-busca input { min-width: 200px; }
.filtros-lancamentos .campo-acoes-filtro { flex-direction: row; gap: .4rem; }
.resumo-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: .75rem; margin: 1rem 0; }
.resumo-card { border: 1px solid var(--borda); border-radius: var(--raio, 10px); padding: .8rem 1rem; background: #fff; }
.resumo-rotulo { display: block; font-size: .78rem; color: var(--texto-suave, #8a8a8a); margin-bottom: .25rem; }
.resumo-valor { display: block; font-size: 1.3rem; font-weight: 700; color: var(--roxo-escuro, #3D1A4A); }
.resumo-receita .resumo-valor { color: #2e7d32; }
.resumo-despesa .resumo-valor { color: #b3361f; }
.resumo-saldo-atual { background: var(--uva-suave, #F3ECF6); }
.resultado-contagem { color: var(--texto-suave, #8a8a8a); font-size: .85rem; margin: .25rem 0 .75rem; }

/* Login: link "esqueci minha senha" como botão suave (outline) */
.auth-link { text-align: center; margin-top: 1rem; }
.auth-link a {
  display: inline-flex; align-items: center; gap: .4rem;
  padding: .5rem 1.1rem; border: 1px solid var(--roxo-principal, #5B2A6B);
  border-radius: 999px; color: var(--roxo-principal, #5B2A6B);
  text-decoration: none; font-size: .9rem; font-weight: 600;
  transition: background .15s, color .15s;
}
.auth-link a:hover { background: var(--roxo-principal, #5B2A6B); color: #fff; text-decoration: none; }

/* Estatísticas: barra de uso do disco */
.disco-barra { height: 22px; background: var(--uva-suave, #F3ECF6); border-radius: 999px; overflow: hidden; margin: .5rem 0 .75rem; }
.disco-barra-usado { height: 100%; background: linear-gradient(90deg, var(--roxo-principal, #5B2A6B), var(--uva-clara, #7B3F8C)); border-radius: 999px; transition: width .3s; }
.disco-numeros { display: flex; flex-wrap: wrap; gap: 1.2rem; font-size: .9rem; color: var(--texto, #2A2230); }

/* Estatísticas: linha de total + aviso do disco */
.linha-total td { border-top: 2px solid var(--borda); font-size: 1.05rem; }
.aviso-disco { font-size: .82rem; color: var(--texto-suave, #8a8a8a); margin-top: .6rem; display: flex; gap: .4rem; align-items: flex-start; }
.aviso-disco i { color: var(--roxo-principal, #5B2A6B); margin-top: .15rem; }
