/* Design tokens (shadcn/ui + Tailwind 4) — compartilhados por application.css e artifact.css.
 *
 * Identidade Neue adaptada ao produto: ver docs/workstation-brand.md.
 * Cada tema define âncoras — marca (--brand), matiz das superfícies (--surface-hue),
 * rampa de superfícies (--background + --surface-1/2/3), "tinta" de texto
 * (--ink-l/--ink-c, aplicada com alpha ~90/55/35%) e cores de status.
 * Todos os tokens shadcn (card, popover, muted, border, ring…) são derivações
 * definidas UMA vez em :root; o bloco .dark troca apenas as âncoras.
 * Os hex de referência do protótipo aprovado ficam em comentário ao lado.
 *
 * Regras:
 * - Marca é UMA cor (--brand); status usam --success/--warning/--destructive,
 *   nunca a marca.
 * - Bordas são sempre 1px translúcidas (tinta com alpha baixo), nunca sombras.
 * - Agentes usam o acento da marca; bg-agent / bg-agent-soft acompanham o tema.
 */



:root {
  --font-product: 'PP Neue Montreal', ui-sans-serif, system-ui, sans-serif;
  --radius: 0.5rem;

  /* ===== Âncoras — tema claro ===== */

  /* Matiz único das superfícies neutras (azul acinzentado). */
  --surface-hue: 264;

  /* Marca (token único de marca). */
  --brand: #123bff; /* Neue: ação principal, nos dois temas */
  --brand-foreground: #ffffff;
  --brand-accent: #123bff; /* texto e seleção de controles */
  --brand-hover: #082cd8;

  /* Rampa de superfícies: o canvas principal fica quase branco e a navegação
     global usa um cinza neutro ligeiramente mais baixo. Cards/popovers seguem
     em branco puro; surface-3 continua sendo o fill rebaixado. */
  --background: oklch(0.995 0.0003 var(--surface-hue)); /* canvas quase branco */
  --surface-1: oklch(0.9675 0.0015 var(--surface-hue)); /* sidebar cinza sutil */
  --surface-2: oklch(1 0 0); /* #FFFFFF */
  --surface-3: oklch(0.9555 0.003 var(--surface-hue)); /* fill rebaixado neutro */

  /* Tinta de texto: um par L/C por tema; os níveis de texto e as bordas saem
     daqui via alpha (anchors abaixo, por tema — protótipo aprovado). */
  --ink-l: 0.145; /* quase preto #0B0910 */
  --ink-c: 0.008;
  --ink-a-hi: 93%; /* rgba(24,22,32,.93) */
  --ink-a-mid: 60%; /* rgba(24,22,32,.60) */
  --ink-a-low: 38%; /* rgba(24,22,32,.38) */
  --border-a: 9%; /* rgba(29,27,36,.09) — borda padrão */
  --border-strong-a: 16%; /* rgba(29,27,36,.16) — borda forte */

  /* Status — semântica exclusiva (nunca usar a marca para status). */
  --success: oklch(0.627 0.194 149.214); /* #16A34A */
  --success-foreground: oklch(1 0 0);
  --warning: oklch(0.666 0.179 58.318); /* #D97706 */
  --warning-foreground: oklch(1 0 0);
  --destructive: oklch(0.577 0.245 27.325); /* default shadcn (light) — mantido */
  --destructive-foreground: oklch(1 0 0);

  /* Identidade dos agentes deriva do acento, sem uma segunda cor de marca. */
  --agent-soft-alpha: 10%;
  --agent-foreground: var(--primary-foreground);

  /* Charts — fora do escopo do V.1; valores default do shadcn mantidos. */
  --chart-1: oklch(0.646 0.222 41.116);
  --chart-2: oklch(0.6 0.118 184.704);
  --chart-3: oklch(0.398 0.07 227.392);
  --chart-4: oklch(0.828 0.189 84.429);
  --chart-5: oklch(0.769 0.188 70.08);

  /* Grafo de memória — categorias relacionais do Canvas. Mantidas como
     tokens porque CanvasRenderingContext2D não resolve classes Tailwind. */
  --memory-link-semantic: #5e73b8;
  --memory-link-temporal: #7d6bb3;
  --memory-link-entity: #9b6d9f;
  --memory-link-causal: #6c47d8;
  --memory-focus: #123bff;
  --memory-fact-world: #6c47d8;
  --memory-fact-experience: #b95383;
  --memory-fact-observation: #496fc5;

  /* ===== Derivações (definidas uma única vez; var() resolve por tema) ===== */

  /* Texto em 3 níveis de opacidade da tinta. */
  --foreground: oklch(var(--ink-l) var(--ink-c) var(--surface-hue) / var(--ink-a-hi));
  --muted-foreground: oklch(var(--ink-l) var(--ink-c) var(--surface-hue) / var(--ink-a-mid));
  --faint-foreground: oklch(var(--ink-l) var(--ink-c) var(--surface-hue) / var(--ink-a-low));

  /* Cards e composer na superfície mais alta (#FFFFFF no claro), como no
     protótipo; surface-1 fica para a sidebar. */
  --card: var(--surface-2);
  --card-foreground: var(--foreground);
  --popover: var(--surface-2);
  --popover-foreground: var(--foreground);
  --primary: var(--brand-accent);
  /* Primary também é usado por texto/controles: o acento clareia no escuro.
     A ação principal usa brand + brand-foreground, com branco nos dois temas. */
  --primary-foreground: #ffffff;
  --secondary: var(--surface-3);
  --secondary-foreground: var(--foreground);
  --muted: var(--surface-3);
  --accent: var(--surface-3);
  --accent-foreground: var(--foreground);

  /* Bordas 1px translúcidas (tinta com alpha baixo) — nunca sombras.
     --input é a borda forte (composer, "Nova conversa", botões ghost). */
  --border: oklch(var(--ink-l) var(--ink-c) var(--surface-hue) / var(--border-a));
  --input: oklch(var(--ink-l) var(--ink-c) var(--surface-hue) / var(--border-strong-a));
  --ring: var(--brand-accent);

  /* Sidebar um meio-tom abaixo do canvas principal, separada por borda. */
  --sidebar: var(--surface-1);
  --sidebar-foreground: var(--foreground);
  --sidebar-primary: var(--primary);
  --sidebar-primary-foreground: var(--primary-foreground);
  --sidebar-accent: var(--accent);
  --sidebar-accent-foreground: var(--accent-foreground);
  --sidebar-border: var(--border);
  --sidebar-ring: var(--ring);
}

/* ===== Âncoras — tema escuro (só as âncoras mudam; derivações acompanham) ===== */
.dark {
  --brand-accent: #83a4ff; /* Neue: texto/foco legível sobre superfícies escuras */
  --primary-foreground: #030715;

  --background: #030715; /* Neue: fundo noturno */
  --surface-1: #070e24; /* Neue: painel */
  --surface-2: #0d1730; /* elevação de produto: composer/popover */
  --surface-3: #18243d; /* elevação de produto: hover/inset */

  --ink-l: 0.985; /* quase branco #FAF9FD */
  --ink-c: 0.005;
  --ink-a-hi: 92%; /* rgba(255,255,255,.92) */
  --ink-a-mid: 55%; /* rgba(255,255,255,.55) */
  --ink-a-low: 34%; /* rgba(255,255,255,.34) */
  --border-a: 8%; /* rgba(255,255,255,.08) */
  --border-strong-a: 14%; /* rgba(255,255,255,.14) */

  /* Status claros sobre fundo escuro pedem texto escuro (destructive segue o
     default shadcn dark, já usado hoje com text-white nos componentes). */
  --success: oklch(0.765 0.177 163.223); /* #34D399 */
  --success-foreground: oklch(0.15 0.01 295.5);
  --warning: oklch(0.828 0.189 84.429); /* #FBBF24 */
  --warning-foreground: oklch(0.15 0.01 295.5);
  --destructive: oklch(0.704 0.191 22.216); /* default shadcn (dark) — mantido */
  --destructive-foreground: oklch(0.15 0.01 295.5);

  --agent-soft-alpha: 13%;

  --chart-1: oklch(0.488 0.243 264.376);
  --chart-2: oklch(0.696 0.17 162.48);
  --chart-3: oklch(0.769 0.188 70.08);
  --chart-4: oklch(0.627 0.265 303.9);
  --chart-5: oklch(0.645 0.246 16.439);

  --memory-link-semantic: #91a0dc;
  --memory-link-temporal: #a89adb;
  --memory-link-entity: #d294ba;
  --memory-link-causal: #8b5cf6;
  --memory-focus: #83a4ff;
  --memory-fact-world: #a78bfa;
  --memory-fact-experience: #e486b1;
  --memory-fact-observation: #7f9fe8;
}

/* Os nomes públicos dos tokens são preservados para os componentes existentes. */
:where(*) {
  --agent: var(--primary);
  --agent-soft: color-mix(in srgb, var(--primary) var(--agent-soft-alpha), transparent);
}

