/*
 * TOKENS DE TEMA — o ÚNICO arquivo CSS com seletor de tema (ordem do dono, 10/10/2026:
 * «O CSS precisa ser único e determinístico»). `npm run gate:tema-unico` reprova
 * `[data-theme` ou `prefers-color-scheme` em qualquer outro .css do repositório
 * (exceção declarada: `modules/config/`, módulo portável — ver o cabeçalho do gate).
 *
 * Semântica, igual à de antes da mudança:
 *   <html data-theme="light">  força claro
 *   <html data-theme="dark">   força escuro
 *   <html> sem `data-theme`    segue `prefers-color-scheme` (modo sistema)
 *
 * Aqui só se declaram custom properties em `:root`. Quem pinta é o arquivo do
 * componente, sempre por `var(--x)`; nenhum componente decide tema. Token de módulo
 * leva o prefixo do módulo (`--gpu-*`, `--mail-*`, `--panel-*`, `--consumo-*`).
 * `--ds-*` é o Design System universal (preset «superadmin», 23/10/2026, canônico em
 * docs/DESIGN-SYSTEM-CANONICO.md); `--panel-*` é alias dele — uma origem só.
 * Os valores vieram LITERAIS dos blocos de tema que existiam em cada arquivo — trocar
 * um deles exige medir o contraste de novo (validadores citados em cada seção).
 *
 * Importado no topo de `app/globals.css`.
 */

/* ── Escuro: padrão sem preferência clara, e o forçado por data-theme="dark" ── */
:root,
:root[data-theme="dark"] {
  color-scheme: dark;

  /* Véu atrás do carregamento do hard reload. */
  --session-loading-veu: rgba(2, 6, 12, .82);
  /* Wordmark: `cons` é #ffffff no escuro (skill `logo`). */
  --logo-cons: #ffffff;


  /* /gpus — modules/gpus/ui/GpuDashboard.module.css. */
  --gpu-background: #0b111b;
  --gpu-surface: #0f1724;
  --gpu-elevated: #162235;
  --gpu-foreground: #f8fafc;
  --gpu-muted: #b6c3d1;
  --gpu-subtle: #91a3b8;
  --gpu-accent: #22d3ee;
  --gpu-accent-foreground: #051016;
  --gpu-border: #64748b;
  --gpu-border-soft: #334155;
  --gpu-focus: #facc15;
  --gpu-success: #6ee7b7;
  --gpu-warning: #fbbf24;
  --gpu-danger: #fca5a5;
  --gpu-series-memory: #a78bfa;
  --gpu-series-power: #fbbf24;
  /* Placa TEXT: acento laranja no lugar do ciano. */
  --gpu-text-accent: #fb923c;
  --gpu-text-accent-foreground: #1a0b02;

  /* E-mail — modules/mailbox/ui/Email.module.css (aparência do iCloud no escuro). */
  /* literal = --access-panel escuro de modules/config/design_system/tokens.css: test:email-contraste só resolve var() no próprio bloco */
  --mail-background: #0b0f17;
  --mail-surface: #1d222c;
  --mail-surface-elevated: #282f3b;
  --mail-foreground: #f3f5f9;
  --mail-foreground-muted: #b7c1d0;
  --mail-foreground-subtle: #aab6c8;
  --mail-primary: #7ac7f5;
  --mail-primary-foreground: #101c28;
  --mail-secondary: #303b4c;
  --mail-secondary-foreground: #f3f5f9;
  --mail-border: #748296;
  --mail-divider: #3c4656;
  --mail-focus: #91d3fa;
  --mail-success: #9be4b4;
  --mail-warning: #f4d295;
  --mail-error: #ffb6be;
  --mail-info: #a4cfff;
  --mail-selected: #34475d;
  /* Correio: leitura, contas e janelas compartilham o tema da sessão. */
  --mail-sidebar:#202022;--mail-list:#1c1c1e;--mail-paper:#1c1c1e;
  --mail-line:#3d3d42;--mail-search:#333337;--mail-topbar:#242426;
  --mail-ink:#f5f5f7;--mail-muted:#b1b1ba;--mail-blue:#70b5ff;
  --mail-selection:#075fce;--mail-selected-ink:#fff;--mail-control-border:#80808a;
  --mail-action-bg:#233349;--mail-danger:#ffb1ad;--mail-danger-bg:#392728;
  --mail-positive:#a0ddbb;--mail-positive-bg:#203b30;
  --mail-caution:#f4d295;--mail-caution-bg:#3b3221;


  /* ── Design System universal `--ds-*`, preset «superadmin» (ordem do dono, 23/10/2026;
     canônico em docs/DESIGN-SYSTEM-CANONICO.md, achado 1 «dois design systems»).
     `--ds-*` é a ÚNICA origem; `--panel-*` abaixo é ALIAS (var(--ds-*)). Valores idênticos
     aos que `--panel-*` tinha — paleta teal/areia medida, nenhuma cor trocada. Nomes seguem
     financeiro/modules/design_system/design/gerar_tokens.py (`_`→`-`: brand-soft, on-brand,
     tab-area, tab-border). tab-area/tab-border já coincidem com o universal nos dois temas. ── */
  --ds-paper: var(--access-panel);
  --ds-hero: #07172e;          /* regra nova 2 (dono, 23/10/2026): hero sempre da mesma cor, nos dois temas */
  --ds-on-hero: #f8f9fe;
  --ds-surface: #0b0f17;
  --ds-brand-soft: #0d2630;
  --ds-surface-elevated: #141c29;
  --ds-ink: #edf2fa;
  --ds-muted: #a3b1c6;
  --ds-subtle: #8f9eb4;
  --ds-brand: #67dced;
  --ds-on-brand: #05070d;
  --ds-secondary: #a3b1c6;
  --ds-on-secondary: #05070d;
  --ds-line: #65758b;
  --ds-focus-ring: #67dced;
  --ds-positive: #8de5c3;
  --ds-on-positive: #05070d;
  --ds-warning: #ffbb83;
  --ds-on-warning: #05070d;
  --ds-danger: #ff9e9e;
  --ds-on-danger: #05070d;
  --ds-info: #67dced;
  --ds-on-info: #05070d;
  --ds-tab-background: #0b1721;
  --ds-tab-area: #0b1019;
  --ds-tab-border: #24414c;
  /* Medidas, sem tema (declaradas uma vez: `:root` casa em todo tema). */
  /* divergência registrada: universal 16px (tokens.json forma.raio.cartao); decisão do dono pendente. */
  --ds-radius-cartao: 12px;
  --ds-radius-botao: 12px; /* aba, Voltar, LabelButton (REQUISITOS); igual ao universal */
  --ds-radius-area: 14px; /* área de conteúdo das abas (REQUISITOS) */
  --ds-target-min: 40px; /* altura mínima de controle (REQUISITOS, contrato.ts) */
  /* Escala de espaço (canônico, item 5: «precisam virar space-1…8»). Premissa desta frente:
     grade de 4 px inferida dos valores literais do REQUISITOS (8/12/16/20/24); sem consumidor
     ainda; o dono pode trocar sem efeito em tela. */
  --ds-space-1: 4px;
  --ds-space-2: 8px;
  --ds-space-3: 12px;
  --ds-space-4: 16px;
  --ds-space-5: 20px;
  --ds-space-6: 24px;
  --ds-space-7: 32px;
  --ds-space-8: 40px;
  /* Modal canônico (ordem do dono, 23/10/2026: abre no centro, move e redimensiona; componente
     único do DS = modules/design_system/ui/SystemDialog). Sem tema: medidas e véus pretos translúcidos. */
  --ds-modal-radius: 16px;
  --ds-modal-shadow: 0 8px 24px rgba(13,15,34,.06);
  --ds-modal-backdrop: rgba(13, 15, 34, 0.56);
  --ds-modal-z: 400;
  --ds-modal-sm: 480px;
  --ds-modal-md: 720px;
  --ds-modal-lg: 960px;
  --ds-modal-xl: min(1200px, calc(100vw - 48px));
  --ds-modal-min-w: 360px;
  --ds-modal-min-h: 240px;
  --ds-modal-margin: 16px;
  --ds-modal-margin-xl: 48px;
  --ds-modal-mobile: 600px;
  --ds-modal-step: 16px;
  --ds-modal-step-shift: 64px;
  --ds-modal-handle: 8px;

  /* Painéis de catálogo — mesma paleta em Ecossistema, Aplicativos do sistema,
     Módulos reutilizáveis e Clone da estação. Cada `.root` mapeia `--surface` etc.
     para estes. Desde 23/10/2026 são ALIASES de `--ds-*` (acima); valor computado
     inalterado. `--panel-universal-surface` = caixa de destaque dos módulos universais
     (14/10/2026); `--panel-tab-*` = área de conteúdo das abas (17/10/2026). */
  --panel-background: var(--ds-paper);
  --panel-surface: var(--ds-surface);
  --panel-universal-surface: var(--ds-brand-soft);
  --panel-surface-elevated: var(--ds-surface-elevated);
  --panel-foreground: var(--ds-ink);
  --panel-foreground-muted: var(--ds-muted);
  --panel-foreground-subtle: var(--ds-subtle);
  --panel-primary: var(--ds-brand);
  --panel-primary-foreground: var(--ds-on-brand);
  --panel-secondary: var(--ds-secondary);
  --panel-secondary-foreground: var(--ds-on-secondary);
  --panel-border: var(--ds-line);
  --panel-focus: var(--ds-focus-ring);
  --panel-success: var(--ds-positive);
  --panel-success-foreground: var(--ds-on-positive);
  --panel-warning: var(--ds-warning);
  --panel-warning-foreground: var(--ds-on-warning);
  --panel-error: var(--ds-danger);
  --panel-error-foreground: var(--ds-on-danger);
  --panel-info: var(--ds-info);
  --panel-info-foreground: var(--ds-on-info);
  --panel-tab-background: var(--ds-tab-background);
  --panel-tab-area-background: var(--ds-tab-area);
  --panel-tab-area-border: var(--ds-tab-border);

  /* /consumo — faixas de governança (RegrasDeConsumo) e atividade do CLI (Consumo). */
  --consumo-faixa-verde: #4ade80;
  --consumo-faixa-amarelo: #facc15;
  --consumo-faixa-vermelho: #f87171;
  --consumo-activity-active: #4ade80;
  --consumo-activity-inactive: #f87171;
  --consumo-activity-unknown: #94a3b8;

  /* /token › Regras de consumo (K6–K10, 31/10/2026): séries do gráfico, badge Code/Codex e estados da máquina. */
  --serie-code: #f0a36b;
  --serie-codex: #4fd1a1;
  --ia-code-fundo: #24180f;
  --ia-code-borda: #5c3b22;
  --ia-code-badge: #3b2616;
  --ia-code-texto: #fdd2b0;
  --ia-codex-fundo: #1b1d21;
  --ia-codex-borda: #41464e;
  --ia-codex-badge: #2b2f35;
  --ia-codex-texto: #d6d9de;
  --consumo-estado-ok: #34d399;
  --consumo-estado-warn: #fdba74;
  --consumo-estado-action: #c2410c;
  --consumo-estado-bad: #fca5a5;
  --consumo-estado-muted: #94a3b8;
}

/* ── Claro. O MESMO conteúdo vale para os dois gatilhos abaixo: `data-theme="light"`
   e o sistema claro sem `data-theme="dark"`. Mudou um, muda o outro. ── */
:root[data-theme="light"] {
  color-scheme: light;

  --session-loading-veu: rgba(244, 241, 234, .88);
  --logo-cons: #111111;


  --gpu-background: #f4f1ea;
  --gpu-surface: #fbf9f4;
  --gpu-elevated: #ffffff;
  --gpu-foreground: #14171a;
  --gpu-muted: #4a4d52;
  --gpu-subtle: #5c5f64;
  --gpu-accent: #0e7490;
  --gpu-accent-foreground: #ffffff;
  --gpu-border: #857f73;
  --gpu-border-soft: #d6d1c6;
  --gpu-focus: #1d4ed8;
  --gpu-success: #047857;
  --gpu-warning: #b45309;
  --gpu-danger: #b91c1c;
  --gpu-series-memory: #6d28d9;
  --gpu-series-power: #b45309;
  --gpu-text-accent: #c2410c;
  --gpu-text-accent-foreground: #ffffff;

  --mail-background: #f4f1ea;
  --mail-surface: #fbf9f4;
  --mail-surface-elevated: #ffffff;
  --mail-foreground: #14171a;
  --mail-foreground-muted: #4a4d52;
  --mail-foreground-subtle: #5c5f64;
  --mail-primary: #0e718c;
  --mail-primary-foreground: #ffffff;
  --mail-secondary: #ede9e0;
  --mail-secondary-foreground: #14171a;
  --mail-border: #8f897d;
  --mail-divider: #d6d1c6;
  --mail-focus: #0e718c;
  --mail-success: #047857;
  --mail-warning: #b83e0b;
  --mail-error: #b91c1c;
  --mail-info: #0e718c;
  --mail-selected: #ede9e0;
  /* Correio: leitura, contas e janelas compartilham o tema da sessão. */
  --mail-sidebar:#f5f5f7;--mail-list:#fff;--mail-paper:#fff;
  --mail-line:#dedee3;--mail-search:#e8e8ed;--mail-topbar:#f7f7f8;
  --mail-ink:#202024;--mail-muted:#62626b;--mail-blue:#005bc8;
  --mail-selection:#0063d9;--mail-selected-ink:#fff;--mail-control-border:#85858d;
  --mail-action-bg:#f0f5fc;--mail-danger:#a92b27;--mail-danger-bg:#fff4f3;
  --mail-positive:#246345;--mail-positive-bg:#eef8f2;
  --mail-caution:#674a12;--mail-caution-bg:#fff8e7;


  /* ── Design System universal `--ds-*`, preset «superadmin» (ordem do dono, 23/10/2026;
     canônico em docs/DESIGN-SYSTEM-CANONICO.md, achado 1 «dois design systems»).
     `--ds-*` é a ÚNICA origem; `--panel-*` abaixo é ALIAS (var(--ds-*)). Valores idênticos
     aos que `--panel-*` tinha — paleta teal/areia medida, nenhuma cor trocada. Nomes seguem
     financeiro/modules/design_system/design/gerar_tokens.py (`_`→`-`: brand-soft, on-brand,
     tab-area, tab-border). tab-area/tab-border já coincidem com o universal nos dois temas. ── */
  --ds-paper: #f4f1ea;
  --ds-hero: #07172e;          /* regra nova 2 (dono, 23/10/2026): hero sempre da mesma cor, nos dois temas */
  --ds-on-hero: #f8f9fe;
  --ds-surface: #fbf9f4;
  --ds-brand-soft: #ecf6f8;
  --ds-surface-elevated: #ffffff;
  --ds-ink: #14171a;
  --ds-muted: #4a4d52;
  --ds-subtle: #5c5f64;
  --ds-brand: #0e7490;
  --ds-on-brand: #ffffff;
  --ds-secondary: #334155;
  --ds-on-secondary: #ffffff;
  --ds-line: #8f897d;
  --ds-focus-ring: #0e7490;
  --ds-positive: #047857;
  --ds-on-positive: #ffffff;
  --ds-warning: #c2410c;
  --ds-on-warning: #ffffff;
  --ds-danger: #b91c1c;
  --ds-on-danger: #ffffff;
  --ds-info: #0e7490;
  --ds-on-info: #ffffff;
  --ds-tab-background: #e8eeec;
  --ds-tab-area: #fdfcf9;
  --ds-tab-border: #cfe1e7;

  /* Painéis de catálogo: aliases de `--ds-*` (23/10/2026). */
  --panel-background: var(--ds-paper);
  --panel-surface: var(--ds-surface);
  --panel-universal-surface: var(--ds-brand-soft);
  --panel-surface-elevated: var(--ds-surface-elevated);
  --panel-foreground: var(--ds-ink);
  --panel-foreground-muted: var(--ds-muted);
  --panel-foreground-subtle: var(--ds-subtle);
  --panel-primary: var(--ds-brand);
  --panel-primary-foreground: var(--ds-on-brand);
  --panel-secondary: var(--ds-secondary);
  --panel-secondary-foreground: var(--ds-on-secondary);
  --panel-border: var(--ds-line);
  --panel-focus: var(--ds-focus-ring);
  --panel-success: var(--ds-positive);
  --panel-success-foreground: var(--ds-on-positive);
  --panel-warning: var(--ds-warning);
  --panel-warning-foreground: var(--ds-on-warning);
  --panel-error: var(--ds-danger);
  --panel-error-foreground: var(--ds-on-danger);
  --panel-info: var(--ds-info);
  --panel-info-foreground: var(--ds-on-info);
  --panel-tab-background: var(--ds-tab-background);
  --panel-tab-area-background: var(--ds-tab-area);
  --panel-tab-area-border: var(--ds-tab-border);

  --consumo-faixa-verde: #047857;
  --consumo-faixa-amarelo: #8a5a00;
  --consumo-faixa-vermelho: #b91c1c;
  --consumo-activity-active: #047857;
  --consumo-activity-inactive: #b91c1c;
  --consumo-activity-unknown: #475569;

  /* /token › Regras de consumo (K6–K10, 31/10/2026). */
  --serie-code: #c2410c;
  --serie-codex: #047857;
  --ia-code-fundo: #fbefe6;
  --ia-code-borda: #e9c4a6;
  --ia-code-badge: #f6dcc8;
  --ia-code-texto: #7c2d12;
  --ia-codex-fundo: #f2f3f5;
  --ia-codex-borda: #d0d4da;
  --ia-codex-badge: #e4e7eb;
  --ia-codex-texto: #374151;
  --consumo-estado-ok: #047857;
  --consumo-estado-warn: #c2410c;
  --consumo-estado-action: #9a3412;
  --consumo-estado-bad: #b91c1c;
  --consumo-estado-muted: #4a4d52;
}

/* ── Sistema claro, sem tema forçado. Cópia exata do bloco claro acima. ── */
@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) {
    color-scheme: light;

    --session-loading-veu: rgba(244, 241, 234, .88);
    --logo-cons: #111111;


    --gpu-background: #f4f1ea;
    --gpu-surface: #fbf9f4;
    --gpu-elevated: #ffffff;
    --gpu-foreground: #14171a;
    --gpu-muted: #4a4d52;
    --gpu-subtle: #5c5f64;
    --gpu-accent: #0e7490;
    --gpu-accent-foreground: #ffffff;
    --gpu-border: #857f73;
    --gpu-border-soft: #d6d1c6;
    --gpu-focus: #1d4ed8;
    --gpu-success: #047857;
    --gpu-warning: #b45309;
    --gpu-danger: #b91c1c;
    --gpu-series-memory: #6d28d9;
    --gpu-series-power: #b45309;
    --gpu-text-accent: #c2410c;
    --gpu-text-accent-foreground: #ffffff;

    --mail-background: #f4f1ea;
    --mail-surface: #fbf9f4;
    --mail-surface-elevated: #ffffff;
    --mail-foreground: #14171a;
    --mail-foreground-muted: #4a4d52;
    --mail-foreground-subtle: #5c5f64;
    --mail-primary: #0e718c;
    --mail-primary-foreground: #ffffff;
    --mail-secondary: #ede9e0;
    --mail-secondary-foreground: #14171a;
    --mail-border: #8f897d;
    --mail-divider: #d6d1c6;
    --mail-focus: #0e718c;
    --mail-success: #047857;
    --mail-warning: #b83e0b;
    --mail-error: #b91c1c;
    --mail-info: #0e718c;
    --mail-selected: #ede9e0;
  /* Correio: leitura, contas e janelas compartilham o tema da sessão. */
  --mail-sidebar:#f5f5f7;--mail-list:#fff;--mail-paper:#fff;
  --mail-line:#dedee3;--mail-search:#e8e8ed;--mail-topbar:#f7f7f8;
  --mail-ink:#202024;--mail-muted:#62626b;--mail-blue:#005bc8;
  --mail-selection:#0063d9;--mail-selected-ink:#fff;--mail-control-border:#85858d;
  --mail-action-bg:#f0f5fc;--mail-danger:#a92b27;--mail-danger-bg:#fff4f3;
  --mail-positive:#246345;--mail-positive-bg:#eef8f2;
  --mail-caution:#674a12;--mail-caution-bg:#fff8e7;


    /* ── Design System universal `--ds-*`, preset «superadmin» (ordem do dono, 23/10/2026;
       canônico em docs/DESIGN-SYSTEM-CANONICO.md, achado 1 «dois design systems»).
       `--ds-*` é a ÚNICA origem; `--panel-*` abaixo é ALIAS (var(--ds-*)). Valores idênticos
       aos que `--panel-*` tinha — paleta teal/areia medida, nenhuma cor trocada. Nomes seguem
       financeiro/modules/design_system/design/gerar_tokens.py (`_`→`-`: brand-soft, on-brand,
       tab-area, tab-border). tab-area/tab-border já coincidem com o universal nos dois temas. ── */
    --ds-paper: #f4f1ea;
    --ds-hero: #07172e;          /* regra nova 2 (dono, 23/10/2026): hero sempre da mesma cor, nos dois temas */
    --ds-on-hero: #f8f9fe;
    --ds-surface: #fbf9f4;
    --ds-brand-soft: #ecf6f8;
    --ds-surface-elevated: #ffffff;
    --ds-ink: #14171a;
    --ds-muted: #4a4d52;
    --ds-subtle: #5c5f64;
    --ds-brand: #0e7490;
    --ds-on-brand: #ffffff;
    --ds-secondary: #334155;
    --ds-on-secondary: #ffffff;
    --ds-line: #8f897d;
    --ds-focus-ring: #0e7490;
    --ds-positive: #047857;
    --ds-on-positive: #ffffff;
    --ds-warning: #c2410c;
    --ds-on-warning: #ffffff;
    --ds-danger: #b91c1c;
    --ds-on-danger: #ffffff;
    --ds-info: #0e7490;
    --ds-on-info: #ffffff;
    --ds-tab-background: #e8eeec;
    --ds-tab-area: #fdfcf9;
    --ds-tab-border: #cfe1e7;

    /* Painéis de catálogo: aliases de `--ds-*` (23/10/2026). */
    --panel-background: var(--ds-paper);
    --panel-surface: var(--ds-surface);
    --panel-universal-surface: var(--ds-brand-soft);
    --panel-surface-elevated: var(--ds-surface-elevated);
    --panel-foreground: var(--ds-ink);
    --panel-foreground-muted: var(--ds-muted);
    --panel-foreground-subtle: var(--ds-subtle);
    --panel-primary: var(--ds-brand);
    --panel-primary-foreground: var(--ds-on-brand);
    --panel-secondary: var(--ds-secondary);
    --panel-secondary-foreground: var(--ds-on-secondary);
    --panel-border: var(--ds-line);
    --panel-focus: var(--ds-focus-ring);
    --panel-success: var(--ds-positive);
    --panel-success-foreground: var(--ds-on-positive);
    --panel-warning: var(--ds-warning);
    --panel-warning-foreground: var(--ds-on-warning);
    --panel-error: var(--ds-danger);
    --panel-error-foreground: var(--ds-on-danger);
    --panel-info: var(--ds-info);
    --panel-info-foreground: var(--ds-on-info);
    --panel-tab-background: var(--ds-tab-background);
    --panel-tab-area-background: var(--ds-tab-area);
    --panel-tab-area-border: var(--ds-tab-border);

    --consumo-faixa-verde: #047857;
    --consumo-faixa-amarelo: #8a5a00;
    --consumo-faixa-vermelho: #b91c1c;
    --consumo-activity-active: #047857;
    --consumo-activity-inactive: #b91c1c;
    --consumo-activity-unknown: #475569;

    /* /token › Regras de consumo (K6–K10, 31/10/2026). */
    --serie-code: #c2410c;
    --serie-codex: #047857;
    --ia-code-fundo: #fbefe6;
    --ia-code-borda: #e9c4a6;
    --ia-code-badge: #f6dcc8;
    --ia-code-texto: #7c2d12;
    --ia-codex-fundo: #f2f3f5;
    --ia-codex-borda: #d0d4da;
    --ia-codex-badge: #e4e7eb;
    --ia-codex-texto: #374151;
    --consumo-estado-ok: #047857;
    --consumo-estado-warn: #c2410c;
    --consumo-estado-action: #9a3412;
    --consumo-estado-bad: #b91c1c;
    --consumo-estado-muted: #4a4d52;
  }
}

/* ══════ CORES DO GESTOR DE SESSÃO · INÍCIO ══════ */
/* Ativo da skill `session-toggle`. NÃO EDITE AQUI.
   reimplantar: node ~/.claude/skills/session-toggle/scripts/harness.mjs --implanta . */
/* Cores do gestor de sessão canônico 3.3.0 — as MESMAS medidas nos dois temas.
   Implantado no arquivo de tokens de tema do app (o único com seletor de tema).
   Sem `data-theme`, vale o modo do sistema; com ele, o modo escolhido.
   Contraste medido: texto ≥ 4,5:1, contorno ≥ 3:1. */
:root{
  --session-accent:#22d3ee;--session-fg:#e2e8f0;--session-muted:#9ca3af;
  --session-surface:#0c1018;--session-border:#526278;--session-countdown:#67e8f9;
  --session-danger:#7f1d1d;--session-danger-fg:#ffffff;--session-hover:#111827;
}
:root[data-theme="light"]{
  --session-accent:#0e7490;--session-fg:#0f172a;--session-muted:#475569;
  --session-surface:#ffffff;--session-border:#7c8ba3;--session-countdown:#0e7490;
  --session-danger:#b91c1c;--session-danger-fg:#ffffff;--session-hover:#e2e8f0;
}
@media(prefers-color-scheme:light){
  :root:not([data-theme="dark"]){
    --session-accent:#0e7490;--session-fg:#0f172a;--session-muted:#475569;
    --session-surface:#ffffff;--session-border:#7c8ba3;--session-countdown:#0e7490;
    --session-danger:#b91c1c;--session-danger-fg:#ffffff;--session-hover:#e2e8f0;
  }
}
/* ══════ CORES DO GESTOR DE SESSÃO · FIM ══════ */

/* §19 (dono, 07/11/2026): o módulo não traz paleta, fonte nem tema. Cada papel lê, nesta ordem, os tokens do workspace administrativo do app (--primary, --background, --foreground, --border, --muted-foreground, --tile, --app-soft, --font-mono — os mesmos de xdocctor /admin?tab=gestor), o módulo global de UI (--ds-*), a porta canônica (--access-*) e, por fim, cores do sistema. Texto pequeno de destaque (--td-primary-text) nunca cai na porta canônica, que não garante 4,5:1 (RB4). A prop `tema` do hospedeiro continua sobrepondo. */
.td-shell{--td-bg:var(--background,var(--ds-paper,var(--access-bg,Canvas)));--td-surface:var(--card,var(--ds-surface,var(--access-panel,Canvas)));--td-tile:var(--tile,var(--ds-surface,var(--access-panel,Canvas)));--td-soft:var(--app-soft,var(--ds-brand-soft,var(--access-context-wash,var(--td-tile))));--td-border:var(--border,var(--ds-line,var(--access-border,GrayText)));--td-text:var(--foreground,var(--ds-ink,var(--access-text,CanvasText)));--td-muted:var(--muted-foreground,var(--ds-muted,var(--access-muted,GrayText)));--td-primary:var(--primary,var(--ds-brand,var(--access-context,AccentColor)));--td-primary-ink:var(--primary-foreground,var(--ds-on-brand,var(--access-on-context,AccentColorText)));--td-primary-text:var(--primary,var(--ds-brand,var(--td-text)));--td-positive:var(--ds-positive,var(--access-ok,var(--td-primary)));--td-warning:var(--ds-warning,var(--access-warn,var(--td-primary)));--td-danger:var(--ds-danger,var(--access-danger,var(--td-text)));--td-font:var(--font-ui,var(--ds-font-interface,inherit));--td-mono:var(--font-mono,var(--ds-font-mono,ui-monospace,monospace));background:var(--td-bg);color:var(--td-text);font-family:var(--td-font);min-height:100svh;display:flex;flex-direction:column;line-height:1.5}
.td-shell *{box-sizing:border-box}.td-shell button{font:inherit;color:inherit}.td-shell button:not(:disabled){cursor:pointer}.td-shell button:disabled{cursor:not-allowed}.td-shell :is(button,a,select,input):focus-visible{outline:2px solid var(--td-primary);outline-offset:2px}.td-shell svg{width:24px;height:24px;flex-shrink:0}.td-shell .td-icone{width:20px;height:20px}
.td-skip{position:absolute;left:16px;top:-80px;padding:12px;background:var(--td-surface);color:var(--td-primary-text);z-index:5}.td-skip:focus{top:8px}
/* Cabeçalho de 80px: marca → menu (só dentro de uma área) → contexto → gestor de sessão. */
.td-header{display:flex;align-items:center;gap:20px;min-height:80px;padding:0 clamp(16px,3cqi,40px);border-bottom:1px solid var(--td-border);background:var(--td-surface)}
.td-brand{display:flex;align-items:center;flex-shrink:0}.td-brand img{height:36px;width:auto;object-fit:contain}.td-brand svg{width:100px;height:36px}
.td-spacer{flex:1}.td-header-context{min-width:0;font-size:15px}.td-session{display:flex;align-items:center;gap:10px;font-size:13px;flex-shrink:0}
.td-navigation{display:flex;align-self:stretch;gap:2px;min-width:0;overflow-x:auto}
.td-navigation button{display:grid;align-content:center;justify-items:center;gap:4px;min-width:96px;padding:0 10px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--td-muted);font-size:12px;font-weight:600}
.td-navigation button svg{width:22px;height:22px}.td-navigation button:hover:not(:disabled){color:var(--td-text)}
.td-navigation button[aria-current=page]{color:var(--td-primary-text);background:var(--td-soft);border-bottom-color:var(--td-primary)}
.td-navigation button:disabled{color:var(--td-muted);opacity:.7}
/* Início: kicker, nome em destaque e cartões. Ordem do dono (07/11/2026 14:35): a tela útil tem 1600 px, centralizada, e os balões cobrem 100% dela — por isso `auto-fit` (sem colunas vazias à direita). */
.td-main{width:100%;min-width:0;flex:1}
.td-dash{width:min(1600px,100%);margin:0 auto;padding:clamp(36px,6cqi,64px) clamp(16px,3cqi,40px) 72px}
.td-kicker{margin:0;font:800 12px var(--td-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--td-primary-text)}
.td-dash h1{margin:14px 0 10px;font:800 clamp(40px,6cqi,72px)/.98 var(--td-font);letter-spacing:-.055em;text-wrap:balance}
.td-apoio{margin:0;max-width:60ch;color:var(--td-muted);font-size:20px;line-height:1.5}
/* Adaptação automática (ordem do dono, 08/11/2026 11:50): o módulo mede o PRÓPRIO contêiner, não a janela, então o mesmo
   código serve página inteira, modal ou coluna de qualquer app. O componente calcula --td-por-linha (linhas equilibradas:
   5 cartões que não cabem numa linha viram 3 + 2, nunca 4 + 1); cada linha ocupa 100% da largura (flex-grow).
   Sem JavaScript vale --td-por-linha = número de cartões, com o mínimo de --td-card-min. */
.td-shell{container:td/inline-size}
.td-cards{--td-gap:14px;display:flex;flex-wrap:wrap;gap:var(--td-gap);margin-top:44px;width:100%}
.td-card{flex:1 1 calc((100% - (var(--td-por-linha,5) - 1) * var(--td-gap)) / var(--td-por-linha,5));display:flex;flex-direction:column;gap:16px;min-height:260px;min-width:min(100%,var(--td-card-min,200px));padding:20px;text-align:left;border:1px solid var(--td-border);border-radius:4px;background:var(--td-tile);color:var(--td-text);transition:border-color .16s,background-color .16s}
/* Minigráfico no rodapé: com a mesma altura em todos os cartões, começa na mesma linha em cada fileira. */
.td-card>.td-mini,.td-card>.td-mini-sem{margin-top:auto}
.td-card:hover:not([data-disabled]){border-color:var(--td-primary);background:var(--td-soft)}
.td-card[data-disabled]{background:var(--td-surface)}.td-card[data-disabled] :is(strong,.td-balao){opacity:.45}
.td-card-abrir{display:flex;flex:1 1 auto;flex-direction:column;gap:12px;min-height:180px;min-width:0;padding:0;margin:0;border:0;background:none;text-align:left}
/* Minigráfico de treinos (7 dias): feitos na cor do app, a fazer em vermelho (alerta); mini modal RB23. Só papéis do trainer. */
.td-mini{display:grid;gap:8px;min-width:0}
.td-mini-total{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:0;font-size:13px;line-height:1.4}
/* Texto em --td-text (RB4 4,5:1); a cor de cada tipo vai no quadrado da legenda e nas barras (3:1). */
.td-mini-feitos,.td-mini-afazer{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--td-text)}
.td-mini-afazer:not([data-alerta]){font-weight:600;color:var(--td-muted)}
.td-mini-legenda{display:inline-block;flex:none;width:10px;height:10px;border-radius:2px}
.td-mini-legenda[data-tipo=feitos]{background:var(--td-primary)}
.td-mini-legenda[data-tipo=a-fazer]{background:var(--td-danger)}
.td-mini-dica .td-mini-legenda{margin-right:6px}
/* O período fica sempre na própria linha: a mesma estrutura em todos os cartões, qualquer que seja a largura. */
.td-mini-periodo{flex-basis:100%;color:var(--td-muted);font-size:12px}
.td-mini-barras{position:relative;display:flex;align-items:flex-end;gap:4px;width:100%;height:56px}
.td-mini-barra{position:relative;display:flex;flex:1 1 0;flex-direction:column;justify-content:flex-end;min-width:6px;height:100%;border-radius:3px}
.td-mini-barra:focus-visible{outline:2px solid var(--td-primary);outline-offset:1px}
.td-mini-parte{display:block;width:100%}
.td-mini-parte[data-tipo=feitos]{background:var(--td-primary)}
.td-mini-parte[data-tipo=a-fazer]{background:var(--td-danger)}
.td-mini-barra>.td-mini-parte:first-child{border-radius:3px 3px 0 0}
.td-mini-vazio{display:block;width:100%;height:2px;background:var(--td-border)}
.td-mini-dica{position:absolute;bottom:calc(100% + 6px);left:50%;z-index:3;display:grid;gap:2px;width:max-content;max-width:220px;padding:6px 10px;border:1px solid var(--td-border);border-radius:8px;background:var(--td-surface);color:var(--td-text);font-size:12px;line-height:1.35;transform:translateX(-50%);pointer-events:none}
.td-mini-dica strong{font:700 13px var(--td-font);letter-spacing:0}
.td-mini-sem{margin:0;color:var(--td-muted);font-size:13px}
/* Módulo universal que implementa a área (P18): vai junto do minigráfico no rodapé, que continua alinhado na fileira. */
.td-card>.td-card-modulo{margin-top:auto}
.td-card>.td-card-modulo+.td-mini,.td-card>.td-card-modulo+.td-mini-sem{margin-top:0}
.td-card-modulo{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;min-width:0;padding:8px 0 0;border-top:1px solid var(--td-border);color:var(--td-text);font-size:13px;text-decoration:none}
.td-card-modulo span{font:700 11px var(--td-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--td-muted)}
.td-card-modulo strong{color:var(--td-primary-text);text-decoration:underline;text-underline-offset:3px}
.td-card-modulo:focus-visible{outline:2px solid var(--td-primary);outline-offset:2px}
.td-card-top{display:flex;justify-content:space-between;align-items:flex-start}
.td-shell .td-balao{width:58px;height:46px}
/* Só o ícone dentro do balão anima: o traço se desenha em ciclo (padrão da área de pacientes do XDocctor). */
@keyframes td-traca{0%{stroke-dashoffset:64}40%,80%{stroke-dashoffset:0}100%{stroke-dashoffset:-64}}
.td-icone path{stroke-dasharray:64;animation:td-traca 4.2s ease-in-out infinite}
.td-card:hover .td-icone path{animation-duration:2.1s}
.td-card-base{display:grid;gap:6px;margin-top:auto}
.td-card-kicker{font:800 11px var(--td-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--td-muted)}
.td-card-base strong{font:800 26px/1.05 var(--td-font);letter-spacing:-.045em}
.td-card-description{color:var(--td-muted);font-size:14px;line-height:1.55}
/* Tela de cada área. */
.td-area{width:min(1600px,100%);min-width:0;margin:0 auto;padding:32px clamp(16px,3cqi,40px) 56px}
.td-area-heading{display:grid;gap:14px;justify-items:start;margin-bottom:24px}
.td-area-heading h1{margin:0;font:800 clamp(28px,4cqi,40px)/1 var(--td-font);letter-spacing:-.045em}
.td-area-heading p{margin:0;max-width:68ch;color:var(--td-muted);line-height:1.7}
.td-state{min-height:380px;margin:0;padding:48px 24px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:20px;background:var(--td-tile);border:1px solid var(--td-border);border-radius:4px}
.td-main>.td-state{margin:32px clamp(16px,3cqi,40px)}
.td-state h1,.td-state h2{font-size:24px;line-height:1.4;font-weight:600;margin:0;max-width:600px}.td-state p{color:var(--td-muted);margin:0;max-width:520px}.td-state>svg{width:24px;height:24px}
.td-action{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:44px;padding:10px 18px;background:var(--td-soft);border:1px solid var(--td-primary);border-radius:4px;color:var(--td-primary-text)!important;font-size:13px}.td-action svg{width:18px;height:18px}
.td-spinner{width:30px;height:30px;border:3px solid var(--td-border);border-top-color:var(--td-primary);border-radius:50%;animation:td-spin 1s linear infinite}@keyframes td-spin{to{transform:rotate(360deg)}}
@container td (max-width:1320px){.td-header{flex-wrap:wrap;min-height:80px;padding-block:18px;row-gap:18px}.td-navigation{order:4;flex:1 0 100%;min-height:80px;margin-block:-18px}}
@container td (max-width:540px){.td-header{gap:12px}.td-brand img{height:30px}.td-navigation button{min-width:88px;font-size:12px}.td-apoio{font-size:16px}}
@media(prefers-reduced-motion:reduce){.td-card{transition:none}.td-icone path{animation:none;stroke-dasharray:none}.td-spinner{animation:none;border-style:dotted}}

body{margin:0;background:var(--access-bg);color:var(--access-text);font:14px var(--font-inter,system-ui)}main{max-width:1800px;padding:32px;margin:auto}.preview-note{margin-bottom:24px;padding:12px;border:1px solid var(--access-border);border-radius:8px;font-size:13px}