/*
 * Contrato de tokens de tema v2.
 *
 * As cores --palette-v2-* são autorais e podem ser injetadas pelo backend.
 * Variações suaves, contraste, overlays e sombras são derivados aqui para que
 * componentes não criem paletas próprias.
 */
:root {
    /* Fallback Classic Light para o contrato v2. */
    --palette-v2-background: #F5F7FA;
    --palette-v2-surface: #FFFFFF;
    --palette-v2-surface-alt: #F1F5F9;
    --palette-v2-border: #D9E2EC;
    --palette-v2-text: #1E293B;
    --palette-v2-text-secondary: #64748B;
    --palette-v2-primary: #2563EB;
    --palette-v2-primary-hover: #1D4ED8;
    --palette-v2-success: #11860B;
    --palette-v2-warning: #C87800;
    --palette-v2-danger: #DC2626;
    --palette-v2-danger-text: #B91C1C;
    --palette-v2-info: #0284C7;
    --palette-v2-disabled: #94A3B8;

    /* Contraste calculado pelo backend; estes valores cobrem o fallback. */
    --palette-v2-on-primary: #FFFFFF;
    --palette-v2-on-success: #FFFFFF;
    --palette-v2-on-warning: #000000;
    --palette-v2-on-danger: #FFFFFF;
    --palette-v2-on-info: #FFFFFF;
    --palette-v2-on-disabled: #000000;

    /* Superfícies semânticas derivadas contra a superfície real. */
    --primary-soft: color-mix(in srgb, var(--primary) 12%, var(--surface));
    --success-soft: color-mix(in srgb, var(--success) 14%, var(--surface));
    --warning-soft: color-mix(in srgb, var(--warning) 14%, var(--surface));
    --danger-soft: color-mix(in srgb, var(--danger-solid) 12%, var(--surface));
    --info-soft: color-mix(in srgb, var(--info) 12%, var(--surface));

    /* Estados de interação e efeitos estruturais centralizados. */
    --focus-ring: color-mix(in srgb, var(--primary) 25%, transparent);
    --overlay: rgb(15 23 42 / 45%);
    --overlay-strong: rgb(15 23 42 / 78%);
    --shadow-sm: 0 1px 2px rgb(0 0 0 / 5%);
    --shadow-md:
        0 4px 6px -1px rgb(0 0 0 / 10%),
        0 2px 4px -2px rgb(0 0 0 / 8%);
    --shadow-lg:
        0 20px 25px -5px rgb(0 0 0 / 15%),
        0 8px 10px -6px rgb(0 0 0 / 10%);

    /*
     * Contrato neutro do visualizador de mídia. A mesa escura preserva a
     * percepção de imagens e não representa um estado do tema.
     */
    --media-stage: #0F172A;
    --media-stage-alt: #1E293B;
    --media-stage-hover: #334155;
    --media-text: #F8FAFC;
    --media-text-secondary: #E2E8F0;
    --media-border: rgb(255 255 255 / 12%);
    --media-border-strong: rgb(255 255 255 / 22%);
    --media-control: rgb(30 41 59 / 88%);
    --media-control-hover: rgb(51 65 85 / 94%);

    /* Paleta categórica do diagnóstico de Fator de Resposta. */
    --chart-critical: #F43F5E;
    --chart-warning: #F97316;
    --chart-positive: #22C55E;
    --chart-info: #38BDF8;
    --chart-highlight: #FACC15;
    --drop-shadow-sm: drop-shadow(0 1px 2px rgb(0 0 0 / 40%));
}

/*
 * Somente este seletor troca os aliases consumidos pela aplicação. Sem o
 * atributo, o motor anterior de global.css permanece soberano.
 */
:root[data-theme-engine="v2"] {
    --background: var(--palette-v2-background);
    --surface: var(--palette-v2-surface);
    --surface-alt: var(--palette-v2-surface-alt);
    --border: var(--palette-v2-border);
    --text: var(--palette-v2-text);
    --text-secondary: var(--palette-v2-text-secondary);
    --primary: var(--palette-v2-primary);
    --primary-hover: var(--palette-v2-primary-hover);
    --success: var(--palette-v2-success);
    --warning: var(--palette-v2-warning);
    --danger: var(--danger-soft);
    --danger-solid: var(--palette-v2-danger);
    --danger-text: var(--palette-v2-danger-text);
    --info: var(--palette-v2-info);
    --disabled: var(--palette-v2-disabled);
    --on-primary: var(--palette-v2-on-primary);
    --on-success: var(--palette-v2-on-success);
    --on-warning: var(--palette-v2-on-warning);
    --on-danger: var(--palette-v2-on-danger);
    --on-info: var(--palette-v2-on-info);
    --on-disabled: var(--palette-v2-on-disabled);
}
