/* =========================================================================
   ASA — design-tokens.css
   GERADO a partir de design-tokens.json. NAO editar a mao.
   Regenerar: python scripts/build_tokens.py && python scripts/emit_css.py

   Identidade base: o logotipo REAL da ASA (§0.2b / §4.2), nao as
   predefinicoes do tema idea-flow. Todos os racios de contraste nos
   comentarios foram CALCULADOS em build_tokens.py, nao afirmados.
   ========================================================================= */

:root {
  /* ---------- rampas tonais, construidas em OKLCH e mapeadas a sRGB ------- */

  /* navy — Navy ASA — do wordmark do logótipo. Superfície dominante das camadas narrativas. */
  --asa-navy: #171248;                  /* marca: oklch(23.0% 0.0962 279.8) · 17.26:1 s/ branco */
  --asa-navy-50: #f5f6ff;  /* 1.08:1 s/branco · 16.04:1 s/navy */
  --asa-navy-100: #e9ebff;  /* 1.18:1 s/branco · 14.63:1 s/navy */
  --asa-navy-200: #d2d6fa;  /* 1.42:1 s/branco · 12.12:1 s/navy */
  --asa-navy-300: #b5baed;  /* 1.87:1 s/branco · 9.22:1 s/navy */
  --asa-navy-400: #989dd8;  /* 2.58:1 s/branco · 6.70:1 s/navy */
  --asa-navy-500: #7b80c0;  /* 3.69:1 s/branco · 4.68:1 s/navy */
  --asa-navy-600: #6266a1;  /* 5.34:1 s/branco · 3.23:1 s/navy */
  --asa-navy-700: #4a4e80;  /* 7.80:1 s/branco · 2.21:1 s/navy */
  --asa-navy-800: #353760;  /* 11.25:1 s/branco · 1.53:1 s/navy */
  --asa-navy-900: #232442;  /* 14.97:1 s/branco · 1.15:1 s/navy */
  --asa-navy-950: #14152a;  /* 17.94:1 s/branco · 1.04:1 s/navy */

  /* verde — Verde ASA — do traço do logótipo. Segundo institucional, sobre fundo claro. */
  --asa-verde: #1c4620;                  /* marca: oklch(35.4% 0.0792 145.5) · 10.79:1 s/ branco */
  --asa-verde-50: #f1faf1;  /* 1.07:1 s/branco · 16.18:1 s/navy */
  --asa-verde-100: #e3f1e3;  /* 1.17:1 s/branco · 14.76:1 s/navy */
  --asa-verde-200: #c8e1c9;  /* 1.39:1 s/branco · 12.39:1 s/navy */
  --asa-verde-300: #a8c9a8;  /* 1.81:1 s/branco · 9.52:1 s/navy */
  --asa-verde-400: #87af88;  /* 2.47:1 s/branco · 7.00:1 s/navy */
  --asa-verde-500: #689469;  /* 3.48:1 s/branco · 4.96:1 s/navy */
  --asa-verde-600: #4f7851;  /* 5.08:1 s/branco · 3.40:1 s/navy */
  --asa-verde-700: #3a5d3c;  /* 7.47:1 s/branco · 2.31:1 s/navy */
  --asa-verde-800: #284429;  /* 10.77:1 s/branco · 1.60:1 s/navy */
  --asa-verde-900: #192e1a;  /* 14.51:1 s/branco · 1.19:1 s/navy */
  --asa-verde-950: #0d1c0e;  /* 17.65:1 s/branco · 1.02:1 s/navy */

  /* ambar — Âmbar — contraponto quente e CTA principal. A luz da tarde sobre a pedra. */
  --asa-ambar: #f2a93b;                  /* marca: oklch(78.7% 0.1471 73.0) · 2.00:1 s/ branco */
  --asa-ambar-50: #fff6ea;  /* 1.07:1 s/branco · 16.13:1 s/navy */
  --asa-ambar-100: #ffe9ce;  /* 1.18:1 s/branco · 14.63:1 s/navy */
  --asa-ambar-200: #f8d2a1;  /* 1.43:1 s/branco · 12.10:1 s/navy */
  --asa-ambar-300: #e9b46c;  /* 1.87:1 s/branco · 9.21:1 s/navy */
  --asa-ambar-400: #d49434;  /* 2.60:1 s/branco · 6.65:1 s/navy */
  --asa-ambar-500: #b67800;  /* 3.70:1 s/branco · 4.67:1 s/navy */
  --asa-ambar-600: #936001;  /* 5.37:1 s/branco · 3.22:1 s/navy */
  --asa-ambar-700: #724a00;  /* 7.79:1 s/branco · 2.22:1 s/navy */
  --asa-ambar-800: #543500;  /* 11.13:1 s/branco · 1.55:1 s/navy */
  --asa-ambar-900: #392200;  /* 14.97:1 s/branco · 1.15:1 s/navy */
  --asa-ambar-950: #241400;  /* 17.87:1 s/branco · 1.04:1 s/navy */

  /* neutral — derivados do matiz do navy, nunca cinzas puros (§4.2) */
  --asa-neutral-50: #f5f6ff;  /* 1.08:1 s/branco · 16.04:1 s/navy */
  --asa-neutral-100: #eaecf8;  /* 1.18:1 s/branco · 14.67:1 s/navy */
  --asa-neutral-200: #d6d8e4;  /* 1.42:1 s/branco · 12.17:1 s/navy */
  --asa-neutral-300: #bcbec9;  /* 1.85:1 s/branco · 9.33:1 s/navy */
  --asa-neutral-400: #a0a2ad;  /* 2.54:1 s/branco · 6.79:1 s/navy */
  --asa-neutral-500: #848691;  /* 3.62:1 s/branco · 4.77:1 s/navy */
  --asa-neutral-600: #6a6c76;  /* 5.22:1 s/branco · 3.30:1 s/navy */
  --asa-neutral-700: #51535c;  /* 7.66:1 s/branco · 2.25:1 s/navy */
  --asa-neutral-800: #3a3b45;  /* 11.10:1 s/branco · 1.55:1 s/navy */
  --asa-neutral-900: #262730;  /* 14.84:1 s/branco · 1.16:1 s/navy */
  --asa-neutral-950: #16171f;  /* 17.85:1 s/branco · 1.03:1 s/navy */

  /* verde-luz — obrigatorio por §4.2: o verde de marca da 1.60:1 sobre o
     navy de marca, ou seja e invisivel. Esta e a variante minima que passa AA. */
  --asa-verde-luz: #5c8f5e;  /* oklch(60% 0.0911 145.5) · 4.56:1 s/navy */
  --asa-white: #ffffff;

  /* ---------- acentos por programa (§4.5) --------------------------------- */
  /* Regra 2, VERIFICADA: nenhum passa AA sobre branco (medido 1.64-2.44:1).
     Logo, na camada funcional clara aparecem SO como barra, icone, bordo ou
     fundo de chip — NUNCA como texto. */
  --asa-prog-habitacao: #f2a93b;  /* +Habitação · 8.64:1 s/navy · 2.00:1 s/branco (nao-texto) */
  --asa-prog-regressar: #4fc3c7;  /* Regressar · 8.19:1 s/navy · 2.11:1 s/branco (nao-texto) */
  --asa-prog-proinfancia: #f08a7a;  /* Proinfância · 7.09:1 s/navy · 2.44:1 s/branco (nao-texto) */
  --asa-prog-valorizacao: #7fc08a;  /* Valorização Habitacional · 8.06:1 s/navy · 2.14:1 s/branco (nao-texto) */
  --asa-prog-capacitar: #b49be8;  /* C@pacitar · 7.23:1 s/navy · 2.39:1 s/branco (nao-texto) */
  --asa-prog-oportunidades: #e8c766;  /* 65 Oportunidades · 10.52:1 s/navy · 1.64:1 s/branco (nao-texto) */
  /* Serie harmonizada (mesma L e C em OKLCH, como §4.5 regra 1 exige). */
  --asa-prog-habitacao-harm: #e1a757;  /* 8.11:1 s/navy */
  --asa-prog-regressar-harm: #37cacf;  /* 8.64:1 s/navy */
  --asa-prog-proinfancia-harm: #f69686;  /* 7.91:1 s/navy */
  --asa-prog-valorizacao-harm: #7bc989;  /* 8.68:1 s/navy */
  --asa-prog-capacitar-harm: #bda2f5;  /* 7.93:1 s/navy */
  --asa-prog-oportunidades-harm: #d0b052;  /* 8.23:1 s/navy */

  /* ---------- tipografia (§4.4b) ------------------------------------------ */
  /* Reaproveitam-se as duas famílias que o plugin já auto-aloja em produção, em vez de introduzir novas. Motivo: a ficha está em 511 KB, acima do orçamento de 500 KB de §2.6, e é a peça protagonista do encargo (§1). Ambas são variáveis, com font-display:swap, e cumprem os cinco critérios de §4.4b. Figtree fica descartada (§4.4b) e o seu @font-face inválido corrigido. Resultado: UM sistema visual, 0 bytes adicionais. */
  --asa-font-display: "Newsreader", Georgia, serif;
  --asa-font-text: "Hanken Grotesk", system-ui, sans-serif;
  --asa-text-xs: clamp(0.79rem, 0.78rem + 0.05vw, 0.83rem);  /* metadados, legendas */
  --asa-text-sm: clamp(0.94rem, 0.92rem + 0.10vw, 1.00rem);  /* texto auxiliar, ajuda de campo */
  --asa-text-base: clamp(1.0625rem, 1.03rem + 0.16vw, 1.1875rem);  /* corpo — mínimo 17px, corrige os 14.4px medidos em produção */
  --asa-text-lg: clamp(1.27rem, 1.22rem + 0.25vw, 1.42rem);  /* entrada, destaque */
  --asa-text-xl: clamp(1.52rem, 1.44rem + 0.40vw, 1.71rem);  /* h3 */
  --asa-text-2xl: clamp(1.82rem, 1.69rem + 0.65vw, 2.05rem);  /* h2 */
  --asa-text-3xl: clamp(2.19rem, 1.97rem + 1.05vw, 2.46rem);  /* h1 */
  --asa-text-4xl: clamp(2.62rem, 2.28rem + 1.70vw, 3.60rem);  /* hero, cifras de impacto */
  --asa-leading-tight: 1.12;
  --asa-leading-snug: 1.28;
  --asa-leading-normal: 1.58;
  --asa-leading-relaxed: 1.72;
  --asa-tracking-tight: -0.02em;
  --asa-tracking-normal: 0;
  --asa-tracking-wide: 0.04em;
  --asa-measure-prose: 68ch;
  --asa-measure-form: 42ch;
  --asa-weight-body: 400;
  --asa-weight-body-on-dark: 350;  /* §4.4b crit.3: sobre navy o texto engorda */

  /* ---------- space ---------- */
  --asa-space-3xs: 0.25rem;
  --asa-space-2xs: 0.5rem;
  --asa-space-xs: 0.75rem;
  --asa-space-sm: 1rem;
  --asa-space-md: 1.5rem;
  --asa-space-lg: 2rem;
  --asa-space-xl: 3rem;
  --asa-space-2xl: 4rem;
  --asa-space-3xl: 6rem;
  --asa-space-4xl: 8rem;

  /* ---------- radius ---------- */
  --asa-radius-none: 0;
  --asa-radius-sm: 4px;
  --asa-radius-md: 8px;
  --asa-radius-lg: 12px;
  --asa-radius-xl: 18px;
  --asa-radius-2xl: 28px;
  --asa-radius-full: 999px;

  /* ---------- breakpoint ---------- */
  --asa-bp-sm: 480px;
  --asa-bp-md: 768px;
  --asa-bp-lg: 1024px;
  --asa-bp-xl: 1280px;
  --asa-bp-2xl: 1536px;

  /* ---------- shadow ---------- */
  --asa-shadow-raised: 0 1px 2px rgb(23 18 72 / 0.06), 0 2px 8px rgb(23 18 72 / 0.06);
  --asa-shadow-overlay: 0 24px 64px rgb(23 18 72 / 0.45);
  --asa-shadow-poster: 0 2px 0 rgb(255 255 255 / 0.10) inset, 0 32px 80px rgb(23 18 72 / 0.62), 0 4px 16px rgb(23 18 72 / 0.5);
  /* Sombras derivadas do navy, nunca de preto puro: uma sombra preta sobre uma paleta indigo le-se suja. A de overlay e a do cartaz de entrada, que precisa de se separar do fundo esbatido. */

  /* ---------- icon ---------- */
  --asa-icon-inline: 1.35em;

  /* ---------- measure ---------- */
  --asa-measure-figure: 46rem;

  /* ---------- bordos ---------- */
  --asa-border-hairline: 1px;
  --asa-border-thin: 1.5px;
  --asa-border-thick: 2px;
  --asa-border-focus: 3px;
  --asa-border-field: 1.5px;  /* VISUAL-07: os campos da ficha medem 1.93:1 de limite. Exige-se ≥3:1 para limites de controlo (WCAG 1.4.11). */

  /* ---------- luz de UMA fonte, em cima a esquerda (§4.4) ----------------- */
  /* Todos os degradados derivam de UMA fonte de luz coerente em cima à esquerda. Não são degradados postos onde caem: é a mesma luz a atravessar o sítio. */
  --asa-gradient-surface-narrative: linear-gradient(148deg, #353760 0%, #171248 58%, #14152a 100%);
  --asa-gradient-edge-light: linear-gradient(148deg, rgb(255 255 255 / 0.16), rgb(255 255 255 / 0) 62%);
  --asa-gradient-warm-wash: linear-gradient(148deg, #b67800 0%, transparent 70%);
  /* Fotografia em duotono navy→âmbar: #171248 → #d49434 */

  /* ---------- superficies translucidas (§4.3) ----------------------------- */
  /* - Só em camadas de chrome e overlay. Nunca no corpo de conteúdo longo. */
  /* - Nunca nos campos do formulário de candidatura (§4.3 regra 3, critério A3c). */
  /* - Máximo duas superfícies translúcidas visíveis. Nunca vidro sobre vidro. */
  /* - Contraste medido contra o PIOR fundo possível, não a média (critério A3). */
  /* - Todo o efeito tem fallback opaco e respeita prefers-reduced-transparency. */
  --asa-glass-nav-bg: rgb(23 18 72 / 0.72);
  --asa-glass-nav-blur: 14px;
  --asa-glass-nav-border: rgb(255 255 255 / 0.12);
  --asa-glass-nav-fallback: #232442;  /* opaco · branco da 14.97:1 */
  --asa-glass-card-over-photo-bg: rgb(23 18 72 / 0.62);
  --asa-glass-card-over-photo-blur: 18px;
  --asa-glass-card-over-photo-border: rgb(255 255 255 / 0.14);
  --asa-glass-card-over-photo-fallback: #353760;  /* opaco · branco da 11.25:1 */
  --asa-glass-status-chip-bg: rgb(255 255 255 / 0.10);
  --asa-glass-status-chip-blur: 10px;
  --asa-glass-status-chip-border: rgb(255 255 255 / 0.22);
  --asa-glass-status-chip-fallback: #4a4e80;  /* opaco · branco da 7.80:1 */

  /* ---------- movimento (§4.4) ------------------------------------------- */
  --asa-duration-fast: 140ms;
  --asa-duration-base: 220ms;
  --asa-duration-slow: 300ms;
  --asa-easing-spring: cubic-bezier(0.34, 1.26, 0.64, 1);
  --asa-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);

  /* ======================= tokens semanticos ============================= */

  /* -- surface -- */
  --asa-surface-narrative: #171248;
  --asa-surface-narrative-raised: #353760;
  --asa-surface-functional: #ffffff;
  --asa-surface-functional-sunken: #f5f6ff;
  --asa-surface-partner-zone: #ffffff;
  /* §4.3: escuro nas camadas narrativas, claro nas funcionais — a ficha, formulários, documentos, contas e tira de parceiros. */

  /* -- text -- */
  --asa-text-on-narrative: #ffffff;
  --asa-text-on-narrative-muted: #d2d6fa;
  --asa-text-on-functional: #262730;
  --asa-text-on-functional-muted: #51535c;

  /* -- layer -- */
  --asa-layer-muted: #51535c;
  --asa-layer-frame-bg: #171248;
  --asa-layer-frame-text: #ffffff;
  /* Token CONTEXTUAL: cada camada redefine `--asa-layer-muted` para o seu tom atenuado, e os componentes consomem so este. As custom properties herdam do antepassado MAIS PROXIMO que as define, que e a semantica correcta — a camada mais proxima ganha. Com selectores de igual especificidade (`.p-functional .p-muted` vs `.p-narrative .p-muted`) decidia a ordem no ficheiro, e a camada clara ganhava DENTRO do painel escuro: texto escuro sobre navy, ilegivel. O valor aqui e o de omissao. */

  /* -- action -- */
  --asa-action-primary-bg: #f2a93b;
  --asa-action-primary-text: #171248;
  --asa-action-primary-bg-hover: #e9b46c;
  --asa-action-primary-on-habitacao-bg: #171248;
  --asa-action-primary-on-habitacao-text: #ffffff;
  --asa-action-link-on-functional: #3a5d3c;
  --asa-action-link-decoration: underline;
  /* §4.5 regra 4: o âmbar é simultaneamente acento de +Habitação e cor de CTA global; em páginas de +Habitação a CTA passa a navy sólido para não perder hierarquia. */
  /* VISUAL-01/A11Y-08: hoje o link da política de privacidade fica a 1.10:1 sem sublinhado. Sublinhado é obrigatório em texto corrido. */

  /* -- field -- */
  --asa-field-bg: #ffffff;
  --asa-field-text: #262730;
  --asa-field-border: #848691;
  --asa-field-border-hover: #51535c;
  --asa-field-border-focus: #3a5d3c;
  --asa-field-placeholder: #51535c;
  --asa-field-label: #262730;
  --asa-field-help: #3a3b45;
  --asa-field-required-mark: #543500;
  --asa-field-min-target: 44px;

  /* -- feedback -- */
  --asa-feedback-error-text: #241400;
  --asa-feedback-error-border: #a1341f;
  --asa-feedback-error-bg: #fff6ea;
  --asa-feedback-success-text: #3a5d3c;
  --asa-feedback-success-bg: #f1faf1;
  --asa-feedback-info-text: #4a4e80;
  --asa-feedback-info-bg: #f5f6ff;

  /* -- status_convocatoria -- */
  --asa-status-convocatoria-aberta-bg: #e3f1e3;
  --asa-status-convocatoria-aberta-text: #3a5d3c;
  --asa-status-convocatoria-encerrada-bg: #eaecf8;
  --asa-status-convocatoria-encerrada-text: #3a3b45;
  --asa-status-convocatoria-em-breve-bg: #ffe9ce;
  --asa-status-convocatoria-em-breve-text: #392200;
  /* §6.1 exige estado da convocatória visualmente inequívoco. */

  /* -- partner_logo -- */
  --asa-partner-logo-height: 56px;
  --asa-partner-logo-height-wide: 64px;
  --asa-partner-logo-min-width: 250px;
  /* Largura minima de 250px e regra da CMF (p. 11), e e o que obriga a tira a empilhar em telefone: com 250px de minimo, um viewport de 375px nao cabe mais do que um logotipo por fila. */

  /* -- brand -- */
  --asa-brand-nav-logo: 44px;
  --asa-brand-nav-logo-lg: 64px;
  --asa-brand-nav-logo-xl: 76px;
  --asa-brand-programme-logo: 80px;
  --asa-brand-programme-logo-wide: 96px;
  --asa-brand-ticker-logo: 72px;
  --asa-brand-ticker-logo-wide: 88px;
  --asa-brand-project-logo: 9rem;
  --asa-brand-ticker-logo-max-width: 13rem;
  --asa-brand-stat-number: clamp(2rem, 1.6rem + 1.6vw, 2.9rem);
  --asa-brand-folder-tab: 2.25rem;
  --asa-brand-folder-min-height: 7rem;
  --asa-brand-year-badge: 4.5rem;
  --asa-brand-folder-min-width: 9rem;
  --asa-brand-timeline-dot: 12px;
  --asa-brand-timeline-dot-offset: 7px;
  /* O logotipo da ASA e o dos programas sao o unico material grafico proprio que o sitio tem — nao ha fotografia. Dimensiona-los como icones de 32-52px desperdicava-os. Servem-se a 2x. */

  /* -- poios -- */
  --asa-poios-step-min-width: 15rem;
  --asa-poios-step-1: 9rem;
  --asa-poios-step-2: 10.5rem;
  --asa-poios-step-3: 12rem;
  --asa-poios-step-4: 13.5rem;
  --asa-poios-step-5: 15rem;
  --asa-poios-logo-height: 52px;
  /* Progressao de 1.5rem por degrau. A altura crescente e semantica: a associacao construiu-se degrau a degrau ao longo de 26 anos. */

  /* -- focus_ring -- */
  --asa-focus-ring-color-on-narrative: #f2a93b;
  --asa-focus-ring-color-on-functional: #b67800;
  --asa-focus-ring-width: 3px;
  --asa-focus-ring-offset: 2px;
  /* Duas cores de anel, uma por superfície: nenhum âmbar único atinge ≥3:1 contra navy E branco simultaneamente. Critério A5 exige foco sempre visível. */
}

/* ---------------------------------------------------------------------------
   §4.3 — reparto claro/escuro por FUNCAO, nao por gosto:
   escuro nas camadas narrativas (portada, programas, 25 anos, noticias),
   claro nas camadas funcionais (ficha, formularios, documentos, contas,
   tira de parceiros). Resolve a fadiga de preencher um formulario longo
   sobre fundo escuro e protege os logotipos dos parceiros.
   --------------------------------------------------------------------------- */
.asa-narrative {
  background: var(--asa-gradient-surface-narrative);
  color: var(--asa-text-on-narrative);
  font-weight: var(--asa-weight-body-on-dark);
}
.asa-functional {
  background: var(--asa-surface-functional);
  color: var(--asa-text-on-functional);
  font-weight: var(--asa-weight-body);
}

/* ---------------------------------------------------------------------------
   Degradacao graciosa — critério A3b exige fallback verificado em cada
   superficie com backdrop-filter, mais respeito por reduced-transparency
   e reduced-motion.
   --------------------------------------------------------------------------- */
.asa-glass-nav {
  background: var(--asa-glass-nav-bg);
  -webkit-backdrop-filter: blur(var(--asa-glass-nav-blur)) saturate(1.4);
  backdrop-filter: blur(var(--asa-glass-nav-blur)) saturate(1.4);
  border-bottom: var(--asa-border-hairline) solid var(--asa-glass-nav-border);
}
@supports not (backdrop-filter: blur(1px)) {
  .asa-glass-nav { background: var(--asa-glass-nav-fallback); }
}
@media (prefers-reduced-transparency: reduce) {
  .asa-glass-nav,
  .asa-glass-card-over-photo,
  .asa-glass-status-chip {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
  .asa-glass-nav { background: var(--asa-glass-nav-fallback); }
  .asa-glass-card-over-photo { background: var(--asa-glass-card-over-photo-fallback); }
  .asa-glass-status-chip { background: var(--asa-glass-status-chip-fallback); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Foco: duas cores, uma por superficie. Nenhum ambar unico atinge >=3:1
   contra navy E branco ao mesmo tempo. Critério A5 exige foco sempre visivel. */
.asa-functional :is(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: var(--asa-focus-ring-width) solid var(--asa-focus-ring-color-on-functional);
  outline-offset: var(--asa-focus-ring-offset);
}
.asa-narrative :is(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: var(--asa-focus-ring-width) solid var(--asa-focus-ring-color-on-narrative);
  outline-offset: var(--asa-focus-ring-offset);
}

/* ---------------------------------------------------------------------------
   Correcoes a defeitos MEDIDOS em producao. Cada regra cita o achado.
   --------------------------------------------------------------------------- */
/* F1 / VISUAL-05 — o @font-face do tema usa font-style:semibold e :bold, que
   nao sao valores validos, e fixa font-weight:400, anulando o eixo variavel.
   Erro confirmado pelo validador W3C nas tres paginas. Substitui-se por
   declaracoes corretas sobre os ficheiros que o plugin JA serve. */
@font-face {
  font-family: "Hanken Grotesk";
  src: url("../fonts/hanken-grotesk-latin.woff2") format("woff2");
  font-weight: 400 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Newsreader";
  src: url("../fonts/newsreader-latin.woff2") format("woff2");
  font-weight: 500 700;
  font-style: normal;
  font-display: swap;
}

/* VISUAL-06 — o corpo mede 14.375px a 375px, abaixo do minimo de 17px. */
body { font-family: var(--asa-font-text); font-size: var(--asa-text-base);
       line-height: var(--asa-leading-normal); }

/* VISUAL-01 / A11Y-08 — na ficha uma regra de cor do tema vence a do plugin por
   ordem de origem e deixa a ligacao da politica de privacidade a 1.10:1, sem
   sublinhado. Especificidade (0,2,1) vence (0,1,1) sem !important. */
.entry-content .asa-application a {
  color: var(--asa-action-link-on-functional);
  text-decoration: var(--asa-action-link-decoration);
  text-underline-offset: 2px;
}

/* VISUAL-07 — os campos da ficha tem limite a 1.93:1; WCAG 1.4.11 exige >=3:1. */
.asa-functional :is(input, select, textarea) {
  border: var(--asa-border-field) solid var(--asa-field-border);
  background: var(--asa-field-bg);
  color: var(--asa-field-text);
  min-height: var(--asa-field-min-target);
}

/* A11Y-03 — o texto dos placeholders esta a 1.86:1. */
.asa-functional ::placeholder { color: var(--asa-field-placeholder); opacity: 1; }

/* FICHA-06 / VISUAL-14 — a tabela do agregado E deslocavel (overflow-x:auto),
   mas nada o sinaliza. Pista de deslocamento por sombra, sem tocar no markup. */
.asa-household-table-wrap {
  background:
    linear-gradient(to right, var(--asa-white) 30%, rgb(255 255 255 / 0)) left center,
    linear-gradient(to left, var(--asa-white) 30%, rgb(255 255 255 / 0)) right center,
    radial-gradient(farthest-side at 0 50%, rgb(23 18 72 / 0.18), rgb(23 18 72 / 0)) left center,
    radial-gradient(farthest-side at 100% 50%, rgb(23 18 72 / 0.18), rgb(23 18 72 / 0)) right center;
  background-repeat: no-repeat;
  background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%;
  background-attachment: local, local, scroll, scroll;
}
