@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600&family=Manrope:wght@400;500;600;700&display=swap');

:root {
  /* paleta oficial Dagior -- 5 cores dadas pelo usuario, usadas em todo o
     sistema: carvao (texto/fundo escuro), bege champagne (bordas/soft),
     quase-branco (superficies), creme (fundo geral), taupe dourado (destaque).
     Cores funcionais de status (verde/vermelho/laranja/ciano) ficam de fora
     de proposito -- servem pra leitura rapida de estado, nao pra marca.
     Essa e' a paleta padrao (tema claro); a variante escura fica logo abaixo
     em html.tema-escuro, ligada pelo botao na barra lateral (sidebar.js). */
  --bg: #fcf2e8;
  --surface: #f8f8f8;
  --border: #e4d7c4;
  --text: #2e2d2b;
  --text-muted: #6b6259;
  /* Testamos o destaque Botanico (verde-salvia, 2026-08-22) -- usuario
     gostou da tipografia/cantos mas pediu pra voltar so a cor pro taupe
     original. Tipografia (Fraunces/Manrope) e --radius maior continuam. */
  --primary: #b7a38d;
  --primary-dark: #96826c;
  --primary-soft: #e4d7c4;
  /* --on-primary: texto sobre fundo --primary (botao primario, selos etc) --
     ver commit que introduziu essa variable pro motivo dela existir separada
     de --text (bug de contraste no tema escuro). */
  --on-primary: #2e2d2b;
  --danger: #b3403a;
  --danger-soft: #fbe9e7;
  --success: #3f7a52;
  --success-soft: #e6f0e8;
  --warning: #a06a1f;
  --warning-soft: #f7ecd9;
  --faturado: #0e7490;
  --faturado-soft: #dcf1f4;
  --radius: 16px;
  --shadow: 0 2px 10px rgba(46, 45, 43, 0.1);
  --lateral-bg: #2e2d2b;
  --lateral-bg-hover: #3e3c39;
  --lateral-texto: #e4d7c4;
  --lateral-texto-muted: #b7a38d;
  --lateral-largura: 248px;
}

/* Tema escuro -- pedido do usuario (2026-08-22): fundo/superficies na mesma
   familia de carvao da barra lateral, mesmo destaque taupe-dourado de
   sempre. Ligado via html.tema-escuro (botao na barra lateral, persistido
   em localStorage -- ver configurarAlternadorTema em sidebar.js). Fica na
   tag <html> (nao <body>) de proposito -- assim da pra aplicar num script
   bloqueante no <head> (antes do <body> existir), sem piscar o tema errado
   por uma fracao de segundo antes do JS rodar (login.html faz isso, ja que
   nao carrega sidebar.js). Custom properties resolvem por heranca, entao so
   precisa redeclarar aqui o que muda; tudo que nao e redeclarado continua
   vindo do :root acima. */
html.tema-escuro {
  --bg: #2e2d2b;
  --surface: #3e3c39;
  --border: #5a564f;
  --text: #e4d7c4;
  --text-muted: #b7a38d;
  /* --success/--danger/--warning/--faturado sao "fixas" entre temas (nao
     mudam de significado), mas o TOM calibrado pro tema claro (ex:
     --success #3f7a52) fica escuro demais em cima de --surface escuro --
     baixo contraste, quase ilegivel (bug relatado pelo usuario no "Total
     pago" do modal de Pagamentos). Essas versoes so' clareiam o tom pra
     ficar legivel em fundo escuro; --success-soft etc continuam do jeito
     que estao (viram badge/pill clara, funciona bem em cima de escuro). */
  --success: #6fcf97;
  --danger: #e2867e;
  --warning: #dba85c;
  --faturado: #5fc3d6;
}

/* Cor de destaque (Configuracoes > Personalizar) -- independente do tema
   claro/escuro (mesmo principio de --primary hoje: nao muda entre os dois).
   Escolhida via html[data-accent="x"], persistida em localStorage
   (dagior_cor) e aplicada cedo no <head> de cada pagina, igual o tema.
   "Padrao" (sem atributo) continua a paleta taupe original do :root. */
html[data-accent='salvia'] {
  --primary: #8a9a7b;
  --primary-dark: #6d7d5f;
  --primary-soft: #e1e6da;
  --on-primary: #2e2d2b;
  --lateral-texto-muted: #8a9a7b;
}

html[data-accent='petroleo'] {
  --primary: #4f7f8c;
  --primary-dark: #3d6570;
  --primary-soft: #d7e6e9;
  --on-primary: #ffffff;
  --lateral-texto-muted: #6fa3b0;
}

html[data-accent='vinho'] {
  --primary: #8c4a56;
  --primary-dark: #6f3843;
  --primary-soft: #f0dde0;
  --on-primary: #ffffff;
  --lateral-texto-muted: #b06c78;
}

html[data-accent='ameixa'] {
  --primary: #7c6a9c;
  --primary-dark: #5f4f7d;
  --primary-soft: #e6e0ef;
  --on-primary: #ffffff;
  --lateral-texto-muted: #a190bd;
}

html[data-accent='terracota'] {
  --primary: #b8674a;
  --primary-dark: #96503a;
  --primary-soft: #f0ddd3;
  --on-primary: #ffffff;
  --lateral-texto-muted: #cf8a70;
}

.grade-cores-personalizar {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 14px;
  max-width: 640px;
  margin-top: 16px;
}

.pastilha-cor-personalizar {
  border: 2px solid transparent;
  border-radius: var(--radius);
  padding: 4px;
  cursor: pointer;
  background: var(--surface);
  text-align: center;
}

.pastilha-cor-personalizar.selecionada {
  border-color: var(--text);
}

.amostra-cor-personalizar {
  height: 48px;
  border-radius: 10px;
  margin-bottom: 8px;
  position: relative;
}

.amostra-cor-personalizar .marca-selecionada {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
  opacity: 0;
}

.pastilha-cor-personalizar.selecionada .marca-selecionada {
  opacity: 1;
}

.nome-cor-personalizar {
  font-size: 13px;
  color: var(--text-muted);
}

.linha-info-admin-config {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 16px 0;
  border-bottom: 1px solid var(--border);
}

.linha-info-admin-config:last-of-type {
  border-bottom: none;
}

.rotulo-info-admin-config {
  font-weight: 600;
}

.descricao-info-admin-config {
  font-size: 13px;
  color: var(--text-muted);
  margin-top: 2px;
}

.valor-info-admin-config {
  color: var(--text-muted);
  white-space: nowrap;
}

* {
  box-sizing: border-box;
}

html {
  overflow-x: hidden;
}

body {
  margin: 0;
  overflow-x: hidden;
  max-width: 100vw;
  font-family: 'Manrope', 'Segoe UI', system-ui, -apple-system, sans-serif;
  background: var(--bg);
  color: var(--text);
}

/* Titulos com a serifada da logo (pedido do usuario 2026-08-22) -- Manrope
   continua no corpo do texto, so os titulos ganham a Fraunces. */
h1, h2, h3, h4 {
  font-family: 'Fraunces', serif;
  font-weight: 500;
}

.tela-login {
  min-height: 100vh;
  display: flex;
}

.painel-marca-login {
  flex: 1.3;
  background: var(--bg);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px;
}

.logo-hero-login {
  width: 100%;
  max-width: 560px;
  height: auto;
}

.painel-form-login {
  flex: 1;
  background: var(--lateral-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px;
}

.cartao-form-login {
  width: 100%;
  max-width: 320px;
  text-align: center;
}

.icone-form-login {
  width: 88px;
  height: auto;
  margin: 0 auto 28px;
}

.cartao-form-login form {
  text-align: left;
}

.painel-form-login label {
  color: var(--lateral-texto);
}

.painel-form-login input[type='text'],
.painel-form-login input[type='password'] {
  background: var(--lateral-bg-hover);
  border-color: var(--lateral-bg-hover);
  color: #fff;
}

.painel-form-login input[type='text']::placeholder,
.painel-form-login input[type='password']::placeholder {
  color: var(--lateral-texto-muted);
}

.slogan-login {
  margin-top: 28px;
  text-align: center;
  font-size: 12px;
  letter-spacing: 0.06em;
  line-height: 1.7;
  color: var(--lateral-texto-muted);
}

@media (max-width: 760px) {
  .tela-login {
    flex-direction: column;
  }

  .painel-marca-login {
    flex: none;
    padding: 32px 20px;
  }

  .logo-hero-login {
    max-width: 220px;
  }

  .painel-form-login {
    flex: none;
    padding: 32px 20px;
  }
}

label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  margin: 16px 0 6px;
  color: var(--text);
}

input[type='text'],
input[type='password'] {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 14px;
  background: var(--bg);
  color: var(--text);
}

input:focus {
  outline: 2px solid var(--primary);
  outline-offset: 1px;
}

input[type='number'],
input[type='date'],
input[type='month'],
input[type='time'],
select,
textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 14px;
  background: var(--bg);
  color: var(--text);
}

/* Icone nativo (relogio/calendario) do navegador vem sempre escuro -- some
   em cima do fundo escuro do tema. Inverte so' no tema escuro (no claro o
   icone escuro original ja contrasta bem com o fundo --bg claro). */
html.tema-escuro input[type='date']::-webkit-calendar-picker-indicator,
html.tema-escuro input[type='month']::-webkit-calendar-picker-indicator,
html.tema-escuro input[type='time']::-webkit-calendar-picker-indicator {
  filter: invert(1);
}

textarea {
  font-family: inherit;
  resize: vertical;
}

button {
  cursor: pointer;
  font-family: inherit;
  /* <button> nativo nao herda "color" por padrao (fica preso numa cor de
     sistema do navegador, nao acompanha --text/tema escuro) -- e' assim que
     nasce o bug de "fundo escuro, texto ilegivel" em botao sem classe
     propria. inherit aqui e' so a base; classes mais especificas
     (.botao-primario etc) continuam ganhando normal. */
  color: inherit;
}

.botao-primario {
  width: 100%;
  margin-top: 22px;
  padding: 11px;
  border: none;
  border-radius: 8px;
  background: var(--primary);
  color: var(--on-primary);
  font-size: 14px;
  font-weight: 600;
}

.botao-primario:hover {
  background: var(--primary-dark);
}

.botao-primario:disabled {
  opacity: 0.6;
  cursor: default;
}

.mensagem-erro {
  margin-top: 14px;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--danger-soft);
  color: var(--danger);
  font-size: 13px;
  display: none;
}

.mensagem-sucesso {
  margin-top: 14px;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--success-soft);
  color: var(--success);
  font-size: 13px;
  display: none;
}

.mensagem-sucesso.visivel {
  display: block;
}

.mensagem-erro.visivel {
  display: block;
}

/* barra lateral */

body.tem-barra-lateral {
  display: flex;
  min-height: 100vh;
}

.barra-lateral {
  width: var(--lateral-largura);
  flex-shrink: 0;
  background: var(--lateral-bg);
  color: var(--lateral-texto);
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  padding: 18px 14px;
  z-index: 30;
}

.conteudo-com-barra-lateral {
  margin-left: var(--lateral-largura);
  flex: 1;
  min-width: 0;
}

/* Modo embutido -- pagina carregada dentro de um iframe estreito (painel da
   extensao de WhatsApp), esconde a barra lateral pra sobrar mais espaco. */
body.modo-embutido .barra-lateral {
  display: none;
}

body.modo-embutido .conteudo-com-barra-lateral {
  margin-left: 0;
}

/* Modo "detalhe unico" -- iframe aberto so pra mostrar 1 ficha de cliente ou
   1 agendamento especifico (ver abrirDetalheCliente/abrirDetalheAgendamento),
   empilhado dentro do modal de outra pagina. Esconde a pagina base (lista/
   grade) que nao serve pra nada nesse contexto, e centraliza o modal interno
   -- do JEITO/TAMANHO que ele sempre teve (nao forcar largura/altura aqui,
   isso quebra o layout interno de rail+colunas do modal da ficha) -- sem seu
   proprio X (fecha pelo X de fora, ver
   window.parent.fecharDetalheCliente/fecharDetalheAgendamento). */
/* Esconde o WRAPPER inteiro (.conteudo-com-barra-lateral), nao so o
   conteudo de dentro -- <body> e' display:flex (fileira barra-lateral +
   conteudo-com-barra-lateral), entao so esconder o filho de dentro deixava
   o wrapper vazio ainda disputando largura no flex da pagina com
   #sobreposicao-cliente/#sobreposicao-modal (empurrava a ficha/agendamento
   pra direita, quebrando o layout -- bug real encontrado testando). */
body.modo-detalhe-unico .conteudo-com-barra-lateral {
  display: none;
}

body.modo-detalhe-unico #sobreposicao-cliente,
body.modo-detalhe-unico #sobreposicao-modal {
  position: static;
  background: none;
  padding: 20px;
  min-height: 100vh;
  /* position:static tira esses elementos de posicionamento fixo (que sempre
     cobria a viewport inteira) e os transforma num filho comum do <body>
     (flex-row). Sem width, viram flex-item com tamanho "hug content" e
     encolhem/crescem conforme o conteudo da aba ativa (ex: aba com pouco
     texto = janela apertada) -- bug real encontrado testando trocas de aba. */
  width: 100%;
}

body.modo-detalhe-unico #botao-fechar-cliente,
body.modo-detalhe-unico #botao-fechar-x {
  display: none;
}

.botao-menu-mobile {
  display: none;
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 45;
  background: var(--lateral-bg);
  color: var(--lateral-texto);
  border: none;
  border-radius: 8px;
  width: 42px;
  height: 42px;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  box-shadow: var(--shadow);
}

.fundo-menu-mobile {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(42, 36, 34, 0.5);
  z-index: 34;
}

@media (max-width: 860px) {
  .botao-menu-mobile {
    display: block;
  }

  .barra-lateral {
    transform: translateX(-100%);
    transition: transform 0.2s ease;
    z-index: 40;
    width: min(var(--lateral-largura), 82vw);
  }

  .barra-lateral.aberta-mobile {
    transform: translateX(0);
  }

  .fundo-menu-mobile.visivel {
    display: block;
  }

  .conteudo-com-barra-lateral {
    margin-left: 0;
    padding-top: 62px;
  }

}

/* Alvo de toque minimo (~44x44px) pros botoes so-de-icone em telas de
   celular -- fora disso eles ficam pequenos demais pra acertar com o dedo.
   So dentro do media query pra nao mudar o tamanho compacto no desktop. */
@media (max-width: 860px) {
  .botao-fechar-x,
  .botao-icone-tabela,
  .botao-kebab-linha,
  .botao-seta-periodo {
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
}

.marca-barra-lateral {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 6px 18px;
}

.marca-barra-lateral .selo-lateral {
  width: 34px;
  height: 34px;
  object-fit: contain;
  flex-shrink: 0;
}

.marca-barra-lateral strong {
  color: #fff;
  font-size: 15px;
}

.perfil-barra-lateral {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--lateral-bg-hover);
  border-radius: 10px;
  padding: 10px 12px;
  margin-bottom: 14px;
}

.avatar-barra-lateral {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--primary);
  color: var(--on-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 14px;
  flex-shrink: 0;
}

.nome-perfil-lateral {
  font-size: 13px;
  font-weight: 600;
  color: #fff;
}

.emblema-lateral {
  font-size: 11px;
  color: var(--lateral-texto-muted);
  text-transform: capitalize;
}

.botao-novo-lateral {
  display: block;
  text-align: center;
  background: #fff;
  color: var(--primary-dark);
  border-radius: 8px;
  padding: 10px;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  margin-bottom: 16px;
}

.botao-novo-lateral:hover {
  background: var(--lateral-texto);
}

.botao-novo-lateral.ativo {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.popover-novo-menu {
  display: none;
  position: fixed;
  z-index: 50;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 16px;
  width: 320px;
  max-width: calc(100vw - 24px);
  max-height: 85vh;
  overflow-y: auto;
}

.popover-novo-menu.visivel {
  display: block;
}

.secao-popover-novo {
  margin-bottom: 16px;
}

.secao-popover-novo:last-child {
  margin-bottom: 0;
}

.titulo-secao-popover-novo {
  font-size: 11px;
  font-weight: 700;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 8px;
}

.grade-popover-novo {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}

.tile-novo-menu {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  background: var(--lateral-bg);
  color: var(--lateral-texto);
  border: none;
  border-radius: 8px;
  padding: 12px 6px;
  font-size: 11px;
  font-weight: 600;
  text-align: center;
  cursor: pointer;
  line-height: 1.2;
}

.tile-novo-menu:hover {
  background: var(--lateral-bg-hover);
}

.icone-tile-novo {
  font-size: 18px;
}

.toast-em-breve {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--text);
  color: #fff;
  padding: 10px 18px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  z-index: 60;
  box-shadow: var(--shadow);
  opacity: 0;
  transition: opacity 0.2s;
  pointer-events: none;
}

.toast-em-breve.visivel {
  opacity: 1;
}

.nav-barra-lateral {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.item-barra-lateral {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: 8px;
  color: var(--lateral-texto);
  text-decoration: none;
  font-size: 13px;
  font-weight: 500;
  border: none;
  background: none;
  width: 100%;
  text-align: left;
  cursor: pointer;
  font-family: inherit;
}

.item-barra-lateral:hover {
  background: var(--lateral-bg-hover);
}

.item-barra-lateral.ativo {
  background: var(--primary);
  color: var(--on-primary);
  font-weight: 700;
}

.icone-item-lateral {
  width: 18px;
  text-align: center;
  flex-shrink: 0;
}

.separador-barra-lateral {
  height: 1px;
  background: var(--lateral-bg-hover);
  margin: 14px 4px;
}

.botao-sair-lateral {
  margin-top: auto;
  padding-top: 14px;
}

.botao-secundario {
  padding: 7px 14px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font-size: 13px;
}

.botao-secundario.ativo {
  background: var(--primary);
  border-color: var(--primary);
  color: var(--text);
}

.botao-secundario:hover {
  background: var(--bg);
}

.botao-secundario.ativo:hover {
  background: var(--primary-dark);
  border-color: var(--primary-dark);
}

main {
  max-width: 960px;
  margin: 0 auto;
  padding: 32px 24px;
}

.boas-vindas {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
  margin-bottom: 24px;
}

.boas-vindas h2 {
  margin: 0 0 6px;
  color: var(--primary-dark);
}

.boas-vindas p {
  margin: 0;
  color: var(--text-muted);
  font-size: 14px;
}

.secao-admin {
  margin-top: 32px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
}

.secao-admin h3 {
  margin-top: 0;
  color: var(--primary-dark);
}

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  margin-top: 12px;
}

/* Wrapper generico pra qualquer tabela poder rolar na horizontal em telas
   estreitas, em vez de forcar a pagina inteira a rolar de lado. Usar essa
   classe em vez de style="overflow-x: auto" inline, pra ficar centralizado
   e facil de auditar. */
.tabela-scroll-mobile {
  overflow-x: auto;
}

/* Abaixo de 640px, rolagem horizontal deixa de bastar (tabela com 5+
   colunas nunca cabe direito, mesmo arrastando) -- cada linha vira um
   cartao empilhado (rotulo: valor), usando o texto real do <th> de cada
   coluna (gravado em data-th por ativarTabelasResponsivasMobile em
   sidebar.js) como rotulo. Padrao conhecido de "tabela responsiva",
   generico o bastante pra cobrir toda tabela ja marcada com
   .tabela-scroll-mobile sem precisar de CSS especifico por pagina. */
@media (max-width: 640px) {
  .tabela-scroll-mobile,
  .tabela-historico-caixa-wrapper {
    overflow-x: visible;
  }

  /* .tabela-historico-caixa-wrapper e' um wrapper mais antigo, de antes da
     convencao .tabela-scroll-mobile existir -- forcava min-width:720px na
     tabela (rolagem horizontal obrigatoria). Isso precisa sumir no modo
     cartao, senao a tabela tenta ficar larga mesmo com tudo em display:block. */
  .tabela-scroll-mobile table,
  .tabela-historico-caixa-wrapper table {
    width: 100%;
    min-width: 0;
  }

  .tabela-scroll-mobile thead,
  .tabela-historico-caixa-wrapper thead {
    display: none;
  }

  .tabela-scroll-mobile tbody,
  .tabela-scroll-mobile tr,
  .tabela-scroll-mobile td,
  .tabela-historico-caixa-wrapper tbody,
  .tabela-historico-caixa-wrapper tr,
  .tabela-historico-caixa-wrapper td {
    display: block;
    width: 100%;
  }

  .tabela-scroll-mobile tr,
  .tabela-historico-caixa-wrapper tr {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 10px 12px;
    margin-bottom: 10px;
    background: var(--surface);
  }

  .tabela-scroll-mobile td,
  .tabela-historico-caixa-wrapper td {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 6px 0;
    border: none;
    text-align: right;
  }

  .tabela-scroll-mobile td:not(:last-child),
  .tabela-historico-caixa-wrapper td:not(:last-child) {
    border-bottom: 1px solid var(--border);
  }

  .tabela-scroll-mobile td[data-th]::before,
  .tabela-historico-caixa-wrapper td[data-th]::before {
    content: attr(data-th);
    font-weight: 600;
    font-size: 12px;
    color: var(--text-muted);
    text-align: left;
    flex-shrink: 0;
  }

  /* Celula de estado vazio ("Nenhum pagamento encontrado") ou com colspan
     nao tem data-th -- fica como texto corrido, sem virar linha rotulo:valor. */
  .tabela-scroll-mobile td:not([data-th]),
  .tabela-historico-caixa-wrapper td:not([data-th]) {
    justify-content: flex-start;
    text-align: left;
  }
}

th,
td {
  text-align: left;
  padding: 8px 10px;
  border-bottom: 1px solid var(--border);
}

th {
  color: var(--text-muted);
  font-weight: 600;
}

.inativo {
  color: var(--text-muted);
  opacity: 0.6;
}

.acoes-linha {
  display: flex;
  gap: 6px;
}

.acoes-linha button {
  padding: 4px 9px;
  font-size: 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg);
  /* Botao nativo <button> nao herda "color" da pagina por padrao (fica na
     cor de texto de sistema do navegador) -- sem isso, o fundo acompanha o
     tema escuro mas o texto fica preso numa cor clara/escura fixa do SO,
     ficando ilegivel dependendo do tema. */
  color: var(--text);
}

.form-novo-usuario {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 16px;
  align-items: end;
}

.form-novo-usuario > div {
  display: flex;
  flex-direction: column;
}

.form-novo-usuario label {
  margin: 0 0 4px;
}

.form-novo-usuario input,
.form-novo-usuario select {
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 13px;
}

.aviso-senha {
  margin-top: 12px;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--primary-soft);
  color: var(--primary-dark);
  font-size: 13px;
  display: none;
}

.aviso-senha.visivel {
  display: block;
}

/* agenda */

.controles-agenda {
  max-width: none;
  margin: 24px auto 0;
  padding: 0 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
}

.controles-agenda .navegacao {
  display: flex;
  align-items: center;
  gap: 8px;
  /* O grupo de botoes (Visualizacao/Filtrar/Acoes/+Novo) e' filho direto de
     .controles-agenda, mas o flex-wrap dali so' decide se ESSE GRUPO INTEIRO
     quebra pra uma linha nova -- sem wrap aqui tambem, os 4 botoes dentro
     dele ficavam presos numa fileira so, cortada na borda da tela (celular
     estreito). */
  flex-wrap: wrap;
}

/* Navegacao de periodo compacta (Hoje/Amanha/data entre setas, sem caixa de
   botao) -- visual inspirado no Belasis, pedido explicito do usuario. */
.navegacao-periodo-compacta {
  gap: 2px;
}

@media (max-width: 860px) {
  /* No celular esse grupo (</> Hoje </>) quebra pra propria linha (ver
     .controles-agenda flex-wrap acima) -- sem isso ele ficava encostado na
     esquerda, perto do botao hamburguer, em vez de centralizado na tela. */
  .navegacao-periodo-compacta {
    width: 100%;
    justify-content: center;
  }

  /* Mesma logica pro grupo Visualizacao/Filtrar/Acoes -- tambem quebra pra
     propria linha, tambem centralizado em vez de colado na esquerda. */
  .controles-agenda .navegacao:not(.navegacao-periodo-compacta) {
    width: 100%;
    justify-content: center;
  }
}

.botao-seta-periodo {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--primary);
  font-size: 20px;
  line-height: 1;
  padding: 4px 6px;
  border-radius: var(--radius);
}

.botao-seta-periodo:hover {
  background: var(--primary-soft);
}

.controles-agenda .rotulo-periodo {
  background: none;
  border: none;
  cursor: pointer;
  font-weight: 600;
  color: var(--primary-dark);
  font-size: 15px;
  min-width: 160px;
  text-align: center;
  padding: 4px 8px;
  border-radius: var(--radius);
}

.controles-agenda .rotulo-periodo:hover {
  background: var(--primary-soft);
}

/* popovers de Filtrar / Acoes */

.wrapper-popover {
  position: relative;
}

.popover-filtro,
.popover-acoes,
.popover-visualizacao {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  z-index: 55;
}

.popover-filtro.visivel,
.popover-acoes.visivel,
.popover-visualizacao.visivel {
  display: block;
}

.popover-filtro {
  padding: 14px;
  width: 240px;
}

.secao-filtro + .secao-filtro {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
}

.cabecalho-secao-filtro {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-bottom: 8px;
}

.link-filtro {
  background: none;
  border: none;
  color: var(--primary);
  font-size: 12px;
  font-weight: 600;
  text-transform: none;
  letter-spacing: normal;
  cursor: pointer;
  padding: 0;
}

.item-checkbox-filtro {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 0;
  font-size: 13px;
  cursor: pointer;
}

.bolinha-status {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  display: inline-block;
}

#bolinha-status-campo {
  margin-left: 4px;
  vertical-align: middle;
}

.bolinha-status.status-confirmado {
  background: var(--success);
}

.bolinha-status.status-aguardando {
  background: var(--warning);
}

.bolinha-status.status-cancelado {
  background: var(--danger);
}

.bolinha-status.status-concluido {
  background: var(--faturado);
}

.popover-acoes {
  padding: 6px;
  min-width: 180px;
}

/* O botao "Acoes" de Comissoes fica encostado na borda direita do cabecalho
   (justify-content: space-between) -- abrir o popover pra direita (left: 0,
   o padrao) empurra ele pra fora da tela. Abre pra esquerda em vez disso. */
#popover-acoes-comissoes {
  left: auto;
  right: 0;
}

.popover-acoes button {
  display: block;
  width: 100%;
  text-align: left;
  padding: 9px 10px;
  border: none;
  background: none;
  border-radius: 6px;
  font-size: 13px;
  color: var(--text);
  cursor: pointer;
}

.popover-acoes button:hover {
  background: var(--bg);
}

.popover-visualizacao {
  padding: 6px;
  min-width: 190px;
}

.separador-popover {
  height: 1px;
  background: var(--border);
  margin: 6px 4px;
}

.rotulo-popover {
  display: block;
  padding: 4px 10px 4px;
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

#campo-intervalo-agendamento-usuario {
  width: calc(100% - 8px);
  margin: 0 4px 4px;
  padding: 7px 8px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg);
  color: var(--text);
  font-size: 13px;
}

.opcao-visualizacao {
  display: block;
  width: 100%;
  text-align: left;
  padding: 9px 10px;
  border: none;
  background: none;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
  cursor: pointer;
}

.opcao-visualizacao:hover {
  background: var(--bg);
}

.opcao-visualizacao.ativa {
  color: var(--primary);
  background: var(--primary-soft);
}

.container-agenda {
  max-width: none;
  margin: 16px auto 40px;
  padding: 0 24px 70px;
  /* Na visao diaria/semanal a grade tem 1 coluna por profissional (largura
     minima definida em public/js/agenda.js) -- com muitos profissionais essa
     largura minima estoura o container, e ai' rola horizontal em vez de
     espremer as colunas a ponto de ficarem ilegiveis (celular ou tela
     estreita com varios profissionais cadastrados). */
  overflow-x: auto;
}

@media (max-width: 860px) {
  /* 24px de respiro de cada lado faz sentido no desktop, mas no celular
     rouba espaco precioso dos cards de agendamento -- reduzido pra dar
     esse espaco de volta pras colunas de profissional (pedido do usuario,
     comparando com o Belasis, que aproveita quase a largura toda da tela). */
  .controles-agenda,
  .container-agenda {
    padding-left: 8px;
    padding-right: 8px;
  }
}

.grade-agenda {
  display: grid;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
}

/* visao mensal */

.grade-mes {
  grid-template-columns: repeat(7, 1fr);
}

.cabecalho-dia-mes {
  padding: 8px 6px;
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--primary-dark);
  background: var(--primary-soft);
  border-left: 1px solid var(--border);
}

.cabecalho-dia-mes:first-child {
  border-left: none;
}

.celula-dia-mes {
  min-height: 100px;
  padding: 6px;
  border-top: 1px solid var(--border);
  border-left: 1px solid var(--border);
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.celula-dia-mes:nth-child(7n + 1) {
  border-left: none;
}

.celula-dia-mes:hover {
  background: var(--bg);
}

.celula-dia-mes.fora-do-mes {
  background: var(--bg);
  opacity: 0.5;
}

.numero-dia-mes {
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  border-radius: 50%;
}

.celula-dia-mes.dia-hoje .numero-dia-mes {
  background: var(--primary);
  color: var(--on-primary);
}

.lista-agendamentos-mes {
  display: flex;
  flex-direction: column;
  gap: 2px;
  overflow: hidden;
}

.item-agendamento-mes {
  font-size: 10px;
  padding: 2px 5px;
  border-radius: 4px;
  background: var(--success);
  color: #fff;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
}

.item-agendamento-mes:hover {
  opacity: 0.85;
}

.item-agendamento-mes.status-aguardando {
  background: var(--warning);
}

.item-agendamento-mes.status-cancelado {
  background: var(--danger);
  text-decoration: line-through;
}

.item-agendamento-mes.status-concluido {
  background: var(--faturado);
}

.item-mais-mes {
  font-size: 10px;
  color: var(--primary);
  font-weight: 600;
  padding: 2px 5px;
}

.cabecalho-dia {
  padding: 10px 6px;
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--primary-dark);
  background: var(--primary-soft);
  border-left: 1px solid var(--border);
}

.canto-vazio-agenda {
  background: var(--primary-soft);
}

.cabecalho-profissional {
  padding: 12px 6px;
  text-align: center;
  font-size: 13px;
  font-weight: 600;
  color: var(--primary-dark);
  background: var(--primary-soft);
  border-left: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

.avatar-profissional {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--primary);
  color: var(--on-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
  overflow: hidden;
}

.foto-profissional-grande {
  width: 120px;
  height: 120px;
  border-radius: 50%;
  background: var(--primary);
  color: var(--on-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 40px;
  font-weight: 700;
  margin: 0 auto;
  overflow: hidden;
}

.foto-profissional-grande img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.acoes-foto-profissional {
  margin-top: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
}

.botao-link-foto {
  border: none;
  background: none;
  color: var(--primary-dark);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  padding: 2px 4px;
}

.botao-link-foto:hover {
  text-decoration: underline;
}

.botao-link-foto-remover {
  color: var(--danger);
}

input:disabled {
  background: var(--border);
  color: var(--text-muted);
  cursor: not-allowed;
}

.selo-admin-profissional {
  display: inline-block;
  padding: 3px 8px;
  border-radius: 999px;
  background: var(--primary-soft);
  color: var(--primary-dark);
  font-size: 11px;
  font-weight: 600;
}

.grade-3-profissional {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0 16px;
}

.grade-4-profissional {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0 16px;
}

.grade-3-profissional > div,
.grade-4-profissional > div {
  min-width: 0;
}

@media (max-width: 720px) {
  .grade-3-profissional,
  .grade-4-profissional {
    grid-template-columns: 1fr;
  }
}

.campo-telefone-bandeira {
  display: flex;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--bg);
  overflow: hidden;
}

.campo-telefone-bandeira .bandeira-telefone {
  padding: 0 10px;
  font-size: 16px;
  border-right: 1px solid var(--border);
  display: flex;
  align-items: center;
  align-self: stretch;
}

.campo-telefone-bandeira input {
  border: none !important;
  background: transparent !important;
  flex: 1;
  min-width: 0;
}

.rotulo-hora {
  font-size: 11px;
  color: var(--text-muted);
  text-align: right;
  padding: 2px 8px 0 0;
  border-top: 1px solid var(--border);
}

.celula-slot {
  border-top: 1px solid var(--border);
  border-left: 1px solid var(--border);
  /* Altura vem do proprio grid (gridTemplateRows em agenda.js -- ALTURA_SLOT_PX),
     nao daqui -- um min-height fixo brigaria com celulas agrupadas (colunas
     com intervalo de agendamento maior viram 1 celula span-N, mas as OUTRAS
     linhas da grade continuam na altura base) e desalinharia as colunas. */
  cursor: pointer;
}

.celula-slot:hover {
  background: var(--bg);
}

.bloco-agendamento {
  margin: 1px 3px;
  padding: 4px 6px;
  border-radius: 6px;
  background: var(--success);
  color: #fff;
  font-size: 11px;
  line-height: 1.3;
  overflow: hidden;
  cursor: pointer;
}

.bloco-agendamento:hover {
  opacity: 0.85;
}

.bloco-agendamento .servico {
  opacity: 0.85;
}

/* cores por status: confirmado=verde (cor base), aguardando=laranja,
   cancelado=vermelho, concluido/faturado=azul ciano */
.bloco-agendamento.status-aguardando {
  background: var(--warning);
}

.bloco-agendamento.status-cancelado {
  background: var(--danger);
  text-decoration: line-through;
}

.bloco-agendamento.status-concluido {
  background: var(--faturado);
}

/* item extra de uma visita (procedimento adicional, ver
   agendamento_itens_extra) -- acento discreto pra diferenciar do bloco
   principal sem inventar uma paleta de cor nova */
.bloco-agendamento.bloco-item-extra {
  border-left: 3px solid rgba(255, 255, 255, 0.75);
}

.selo-mais-itens {
  background: rgba(255, 255, 255, 0.25);
  border-radius: 8px;
  padding: 0 4px;
  font-size: 10px;
}

/* bloqueio de horario -- celula cinza, nao clicavel pra agendar */
.bloco-bloqueio {
  margin: 1px 3px;
  padding: 4px 6px;
  border-radius: 6px;
  background: repeating-linear-gradient(45deg, var(--border), var(--border) 6px, var(--bg) 6px, var(--bg) 12px);
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.3;
  overflow: hidden;
  cursor: pointer;
  border: 1px solid var(--border);
}

/* fora do expediente configurado (Cadastro > profissional > Expediente) --
   mais discreto que o bloqueio manual (sem borda/cursor de clique, ninguem
   interage com isso, so' sinaliza visualmente) */
.bloco-fora-expediente {
  background: repeating-linear-gradient(45deg, var(--surface), var(--surface) 6px, var(--bg) 6px, var(--bg) 12px);
  /* sem pointer-events:none de proposito -- fica por cima da celula-slot
     (mesmo grid-row/column, appendChild depois = por cima) e ABSORVE o
     clique (sem listener = nao faz nada), senao o clique atravessaria pro
     "Novo agendamento" por baixo mesmo aparentando bloqueado. */
}

/* modal */

.sobreposicao {
  position: fixed;
  inset: 0;
  background: rgba(42, 36, 34, 0.45);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 20px;
  z-index: 50;
}

.sobreposicao.visivel {
  display: flex;
}

.modal {
  background: var(--surface);
  border-radius: var(--radius);
  padding: 24px;
  width: 100%;
  max-width: 420px;
  max-height: 90vh;
  overflow-y: auto;
}

.modal h3 {
  margin-top: 0;
  color: var(--primary-dark);
}

.modal-largo {
  max-width: 760px;
}

.modal-pacote {
  max-width: 900px;
}

/* Modal com OUTRA pagina do proprio sistema embutida via iframe (mesma
   origem, sem os bloqueios de iframe cross-site que travaram a extensao do
   WhatsApp) -- pedido do usuario pra abrir ficha do cliente/agendamento sem
   nunca trocar de pagina, empilhado por cima igual ao Belasis. */
.modal-detalhe-embutido {
  max-width: 1100px;
  width: 95vw;
  height: 88vh;
  padding: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/* Arrastavel (tornarModalArrastavel) -- a janela some do fluxo normal do
   flex de centralizacao assim que o usuario comeca a arrastar (vira
   position:fixed com left/top explicitos), entao a posicao inicial
   centralizada continua vindo do .sobreposicao ate esse momento. */
.alca-arrastar-detalhe {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 6px 6px 6px 14px;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
  cursor: move;
  user-select: none;
  flex-shrink: 0;
}

.rotulo-arrastar-detalhe {
  font-size: 12px;
  color: var(--text-muted);
}

.iframe-detalhe-embutido {
  width: 100%;
  flex: 1;
  border: none;
  display: block;
}

.tabela-itens-pacote {
  margin-top: 8px;
}

/* Etapa "revisao da comanda" do fechamento (visual inspirado no Belasis --
   tabela com o valor de cada procedimento + Total sempre visivel, pra nao
   precisar somar na calculadora antes de ir pra etapa de pagamento) */
.tabela-revisao-comanda {
  width: 100%;
  margin-top: 6px;
  border-collapse: collapse;
}

.tabela-revisao-comanda th {
  text-align: left;
  font-size: 12px;
  color: var(--success);
  font-weight: 600;
  padding: 4px 6px;
}

.tabela-revisao-comanda td {
  padding: 4px 6px;
  vertical-align: middle;
  font-size: 13px;
}

.tabela-revisao-comanda input {
  width: 100%;
  padding: 6px 8px;
  font-size: 13px;
}

.total-revisao-comanda {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
  font-size: 15px;
}

.total-revisao-comanda strong {
  font-size: 20px;
  color: var(--primary-dark);
}

/* Etapa "pagamento" do fechamento -- resumo Total/Total pago/Falta pagar
   (o ultimo em destaque) + lista de pagamentos adicionados, pra dividir o
   pagamento em mais de 1 forma (visual inspirado no Belasis) */
.resumo-pagamento-comanda {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

.linha-resumo-pagamento {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  color: var(--success);
  padding: 2px 0;
}

.linha-resumo-pagamento-destaque {
  font-size: 15px;
  font-weight: 600;
  color: var(--success);
  margin-top: 2px;
}

.linha-resumo-pagamento-destaque strong {
  font-size: 18px;
  color: var(--primary-dark);
}

.bloco-excedente-pagamento {
  margin-top: 10px;
  padding: 10px;
  border: 1px solid var(--warning);
  background: var(--warning-soft);
  border-radius: var(--radius);
}

.bloco-excedente-pagamento #texto-excedente-pagamento {
  font-size: 13px;
  font-weight: 600;
  color: var(--warning);
  margin-bottom: 8px;
}

.bloco-excedente-pagamento .linha-acoes {
  margin-top: 0;
}

.lista-pagamentos-comanda {
  list-style: none;
  margin: 6px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.item-lista-pagamento {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text);
  font-size: 13px;
}

.item-lista-pagamento .botao-remover-pagamento {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--danger);
  font-size: 16px;
  line-height: 1;
  padding: 2px 6px;
  border-radius: var(--radius);
}

.item-lista-pagamento .botao-remover-pagamento:hover {
  background: var(--danger-soft);
}

.tabela-itens-pacote th,
.tabela-itens-pacote td {
  padding: 6px 6px;
  vertical-align: top;
}

.tabela-itens-pacote input,
.tabela-itens-pacote select {
  width: 100%;
  padding: 6px 8px;
  font-size: 13px;
}

.tabela-itens-pacote .campo-descricao-item {
  margin-top: 4px;
}

.tabela-itens-pacote .celula-desconto-item {
  display: flex;
  gap: 4px;
}

.tabela-itens-pacote .celula-desconto-item select {
  max-width: 60px;
  flex-shrink: 0;
}

.tabela-itens-pacote .celula-preco-original-item {
  color: var(--text-muted);
  white-space: nowrap;
}

.tabela-itens-pacote .celula-total-item {
  font-weight: 600;
  white-space: nowrap;
}

.botao-remover-linha-item {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--danger);
  font-size: 18px;
  line-height: 1;
  padding: 4px 8px;
  border-radius: var(--radius);
}

.botao-remover-linha-item:hover {
  background: var(--danger-soft);
}

.botao-adicionar-linha-item {
  display: block;
  width: 100%;
  margin-top: 6px;
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  padding: 8px;
  text-align: center;
  cursor: pointer;
  color: var(--text-muted);
  background: none;
  font-size: 13px;
}

.botao-adicionar-linha-item:hover {
  border-color: var(--primary);
  color: var(--primary);
}

/* Itens do agendamento (procedimentos extras da mesma visita) */
.secao-itens-agendamento {
  margin-bottom: 14px;
}

.lista-itens-agendamento {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 6px;
}

.linha-item-agendamento {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 8px;
  background: var(--bg);
}

.campos-linha-item-agendamento {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

.campos-linha-item-agendamento select,
.campos-linha-item-agendamento input {
  padding: 6px 8px;
  font-size: 13px;
  flex: 1 1 120px;
  min-width: 90px;
}

.campos-linha-item-agendamento .campo-busca-servico-item-agendamento {
  flex: 1 1 180px;
  min-width: 140px;
}

.linha-item-relatar {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
  flex-wrap: wrap;
}

.linha-item-relatar select,
.linha-item-relatar input {
  min-width: 100px;
  padding: 6px 8px;
  font-size: 13px;
}

.campo-busca-servico-item-agendamento input {
  width: 100%;
  box-sizing: border-box;
}

.item-sugestao-servico,
.item-sugestao-horario {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
}

.detalhe-sugestao-servico {
  flex-shrink: 0;
  font-size: 11px;
  color: var(--text-muted);
}

.item-sugestao.selecionado {
  background: var(--primary-soft);
  font-weight: 600;
}

.campos-linha-item-agendamento .campo-busca-horario-item-agendamento {
  flex: 0 1 110px;
}

.campo-busca-horario-item-agendamento input {
  width: 100%;
  box-sizing: border-box;
}

.campos-linha-item-agendamento .campo-duracao-item-agendamento {
  flex: 0 1 110px;
}

.campos-linha-item-agendamento .botao-remover-linha-item {
  flex: 0 0 auto;
}

.texto-fim-calculado-item-agendamento {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 4px;
}

.titulo-bloco-pagamento-item {
  font-weight: 600;
  color: var(--primary-dark);
  margin-bottom: 6px;
}

.resumo-pacote {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 12px 16px;
  margin: 16px 0;
}

.resumo-pacote .linha-info-cliente:last-child {
  font-weight: 700;
  font-size: 15px;
  border-top: 1px solid var(--border);
  padding-top: 8px;
  margin-top: 4px;
}

.badge-disponibilidade {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
}

.badge-disponibilidade.ativo {
  background: var(--success-soft);
  color: var(--success);
}

.badge-disponibilidade.vencido {
  background: var(--danger-soft);
  color: var(--danger);
}

.botao-icone-tabela {
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px 8px;
  color: var(--text-muted);
  font-size: 16px;
  border-radius: var(--radius);
}

.botao-icone-tabela:hover {
  background: var(--bg);
  color: var(--text);
}

.link-nome-predefinido {
  color: var(--primary-dark);
  text-decoration: none;
  font-weight: 600;
}

.link-nome-predefinido:hover {
  text-decoration: underline;
}

/* Cada pacote (predefinido ou vendido) fica com um fundo destacado --
   pedido explicito do usuario, cor #B7A38D (== var(--primary)) -- pra
   separar visualmente uma linha da outra na lista. Usa ">" (filho direto)
   em vez de descendente pra NAO vazar pra dentro da mini-tabela expandida
   (.tabela-expandida-predefinido), que tambem e' um <table> aninhado
   dentro da celula -- um seletor descendente ignora esse limite e pintava
   o texto dela de branco sobre fundo claro, ficando invisivel.
*/
.tabela-pacotes > tbody > tr:not(.linha-expandida-predefinido) {
  background: var(--primary);
}

.tabela-pacotes > tbody > tr:not(.linha-expandida-predefinido) > td {
  border-bottom-color: var(--primary-dark);
  color: var(--surface);
}

.tabela-pacotes > tbody > tr:not(.linha-expandida-predefinido) .link-nome-predefinido,
.tabela-pacotes > tbody > tr:not(.linha-expandida-predefinido) .celula-abre-pacote {
  color: #fff;
}

.tabela-pacotes > tbody > tr:not(.linha-expandida-predefinido) .botao-icone-tabela {
  color: var(--surface);
}

.tabela-pacotes > tbody > tr:not(.linha-expandida-predefinido) .botao-icone-tabela:hover {
  background: var(--primary-dark);
  color: #fff;
}

.linha-expandida-predefinido td {
  background: var(--bg);
  padding: 10px 10px 14px 40px;
}

.tabela-expandida-predefinido {
  margin: 0;
  font-size: 12px;
}

.tabela-expandida-predefinido th,
.tabela-expandida-predefinido td {
  padding: 4px 10px;
  border-bottom: none;
  color: var(--text-muted);
}

.tabela-expandida-predefinido th {
  color: var(--text-muted);
}

/* modal de agendamento com coluna lateral do cliente */

.modal-agendamento {
  max-width: 960px;
  display: flex;
  padding: 0;
  gap: 0;
}

.coluna-sidebar-cliente {
  width: 280px;
  flex-shrink: 0;
  background: var(--bg);
  border-right: 1px solid var(--border);
  padding: 20px;
  overflow-y: auto;
  max-height: 90vh;
}

.coluna-formulario-agendamento {
  flex: 1;
  min-width: 0;
  padding: 24px;
  overflow-y: auto;
  max-height: 90vh;
}

.avatar-cliente-sidebar {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--primary);
  color: var(--on-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  font-weight: 700;
  margin-bottom: 10px;
}

.nome-cliente-sidebar {
  display: block;
  width: 100%;
  text-align: left;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  font-size: 16px;
  font-weight: 700;
  margin: 0 0 2px;
  color: var(--text);
  text-decoration: none;
  font-family: inherit;
}

.nome-cliente-sidebar:hover {
  color: var(--primary-dark);
  text-decoration: underline;
}

.telefone-cliente-sidebar {
  color: var(--text-muted);
  font-size: 13px;
  margin-bottom: 10px;
}

/* So aparece no celular (ver media query mais abaixo) -- no desktop as 3
   secoes detalhadas ja ficam visiveis ali do lado, o botao seria redundante. */
.botao-ver-ficha-sidebar {
  display: none;
}

@media (max-width: 860px) {
  .botao-ver-ficha-sidebar {
    display: block;
    width: 100%;
    margin-top: 8px;
    background: none;
    border: none;
    color: var(--primary);
    font-weight: 600;
    font-size: 13px;
    text-align: center;
    cursor: pointer;
    padding: 6px;
  }
}

.secao-sidebar-cliente {
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}

.secao-sidebar-cliente h4 {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
  margin: 0 0 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.secao-sidebar-cliente h4 button {
  background: none;
  border: none;
  color: var(--primary-dark);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  text-transform: none;
  letter-spacing: normal;
  padding: 0;
}

.linha-info-cliente {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  padding: 4px 0;
}

.linha-info-cliente span:first-child {
  color: var(--text-muted);
}

.linha-info-cliente.destaque span:last-child {
  color: var(--danger);
  font-weight: 700;
}

.linha-info-cliente.clicavel {
  cursor: pointer;
  border-radius: 6px;
  margin: 0 -6px;
  padding: 4px 6px;
}

.linha-info-cliente.clicavel:hover {
  background: var(--primary-soft);
}

.linha-info-cliente.clicavel span:last-child {
  color: var(--primary-dark);
  font-weight: 700;
  text-decoration: underline;
}

.filtro-periodo-vendas-cliente {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 4px 10px;
  flex-shrink: 0;
}

.filtro-periodo-vendas-cliente input[type='date'] {
  width: auto;
  border: none;
  padding: 2px;
  background: none;
}

.filtro-periodo-vendas-cliente span {
  color: var(--text-muted);
}

.selo-pacote {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  border: 1px solid transparent;
}

.selo-pacote.status-faturado,
.selo-pacote.status-ativo {
  background: var(--success-soft);
  color: var(--success);
}

.selo-pacote.status-aberto {
  background: var(--warning-soft);
  color: var(--warning);
}

.selo-pacote.status-vencido {
  background: var(--danger-soft);
  color: var(--danger);
}

.filtro-select-pacotes {
  width: auto;
  padding: 6px 10px;
  font-size: 13px;
}

.composer-mensagens-cliente {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 20px;
}

.linha-topo-composer-mensagens {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}

.texto-cota-mensagens {
  font-size: 12px;
  color: var(--text-muted);
}

.composer-mensagens-cliente textarea {
  width: 100%;
  min-height: 80px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 13px;
  font-family: inherit;
  resize: vertical;
  background: var(--surface);
  color: var(--text);
}

.linha-rodape-composer-mensagens {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 8px;
}

.linha-rodape-composer-mensagens span {
  font-size: 12px;
  color: var(--text-muted);
}

.contagem-historico-mensagens {
  font-size: 13px;
  color: var(--text-muted);
  margin: 0 0 10px;
}

.item-mensagem-cliente {
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}

.item-mensagem-cliente:last-child {
  border-bottom: none;
}

.item-mensagem-cliente p {
  margin: 4px 0 0;
  font-size: 13px;
  white-space: pre-wrap;
}

.cabecalho-item-mensagem {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 12px;
  font-weight: 600;
  color: var(--primary-dark);
}

.tempo-item-mensagem {
  font-weight: 400;
  color: var(--text-muted);
}

.grade-galeria-arquivos-cliente {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 12px;
}

.tile-enviar-arquivo-cliente,
.tile-arquivo-cliente {
  position: relative;
  aspect-ratio: 1;
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow: hidden;
  background: var(--bg);
}

.tile-enviar-arquivo-cliente {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  cursor: pointer;
  color: var(--text-muted);
  font-size: 13px;
  font-weight: 600;
}

.tile-enviar-arquivo-cliente:hover {
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.icone-tile-enviar {
  font-size: 24px;
}

.tile-arquivo-cliente a {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  text-decoration: none;
  color: var(--text-muted);
}

.tile-arquivo-cliente img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.tile-arquivo-generico a {
  gap: 4px;
  padding: 8px;
  text-align: center;
}

.nome-tile-arquivo {
  font-size: 11px;
  color: var(--text);
  word-break: break-word;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.tamanho-tile-arquivo {
  font-size: 10px;
}

.botao-excluir-tile-arquivo {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: none;
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}

.botao-excluir-tile-arquivo:hover {
  background: var(--danger);
}

.item-pacote-sidebar {
  padding: 6px 0;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}

.item-pacote-sidebar:last-child {
  border-bottom: none;
}

.linha-topo-pacote-sidebar {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  font-weight: 600;
}

.linha-saldo-pacote-sidebar {
  color: var(--text-muted);
  font-size: 12px;
  margin-top: 2px;
}

.estado-vazio-pequeno {
  font-size: 13px;
  color: var(--text-muted);
  margin: 0;
}

.texto-fim-calculado {
  font-size: 12px;
  color: var(--text-muted);
  margin: -10px 0 14px;
}

.item-anotacao {
  padding: 8px 0;
  border-bottom: 1px solid var(--border);
}

.item-anotacao:last-child {
  border-bottom: none;
}

.texto-anotacao {
  font-size: 13px;
}

.meta-anotacao {
  font-size: 11px;
  color: var(--text-muted);
  margin-top: 2px;
}

.form-nova-anotacao {
  display: none;
  margin-bottom: 10px;
}

.form-nova-anotacao textarea {
  width: 100%;
  min-height: 60px;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 13px;
  font-family: inherit;
  resize: vertical;
  background: var(--surface);
  color: var(--text);
}

.acoes-form-anotacao {
  display: flex;
  gap: 8px;
  margin-top: 6px;
}

.acoes-form-anotacao button {
  flex: 1;
  margin-top: 0;
  padding: 6px;
  font-size: 12px;
}

@media (max-width: 860px) {
  .modal-agendamento {
    flex-direction: column;
    max-height: 90vh;
  }

  .coluna-sidebar-cliente {
    width: 100%;
    border-right: none;
    border-bottom: 1px solid var(--border);
    max-height: none;
  }

  /* No celular a coluna do cliente empilha ACIMA do formulario (ver
     .modal-agendamento flex-direction:column acima) -- com as 3 secoes
     detalhadas inteiras (Informacoes/Pacotes/Anotacoes), o cliente enchia
     a tela toda sozinho, empurrando "Editar agendamento" e os campos de
     verdade quase inteiramente pra fora da area visivel (usuario reportou
     como parecendo 2 telas sobrepostas/cortadas). Resumo compacto (avatar +
     nome + telefone + Conversar/Ver ficha) + link pra abrir a ficha
     completa quando precisar, igual o Belasis faz nesse mesmo formulario. */
  .coluna-sidebar-cliente .secao-sidebar-cliente {
    display: none;
  }
}

/* modal de ficha do cliente (rail vertical de abas) */

.modal-cliente {
  max-width: 1080px;
}

.rail-cliente {
  width: 220px;
  flex-shrink: 0;
  background: var(--bg);
  border-right: 1px solid var(--border);
  padding: 16px 10px;
  overflow-y: auto;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.item-rail-cliente {
  text-align: left;
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-weight: 600;
  font-size: 13px;
  padding: 9px 12px;
  border-radius: 8px;
  cursor: pointer;
}

.item-rail-cliente:hover {
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.item-rail-cliente.ativo {
  background: var(--primary);
  color: var(--on-primary);
}

.separador-rail-cliente {
  height: 1px;
  background: var(--border);
  margin: 8px 4px;
}

.conteudo-modal-cliente {
  flex: 1;
  min-width: 0;
  padding: 24px;
  overflow-y: auto;
  max-height: 90vh;
  position: relative;
}

.botao-fechar-modal {
  position: absolute;
  top: 14px;
  right: 18px;
  border: none;
  background: none;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  color: var(--text-muted);
}

.grade-cadastro-cliente {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 24px;
}

.grade-cadastro-cliente > div {
  min-width: 0;
}

.secao-cadastro-cliente {
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}

.secao-cadastro-cliente h4 {
  margin: 0 0 4px;
  font-size: 13px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.grade-stats-cliente {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 220px));
  gap: 12px;
  margin-bottom: 20px;
}

.cartao-stat-cliente {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 16px;
}

.cartao-stat-cliente .rotulo-stat {
  font-size: 12px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.cartao-stat-cliente .valor-stat {
  font-size: 20px;
  font-weight: 700;
  color: var(--text);
  margin-top: 4px;
}

@media (max-width: 860px) {
  .modal-cliente {
    flex-direction: column;
  }

  .rail-cliente {
    width: 100%;
    flex-direction: row;
    flex-wrap: wrap;
    border-right: none;
    border-bottom: 1px solid var(--border);
    max-height: none;
  }

  .grade-cadastro-cliente {
    grid-template-columns: 1fr;
  }
}

/* kebab de acoes por linha (Historico de caixa) */

.botao-kebab-linha {
  background: none;
  border: none;
  cursor: pointer;
  font-size: 18px;
  color: var(--text-muted);
  padding: 4px 10px;
  border-radius: 6px;
  line-height: 1;
}

.botao-kebab-linha:hover {
  background: var(--bg);
}

.popover-linha-caixa {
  display: none;
  position: fixed;
  z-index: 60;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 6px;
  min-width: 180px;
}

.popover-linha-caixa.visivel {
  display: block;
}

.popover-linha-caixa button {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  text-align: left;
  padding: 9px 10px;
  border: none;
  background: none;
  border-radius: 6px;
  font-size: 13px;
  color: var(--text);
  cursor: pointer;
}

.popover-linha-caixa button:hover {
  background: var(--bg);
}

.popover-linha-caixa button.opcao-excluir-caixa {
  color: var(--danger);
}

/* conferencia de caixa (Visualizar no Historico) */

.cabecalho-conferencia-historico {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
}

.periodo-conferencia-historico {
  color: var(--text-muted);
  font-size: 13px;
  margin-top: 2px;
}

.info-conferencia-historico {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 24px;
  font-size: 13px;
  color: var(--text-muted);
  margin-bottom: 16px;
}

.info-conferencia-historico strong {
  color: var(--text);
}

.cabecalho-modal {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.cabecalho-modal h3 {
  margin: 0;
}

.botao-fechar-x {
  background: none;
  border: none;
  font-size: 24px;
  line-height: 1;
  color: var(--text-muted);
  cursor: pointer;
  padding: 2px 4px;
  flex-shrink: 0;
}

.botao-fechar-x:hover {
  color: var(--text);
}

.modal-calculadora-transacoes {
  max-width: 460px;
}

.cabecalho-calculadora-transacoes {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}

.cabecalho-calculadora-transacoes h3 {
  margin: 0;
}

#contagem-transacoes-calculadas {
  color: var(--text-muted);
  font-size: 13px;
  margin: 2px 0 0;
}

.grade-totais-transacoes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 14px;
}

.cartao-total-transacoes {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 14px;
  border-radius: var(--radius);
  font-size: 13px;
  font-weight: 600;
}

.cartao-total-transacoes strong {
  font-size: 19px;
}

.cartao-total-recebido {
  background: var(--success-soft);
  color: var(--success);
}

.cartao-total-pago {
  background: var(--danger-soft);
  color: var(--danger);
}

.cartao-total-saldo {
  grid-column: 1 / -1;
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.titulo-lista-calculadora {
  margin: 18px 0 8px;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
}

.lista-titulares-calculadora {
  max-height: 280px;
  overflow-y: auto;
  border-top: 1px solid var(--border);
}

.linha-titular-calculadora {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 9px 2px;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}

.linha-titular-calculadora .nome-titular-calculadora {
  font-weight: 600;
  color: var(--text);
}

.linha-titular-calculadora .contagem-titular-calculadora {
  color: var(--text-muted);
  font-size: 12px;
  font-weight: 400;
}

.linha-titular-calculadora .valores-titular-calculadora {
  display: flex;
  gap: 10px;
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}

.linha-titular-calculadora .valor-recebido-titular {
  color: var(--success);
  font-weight: 600;
}

.linha-titular-calculadora .valor-pago-titular {
  color: var(--danger);
  font-weight: 600;
}

.linha-campos {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

/* Em celular, 2 campos lado a lado (ex.: datas de/ate) ficam apertados
   demais pra digitar -- empilha em uma coluna so'. */
@media (max-width: 480px) {
  .linha-campos {
    grid-template-columns: 1fr;
  }
}

.modal .acoes-modal {
  display: flex;
  gap: 10px;
  margin-top: 20px;
}

.modal .acoes-modal .botao-secundario,
.modal .acoes-modal .botao-primario,
.modal .acoes-modal .botao-perigo {
  flex: 1;
  margin-top: 0;
}

.modal .acoes-modal .wrapper-popover {
  flex: 1;
}

.modal .acoes-modal .wrapper-popover .botao-perigo {
  width: 100%;
}

/* Em telas de celular, com rotulo de botao mais longo (ex.: "Registrar
   entrada"/"Registrar saida"), dividir a largura igualmente entre 2-3
   botoes lado a lado fica ilegivel -- empilha em vez de espremer. */
@media (max-width: 480px) {
  .modal .acoes-modal {
    flex-direction: column;
    gap: 8px;
  }
}

.botao-perigo {
  background: var(--danger-soft);
  color: var(--danger);
  border: none;
  border-radius: 8px;
  padding: 11px;
  font-size: 14px;
  font-weight: 600;
  width: 100%;
  margin-top: 10px;
}

.botao-sucesso {
  background: var(--success-soft);
  color: var(--success);
  border: none;
  border-radius: 8px;
  padding: 11px;
  font-size: 14px;
  font-weight: 600;
  width: 100%;
  margin-top: 10px;
}

.botao-sucesso:hover {
  opacity: 0.85;
}

.botao-sucesso-forte {
  background: var(--success);
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 11px;
  font-size: 14px;
  font-weight: 700;
  width: 100%;
  margin-top: 10px;
  cursor: pointer;
}

.botao-sucesso-forte:hover {
  opacity: 0.9;
}

.painel-fechar-comanda {
  margin-top: 12px;
  padding: 12px;
  background: var(--success-soft);
  border-radius: 8px;
  /* --success-soft nao muda no tema escuro (so --bg/--surface/--text mudam,
     ver html.tema-escuro) -- entao o texto aqui dentro tambem tem que ficar
     fixo (familia --success), senao --text/--text-muted clareiam no escuro
     e ficam ilegiveis sobre esse fundo sempre claro. */
  color: var(--success);
}

.painel-fechar-comanda label {
  font-size: 13px;
  font-weight: 600;
  color: var(--success);
}

.painel-fechar-comanda .linha-acoes {
  display: flex;
  gap: 8px;
  margin-top: 8px;
}

.painel-fechar-comanda .linha-acoes button {
  flex: 1;
}

.selecao-forma-pagamento {
  display: flex;
  gap: 6px;
  margin-top: 6px;
  flex-wrap: wrap;
}

.botao-forma-pagamento {
  flex: 1;
  min-width: 90px;
  max-width: 100%;
  padding: 9px 10px;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  border-radius: 8px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.botao-forma-pagamento.selecionado {
  border-color: var(--primary);
  background: var(--primary-soft);
}

.wrapper-popover-cartao {
  position: relative;
  flex: 1;
  min-width: 90px;
}

.wrapper-popover-cartao .botao-forma-pagamento {
  width: 100%;
}

.popover-cartao-forma {
  display: none;
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 220px;
  max-height: 220px;
  overflow-y: auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: var(--shadow);
  z-index: 60;
}

.popover-cartao-forma.visivel {
  display: block;
}

.item-popover-cartao {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  padding: 9px 12px;
  border: none;
  background: none;
  text-align: left;
  font-size: 13px;
  color: var(--text);
  cursor: pointer;
}

.item-popover-cartao:hover,
.item-popover-cartao.selecionado {
  background: var(--primary-soft);
}

.taxa-item-cartao {
  color: var(--text-muted);
  font-size: 12px;
}

.selo-comanda-fechada {
  display: inline-block;
  margin-top: 4px;
  padding: 3px 8px;
  border-radius: 999px;
  background: var(--faturado-soft);
  color: var(--faturado);
  font-size: 12px;
  font-weight: 600;
}

.botao-perigo:hover {
  opacity: 0.85;
}

/* clientes */

.layout-clientes {
  max-width: none;
  margin: 24px auto 40px;
  padding: 0 24px;
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 16px;
  align-items: start;
}

/* A coluna da lista tem largura fixa (300px) que nao encolhe -- numa tela
   de celular isso espreme a coluna da ficha/painel-ficha a quase nada
   (ou forca a pagina inteira a rolar de lado). Empilha em 1 coluna so'.
   Nao conflita com body.modo-detalhe-unico: esse modo esconde o
   .conteudo-com-barra-lateral inteiro (onde .layout-clientes vive), entao
   nunca aparecem juntos. */
@media (max-width: 860px) {
  .layout-clientes {
    grid-template-columns: 1fr;
  }
}

/* dentro do subnav de pagina (.container-financeiro ja tem seu proprio
   margin/padding), a lista de clientes nao precisa duplicar o espacamento */
.container-financeiro .layout-clientes {
  margin: 0;
  padding: 0;
}

.painel-lista-clientes {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
}

.painel-lista-clientes input[type='text'] {
  margin-bottom: 10px;
}

.lista-clientes {
  max-height: 65vh;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.contagem-clientes {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
  font-size: 12px;
  color: var(--text-muted);
  text-align: center;
}

.item-cliente {
  padding: 8px 10px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
  border: 1px solid transparent;
}

.item-cliente:hover {
  background: var(--bg);
}

.item-cliente.selecionado {
  background: var(--primary-soft);
  border-color: var(--primary);
  color: var(--primary-dark);
  font-weight: 600;
}

.item-cliente .telefone-item {
  display: block;
  font-size: 11px;
  color: var(--text-muted);
  font-weight: 400;
}

/* ---- Comissoes ---- */

.titulo-filtros-comissao {
  text-align: center;
  margin-bottom: 2px;
}

.subtitulo-filtros-comissao {
  text-align: center;
  color: var(--text-muted);
  font-size: 13px;
  margin-top: 0;
  margin-bottom: 14px;
}

.lista-profissionais-comissao {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-width: 480px;
  margin: 0 auto;
  max-height: 420px;
  overflow-y: auto;
}

.item-profissional-comissao {
  display: flex;
  align-items: center;
  gap: 10px;
}

.avatar-profissional-comissao {
  width: 34px;
  height: 34px;
  min-width: 34px;
  border-radius: 50%;
  background: var(--primary);
  color: var(--on-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 14px;
}

.nome-profissional-comissao {
  font-weight: 500;
}

.checkbox-profissional-comissao {
  width: 16px;
  height: 16px;
}

.cabecalho-drilldown-comissao {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
}

.botao-adicionar-lancamento {
  background: none;
  border: 1px dashed var(--border);
  border-radius: 50%;
  width: 18px;
  height: 18px;
  line-height: 1;
  font-size: 12px;
  color: var(--text-muted);
  cursor: pointer;
  padding: 0;
}

.botao-adicionar-lancamento:hover {
  border-color: var(--primary);
  color: var(--primary-dark);
}

/* Grupo de radio da aba Configuracoes -- mesma casca visual de .linha-config,
   so que o lado direito vira uma lista de opcoes em vez de um toggle. */
.linha-config-radio {
  padding: 16px 0;
  border-bottom: 1px solid var(--border);
}

.linha-config-radio:last-child {
  border-bottom: none;
}

.grupo-opcoes-radio {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 10px;
}

.opcao-radio-config {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
}

.opcao-radio-config input[type='radio'] {
  margin-top: 3px;
}

.titulo-opcao-radio {
  font-weight: 600;
  font-size: 13px;
}

.aviso-nao-aplicado-config {
  margin-top: 8px;
  font-size: 12px;
  color: var(--text-muted);
  font-style: italic;
}

.campo-percentual-config {
  display: flex;
  align-items: center;
  gap: 6px;
}

.campo-percentual-config input {
  width: 80px;
}

.linha-tokens-recibo {
  display: flex;
  gap: 8px;
}

.linha-tokens-recibo button {
  padding: 6px 12px;
  font-size: 12px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  cursor: pointer;
}

.linha-tokens-recibo button:hover {
  border-color: var(--primary);
  color: var(--primary-dark);
}

.texto-periodo-resumo-comissao {
  text-align: center;
  color: var(--text-muted);
  font-size: 13px;
  margin: 0 0 12px;
}

.texto-periodo-resumo-comissao strong {
  color: var(--text);
}

.rodape-resumo-comissao {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 20px;
  padding: 14px 4px;
  border-top: 2px solid var(--border);
  margin-top: 4px;
}

.rodape-resumo-comissao > div {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 13px;
}

.rotulo-rodape-comissao {
  font-size: 11px;
  color: var(--text-muted);
}

.valor-liquido-rodape-comissao {
  color: var(--primary-dark);
  font-weight: 700;
}

.rodape-resumo-comissao .botao-primario {
  margin-left: auto;
}

.campos-config-profissional {
  display: flex;
  align-items: center;
  gap: 8px;
}

.rotulo-comissionado {
  font-size: 13px;
  color: var(--text-muted);
  margin-right: 8px;
}

@media print {
  .barra-lateral,
  .subnav-financeiro,
  .cabecalho-painel-whatsapp,
  .painel-filtro-historico {
    display: none !important;
  }
}

.painel-ficha {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
  min-height: 300px;
}

.painel-ficha .estado-vazio {
  color: var(--text-muted);
  font-size: 14px;
  text-align: center;
  padding: 60px 0;
}

.ficha-cabecalho {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}

.ficha-cabecalho h2 {
  margin: 0;
  color: var(--primary-dark);
}

.campo-somente-leitura {
  padding: 9px 12px;
  background: var(--bg);
  border-radius: 8px;
  font-size: 14px;
  min-height: 20px;
}

.secao-historico {
  margin-top: 28px;
}

.secao-historico h3 {
  color: var(--primary-dark);
  font-size: 15px;
  margin-bottom: 10px;
}

.item-historico {
  display: flex;
  justify-content: space-between;
  padding: 8px 10px;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}

/* Aba "Agendamentos" da ficha do cliente -- tabela Data/Servico/Status/
   Profissional/Comanda/Acoes (visual pedido pelo usuario, referencia
   Belasis). Reaproveita o table/th/td genericos do style.css, so ajusta o
   que e especifico daqui. */
.tabela-agendamentos-cliente td {
  vertical-align: top;
}

.tabela-agendamentos-cliente th:last-child,
.tabela-agendamentos-cliente td:last-child {
  text-align: center;
}

.nota-itens-extra-historico {
  margin-top: 3px;
  font-size: 11px;
  color: var(--text-muted);
}

.texto-vazio-tabela {
  color: var(--text-muted);
}

.link-acao-tabela {
  color: var(--primary-dark);
  text-decoration: none;
  font-weight: 600;
  white-space: nowrap;
}

.link-acao-tabela:hover {
  text-decoration: underline;
}

.selo-status-agendamento {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  color: #fff;
  background: var(--success);
}

.selo-status-agendamento.status-aguardando {
  background: var(--warning);
}

.selo-status-agendamento.status-cancelado {
  background: var(--danger);
}

.selo-status-agendamento.status-concluido {
  background: var(--faturado);
}

.item-historico .data-historico {
  font-weight: 600;
  min-width: 90px;
}

/* financeiro */

.container-financeiro,
.container-relatorios {
  max-width: none;
  margin: 24px auto 40px;
  padding: 0 24px;
}

@media (max-width: 860px) {
  /* Reforco direto aqui (alem do padding-top que .conteudo-com-barra-lateral
     ja devia estar dando) -- paginas que usam esse container (Metas,
     Comissoes, etc) mostraram o titulo colando no botao hamburguer/relogio
     do celular, entao garante a distancia certa sem depender so' do espaco
     herdado do container pai. */
  .container-financeiro,
  .container-relatorios {
    padding-top: 62px;
    margin-top: 0;
  }
}

.subnav-financeiro {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 14px;
  margin-bottom: 24px;
}

.item-subnav-financeiro {
  border: 1px solid transparent;
  background: transparent;
  color: var(--text-muted);
  font-size: 14px;
  font-weight: 600;
  padding: 8px 16px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.item-subnav-financeiro:hover {
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.item-subnav-financeiro.ativo {
  background: var(--primary);
  color: var(--on-primary);
}

/* anamneses */

.grade-modelos-anamnese {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 14px;
}

.cartao-modelo-anamnese {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 16px;
}

.cartao-modelo-anamnese h4 {
  margin: 0 0 8px;
}

.badges-modelo-anamnese {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.selo-tipo-campo-anamnese {
  display: inline-block;
  padding: 3px 8px;
  border-radius: 999px;
  background: var(--primary-soft);
  color: var(--primary-dark);
  font-size: 12px;
  font-weight: 600;
}

.acoes-cartao-modelo-anamnese {
  display: flex;
  gap: 12px;
  margin-top: 10px;
  font-size: 13px;
}

.acoes-cartao-modelo-anamnese button {
  border: none;
  background: none;
  color: var(--primary-dark);
  cursor: pointer;
  padding: 0;
  font-weight: 600;
}

.acoes-cartao-modelo-anamnese .botao-excluir-modelo-anamnese {
  color: var(--danger);
}

.separador-campo-anamnese {
  border-top: 1px dashed var(--border);
  margin: 18px 0 10px;
  padding-top: 6px;
  color: var(--text-muted);
  font-size: 12px;
}

.alternador-sim-nao {
  display: flex;
  gap: 6px;
  margin-top: 4px;
}

.alternador-sim-nao button {
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text-muted);
  padding: 6px 16px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
}

.alternador-sim-nao button.selecionado {
  background: var(--primary);
  color: var(--on-primary);
  border-color: var(--primary);
}

.opcoes-escolha-multipla {
  margin-top: 4px;
}

.linha-campo-modelo-anamnese {
  display: grid;
  grid-template-columns: 160px 1fr auto;
  gap: 8px;
  align-items: start;
  margin-bottom: 8px;
}

.linha-campo-modelo-anamnese .campo-opcoes-linha {
  grid-column: 1 / 3;
}

.linha-campo-modelo-anamnese .botao-remover-linha-campo {
  border: none;
  background: var(--danger-soft);
  color: var(--danger);
  border-radius: 8px;
  width: 32px;
  height: 32px;
  cursor: pointer;
  font-size: 16px;
}

.subnav-cadastros {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 18px;
}

.item-subnav-cadastros {
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text-muted);
  font-size: 13px;
  font-weight: 600;
  padding: 7px 14px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.item-subnav-cadastros:hover {
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.item-subnav-cadastros.ativo {
  background: var(--primary);
  border-color: var(--primary);
  color: var(--text);
}

.subpainel-cadastros {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
  margin-bottom: 24px;
}

.selo-baixa-automatica,
.selo-baixa-manual {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
}

.selo-baixa-automatica {
  background: var(--success-soft);
  color: var(--success);
}

.selo-baixa-manual {
  background: var(--warning-soft);
  color: var(--warning);
}

/* caixas abertos */

.cartao-caixa {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin-bottom: 20px;
  overflow: hidden;
}

.cabecalho-cartao-caixa {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 18px 20px;
  border-bottom: 1px solid var(--border);
}

.perfil-cartao-caixa {
  display: flex;
  align-items: center;
  gap: 12px;
}

.avatar-cartao-caixa {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--primary);
  color: var(--on-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  flex-shrink: 0;
}

.nome-cartao-caixa {
  font-weight: 700;
  color: var(--text);
}

.login-cartao-caixa,
.data-cartao-caixa {
  font-size: 12px;
  color: var(--text-muted);
}

.numero-cartao-caixa {
  font-weight: 700;
  color: var(--text-muted);
}

.corpo-cartao-caixa {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  padding: 20px;
}

@media (max-width: 700px) {
  .corpo-cartao-caixa {
    grid-template-columns: 1fr;
  }
}

.corpo-cartao-caixa h4 {
  margin: 0 0 12px;
  font-size: 14px;
  color: var(--text);
}

.linha-leader {
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding: 5px 0;
  font-size: 13px;
}

.linha-leader .rotulo-leader {
  white-space: nowrap;
  color: var(--text);
}

.linha-leader .pontilhado {
  flex: 1;
  border-bottom: 1px dotted var(--border);
  margin-bottom: 4px;
}

.linha-leader .valor-leader {
  white-space: nowrap;
  font-weight: 600;
  color: var(--text);
}

.linha-leader.saldo-final-leader .rotulo-leader,
.linha-leader.saldo-final-leader .valor-leader {
  color: var(--success);
  font-weight: 700;
}

.linha-leader.saldo-final-leader .valor-leader {
  font-size: 16px;
}

.linha-leader.clicavel {
  cursor: pointer;
}

.linha-forma-detalhada {
  border-bottom: 1px solid var(--border);
  padding-bottom: 4px;
  margin-bottom: 4px;
}

.sublista-forma {
  padding: 4px 0 8px 14px;
}

.rotulo-sublista {
  font-size: 12px;
  font-weight: 600;
  color: var(--success);
  margin-bottom: 4px;
}

.linha-transacao-caixa {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  font-size: 12px;
  color: var(--text-muted);
  padding: 3px 0;
}

.vazio-outros-caixa {
  text-align: center;
  color: var(--text-muted);
  font-size: 13px;
  padding: 30px 0 16px;
}

.vazio-outros-caixa .icone-vazio-caixa {
  font-size: 28px;
  display: block;
  margin-bottom: 8px;
  opacity: 0.6;
}

.rodape-cartao-caixa {
  display: flex;
  gap: 10px;
  padding: 16px 20px;
  border-top: 1px solid var(--border);
}

.rodape-cartao-caixa .botao-fechar-caixa {
  margin-left: auto;
}

.botao-outline-sucesso,
.botao-outline-perigo {
  background: none;
  border: 1px solid;
  border-radius: 999px;
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}

.botao-outline-sucesso {
  border-color: var(--success);
  color: var(--success);
}

.botao-outline-perigo {
  border-color: var(--danger);
  color: var(--danger);
}

.botao-fechar-caixa {
  background: var(--danger);
  color: #fff;
  border: none;
  border-radius: 999px;
  padding: 8px 18px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}

.alternador-destino-fechamento {
  display: flex;
  gap: 6px;
  margin-top: 16px;
  background: var(--bg);
  border-radius: 999px;
  padding: 4px;
}

.botao-destino-fechamento {
  flex: 1;
  border: none;
  background: none;
  padding: 8px 10px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
  cursor: pointer;
}

.botao-destino-fechamento.ativo {
  background: var(--primary);
  color: var(--on-primary);
}

#area-transferencia-fechamento {
  margin-top: 14px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

.linha-transferencia {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-top: 8px;
}

.linha-transferencia select,
.linha-transferencia input {
  flex: 1;
}

.botao-remover-transferencia {
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--danger);
  border-radius: 8px;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}

.botao-remover-transferencia:hover {
  background: var(--danger-soft);
}

/* historico de caixa */

.layout-historico-caixa {
  display: flex;
  align-items: flex-start;
  gap: 20px;
}

.painel-filtro-historico {
  width: 300px;
  flex-shrink: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
}

.painel-filtro-historico label {
  margin-top: 14px;
  font-size: 12px;
}

.painel-filtro-historico label:first-child {
  margin-top: 0;
}

.painel-filtro-historico .linha-campos {
  gap: 8px;
}

.painel-filtro-historico .linha-campos input[type='date'] {
  padding: 10px 8px;
  min-width: 0;
}

.acoes-filtro-historico {
  display: flex;
  gap: 8px;
  margin-top: 18px;
}

.acoes-filtro-historico button {
  flex: 1;
  margin-top: 0;
}

.tabela-historico-caixa-wrapper {
  flex: 1;
  min-width: 0;
  overflow-x: auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}

.tabela-historico-caixa-wrapper table {
  min-width: 720px;
}

@media (max-width: 900px) {
  .layout-historico-caixa {
    flex-direction: column;
  }

  .painel-filtro-historico {
    width: 100%;
  }
}

/* configuracoes */

.linha-config {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding: 18px 0;
  border-bottom: 1px solid var(--border);
}

.linha-config:last-child {
  border-bottom: none;
}

.titulo-config {
  font-weight: 600;
  color: var(--text);
  margin-bottom: 4px;
}

.descricao-config {
  font-size: 13px;
  color: var(--text-muted);
  line-height: 1.5;
}

.linha-toggle-organizacional {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 4px;
  margin-bottom: 6px;
}

.chave-config {
  position: relative;
  display: inline-block;
  width: 42px;
  height: 24px;
  flex-shrink: 0;
}

.chave-config input {
  opacity: 0;
  width: 0;
  height: 0;
}

.trilho-chave-config {
  position: absolute;
  inset: 0;
  background: var(--border);
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s;
}

.trilho-chave-config::before {
  content: '';
  position: absolute;
  width: 18px;
  height: 18px;
  left: 3px;
  top: 3px;
  background: #fff;
  border-radius: 50%;
  transition: transform 0.15s;
}

.chave-config input:checked + .trilho-chave-config {
  background: var(--primary);
}

.chave-config input:checked + .trilho-chave-config::before {
  transform: translateX(18px);
}

.painel-aba-financeiro .estado-vazio {
  color: var(--text-muted);
  font-size: 14px;
  text-align: center;
  padding: 60px 0;
}

.grade-resumo-hoje {
  display: flex;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 14px;
  margin-bottom: 14px;
}

.grade-resumo-hoje .cartao-stat {
  flex: 1;
  min-width: 160px;
}

.filtro-periodo-financeiro {
  flex: 1;
  min-width: 260px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.filtro-periodo-financeiro label {
  font-size: 12px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-right: 4px;
}

.filtro-periodo-financeiro span {
  color: var(--text-muted);
  font-size: 13px;
}

.filtro-periodo-financeiro input[type='date'] {
  width: auto;
  flex: 1;
  min-width: 130px;
}

.cartao-grafico-financeiro {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
  margin-bottom: 24px;
}

.cartao-grafico-financeiro h3 {
  margin: 0 0 14px;
  font-size: 15px;
}

.wrapper-grafico-relatorio {
  position: relative;
  height: 400px;
}

.grade-avatares-avaliacoes {
  display: flex;
  gap: 32px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}

.item-avatar-avaliacao {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  text-align: center;
}

.item-avatar-avaliacao .avatar-avaliacao {
  width: 76px;
  height: 76px;
  border-radius: 50%;
  object-fit: cover;
  background: var(--primary-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  color: var(--primary-dark);
  font-size: 26px;
}

.item-avatar-avaliacao span {
  font-size: 15px;
  font-weight: 600;
}

.item-avatar-avaliacao .nota-avatar-avaliacao {
  font-size: 14px;
  font-weight: 600;
  color: var(--warning);
}

.grade-2-personalizacao-avaliacoes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

.grade-2-personalizacao-avaliacoes textarea {
  width: 100%;
  resize: vertical;
}

@media (max-width: 860px) {
  .grade-2-personalizacao-avaliacoes {
    grid-template-columns: 1fr;
  }
}

.estrelas-avaliacao {
  color: var(--warning);
  letter-spacing: 1px;
  white-space: nowrap;
  font-size: 18px;
}

.titulo-secao-painel {
  margin: 0 0 10px;
  font-size: 13px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.grade-contas-painel {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 320px));
  gap: 12px;
  margin-bottom: 24px;
}

.cartao-conta-painel {
  background: var(--success);
  color: #fff;
  border-radius: var(--radius);
  padding: 16px 18px;
}

.cartao-conta-painel .rotulo-conta-painel {
  font-size: 13px;
  opacity: 0.9;
}

.cartao-conta-painel .valor-conta-painel {
  font-size: 22px;
  font-weight: 700;
  margin-top: 4px;
}

.grade-resumo-financeiro {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 240px));
  gap: 14px;
  margin-bottom: 24px;
}

@media (max-width: 480px) {
  /* So' no celular de verdade (largura estreita o bastante que 1 cartao ja'
     preenche a linha inteira) -- em tela media/tablet o auto-fill normal
     ja encaixa 2-3 cartoes lado a lado e continua funcionando bem, nao
     precisa forcar 1 coluna ali. Aqui sem isso o cartao esticava pra
     preencher a largura toda da tela, em vez de ficar um cartao mais
     estreito e centralizado (pedido do usuario: nao e' so' o TEXTO de
     dentro que devia centralizar, e' o cartao inteiro). */
  .grade-resumo-financeiro {
    grid-template-columns: minmax(200px, 240px);
    justify-content: center;
  }
}

.cartao-stat {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
}

@media (max-width: 860px) {
  /* Cartoes de estatistica (Faturamento agendado, Atendimentos, etc) ficam
     centralizados no celular -- pedido do usuario, pra combinar com o
     card de progresso da meta ali em cima, que ja e' centralizado. */
  .cartao-stat {
    text-align: center;
  }
}

.cartao-stat .rotulo-stat {
  font-size: 12px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.cartao-stat .valor-stat {
  font-size: 24px;
  font-weight: 700;
  color: var(--text);
  margin-top: 4px;
}

.valor-stat.positivo {
  color: var(--success);
}

.valor-stat.negativo {
  color: var(--danger);
}

.barra-progresso {
  margin-top: 10px;
  height: 8px;
  border-radius: 999px;
  background: var(--bg);
  overflow: hidden;
}

.barra-progresso-preenchimento {
  height: 100%;
  background: var(--primary);
  border-radius: 999px;
}

/* Grafico de meta (donut + mini-barra da tabela admin) */

.wrapper-grafico-meta {
  display: flex;
  justify-content: center;
}

.cartao-hero-minha-meta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 28px 20px;
  margin-bottom: 20px;
}

.texto-faltam-meta {
  font-size: 13px;
  color: var(--text-muted);
  text-align: center;
}

.svg-donut-meta {
  overflow: visible;
}

.svg-donut-meta circle {
  transition: stroke-dasharray 0.4s ease;
}

.texto-percentual-donut {
  font-size: 26px;
  font-weight: 700;
  fill: var(--text);
}

.texto-rotulo-donut {
  font-size: 12px;
  fill: var(--text-muted);
}

.wrapper-barra-progresso-mini {
  display: flex;
  align-items: center;
  gap: 8px;
}

.barra-progresso-mini {
  width: 70px;
  height: 6px;
  border-radius: 999px;
  background: var(--bg);
  overflow: hidden;
  flex-shrink: 0;
}

.barra-progresso-mini-preenchimento {
  height: 100%;
  border-radius: 999px;
  background: var(--primary);
}

/* Visao geral da equipe (admin) */

.grade-visao-geral-metas {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 16px;
  margin-top: 16px;
}

.cartao-visao-geral-meta {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 10px;
}

.cabecalho-cartao-visao-geral {
  display: flex;
  align-items: center;
  gap: 10px;
}

.nome-cartao-visao-geral {
  font-weight: 700;
}

.texto-numerico-visao-geral {
  font-size: 13px;
  color: var(--text-muted);
}

.selo-status-meta {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
}

.selo-status-meta.batida {
  background: var(--success-soft);
  color: var(--success);
}

.selo-status-meta.perto {
  background: var(--warning-soft);
  color: var(--warning);
}

.selo-status-meta.longe {
  background: var(--bg);
  color: var(--text-muted);
}

.selo-status-meta.sem-meta {
  background: var(--bg);
  color: var(--text-muted);
}

.cartao-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
}

.cartao-meta input {
  width: 100px;
  padding: 5px 8px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 13px;
}

.painel-lancamento {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
  margin-bottom: 24px;
}

.painel-lancamento h3 {
  margin-top: 0;
  color: var(--primary-dark);
}

.form-lancamento {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: end;
}

.form-lancamento > div {
  display: flex;
  flex-direction: column;
}

.form-lancamento label {
  margin: 0 0 4px;
  font-size: 12px;
}

.form-lancamento input,
.form-lancamento select {
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 13px;
}

.selo-tipo {
  padding: 2px 9px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
}

.selo-tipo.entrada {
  background: var(--success-soft);
  color: var(--success);
}

.selo-tipo.saida {
  background: var(--danger-soft);
  color: var(--danger);
}

.painel-lista-financeiro {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
}

.painel-lista-financeiro h3 {
  margin-top: 0;
  color: var(--primary-dark);
}

@media (max-width: 860px) {
  /* So' quando o titulo e' filho direto (ex: Metas, "Relatorio do
     periodo") -- em paginas onde o titulo fica dentro de
     .cabecalho-painel-whatsapp junto com filtro/busca (ex: Financeiro),
     isso nao se aplica, pra nao bagunçar aquele cabecalho. */
  .painel-lista-financeiro > h3 {
    text-align: center;
  }
}

/* painel whatsapp */

.container-whatsapp {
  max-width: none;
  margin: 24px auto 40px;
  padding: 0 24px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.aviso-whatsapp {
  background: var(--primary-soft);
  color: var(--primary-dark);
  border-radius: var(--radius);
  padding: 12px 16px;
  font-size: 13px;
  margin: 0;
}

.contagem-painel {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
}

.legenda-secao {
  color: var(--text-muted);
  font-size: 13px;
  margin-top: -8px;
  margin-bottom: 12px;
}

.botao-whatsapp {
  background: var(--success-soft);
  color: var(--success);
  border: none;
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}

.botao-whatsapp:hover {
  opacity: 0.85;
}

.cabecalho-painel-whatsapp {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
}

.cabecalho-painel-whatsapp h3 {
  margin: 0;
}

.cabecalho-painel-whatsapp .botao-primario {
  width: auto;
  flex-shrink: 0;
}

.modal-envio-sequencial {
  max-width: 380px;
}

.cabecalho-envio-sequencial {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
}

.cabecalho-envio-sequencial strong {
  color: var(--primary-dark);
}

.cabecalho-envio-sequencial span {
  font-size: 13px;
  color: var(--text-muted);
  font-weight: 600;
}

.cartao-cliente-envio {
  background: var(--bg);
  border-radius: 8px;
  padding: 12px 14px;
  margin-bottom: 12px;
}

.nome-cliente-envio {
  font-weight: 700;
  color: var(--text);
}

.telefone-cliente-envio {
  font-size: 13px;
  color: var(--text-muted);
  margin-top: 2px;
}

.modal-envio-sequencial textarea {
  width: 100%;
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-family: inherit;
  font-size: 13px;
  resize: vertical;
}

.acoes-envio-sequencial {
  display: flex;
  gap: 10px;
  margin-top: 12px;
}

.acoes-envio-sequencial button {
  flex: 1;
  margin-top: 0;
}

.campo-com-sugestoes {
  position: relative;
}

.lista-sugestoes {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 20;
  margin-top: 2px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: var(--shadow);
  max-height: 220px;
  overflow-y: auto;
}

.lista-sugestoes.visivel {
  display: block;
}

.item-sugestao {
  padding: 8px 12px;
  font-size: 13px;
  cursor: pointer;
}

.item-sugestao:hover {
  background: var(--bg);
}

.item-sugestao .telefone-sugestao {
  display: block;
  font-size: 11px;
  color: var(--text-muted);
}

.item-sugestao.sugestao-nova {
  color: var(--primary-dark);
  font-style: italic;
}

.botao-excluir-linha {
  padding: 4px 9px;
  font-size: 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg);
  color: var(--danger);
}

/* rodape fixo com o botao do calendario */

.rodape-agenda {
  position: fixed;
  bottom: 0;
  left: var(--lateral-largura);
  right: 0;
  display: flex;
  justify-content: center;
  padding: 12px;
  background: var(--surface);
  border-top: 1px solid var(--border);
  box-shadow: 0 -2px 10px rgba(42, 36, 34, 0.06);
  z-index: 20;
}

/* mini calendario -- popover ancorado acima do rodape, sem escurecer a tela */

.popover-calendario {
  display: none;
  position: fixed;
  bottom: 64px;
  left: var(--lateral-largura);
  right: 0;
  margin: 0 auto;
  width: 100%;
  max-width: 320px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 16px;
  z-index: 45;
}

.popover-calendario.visivel {
  display: block;
}

@media (max-width: 860px) {
  /* BUG real corrigido aqui: existia uma regra generica la' em cima (perto
     do resto do @media de barra lateral off-canvas) tentando zerar o "left"
     desses 2 elementos no celular -- mas ela ficava ANTES dessas regras
     base no arquivo, e CSS resolve empate de especificidade por ordem no
     arquivo, entao a regra base (left: var(--lateral-largura), pensada pro
     desktop com barra lateral do lado) sempre vencia por vir depois. Na
     pratica isso empurrava o popover pra direita (comecando depois da
     largura "fantasma" da barra lateral, que no celular nem esta' visivel),
     cortando a maior parte do calendario mini pra fora da tela. Corrigido
     colocando o left:0 AQUI, depois da regra base, pra realmente vencer. */
  .rodape-agenda,
  .popover-calendario {
    left: 0;
  }
}

.atalhos-calendario {
  display: flex;
  justify-content: space-between;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

.atalhos-calendario button {
  background: none;
  border: none;
  color: var(--primary);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  padding: 4px 8px;
}

.atalhos-calendario button:hover {
  text-decoration: underline;
}

.cabecalho-mini-calendario {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}

.cabecalho-mini-calendario strong {
  color: var(--primary-dark);
  text-transform: capitalize;
}

.grade-dias-semana {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  text-align: center;
  font-size: 11px;
  color: var(--text-muted);
  margin-bottom: 4px;
}

.grade-mini-calendario {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 3px;
}

.dia-mini-calendario {
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  font-size: 13px;
  cursor: pointer;
}

.dia-mini-calendario:hover {
  background: var(--bg);
}

.dia-mini-calendario.fora-do-mes {
  color: var(--text-muted);
  opacity: 0.4;
}

.dia-mini-calendario.dia-hoje {
  border: 1px solid var(--primary);
}

.dia-mini-calendario.dia-selecionado {
  background: var(--primary);
  color: var(--on-primary);
  font-weight: 600;
}

.dia-mini-calendario {
  position: relative;
}

.dia-mini-calendario.tem-agendamento::after {
  content: '';
  position: absolute;
  bottom: 4px;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--primary);
}

.dia-mini-calendario.dia-selecionado.tem-agendamento::after {
  background: #fff;
}

/* voz */

.container-voz {
  max-width: 640px;
  margin: 32px auto;
  padding: 0 24px;
}

.painel-voz {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 28px;
  text-align: center;
}

.painel-voz h2 {
  margin-top: 0;
  color: var(--primary-dark);
}

.botao-microfone {
  width: 84px;
  height: 84px;
  border-radius: 50%;
  border: none;
  background: var(--primary);
  color: var(--on-primary);
  font-size: 32px;
  cursor: pointer;
  margin: 20px auto 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
}

.botao-microfone:hover {
  background: var(--primary-dark);
}

.botao-microfone.ouvindo {
  background: var(--danger);
  animation: pulsar 1.2s infinite;
}

@keyframes pulsar {
  0% {
    box-shadow: 0 0 0 0 rgba(179, 64, 58, 0.4);
  }
  70% {
    box-shadow: 0 0 0 14px rgba(179, 64, 58, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(179, 64, 58, 0);
  }
}

.status-voz {
  font-size: 13px;
  color: var(--text-muted);
  margin-bottom: 20px;
}

.conversa-voz {
  text-align: left;
  max-height: 340px;
  overflow-y: auto;
  margin-bottom: 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.linha-voz {
  padding: 10px 14px;
  border-radius: 10px;
  font-size: 14px;
  max-width: 85%;
}

.linha-voz.usuario {
  align-self: flex-end;
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.linha-voz.assistente {
  align-self: flex-start;
  background: var(--bg);
  color: var(--text);
}

.form-texto-voz {
  display: flex;
  gap: 8px;
}

.form-texto-voz input[type='text'] {
  flex: 1;
  width: auto;
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 14px;
}

.form-texto-voz .botao-primario {
  width: auto;
  flex-shrink: 0;
}

/* diagnostico */

.container-diagnostico {
  max-width: none;
  margin: 24px auto 40px;
  padding: 0 24px;
}

.cabecalho-diagnostico {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 20px;
}

.cabecalho-diagnostico label {
  margin: 0 0 4px;
  font-size: 12px;
}

#seletor-mes {
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 14px;
  min-width: 180px;
}

.origem-mes {
  font-size: 12px;
  color: var(--text-muted);
}

.badge-variacao {
  font-size: 12px;
  margin-top: 6px;
  font-weight: 600;
}

.badge-variacao.positivo {
  color: var(--success);
}

.badge-variacao.negativo {
  color: var(--danger);
}

.badge-variacao.neutro {
  color: var(--text-muted);
  font-weight: 400;
}

.painel-detalhes-diagnostico,
.painel-grafico-diagnostico,
.painel-insights-diagnostico {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
  margin-bottom: 20px;
}

.painel-detalhes-diagnostico h3,
.painel-grafico-diagnostico h3,
.painel-insights-diagnostico h3 {
  margin-top: 0;
  color: var(--primary-dark);
}

.grade-detalhes {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(170px, 220px));
  gap: 12px;
}

.item-detalhe .rotulo-stat {
  font-size: 12px;
  color: var(--text-muted);
}

.item-detalhe .valor-detalhe {
  font-size: 16px;
  font-weight: 600;
  margin-top: 2px;
}

.item-detalhe .valor-detalhe.indisponivel {
  color: var(--text-muted);
  font-weight: 400;
  font-style: italic;
}

.legenda-grafico {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  font-size: 12px;
  color: var(--text-muted);
  margin-bottom: 10px;
}

.legenda-grafico span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.ponto-legenda {
  width: 10px;
  height: 10px;
  border-radius: 3px;
  display: inline-block;
}

.ponto-legenda.linha-legenda {
  width: 14px;
  height: 0;
  border-radius: 0;
  border-top: 2px dashed var(--text);
}

#grafico-diagnostico {
  overflow-x: auto;
}

#grafico-diagnostico svg {
  width: 100%;
  height: auto;
  display: block;
}

.alerta-insight {
  padding: 12px 14px;
  border-radius: 8px;
  border-left: 4px solid var(--border);
  background: var(--bg);
  font-size: 13px;
  margin-bottom: 10px;
}

.alerta-insight:last-child {
  margin-bottom: 0;
}

.alerta-insight.critica {
  border-left-color: var(--danger);
  background: var(--danger-soft);
  color: var(--danger);
}

.alerta-insight.atencao {
  border-left-color: var(--warning);
  background: var(--warning-soft);
  color: var(--warning);
}

.alerta-insight.info {
  border-left-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary-dark);
}

.cartao-importar-exportar {
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 18px 20px;
  margin-bottom: 16px;
  background: var(--surface);
}

.cartao-importar-exportar h3 {
  margin: 0 0 6px;
}

.cartao-importar-exportar p {
  margin: 0 0 14px;
  font-size: 13px;
  color: var(--text-muted);
}

.linha-importar-arquivo {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
}

.linha-importar-arquivo button {
  margin-top: 0;
  width: auto;
}

.resultado-importacao {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
  font-size: 13px;
}

.resultado-importacao .erros-importacao {
  margin: 8px 0 0;
  padding-left: 18px;
  max-height: 200px;
  overflow-y: auto;
  color: var(--danger);
}

.status-sinal {
  font-weight: 600;
  font-size: 13px;
}

.status-sinal.utilizado {
  color: var(--success);
}

.status-sinal.aguardando {
  color: var(--warning);
}

.status-sinal.cancelado {
  color: var(--text-muted);
  font-weight: 400;
}

.status-sinal.vencido {
  color: var(--danger);
}

.campo-mes-referencia {
  max-width: 210px;
}

.lista-formas-pagamento-sinal {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 6px;
}

.linha-forma-pagamento-sinal {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  font-size: 14px;
}

.linha-forma-pagamento-sinal .nome-forma-pagamento-sinal {
  color: var(--text-muted);
}

.linha-forma-pagamento-sinal .valor-forma-pagamento-sinal {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.linha-score-saude {
  display: flex;
  gap: 20px;
  align-items: stretch;
  flex-wrap: wrap;
}

.cartao-score-saude {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
  min-width: 200px;
  text-align: center;
}

.valor-score-saude {
  font-size: 42px;
  font-weight: 700;
  line-height: 1.1;
  margin-top: 4px;
}

.valor-score-saude::after {
  content: '/100';
  font-size: 16px;
  font-weight: 400;
  color: var(--text-muted);
}

.nivel-score-saude {
  margin-top: 6px;
  font-size: 13px;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 999px;
  display: inline-block;
}

.nivel-score-saude.bom {
  background: var(--success-soft);
  color: var(--success);
}

.nivel-score-saude.atencao {
  background: var(--warning-soft);
  color: var(--warning);
}

.nivel-score-saude.critico {
  background: var(--danger-soft);
  color: var(--danger);
}

.detalhe-score-saude {
  flex: 1;
  min-width: 260px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
}

.linha-componente-score {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: 13px;
}

.linha-componente-score .nome-componente-score {
  color: var(--text-muted);
}

.linha-componente-score .pontos-componente-score {
  font-weight: 600;
  white-space: nowrap;
}

.painel-meta-mensal {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
  margin-top: 20px;
}

.linha-editar-meta {
  display: flex;
  gap: 8px;
}

.linha-editar-meta input {
  width: 160px;
}

.linha-editar-meta button {
  margin-top: 0;
  width: auto;
}

.barra-progresso-meta {
  height: 10px;
  border-radius: 999px;
  background: var(--bg);
  border: 1px solid var(--border);
  overflow: hidden;
  margin-top: 14px;
}

.preenchimento-barra-progresso-meta {
  height: 100%;
  background: var(--primary);
  border-radius: 999px;
  transition: width 0.3s ease;
}

.preenchimento-barra-progresso-meta.atingiu {
  background: var(--success);
}

.texto-progresso-meta {
  margin-top: 8px;
  font-size: 13px;
  color: var(--text-muted);
}
