/* Tokens Aurora (#225): cores, estados, superfícies, fontes e dimensões.
 * Estados conservam papéis próprios; componentes não declaram cores de sessão.
 */

:root {
  --accent: #d5eea3;
  /* Primárias. `--primary` é escuro a ponto de ler como neutro — é intencional. */
  --primary: #173e32;
  --on-primary: #ffffff;
  --primary-container: #28654e;
  --on-primary-container: #dceee4;
  --secondary: #516629;
  --on-secondary: #ffffff;
  --secondary-container: #e4efc9;
  --on-secondary-container: #30451c;
  --secondary-fixed: #edf5dc;
  --on-secondary-fixed: #30451c;
  --tertiary: #2d0004;
  --on-tertiary: #ffffff;
  --tertiary-container: #8c1a22;
  --on-tertiary-container: #ffe3e0;

  /* Superfície: os degraus do empilhamento tonal, do fundo ao elemento mais alto. */
  --surface: #f5f6f2;
  --surface-dim: #e5e9e0;
  --surface-bright: #ffffff;
  --surface-container-lowest: #ffffff;
  --surface-container-low: #f0f3ed;
  --surface-container: #eaf0e7;
  --surface-container-high: #e2eadf;
  --surface-container-highest: #dce5d8;

  --on-surface: #25372e;
  --on-surface-variant: #46574b;
  --outline-variant: #66786b;

  /* Sombra ambiente: blur alto, opacidade baixa e cor tingida em `on-surface`. Preto
   * puro suja a superfície azulada e faz o card parecer recortado, não pousado. */
  --shadow-ambient: 0 12px 40px -16px #173e3224;
  --shadow-ambient-soft: 0 6px 22px -12px #173e321c;

  /* Ghost border — sugestão de contorno, aplicada por `box-shadow: inset`. */
  --ghost: #263e2910;
  --ghost-strong: #263e2920;

  --info-container: #e6edfc;
  --on-info-container: #304e87;
  --surface-muted: #9cae9f;

  /* Estados de sessão: pares semânticos compartilhados com contraste próprio. */
  --evento-prevista: var(--info-container);
  --on-evento-prevista: var(--on-info-container);
  /* Realizada recua para uma superfície neutra, mantendo o anel da agenda. */
  --evento-realizada: var(--surface-muted);
  --on-evento-realizada: var(--primary);
  --evento-falta: var(--on-tertiary-container);
  --on-evento-falta: var(--tertiary-container);
  --evento-encaixe: var(--secondary-container);
  --on-evento-encaixe: var(--on-secondary-container);
  --evento-encaixe-anel: var(--secondary);
  /* Bloqueio: dois degraus de superfície, que viram as listras do hachurado. */
  --evento-bloqueio-listra: var(--surface-container-highest);
  --evento-bloqueio-fundo: var(--surface-container-low);

  /* Rotina do local (#116) — a camada de consulta do Google. NÃO ganha cor própria de
   * propósito: ela se distingue da sessão por FORMA (papel hachurado sem preenchimento
   * sólido, filete à esquerda), e uma sexta cor no produto diria "outro tipo de evento"
   * quando o que se quer dizer é "outro tipo de coisa". Reusa superfície e contorno. */
  --rotina-papel: var(--surface-container-low);
  --rotina-listra: var(--surface-container-high);
  --rotina-filete: var(--outline-variant);
  --on-rotina: var(--on-surface-variant);
  /* A barra de dia inteiro é o mesmo papel virado do avesso: fundo sólido com texto claro
   * por cima. Ela NÃO pode usar o filete como fundo — `outline-variant` sob `--surface` dá
   * ~3,1:1, abaixo do mínimo de 4,5:1 para texto de 11px, e a única linha da agenda que
   * precisa gritar "hoje não é um dia normal" seria a menos legível da tela. Um degrau mais
   * escuro passa a 6,3:1 e reforça o argumento de sempre: o destaque é por LUMINÂNCIA. */
  --rotina-barra: var(--on-surface-variant);

  /* Estado de um serviço (o espelho no Google, hoje). Verde não existe nesta paleta, e
   * inventar um só para o "em dia" traria uma sexta cor ao produto para dizer o que a
   * cor da marca já diz — o que precisa saltar é o erro. */
  --estado-ok: var(--primary-container);
  --estado-erro: var(--tertiary-container);

  --radius-sm: 0.75rem;
  --radius-md: 0.85rem;
  --radius-lg: 1rem;
  --radius-xl: 1.5rem;
  --radius-full: 999px;

  --font-display: 'Manrope', system-ui, -apple-system, sans-serif;
  --font-body: 'Plus Jakarta Sans', system-ui, -apple-system, sans-serif;

  /* Alvo mínimo de toque. Vive como token porque botão, campo e ícone precisam
   * concordar — três números soltos divergem no primeiro componente novo. */
  --alvo-minimo: 44px;

  /* A altura de um controle de formulário. Não é o mesmo que o alvo mínimo: o alvo é o
   * PISO que a acessibilidade cobra, e este é a MEDIDA que campo e botão compartilham
   * quando dividem uma linha.
   *
   * Vive como token porque a divergência já aconteceu: o campo media 48px e o botão
   * pequeno ao lado dele, 36px. Alinhados pela base — que é o que uma linha de formulário
   * faz —, as bases coincidiam e os centros não, e o botão parecia afundado ao lado do
   * campo. Dois números soltos em duas folhas não se corrigem juntos. */
  --altura-controle: 48px;
}
