/* =============================================================================
   RVM Design System — camada de tokens
   -----------------------------------------------------------------------------
   Todo valor de cor aqui foi MEDIDO do kit NEATLAB (referencia-neatlab/Theme/*.png)
   e esta registrado no `06-tokens-e-tematizacao.md`. Componente nao escolhe cor:
   usa SEMPRE uma custom property daqui. Hex literal em CSS de componente e bug —
   quebra o tema escuro.

   Visual derivado do NEATLAB - Super Admin Dashboard UI Design Kit, de hello.uiworld,
   sob CC BY 4.0. Fonte Inter sob SIL OFL (wwwroot/fonts/OFL.txt).
   ============================================================================= */

/* --- Inter, servida pelo proprio pacote (ADR-006): nada de Google Fonts em runtime --- */
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 300 500;
    font-display: swap;
    src: url('./fonts/inter-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
                   U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                   U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 300 500;
    font-display: swap;
    src: url('./fonts/inter-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
                   U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0,
                   U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* O `[data-theme='light']` nao e decoracao: o RvmThemeProvider escreve o `data-theme` no PROPRIO
   elemento, entao da para ter um provider claro DENTRO de uma arvore escura. Sem este seletor, o
   claro-dentro-de-escuro nao voltaria ao claro — as custom properties do ancestral continuariam
   valendo por heranca, sem erro nenhum, so com a cor errada na tela. */
[data-theme='system'],
:root,
[data-theme='light'] {
    color-scheme: light;

    /* ---------------------------------------------------------------------
       Cores de marca — IGUAIS nos dois temas, conferidas swatch a swatch.
       Quem "escurecer" a paleta no tema escuro esta inventando.
       --------------------------------------------------------------------- */
    --rvm-color-primary-main: #264CC8;
    --rvm-color-primary-alt-light: #4067E9;
    --rvm-color-primary-alt-dark: #1B368F;
    --rvm-color-primary-hover: #264CC8;

    --rvm-color-secondary-main: #8A8D93;
    --rvm-color-secondary-alt-light: #9C9FA4;
    --rvm-color-secondary-alt-dark: #4D5056;
    --rvm-color-secondary-hover: #777B82;

    --rvm-color-info-main: #16B1FF;
    --rvm-color-info-alt-light: #32BAFF;
    --rvm-color-info-alt-dark: #0E71A3;
    --rvm-color-info-hover: #139CE0;

    --rvm-color-success-main: #56CA00;
    --rvm-color-success-alt-light: #6AD01F;
    --rvm-color-success-alt-dark: #378100;
    --rvm-color-success-hover: #4CB200;

    --rvm-color-warning-main: #FFB400;
    --rvm-color-warning-alt-light: #FFB547;
    --rvm-color-warning-alt-dark: #A37300;
    --rvm-color-warning-hover: #E09E00;

    --rvm-color-error-main: #FF4C51;
    --rvm-color-error-alt-light: #FF6166;
    --rvm-color-error-alt-dark: #A33134;
    --rvm-color-error-hover: #E04347;

    /* Texto SOBRE a cor de marca. Desvio consciente do kit, que manda branco nos seis:
       branco reprova AA em cinco (secondary 3.33, info 2.40, success 2.13, warning 1.78,
       error 3.28). Contraste >= 4.5:1 e criterio de aceite (RNF-02), entao so o primary —
       7.12 com branco — fica com branco; os outros usam #212121 (4.84 a 9.03). */
    /* A cor do papel usada COMO TEXTO sobre superficie clara. Nao e capricho: o `main` de
       info (2.09), success (1.86), warning (1.55), error (2.86) e secondary (2.90) reprova AA
       como texto — quem escrever `color: var(--rvm-color-info-main)` num link entrega texto
       ilegivel. Sai das proprias variantes do kit (`alt-dark`), escurecidas so onde nem elas
       passam: success 10% e warning 15% de preto. Pior caso entre papel, corpo e selecionado. */
    --rvm-color-primary-text: #264CC8;
    --rvm-color-secondary-text: #4D5056;
    --rvm-color-info-text: #0E71A3;
    --rvm-color-success-text: #327400;
    --rvm-color-warning-text: #8B6200;
    --rvm-color-error-text: #A33134;

    --rvm-color-primary-contrast: #FFFFFF;
    --rvm-color-secondary-contrast: #212121;
    --rvm-color-info-contrast: #212121;
    --rvm-color-success-contrast: #212121;
    --rvm-color-warning-contrast: #212121;
    --rvm-color-error-contrast: #212121;

    /* Fundo do variante outlined: hover e resting (selecionado) */
    --rvm-color-primary-outlined-hover: #F5F7FE;
    --rvm-color-primary-outlined-resting: #CBD6F9;
    --rvm-color-secondary-outlined-hover: #F6F6F7;
    --rvm-color-secondary-outlined-resting: #C5C6C9;
    --rvm-color-info-outlined-hover: #EFFAFF;
    --rvm-color-info-outlined-resting: #99DDFF;
    --rvm-color-success-outlined-hover: #F2FBEB;
    --rvm-color-success-outlined-resting: #ABE580;
    --rvm-color-warning-outlined-hover: #FFF9EB;
    --rvm-color-warning-outlined-resting: #FFDA80;
    --rvm-color-error-outlined-hover: #FFF1F1;
    --rvm-color-error-outlined-resting: #FFA6A8;

    /* Fundos suaves (Custom BG). O primary-soft do kit e ROXO com um primary AZUL, e a DSGN-014
       provou a origem medindo os pixels: `#F2EAFF` e exatamente `#9155FD` a 12% (e o `#3D3261` do
       tema escuro e o MESMO roxo a 12,5%). `#9155FD` nao existe na paleta do kit — e resquicio do
       template de onde ele saiu. Harmonizado a mando do Rafael em 18/09: o mesmo 12% do proprio
       primary. As outras familias ja eram coerentes e ficam como estao. */
    --rvm-color-primary-soft: #E5EAF8;
    --rvm-color-secondary-soft: #F1F1F2;
    --rvm-color-info-soft: #E4F2FE;
    --rvm-color-success-soft: #E9F5EA;
    --rvm-color-warning-soft: #FDEDE0;
    --rvm-color-error-soft: #FEE8E7;

    /* Papel Inverse (contrato com o RVM.UI, DSGN-017): branco para usar SOBRE fundo colorido ou escuro.
       Invencao declarada — o kit nao tem esse papel. Igual nos dois temas, porque o fundo em volta e
       que e colorido; o texto sobre o branco cheio e o primary. Sobre a pagina comum ele some, e de
       proposito: fora de fundo colorido, use outro papel. */
    --rvm-color-inverse-main: #FFFFFF;
    --rvm-color-inverse-hover: #EDEFF7;
    --rvm-color-inverse-text: #FFFFFF;
    --rvm-color-inverse-contrast: #264CC8;
    --rvm-color-inverse-outlined-hover: rgba(255, 255, 255, 0.12);
    --rvm-color-inverse-outlined-resting: rgba(255, 255, 255, 0.56);
    --rvm-color-inverse-soft: rgba(255, 255, 255, 0.16);
    /* No kit o menu ativo e um GRADIENTE horizontal, nao uma cor: medido de #31A1F9 (esquerda) a
       #274FCA (direita), 214 px de largura, sem variacao vertical. O token solido e o ponto MEDIO
       exato desse degrade — serve onde so cabe uma cor (borda, icone).
       ⚠️ Nenhuma tinta solida escreve sobre este degrade inteiro passando 4.5:1: branco da 2.76 na
       ponta clara e #212121 da 2.34 na ponta escura. Quem montar o item de menu ativo (onda 4)
       resolve no componente — escurecer o degrade, usar so a metade escura ou por um veu atras do
       texto. Nao ha decisao a tomar na camada de token. */
    --rvm-color-menu-active: #2C78E1;
    --rvm-color-menu-active-gradient: linear-gradient(90deg, #31A1F9 0%, #274FCA 100%);

    /* --- Superficies --- */
    --rvm-color-background-body: #F4F5FA;
    --rvm-color-background-paper: #FFFFFF;
    --rvm-color-divider: #E7E6E8;
    --rvm-color-outline: #D1D0D3;
    --rvm-color-input-line: #D4D3D5;
    /* Contorno de CAMPO em repouso. Desvio consciente: o `input-line` do kit da 1.49:1 sobre o papel
       claro e 1.85:1 no escuro, e o contorno de um campo e informacao necessaria para identificar o
       controle (WCAG 1.4.11 pede 3:1). Usa o secondary-main do proprio kit: 3.33:1 no claro, 3.93:1
       no escuro. O `input-line` fiel continua valendo para linha decorativa. */
    --rvm-color-input-border: var(--rvm-color-secondary-main);
    --rvm-color-overlay: #9D9AA0;
    --rvm-color-snackbar-background: #212121;
    --rvm-color-snackbar-text: #FFFFFF;
    /* Polegar do switch: branco nos DOIS temas, como no kit (a pagina Switch escura desenha o polegar
       inativo branco). Fica fora do bloco escuro de proposito. */
    --rvm-color-switch-thumb: #FFFFFF;
    /* Tooltip: escuro nos DOIS temas — medido #212121 tambem na pagina Tooltip do tema escuro. O texto
       branco da 16:1. O balao nao precisa de 3:1 contra o fundo: nao e controle, e o texto e que e lido. */
    --rvm-color-tooltip-background: #212121;
    --rvm-color-tooltip-text: #FFFFFF;

    /* --- Texto ---
       O primario e o valor MEDIDO no swatch do kit. ⚠️ Ele nao segue o modelo base+alpha do
       proprio kit (`#3A3541` a 0.87 daria `#544F5A`): o pixel manda, porque a fidelidade e
       conferida contra o PNG. Passa AA com folga (5.28:1 no papel, 4.85:1 no corpo).
       O secundario E alpha do `#3A3541` — 0.68 no kit reproduz o `#79767E` medido exatamente,
       mas da 4.46:1 e reprova o portao; subiu para 0.72 (5.01 e 4.79), a menor correcao que
       passa nos dois fundos. O desabilitado e o medido; fica em 2.10:1, e WCAG 1.4.3 isenta
       componente inativo. */
    --rvm-color-text-primary: #676C74;
    --rvm-color-text-secondary: rgba(58, 53, 65, 0.72);
    /* Medido no campo desabilitado do kit (DSGN-014): #D2D1D4, que e a base do texto a 23%.
       O nosso valor anterior (#B4B2B7) era 38% — mais escuro que o kit. WCAG isenta componente
       desabilitado do contraste minimo (1.4.3), entao vale a fidelidade. */
    --rvm-color-text-disabled: rgba(58, 53, 65, 0.26);

    /* --- Acoes --- */
    --rvm-color-action-hover: #F7F7F8;
    --rvm-color-action-selected: #F0EFF0;
    --rvm-color-action-disabled: #CCCBCE;
    --rvm-color-action-focus: #E7E6E8;

    /* ---------------------------------------------------------------------
       Tipografia — a escala veio ESCRITA na pagina Typography do kit.
       Caption (19.9) e Overline (31.9) foram arredondados para 20 e 32:
       desvio consciente, registrado no 06.
       --------------------------------------------------------------------- */
    --rvm-font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    --rvm-font-weight-light: 300;
    --rvm-font-weight-regular: 400;
    --rvm-font-weight-medium: 500;

    --rvm-text-h1-size: 6rem;
    --rvm-text-h1-line: 7rem;
    --rvm-text-h1-weight: 300;
    --rvm-text-h2-size: 3.75rem;
    --rvm-text-h2-line: 4.5rem;
    --rvm-text-h2-weight: 300;
    --rvm-text-h3-size: 3rem;
    --rvm-text-h3-line: 3.5rem;
    --rvm-text-h3-weight: 400;
    --rvm-text-h4-size: 2.125rem;
    --rvm-text-h4-line: 2.625rem;
    --rvm-text-h4-weight: 400;
    --rvm-text-h5-size: 1.5rem;
    --rvm-text-h5-line: 2rem;
    --rvm-text-h5-weight: 400;
    --rvm-text-h6-size: 1.25rem;
    --rvm-text-h6-line: 2rem;
    --rvm-text-h6-weight: 500;
    --rvm-text-subtitle1-size: 1rem;
    --rvm-text-subtitle1-line: 1.75rem;
    --rvm-text-subtitle1-weight: 400;
    --rvm-text-subtitle2-size: 0.875rem;
    --rvm-text-subtitle2-line: 1.375rem;
    --rvm-text-subtitle2-weight: 500;
    --rvm-text-body1-size: 0.875rem;
    --rvm-text-body1-line: 1.5rem;
    --rvm-text-body1-weight: 400;
    --rvm-text-body2-size: 0.875rem;
    --rvm-text-body2-line: 1.25rem;
    --rvm-text-body2-weight: 400;
    --rvm-text-caption-size: 0.75rem;
    --rvm-text-caption-line: 1.25rem;
    --rvm-text-caption-weight: 400;
    --rvm-text-overline-size: 0.75rem;
    --rvm-text-overline-line: 2rem;
    --rvm-text-overline-weight: 400;
    --rvm-text-button-lg-size: 0.9375rem;
    --rvm-text-button-lg-line: 1.625rem;
    --rvm-text-button-lg-weight: 500;
    --rvm-text-button-md-size: 0.875rem;
    --rvm-text-button-md-line: 1.5rem;
    --rvm-text-button-md-weight: 500;
    --rvm-text-button-sm-size: 0.8125rem;
    --rvm-text-button-sm-line: 1.375rem;
    --rvm-text-button-sm-weight: 500;
    --rvm-text-input-label-size: 0.75rem;
    --rvm-text-input-label-line: 0.75rem;
    --rvm-text-input-label-weight: 400;
    --rvm-text-helper-size: 0.75rem;
    --rvm-text-helper-line: 1.25rem;
    --rvm-text-helper-weight: 400;
    --rvm-text-input-size: 1rem;
    --rvm-text-input-line: 1.5rem;
    --rvm-text-input-weight: 400;
    --rvm-text-avatar-size: 1.25rem;
    --rvm-text-avatar-line: 1.25rem;
    --rvm-text-avatar-weight: 400;
    --rvm-text-chip-size: 0.8125rem;
    --rvm-text-chip-line: 1.125rem;
    --rvm-text-chip-weight: 400;
    --rvm-text-tooltip-size: 0.625rem;
    --rvm-text-tooltip-line: 0.875rem;
    --rvm-text-tooltip-weight: 500;
    --rvm-text-alert-title-size: 1rem;
    --rvm-text-alert-title-line: 1.5rem;
    --rvm-text-alert-title-weight: 500;
    --rvm-text-table-header-size: 0.875rem;
    --rvm-text-table-header-line: 1.5rem;
    --rvm-text-table-header-weight: 500;
    --rvm-text-badge-size: 0.75rem;
    --rvm-text-badge-line: 1.25rem;
    --rvm-text-badge-weight: 500;

    /* --- Espacamento: base 4 px --- */
    --rvm-space-1: 0.25rem;
    --rvm-space-2: 0.5rem;
    --rvm-space-3: 0.75rem;
    --rvm-space-4: 1rem;
    --rvm-space-5: 1.25rem;
    --rvm-space-6: 1.5rem;
    --rvm-space-8: 2rem;
    --rvm-space-10: 2.5rem;
    --rvm-space-12: 3rem;

    /* --- Raio: por regua sobre o PNG, erro de 1-2 px --- */
    --rvm-radius-sm: 6px;
    --rvm-radius-md: 8px;
    --rvm-radius-lg: 10px;
    --rvm-radius-pill: 999px;
    --rvm-radius-circle: 50%;

    /* --- Sombra: APROXIMACAO. O kit mostra 24 elevacoes e NAO escreve os valores; estas cinco
       saem de medicao visual e viram numero exato quando o kit for lido pela API do Figma
       (09-roadmap, pendencia 1). Nao tratar como definitivo. --- */
    /* Medidas na tela Shadow do kit (DSGN-014, `tools/amostragem-do-kit.py sombras`): as 24 elevacoes
       foram ajustadas de uma vez, com residuo de 0,008 de opacidade. Os nossos cinco niveis pegam as
       elevacoes 1, 3, 7, 12 e 20 do kit. A sombra do kit NAO e preta: escurece menos o azul, e a cor
       que sai da conta e este mesmo roxo escuro. */
    --rvm-shadow-1: 0 1px 2px rgba(52, 51, 73, 0.47);
    --rvm-shadow-2: 0 4px 4px rgba(52, 51, 73, 0.12);
    --rvm-shadow-3: 0 6px 11px rgba(52, 51, 73, 0.3);
    --rvm-shadow-4: 0 10px 19px rgba(52, 51, 73, 0.31);
    --rvm-shadow-5: 0 14px 32px rgba(52, 51, 73, 0.31);

    /* --- Foco e movimento --- */
    --rvm-focus-ring-width: 2px;
    --rvm-focus-ring-offset: 2px;
    /* O anel usa a variante `-text`, e nao o `-main`: indicador de foco precisa de 3:1 contra o que
       esta em volta (WCAG 2.4.11 / 1.4.11), e o primary-main no tema escuro da 1.84:1 sobre o papel
       — o anel some. Com `-text`: 7.12 no claro, 6.38 no escuro. O axe NAO mede isto; foi medido a
       mao na DSGN-003. */
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
    --rvm-transition-fast: 150ms ease;
    --rvm-transition-medium: 250ms ease;
}

/* =============================================================================
   Tema escuro. O que muda e SUPERFICIE e ESTADO — a marca nao muda.
   ============================================================================= */
[data-theme='dark'] {
    color-scheme: dark;

    /* No escuro o `main` do primary como texto da 1.84:1 — link invisivel. Estes saem do
       `alt-light` do kit, clareados so onde ele nao alcanca 4.5:1 (primary +50%, secondary +20%
       e error +30% de branco). Info, success e warning ja passam com o alt-light puro. */
    --rvm-color-primary-text: #A0B3F4;
    --rvm-color-secondary-text: #B0B2B6;
    --rvm-color-info-text: #32BAFF;
    --rvm-color-success-text: #6AD01F;
    --rvm-color-warning-text: #FFB547;
    --rvm-color-error-text: #FF9094;

    --rvm-color-primary-outlined-hover: #797992;
    --rvm-color-primary-outlined-resting: #646D9F;
    --rvm-color-secondary-outlined-hover: #383451;
    --rvm-color-secondary-outlined-resting: #5E5D6F;
    --rvm-color-info-outlined-hover: #313859;
    --rvm-color-info-outlined-resting: #3274A5;
    --rvm-color-success-outlined-hover: #343945;
    --rvm-color-success-outlined-resting: #447C26;
    --rvm-color-warning-outlined-hover: #413745;
    --rvm-color-warning-outlined-resting: #987126;
    --rvm-color-error-outlined-hover: #412F4B;
    --rvm-color-error-outlined-resting: #983D4E;

    --rvm-color-primary-soft: #30315B; /* o primary a 12,5%, como no claro (DSGN-014) */
    --rvm-color-secondary-soft: #3C3954;
    --rvm-color-info-soft: #2F3A60;
    --rvm-color-success-soft: #343D4C;
    --rvm-color-warning-soft: #4A3E42;
    --rvm-color-error-soft: #493049;
    /* No escuro o kit nao desenhou o swatch de menu ativo (a celula e o proprio papel). Como a cor
       de marca nao muda entre temas, o degrade continua o mesmo; o solido cai no primary. */
    --rvm-color-menu-active: var(--rvm-color-primary-main);

    --rvm-color-background-body: #28243D;
    --rvm-color-background-paper: #312D4B;
    --rvm-color-divider: #474360;
    --rvm-color-outline: #5B5774;
    --rvm-color-input-line: #595572;
    --rvm-color-overlay: #2C2A43;
    --rvm-color-snackbar-background: #212121; /* igual ao claro: medido no Snackbar.png escuro; decisao do Rafael em 17/09 */
    --rvm-color-snackbar-text: #FFFFFF;

    /* Texto: base #E7E3FC com os alphas do kit. A base foi deduzida em 17/09 (0.87 sobre o papel
       #312D4B da exatamente #CFCBE5) e a amostragem da DSGN-014 CONFIRMOU primario e secundario,
       medindo linha a linha em Typography, Text Field, Checkbox e Switch: 0.84-0.86 e 0.66-0.67
       (o metodo subestima um pouco, porque fonte pequena nunca atinge a cor cheia). So o
       desabilitado estava errado: o kit usa 0.26, nao 0.38. */
    --rvm-color-text-primary: rgba(231, 227, 252, 0.87);
    --rvm-color-text-secondary: rgba(231, 227, 252, 0.68);
    /* 0.26, e nao 0.38: medido no campo desabilitado do kit escuro (#595572). Ver DSGN-014. */
    --rvm-color-text-disabled: rgba(231, 227, 252, 0.26);

    --rvm-color-action-hover: #383452;
    --rvm-color-action-selected: #3F3B59;
    --rvm-color-action-disabled: #605C79;
    --rvm-color-action-focus: #474360;

    /* A geometria e a mesma medida no claro (o kit nao repete a tela Shadow no escuro): o que muda e
       a cor, mais preta, porque sombra clara nao aparece sobre superficie escura. */
    --rvm-shadow-1: 0 1px 2px rgba(19, 17, 32, 0.6);
    --rvm-shadow-2: 0 4px 4px rgba(19, 17, 32, 0.3);
    --rvm-shadow-3: 0 6px 11px rgba(19, 17, 32, 0.45);
    --rvm-shadow-4: 0 10px 19px rgba(19, 17, 32, 0.47);
    --rvm-shadow-5: 0 14px 32px rgba(19, 17, 32, 0.47);
}

/* =============================================================================
   Tema do usuario e cor de destaque (contrato com o RVM.UI, DSGN-017). O RvmThemeProvider escreve no
   PROPRIO elemento: data-theme (light | dark | system), data-rvm-accent (a paleta), data-rvm-contrast
   (accessible | original), data-rvm-font-scale, data-rvm-high-contrast e data-rvm-motion. Tudo CSS: o
   tema certo sai na primeira renderizacao, sem JS, no Server e no WebAssembly.

   ⚠️ Os seletores de paleta sao COMPOSTOS com o data-theme no mesmo elemento (o provider escreve os dois).
   Seletor de descendente ([data-theme='dark'] [data-rvm-accent]) nao serve: um provider claro dentro de um
   escuro pegaria a tinta do escuro.
   ⚠️ ESPECIFICIDADE (0,1,0) em todos os blocos de paleta e de esquema: o atributo extra vai num :where(). O
   provider sempre escreve data-rvm-accent="blue", e um (0,2,0) aqui passaria por cima de quem rebrandeia o
   escuro com [data-theme='dark'] { ... } no proprio CSS (carregado depois do nosso) — quebra para consumidor
   da 1.x. Com (0,1,0), quem vence e a ORDEM: o escuro da paleta vem logo depois do claro dela.
   ⚠️ Cada bloco escuro tem um GEMEO para o "system" no @media do fim. O RvmTemaDoContratoTests compara os dois:
   mexeu num, mexa no outro.
   ============================================================================= */

/* --- Fontes das paletas de produto, servidas pelo pacote como a Inter (ADR-006). Todas SIL OFL 1.1, licenca
       em wwwroot/fonts/OFL-<Fonte>.txt. Arquivos variaveis (eixo wght) do Fontsource 5.3.0. --- */
@font-face {
    font-family: 'Hanken Grotesk';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('./fonts/hanken-grotesk-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
                   U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                   U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Hanken Grotesk';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('./fonts/hanken-grotesk-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
                   U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0,
                   U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Lora';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('./fonts/lora-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
                   U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                   U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Lora';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('./fonts/lora-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
                   U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0,
                   U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Geist Mono';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('./fonts/geist-mono-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
                   U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
                   U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Geist Mono';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('./fonts/geist-mono-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
                   U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0,
                   U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* --- Paletas. Cada uma redefine a familia primary inteira e o que o primary alimenta (foco, menu ativo,
       tinta do papel Inverse). Contraste MEDIDO e barrado pelo RvmTemaDoContratoTests: -text >= 4.5:1 sobre
       corpo, papel e fundo suave nos dois temas; -contrast >= 4.5:1 sobre main, hover, alt-light e menu-active.
       Suave = main a 12% (12,5% no escuro), outlined = alt-light a 5% e 27% (15% e 40% no escuro), como a
       receita medida no cobalto. --- */
/* Cobalto do kit: os MESMOS valores do bloco base. Declarados de novo para um provider azul
   aninhado num roxo voltar ao azul (custom property herda o valor ja resolvido do ancestral). */
[data-rvm-accent="blue"] {
    --rvm-color-primary-main: #264CC8;
    --rvm-color-primary-alt-light: #4067E9;
    --rvm-color-primary-alt-dark: #1B368F;
    --rvm-color-primary-hover: #264CC8;
    --rvm-color-primary-text: #264CC8;
    --rvm-color-primary-contrast: #FFFFFF;
    --rvm-color-primary-outlined-hover: #F5F7FE;
    --rvm-color-primary-outlined-resting: #CBD6F9;
    --rvm-color-primary-soft: #E5EAF8;
    --rvm-color-inverse-contrast: #264CC8;
    --rvm-color-menu-active: #2C78E1;
    --rvm-color-menu-active-gradient: linear-gradient(90deg, #31A1F9 0%, #274FCA 100%);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
    --rvm-font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

[data-theme='dark']:where([data-rvm-accent="blue"]) {
    --rvm-color-primary-text: #A0B3F4;
    --rvm-color-primary-outlined-hover: #797992;
    --rvm-color-primary-outlined-resting: #646D9F;
    --rvm-color-primary-soft: #30315B;
    --rvm-color-menu-active: var(--rvm-color-primary-main);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
}

/* Roxo: o violeta da identidade RVM (#641974, o roxo VS renderizado do rvmtech.com.br). Texto no claro
   e o proprio main (10.86 no papel); no escuro, o main clareado ate 6.60 no papel. Rampa desenhada no DS. */
[data-rvm-accent="purple"] {
    --rvm-color-primary-main: #641974;
    --rvm-color-primary-alt-light: #8A3A9C;
    --rvm-color-primary-alt-dark: #4A1157;
    --rvm-color-primary-hover: #57156A;
    --rvm-color-primary-text: #641974;
    --rvm-color-primary-contrast: #FFFFFF;
    --rvm-color-primary-outlined-hover: #F9F5FA;
    --rvm-color-primary-outlined-resting: #DFCAE4;
    --rvm-color-primary-soft: #ECE3EE;
    --rvm-color-inverse-contrast: #641974;
    --rvm-color-menu-active: #772A88;
    --rvm-color-menu-active-gradient: linear-gradient(90deg, #8A3A9C 0%, #641974 100%);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
    --rvm-font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

[data-theme='dark']:where([data-rvm-accent="purple"]) {
    --rvm-color-primary-text: #D7A8E4;
    --rvm-color-primary-outlined-hover: #3E2F57;
    --rvm-color-primary-outlined-resting: #55326B;
    --rvm-color-primary-soft: #372A50;
    --rvm-color-menu-active: var(--rvm-color-primary-main);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
}

/* Preto: o #3A3541 que e a base do texto do kit. No escuro INVERTE: o cheio vira o #E7E3FC (a base do
   texto escuro) com tinta #28243D por cima (11.91) — preto sobre a superficie escura sumiria. */
[data-rvm-accent="black"] {
    --rvm-color-primary-main: #3A3541;
    --rvm-color-primary-alt-light: #5E5966;
    --rvm-color-primary-alt-dark: #231F29;
    --rvm-color-primary-hover: #2E2A34;
    --rvm-color-primary-text: #3A3541;
    --rvm-color-primary-contrast: #FFFFFF;
    --rvm-color-primary-outlined-hover: #F7F7F7;
    --rvm-color-primary-outlined-resting: #D4D2D6;
    --rvm-color-primary-soft: #E7E7E8;
    --rvm-color-inverse-contrast: #3A3541;
    --rvm-color-menu-active: #4C4754;
    --rvm-color-menu-active-gradient: linear-gradient(90deg, #5E5966 0%, #3A3541 100%);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
    --rvm-font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

[data-theme='dark']:where([data-rvm-accent="black"]) {
    --rvm-color-primary-main: #E7E3FC;
    --rvm-color-primary-alt-light: #F5F3FE;
    --rvm-color-primary-alt-dark: #CFCBE5;
    --rvm-color-primary-hover: #D7D3EE;
    --rvm-color-primary-text: #E7E3FC;
    --rvm-color-primary-contrast: #28243D;
    --rvm-color-primary-outlined-hover: #4E4B66;
    --rvm-color-primary-outlined-resting: #7F7C93;
    --rvm-color-primary-soft: #484461;
    --rvm-color-menu-active: var(--rvm-color-primary-main);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
}

/* Profissional (paleta de produto, veio do ERPAgro): roxo profundo, mais azulado e mais escuro que o
   Roxo, com Hanken Grotesk. */
[data-rvm-accent="profissional"] {
    --rvm-color-primary-main: #43297E;
    --rvm-color-primary-alt-light: #6448AD;
    --rvm-color-primary-alt-dark: #2D1B57;
    --rvm-color-primary-hover: #3A2370;
    --rvm-color-primary-text: #43297E;
    --rvm-color-primary-contrast: #FFFFFF;
    --rvm-color-primary-outlined-hover: #F7F6FB;
    --rvm-color-primary-outlined-resting: #D5CEE9;
    --rvm-color-primary-soft: #E8E5F0;
    --rvm-color-inverse-contrast: #43297E;
    --rvm-color-menu-active: #543896;
    --rvm-color-menu-active-gradient: linear-gradient(90deg, #6448AD 0%, #43297E 100%);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
    --rvm-font-family: 'Hanken Grotesk', system-ui, -apple-system, 'Segoe UI', sans-serif;
}

[data-theme='dark']:where([data-rvm-accent="profissional"]) {
    --rvm-color-primary-text: #BBA8F2;
    --rvm-color-primary-outlined-hover: #39315A;
    --rvm-color-primary-outlined-resting: #453872;
    --rvm-color-primary-soft: #332C51;
    --rvm-color-menu-active: var(--rvm-color-primary-main);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
}

/* Acolhedor (paleta de produto): terracota, com Lora serifada. */
[data-rvm-accent="acolhedor"] {
    --rvm-color-primary-main: #9A4520;
    --rvm-color-primary-alt-light: #AD5530;
    --rvm-color-primary-alt-dark: #6E3016;
    --rvm-color-primary-hover: #87391A;
    --rvm-color-primary-text: #9A4520;
    --rvm-color-primary-contrast: #FFFFFF;
    --rvm-color-primary-outlined-hover: #FBF6F5;
    --rvm-color-primary-outlined-resting: #E9D1C7;
    --rvm-color-primary-soft: #F3E9E4;
    --rvm-color-inverse-contrast: #9A4520;
    --rvm-color-menu-active: #A44D28;
    --rvm-color-menu-active-gradient: linear-gradient(90deg, #AD5530 0%, #9A4520 100%);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
    --rvm-font-family: 'Lora', Georgia, 'Times New Roman', serif;
}

[data-theme='dark']:where([data-rvm-accent="acolhedor"]) {
    --rvm-color-primary-text: #F2B590;
    --rvm-color-primary-outlined-hover: #443347;
    --rvm-color-primary-outlined-resting: #633D40;
    --rvm-color-primary-soft: #3E3046;
    --rvm-color-menu-active: var(--rvm-color-primary-main);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
}

/* Utilitario (paleta de produto): verde campo, com Geist Mono de largura fixa. */
[data-rvm-accent="utilitario"] {
    --rvm-color-primary-main: #2E6930;
    --rvm-color-primary-alt-light: #3A7D3C;
    --rvm-color-primary-alt-dark: #1F4A21;
    --rvm-color-primary-hover: #285C2A;
    --rvm-color-primary-text: #2E6930;
    --rvm-color-primary-contrast: #FFFFFF;
    --rvm-color-primary-outlined-hover: #F5F8F5;
    --rvm-color-primary-outlined-resting: #CADCCA;
    --rvm-color-primary-soft: #E6EDE6;
    --rvm-color-inverse-contrast: #2E6930;
    --rvm-color-menu-active: #347336;
    --rvm-color-menu-active-gradient: linear-gradient(90deg, #3A7D3C 0%, #2E6930 100%);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
    --rvm-font-family: 'Geist Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;
}

[data-theme='dark']:where([data-rvm-accent="utilitario"]) {
    --rvm-color-primary-text: #9FD69B;
    --rvm-color-primary-outlined-hover: #323949;
    --rvm-color-primary-outlined-resting: #354D45;
    --rvm-color-primary-soft: #313448;
    --rvm-color-menu-active: var(--rvm-color-primary-main);
    --rvm-focus-ring-color: var(--rvm-color-primary-text);
}

/* --- Esquema Original (RvmColorScheme.Original): os degraus EXATOS do kit. ⚠️ REPROVA AA, de proposito — e o
       que o kit desenha: cor semantica como texto entre 1.55:1 (warning) e 3.3:1, branco sobre elas tambem,
       texto secundario a 0.68 (4.46:1) e contorno de campo a 1.49:1. O destaque (primary) nao muda. --- */
[data-rvm-contrast="original"] {
    --rvm-color-secondary-text: var(--rvm-color-secondary-main);
    --rvm-color-info-text: var(--rvm-color-info-main);
    --rvm-color-success-text: var(--rvm-color-success-main);
    --rvm-color-warning-text: var(--rvm-color-warning-main);
    --rvm-color-error-text: var(--rvm-color-error-main);
    --rvm-color-secondary-contrast: #FFFFFF;
    --rvm-color-info-contrast: #FFFFFF;
    --rvm-color-success-contrast: #FFFFFF;
    --rvm-color-warning-contrast: #FFFFFF;
    --rvm-color-error-contrast: #FFFFFF;
    --rvm-color-input-border: var(--rvm-color-input-line);
    --rvm-color-text-secondary: rgba(58, 53, 65, 0.68);
}

[data-theme='dark']:where([data-rvm-contrast="original"]) {
    --rvm-color-secondary-text: var(--rvm-color-secondary-main);
    --rvm-color-info-text: var(--rvm-color-info-main);
    --rvm-color-success-text: var(--rvm-color-success-main);
    --rvm-color-warning-text: var(--rvm-color-warning-main);
    --rvm-color-error-text: var(--rvm-color-error-main);
    --rvm-color-secondary-contrast: #FFFFFF;
    --rvm-color-info-contrast: #FFFFFF;
    --rvm-color-success-contrast: #FFFFFF;
    --rvm-color-warning-contrast: #FFFFFF;
    --rvm-color-error-contrast: #FFFFFF;
    --rvm-color-input-border: var(--rvm-color-input-line);
    --rvm-color-text-secondary: rgba(231, 227, 252, 0.68);
}

/* --- Tamanho da fonte (RvmFontScale): muda o tamanho base do documento, entao todo rem acompanha, como o ajuste
       de fonte do navegador. Fica no <html> porque rem e relativo a ele, e por :has() para nao precisar de JS.
       So o provider da RAIZ escreve o atributo: uma previa aninhada nao redimensiona a pagina. --- */
[data-rvm-font-scale="small"] { --rvm-font-scale: 0.875; }
[data-rvm-font-scale="large"] { --rvm-font-scale: 1.125; }
[data-rvm-font-scale="xlarge"] { --rvm-font-scale: 1.25; }
:root:has([data-rvm-font-scale="small"]) { --rvm-font-scale: 0.875; }
:root:has([data-rvm-font-scale="large"]) { --rvm-font-scale: 1.125; }
:root:has([data-rvm-font-scale="xlarge"]) { --rvm-font-scale: 1.25; }
:root:has([data-rvm-font-scale]) { font-size: calc(100% * var(--rvm-font-scale)); }

/* --- Menos movimento escolhido no app (o prefers-reduced-motion do sistema ja vale sozinho, no fim do arquivo). --- */
[data-rvm-motion="reduce"] {
    --rvm-transition-fast: 0ms;
    --rvm-transition-medium: 0ms;
}

[data-rvm-motion="reduce"] *,
[data-rvm-motion="reduce"] *::before,
[data-rvm-motion="reduce"] *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
}

/* --- Aparencia "automatico" (RvmThemeMode.System): o claro vem do bloco base (que inclui [data-theme='system']);
       com o sistema escuro, os GEMEOS dos blocos escuros acima. --- */
@media (prefers-color-scheme: dark) {
    [data-theme='system'] {
        color-scheme: dark;

        /* No escuro o `main` do primary como texto da 1.84:1 — link invisivel. Estes saem do
           `alt-light` do kit, clareados so onde ele nao alcanca 4.5:1 (primary +50%, secondary +20%
           e error +30% de branco). Info, success e warning ja passam com o alt-light puro. */
        --rvm-color-primary-text: #A0B3F4;
        --rvm-color-secondary-text: #B0B2B6;
        --rvm-color-info-text: #32BAFF;
        --rvm-color-success-text: #6AD01F;
        --rvm-color-warning-text: #FFB547;
        --rvm-color-error-text: #FF9094;

        --rvm-color-primary-outlined-hover: #797992;
        --rvm-color-primary-outlined-resting: #646D9F;
        --rvm-color-secondary-outlined-hover: #383451;
        --rvm-color-secondary-outlined-resting: #5E5D6F;
        --rvm-color-info-outlined-hover: #313859;
        --rvm-color-info-outlined-resting: #3274A5;
        --rvm-color-success-outlined-hover: #343945;
        --rvm-color-success-outlined-resting: #447C26;
        --rvm-color-warning-outlined-hover: #413745;
        --rvm-color-warning-outlined-resting: #987126;
        --rvm-color-error-outlined-hover: #412F4B;
        --rvm-color-error-outlined-resting: #983D4E;

        --rvm-color-primary-soft: #30315B; /* o primary a 12,5%, como no claro (DSGN-014) */
        --rvm-color-secondary-soft: #3C3954;
        --rvm-color-info-soft: #2F3A60;
        --rvm-color-success-soft: #343D4C;
        --rvm-color-warning-soft: #4A3E42;
        --rvm-color-error-soft: #493049;
        /* No escuro o kit nao desenhou o swatch de menu ativo (a celula e o proprio papel). Como a cor
           de marca nao muda entre temas, o degrade continua o mesmo; o solido cai no primary. */
        --rvm-color-menu-active: var(--rvm-color-primary-main);

        --rvm-color-background-body: #28243D;
        --rvm-color-background-paper: #312D4B;
        --rvm-color-divider: #474360;
        --rvm-color-outline: #5B5774;
        --rvm-color-input-line: #595572;
        --rvm-color-overlay: #2C2A43;
        --rvm-color-snackbar-background: #212121; /* igual ao claro: medido no Snackbar.png escuro; decisao do Rafael em 17/09 */
        --rvm-color-snackbar-text: #FFFFFF;

        /* Texto: base #E7E3FC com os alphas do kit. A base foi deduzida em 17/09 (0.87 sobre o papel
           #312D4B da exatamente #CFCBE5) e a amostragem da DSGN-014 CONFIRMOU primario e secundario,
           medindo linha a linha em Typography, Text Field, Checkbox e Switch: 0.84-0.86 e 0.66-0.67
           (o metodo subestima um pouco, porque fonte pequena nunca atinge a cor cheia). So o
           desabilitado estava errado: o kit usa 0.26, nao 0.38. */
        --rvm-color-text-primary: rgba(231, 227, 252, 0.87);
        --rvm-color-text-secondary: rgba(231, 227, 252, 0.68);
        /* 0.26, e nao 0.38: medido no campo desabilitado do kit escuro (#595572). Ver DSGN-014. */
        --rvm-color-text-disabled: rgba(231, 227, 252, 0.26);

        --rvm-color-action-hover: #383452;
        --rvm-color-action-selected: #3F3B59;
        --rvm-color-action-disabled: #605C79;
        --rvm-color-action-focus: #474360;

        /* A geometria e a mesma medida no claro (o kit nao repete a tela Shadow no escuro): o que muda e
           a cor, mais preta, porque sombra clara nao aparece sobre superficie escura. */
        --rvm-shadow-1: 0 1px 2px rgba(19, 17, 32, 0.6);
        --rvm-shadow-2: 0 4px 4px rgba(19, 17, 32, 0.3);
        --rvm-shadow-3: 0 6px 11px rgba(19, 17, 32, 0.45);
        --rvm-shadow-4: 0 10px 19px rgba(19, 17, 32, 0.47);
        --rvm-shadow-5: 0 14px 32px rgba(19, 17, 32, 0.47);
    }

    [data-theme='system']:where([data-rvm-accent="blue"]) {
        --rvm-color-primary-text: #A0B3F4;
        --rvm-color-primary-outlined-hover: #797992;
        --rvm-color-primary-outlined-resting: #646D9F;
        --rvm-color-primary-soft: #30315B;
        --rvm-color-menu-active: var(--rvm-color-primary-main);
        --rvm-focus-ring-color: var(--rvm-color-primary-text);
    }

    [data-theme='system']:where([data-rvm-accent="purple"]) {
        --rvm-color-primary-text: #D7A8E4;
        --rvm-color-primary-outlined-hover: #3E2F57;
        --rvm-color-primary-outlined-resting: #55326B;
        --rvm-color-primary-soft: #372A50;
        --rvm-color-menu-active: var(--rvm-color-primary-main);
        --rvm-focus-ring-color: var(--rvm-color-primary-text);
    }

    [data-theme='system']:where([data-rvm-accent="black"]) {
        --rvm-color-primary-main: #E7E3FC;
        --rvm-color-primary-alt-light: #F5F3FE;
        --rvm-color-primary-alt-dark: #CFCBE5;
        --rvm-color-primary-hover: #D7D3EE;
        --rvm-color-primary-text: #E7E3FC;
        --rvm-color-primary-contrast: #28243D;
        --rvm-color-primary-outlined-hover: #4E4B66;
        --rvm-color-primary-outlined-resting: #7F7C93;
        --rvm-color-primary-soft: #484461;
        --rvm-color-menu-active: var(--rvm-color-primary-main);
        --rvm-focus-ring-color: var(--rvm-color-primary-text);
    }

    [data-theme='system']:where([data-rvm-accent="profissional"]) {
        --rvm-color-primary-text: #BBA8F2;
        --rvm-color-primary-outlined-hover: #39315A;
        --rvm-color-primary-outlined-resting: #453872;
        --rvm-color-primary-soft: #332C51;
        --rvm-color-menu-active: var(--rvm-color-primary-main);
        --rvm-focus-ring-color: var(--rvm-color-primary-text);
    }

    [data-theme='system']:where([data-rvm-accent="acolhedor"]) {
        --rvm-color-primary-text: #F2B590;
        --rvm-color-primary-outlined-hover: #443347;
        --rvm-color-primary-outlined-resting: #633D40;
        --rvm-color-primary-soft: #3E3046;
        --rvm-color-menu-active: var(--rvm-color-primary-main);
        --rvm-focus-ring-color: var(--rvm-color-primary-text);
    }

    [data-theme='system']:where([data-rvm-accent="utilitario"]) {
        --rvm-color-primary-text: #9FD69B;
        --rvm-color-primary-outlined-hover: #323949;
        --rvm-color-primary-outlined-resting: #354D45;
        --rvm-color-primary-soft: #313448;
        --rvm-color-menu-active: var(--rvm-color-primary-main);
        --rvm-focus-ring-color: var(--rvm-color-primary-text);
    }

    [data-theme='system']:where([data-rvm-contrast="original"]) {
        --rvm-color-secondary-text: var(--rvm-color-secondary-main);
        --rvm-color-info-text: var(--rvm-color-info-main);
        --rvm-color-success-text: var(--rvm-color-success-main);
        --rvm-color-warning-text: var(--rvm-color-warning-main);
        --rvm-color-error-text: var(--rvm-color-error-main);
        --rvm-color-secondary-contrast: #FFFFFF;
        --rvm-color-info-contrast: #FFFFFF;
        --rvm-color-success-contrast: #FFFFFF;
        --rvm-color-warning-contrast: #FFFFFF;
        --rvm-color-error-contrast: #FFFFFF;
        --rvm-color-input-border: var(--rvm-color-input-line);
        --rvm-color-text-secondary: rgba(231, 227, 252, 0.68);
    }
}

/* --- Contraste alto (RvmThemeSettings.HighContrast): texto de apoio vira texto principal e as linhas ganham o
       peso de contorno de controle (secondary-main: 3.33:1 no claro, 3.93:1 no escuro). Por ultimo, e com o
       data-theme no seletor, para valer por cima do escuro, do automatico e do Original. --- */
[data-theme][data-rvm-high-contrast] {
    --rvm-color-text-secondary: var(--rvm-color-text-primary);
    --rvm-color-divider: var(--rvm-color-secondary-main);
    --rvm-color-outline: var(--rvm-color-secondary-main);
    --rvm-color-input-line: var(--rvm-color-secondary-main);
    --rvm-color-input-border: var(--rvm-color-secondary-main);
}

/* =============================================================================
   Base e escala tipografica aplicadas. Sao as unicas regras de elemento que a
   biblioteca impoe: o resto e por componente, em CSS isolado.
   ============================================================================= */
.rvm-root {
    font-family: var(--rvm-font-family);
    font-size: var(--rvm-text-body1-size);
    line-height: var(--rvm-text-body1-line);
    color: var(--rvm-color-text-primary);
    background-color: var(--rvm-color-background-body);
    -webkit-font-smoothing: antialiased;
}

.rvm-text-h1 { font-size: var(--rvm-text-h1-size); line-height: var(--rvm-text-h1-line); font-weight: var(--rvm-text-h1-weight); }
.rvm-text-h2 { font-size: var(--rvm-text-h2-size); line-height: var(--rvm-text-h2-line); font-weight: var(--rvm-text-h2-weight); }
.rvm-text-h3 { font-size: var(--rvm-text-h3-size); line-height: var(--rvm-text-h3-line); font-weight: var(--rvm-text-h3-weight); }
.rvm-text-h4 { font-size: var(--rvm-text-h4-size); line-height: var(--rvm-text-h4-line); font-weight: var(--rvm-text-h4-weight); }
.rvm-text-h5 { font-size: var(--rvm-text-h5-size); line-height: var(--rvm-text-h5-line); font-weight: var(--rvm-text-h5-weight); }
.rvm-text-h6 { font-size: var(--rvm-text-h6-size); line-height: var(--rvm-text-h6-line); font-weight: var(--rvm-text-h6-weight); }
.rvm-text-subtitle1 { font-size: var(--rvm-text-subtitle1-size); line-height: var(--rvm-text-subtitle1-line); font-weight: var(--rvm-text-subtitle1-weight); }
.rvm-text-subtitle2 { font-size: var(--rvm-text-subtitle2-size); line-height: var(--rvm-text-subtitle2-line); font-weight: var(--rvm-text-subtitle2-weight); }
.rvm-text-body1 { font-size: var(--rvm-text-body1-size); line-height: var(--rvm-text-body1-line); font-weight: var(--rvm-text-body1-weight); }
.rvm-text-body2 { font-size: var(--rvm-text-body2-size); line-height: var(--rvm-text-body2-line); font-weight: var(--rvm-text-body2-weight); }
.rvm-text-caption { font-size: var(--rvm-text-caption-size); line-height: var(--rvm-text-caption-line); font-weight: var(--rvm-text-caption-weight); }
.rvm-text-overline { font-size: var(--rvm-text-overline-size); line-height: var(--rvm-text-overline-line); font-weight: var(--rvm-text-overline-weight); text-transform: uppercase; letter-spacing: 0.08em; }
.rvm-text-button-lg { font-size: var(--rvm-text-button-lg-size); line-height: var(--rvm-text-button-lg-line); font-weight: var(--rvm-text-button-lg-weight); }
.rvm-text-button-md { font-size: var(--rvm-text-button-md-size); line-height: var(--rvm-text-button-md-line); font-weight: var(--rvm-text-button-md-weight); }
.rvm-text-button-sm { font-size: var(--rvm-text-button-sm-size); line-height: var(--rvm-text-button-sm-line); font-weight: var(--rvm-text-button-sm-weight); }
.rvm-text-input-label { font-size: var(--rvm-text-input-label-size); line-height: var(--rvm-text-input-label-line); font-weight: var(--rvm-text-input-label-weight); }
.rvm-text-helper { font-size: var(--rvm-text-helper-size); line-height: var(--rvm-text-helper-line); font-weight: var(--rvm-text-helper-weight); }
.rvm-text-input { font-size: var(--rvm-text-input-size); line-height: var(--rvm-text-input-line); font-weight: var(--rvm-text-input-weight); }
.rvm-text-avatar { font-size: var(--rvm-text-avatar-size); line-height: var(--rvm-text-avatar-line); font-weight: var(--rvm-text-avatar-weight); }
.rvm-text-chip { font-size: var(--rvm-text-chip-size); line-height: var(--rvm-text-chip-line); font-weight: var(--rvm-text-chip-weight); }
.rvm-text-tooltip { font-size: var(--rvm-text-tooltip-size); line-height: var(--rvm-text-tooltip-line); font-weight: var(--rvm-text-tooltip-weight); }
.rvm-text-alert-title { font-size: var(--rvm-text-alert-title-size); line-height: var(--rvm-text-alert-title-line); font-weight: var(--rvm-text-alert-title-weight); }
.rvm-text-table-header { font-size: var(--rvm-text-table-header-size); line-height: var(--rvm-text-table-header-line); font-weight: var(--rvm-text-table-header-weight); }
.rvm-text-badge { font-size: var(--rvm-text-badge-size); line-height: var(--rvm-text-badge-line); font-weight: var(--rvm-text-badge-weight); }

/* Foco visivel em tudo que e alcancavel por teclado — criterio de aceite, nao enfeite. */
.rvm-root :focus-visible {
    outline: var(--rvm-focus-ring-width) solid var(--rvm-focus-ring-color);
    outline-offset: var(--rvm-focus-ring-offset);
}

@media (prefers-reduced-motion: reduce) {
    :root {
        --rvm-transition-fast: 0ms;
        --rvm-transition-medium: 0ms;
    }
}
