/* SimpleHair — folha única, mobile-first. Tokens espelham design/tokens.css. */

/*
 * O token da marca chama-se `--marca`, e não `--rose`.
 *
 * Ele se chamava `--dourado` e carregava o #d1a768 herdado do SimpleCar —
 * cor de estética automotiva, que nunca teve o que fazer num salão de
 * beleza. Trocar a cor era fácil; o que travava era o NOME, espalhado por
 * duas folhas e por dois logos. Token batizado com o nome da cor é
 * exatamente o que apodrece na primeira troca de marca.
 */
:root {
  --marca: #c8697d;       /* o rosé: acentos, bordas, ícones */
  --marca-forte: #a8455c; /* link e hover sobre fundo claro */
  --marca-clara: #e8b4b8;

  /*
   * O par do botão preenchido, junto, porque um não vale sem o outro.
   *
   * No claro: rosé fechado com texto branco (5,8:1). No escuro a solução
   * inverte — rosé claro com texto quase preto (7,0:1). Usar o mesmo par
   * nos dois temas dava 3,6:1 num dos lados, abaixo do legível para texto
   * de botão. E botão ilegível que diz "Agendar" é venda perdida, não
   * detalhe de acessibilidade.
   */
  --btn-fundo: #a8455c;
  --btn-tinta: #ffffff;
  --btn-fundo-hover: #8f3a4e;

  /*
   * A barra do topo tem paleta própria, e não os neutros da página.
   *
   * Ela era grafite com cinzas AZULADOS (#b9bcc4, #3a3d45) sobrando da
   * paleta antiga — cinza frio ao lado de rosé quente é o tipo de briga que
   * ninguém sabe nomear mas todo mundo enxerga: a tela parece "meio suja".
   *
   * Agora é um vinho fechado da própria marca. A cor da casa fica presente
   * em toda tela do painel, sem precisar de logo grande.
   */
  --topo-fundo: #5c2c3a;
  --topo-tinta: #f6e6ea;
  --topo-suave: #d9b3bf;
  --topo-borda: #7a3d4e;
  --verde: #2ab7a9;
  --grafite: #2a2126;
  --fundo: #faf7f8;
  --alerta: #e05656;

  --texto: #2a2126;
  --texto-suave: #6f6169;
  --superficie: #ffffff;
  --superficie-alta: #fbf8f9; /* cabeçalho de tabela */
  --realce: #fdf6f8;          /* linha sob o cursor */
  --borda: #ebe2e6;

  /* Avisos e etiquetas. Ficam em token porque o tema escuro precisa de
     fundos translúcidos: os pastéis claros somem sobre grafite. */
  --ok-fundo: #e9f8f6;
  --ok-borda: #a9e3dc;
  --ok-texto: #17635a;
  --erro-fundo: #fdecec;
  --erro-borda: #f3c9c9;
  --erro-texto: #923535;
  --info-fundo: #eef4ff;
  --info-borda: #c9daf8;
  --info-texto: #2c5cc5;
  --atencao-fundo: #fdf0e8;
  --atencao-borda: #f0cdb8;
  --atencao-texto: #a84f2c;
  --neutro-fundo: #f2f3f5;
  --neutro-texto: #6b7280;

  --font-ui: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  --font-brand: 'Poppins', 'Montserrat', var(--font-ui);

  --raio: 8px;
  --sombra: 0 4px 12px rgba(0, 0, 0, 0.06);
  --sombra-forte: 0 8px 24px rgba(0, 0, 0, 0.12);

  color-scheme: light;
}

/*
 * Tema escuro. Só troca token — nenhuma regra de layout se repete aqui, e é
 * de propósito: quem mexer no claro acerta o escuro junto.
 *
 * O seletor é o atributo `data-tema` do <html>, escrito pelo servidor
 * (App\Support\Tema) ou pelo script inline do <head>, nunca por media query
 * — quem escolheu "claro" num aparelho no escuro tem de continuar no claro.
 */
[data-tema='escuro'] {
  /*
   * No escuro os papéis se invertem: o rosé claro vira a cor de texto e
   * ícone (é ele que tem contraste sobre fundo escuro), e o tom fechado
   * passa a ser o fundo de botão.
   */
  --marca: #e08a9c;
  --marca-forte: #f0b8c2;
  --marca-clara: #f0b8c2;

  /* Invertido: o rosé claro carrega texto escuro. Ver o comentário no :root. */
  --btn-fundo: #e08a9c;
  --btn-tinta: #171416;
  --btn-fundo-hover: #f0b8c2;

  /* No escuro o topo fecha mais, para não competir com o conteúdo. */
  --topo-fundo: #3d1d27;
  --topo-tinta: #f6e6ea;
  --topo-suave: #c9a0ac;
  --topo-borda: #562b37;
  --verde: #35cdbe;
  --fundo: #171416;
  --alerta: #ff8484;

  --texto: #f4eff1;
  --texto-suave: #a89aa1;
  --superficie: #201c1f;
  --superficie-alta: #272227;
  --realce: #2a252a;
  --borda: #332c32;

  --ok-fundo: rgba(42, 183, 169, 0.14);
  --ok-borda: rgba(42, 183, 169, 0.34);
  --ok-texto: #6fdccf;
  --erro-fundo: rgba(255, 107, 107, 0.14);
  --erro-borda: rgba(255, 107, 107, 0.34);
  --erro-texto: #ff9c9c;
  --info-fundo: rgba(108, 152, 245, 0.14);
  --info-borda: rgba(108, 152, 245, 0.34);
  --info-texto: #9dbcff;
  --atencao-fundo: rgba(198, 108, 74, 0.16);
  --atencao-borda: rgba(198, 108, 74, 0.36);
  --atencao-texto: #e0a184;
  --neutro-fundo: #262a31;
  --neutro-texto: #9aa0aa;

  --sombra: 0 4px 12px rgba(0, 0, 0, 0.4);
  --sombra-forte: 0 8px 24px rgba(0, 0, 0, 0.55);

  /* Faz o navegador pintar barras de rolagem, seletores de data e o interior
     dos <select> no escuro. Sem isto sobra um retângulo branco no meio da
     tela escura, e não há CSS nosso que alcance esses controles. */
  color-scheme: dark;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--font-ui);
  color: var(--texto);
  background: var(--fundo);
  font-size: 16px;
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
}

a { color: var(--marca-forte); }

/* ---------------------------------------------------------------- topo --- */

.topo {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 16px;
  background: var(--topo-fundo);
  color: var(--topo-tinta);
  box-shadow: var(--sombra);
}

.topo__marca {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-brand);
  font-weight: 600;
  color: var(--topo-tinta);
  text-decoration: none;
  white-space: nowrap;
}

.topo__marca img { display: block; width: 28px; height: 28px; }
.topo__salao { font-size: 0.8rem; color: var(--topo-suave); margin-left: auto; text-align: right; }
.topo__salao strong { display: block; color: var(--topo-tinta); font-size: 0.9rem; }

.topo__sair {
  color: var(--topo-suave);
  text-decoration: none;
  font-size: 0.85rem;
  border: 1px solid var(--topo-borda);
  border-radius: var(--raio);
  padding: 6px 10px;
}

.topo__sair:hover { background: var(--topo-borda); color: var(--topo-tinta); }

/* --------------------------------------------------------------- navegação */

.nav {
  display: flex;
  gap: 4px;
  overflow-x: auto;
  padding: 8px 12px;
  background: var(--superficie);
  border-bottom: 1px solid var(--borda);
  scrollbar-width: none;
}

.nav::-webkit-scrollbar { display: none; }

.nav a {
  flex: 0 0 auto;
  padding: 8px 14px;
  border-radius: 999px;
  color: var(--texto-suave);
  text-decoration: none;
  font-size: 0.9rem;
  font-weight: 500;
  white-space: nowrap;
}

.nav a:hover { background: var(--fundo); color: var(--texto); }
.nav a[aria-current='page'] { background: var(--btn-fundo); color: var(--btn-tinta); }

/* -------------------------------------------------------------- conteúdo --- */

.conteudo { max-width: 1100px; margin: 0 auto; padding: 16px 16px 48px; }

.cabecalho {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
}

.cabecalho h1 {
  font-family: var(--font-brand);
  font-size: 1.4rem;
  margin: 0;
  flex: 1 1 auto;
}

.cartao {
  background: var(--superficie);
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  box-shadow: var(--sombra);
  padding: 16px;
  margin-bottom: 16px;
}

.cartao h2 { font-family: var(--font-brand); font-size: 1.05rem; margin: 0 0 12px; }

/* ------------------------------------------------------------ indicadores --- */

.kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}

.kpi {
  background: var(--superficie);
  border: 1px solid var(--borda);
  border-left: 4px solid var(--marca);
  border-radius: var(--raio);
  box-shadow: var(--sombra);
  padding: 14px 16px;
}

.kpi--verde { border-left-color: var(--verde); }
.kpi--alerta { border-left-color: var(--alerta); }

.kpi__rotulo {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--texto-suave);
}

.kpi__valor {
  font-family: var(--font-brand);
  font-size: 1.6rem;
  font-weight: 600;
  line-height: 1.2;
}

.kpi__valor--negativo { color: var(--alerta); }

/* ---------------------------------------------------------------- tabela --- */

.tabela-rolagem { overflow-x: auto; margin: 0 -16px; padding: 0 16px; }

table { width: 100%; border-collapse: collapse; font-size: 0.92rem; }

th, td {
  text-align: left;
  padding: 10px 12px;
  border-bottom: 1px solid var(--borda);
  white-space: nowrap;
}

th {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--texto-suave);
  background: var(--superficie-alta);
}

tbody tr:hover { background: var(--realce); }
td.numero, th.numero { text-align: right; }
.acoes { display: flex; gap: 6px; justify-content: flex-end; }

.vazio { padding: 32px 16px; text-align: center; color: var(--texto-suave); }

/* ---------------------------------------------------------------- botões --- */

.btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 16px;
  border: 1px solid transparent;
  border-radius: var(--raio);
  font-family: var(--font-ui);
  font-size: 0.9rem;
  font-weight: 500;
  cursor: pointer;
  text-decoration: none;
  background: var(--btn-fundo);
  color: var(--btn-tinta);
}

.btn:hover { background: var(--btn-fundo-hover); color: var(--btn-tinta); }

.btn--secundario { background: var(--superficie); color: var(--texto); border-color: var(--borda); }
.btn--secundario:hover { background: var(--fundo); }

.btn--perigo { background: transparent; color: var(--alerta); border-color: var(--erro-borda); }
.btn--perigo:hover { background: var(--erro-fundo); }

.btn--mini { padding: 5px 10px; font-size: 0.8rem; }
.btn--bloco { width: 100%; justify-content: center; }

/* ------------------------------------------------------------ botão tema --- */

.btn-tema {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  background: transparent;
  color: var(--texto-suave);
  cursor: pointer;
}

.btn-tema:hover { color: var(--texto); background: var(--realce); }

/*
 * Os dois ícones vêm no HTML e o CSS esconde o que não vale. Antes de o
 * script do <head> rodar não há `data-tema` nenhum, e aí o sol é o certo:
 * o `:root` sem atributo é o tema claro.
 */
.btn-tema__lua { display: none; }
[data-tema='escuro'] .btn-tema__sol { display: none; }
[data-tema='escuro'] .btn-tema__lua { display: block; }

/* No topo grafite o botão precisa da paleta do topo, não a da página. */
.btn-tema--topo { border-color: var(--topo-borda); color: var(--topo-suave); }
.btn-tema--topo:hover { background: var(--topo-borda); color: var(--topo-tinta); }

.btn-tema--pub { border-color: var(--pub-borda); color: var(--pub-suave); }
.btn-tema--pub:hover { background: var(--pub-fundo); color: var(--pub-texto); }

/* ------------------------------------------------------------ formulários --- */

.form-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 14px;
}

.campo { display: flex; flex-direction: column; gap: 5px; }
.campo--largo { grid-column: 1 / -1; }

.campo label { font-size: 0.82rem; font-weight: 600; color: var(--texto-suave); }

.campo input,
.campo select,
.campo textarea {
  font-family: inherit;
  font-size: 1rem;
  padding: 10px 12px;
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  background: var(--superficie);
  color: var(--texto);
  width: 100%;
}

.campo input:focus,
.campo select:focus,
.campo textarea:focus {
  outline: 2px solid var(--marca);
  outline-offset: -1px;
  border-color: var(--marca);
}

.campo--erro input, .campo--erro select, .campo--erro textarea { border-color: var(--alerta); }
.campo__erro { font-size: 0.8rem; color: var(--alerta); }
.campo__dica { font-size: 0.78rem; color: var(--texto-suave); }

/* ------------------------------------------------------- força da senha --- */

.forca { display: flex; align-items: center; gap: 10px; }

.forca__trilha {
  flex: 1;
  height: 5px;
  border-radius: 999px;
  background: var(--neutro-fundo);
  overflow: hidden;
}

.forca__barra {
  height: 100%;
  width: 0;
  border-radius: 999px;
  background: var(--alerta);
  transition: width 0.15s ease, background 0.15s ease;
}

.forca__rotulo { font-size: 0.78rem; color: var(--texto-suave); }

.forca--fraca .forca__barra { background: var(--alerta); }
.forca--media .forca__barra { background: var(--marca); }
.forca--forte .forca__barra { background: var(--verde); }

.forca--fraca .forca__rotulo { color: var(--erro-texto); }
.forca--forte .forca__rotulo { color: var(--ok-texto); }

.campo--checkbox { flex-direction: row; align-items: center; gap: 8px; }
.campo--checkbox input { width: auto; }
.campo--checkbox label { font-size: 0.92rem; color: var(--texto); }

.form-acoes {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--borda);
}

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

.filtros .campo { flex: 1 1 150px; }

/* --------------------------------------------------------------- avisos --- */

.aviso {
  padding: 12px 14px;
  border-radius: var(--raio);
  margin-bottom: 14px;
  font-size: 0.92rem;
  border: 1px solid;
}

.aviso--sucesso { background: var(--ok-fundo); border-color: var(--ok-borda); color: var(--ok-texto); }
.aviso--erro { background: var(--erro-fundo); border-color: var(--erro-borda); color: var(--erro-texto); }
.aviso--atencao { background: var(--atencao-fundo); border-color: var(--atencao-borda); color: var(--atencao-texto); }

.aviso a { color: inherit; font-weight: 600; }

/* --------------------------------------------------------------- etiquetas --- */

.etiqueta {
  display: inline-block;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 600;
  background: var(--fundo);
  color: var(--texto-suave);
  border: 1px solid var(--borda);
}

.etiqueta--scheduled { background: var(--info-fundo); color: var(--info-texto); border-color: var(--info-borda); }
.etiqueta--in_progress { background: var(--atencao-fundo); color: var(--atencao-texto); border-color: var(--atencao-borda); }
.etiqueta--done { background: var(--ok-fundo); color: var(--ok-texto); border-color: var(--ok-borda); }
.etiqueta--cancelled { background: var(--neutro-fundo); color: var(--neutro-texto); }
.etiqueta--inativo { background: var(--neutro-fundo); color: var(--neutro-texto); }
.etiqueta--income { background: var(--ok-fundo); color: var(--ok-texto); border-color: var(--ok-borda); }
.etiqueta--expense { background: var(--erro-fundo); color: var(--erro-texto); border-color: var(--erro-borda); }

/* --------------------------------------------------------------- gráfico --- */

.barras { display: flex; align-items: flex-end; gap: 4px; height: 120px; }

.barras__item { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; height: 100%; }

.barras__barra {
  background: linear-gradient(180deg, var(--marca), var(--marca-forte));
  border-radius: 3px 3px 0 0;
  min-height: 2px;
}

.barras__legenda {
  display: flex;
  gap: 4px;
  margin-top: 6px;
  font-size: 0.65rem;
  color: var(--texto-suave);
}

.barras__legenda span { flex: 1; text-align: center; }

/* ----------------------------------------------------------------- login --- */

.login {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px 16px;
  background: linear-gradient(160deg, var(--topo-fundo), var(--topo-borda));
}

.login__caixa {
  width: 100%;
  max-width: 380px;
  background: var(--superficie);
  border-radius: 12px;
  box-shadow: var(--sombra-forte);
  padding: 28px 24px;
}

.login__marca { text-align: center; margin-bottom: 20px; }
.login__marca img { width: 64px; height: 64px; }
.login__marca h1 { font-family: var(--font-brand); font-size: 1.3rem; margin: 8px 0 2px; }
.login__marca p { margin: 0; color: var(--texto-suave); font-size: 0.86rem; }

.login__apoio {
  display: flex;
  justify-content: center;
  gap: 10px;
  margin: 18px 0 0;
  font-size: 0.86rem;
}

.login__apoio span { color: var(--texto-suave); }

/* --------------------------------------------------------------- desktop --- */

@media (min-width: 768px) {
  .conteudo { padding: 24px 24px 64px; }
  .cabecalho h1 { font-size: 1.7rem; }
  .tabela-rolagem { margin: 0; padding: 0; }
}
