/* =============================================================================
   Abregel — sistema visual do site
   Conceito: "Autoridade setorial". Linguagem de relatório anual:
   marinho, branco e cinzas frios; ciano apenas como acento.

   Camadas:
     tokens      variáveis de cor, tipo, espaço, movimento
     base        reset e elementos HTML
     layout      container, grid, seções
     components  cabeçalho, botões, tabelas, formulários...
     utilities   auxiliares de uso pontual

   Contraste (WCAG AA) verificado para todos os pares de texto:
     --ink  #1A2230 / branco ........ 15.9:1
     --muted #4A5568 / branco ....... 7.5:1   / --paper 7.0:1
     --navy-900 #005BB0 / branco .... 6.7:1   (títulos, links e botões)
     --on-dark #FFFFFF / --navy-950 . 5.6:1   / fim do degradê #0A70C9 4.9:1
     --on-dark-muted #F0F7FE / --navy-950 5.2:1 / #0A70C9 4.6:1
     --cyan #1AA7EC .................. só decorativo; em fundo escuro vira #BFE8FF
     --field-border #7A8699 / branco  3.9:1   (contraste não textual ≥ 3:1)
   ============================================================================= */

@layer tokens, base, layout, components, utilities;

/* -----------------------------------------------------------------------------
   Fontes (hospedadas localmente, subconjunto latino, OFL-1.1)
   -------------------------------------------------------------------------- */
@font-face {
  font-family: "Montserrat";
  src: url("../fonts/montserrat-latin-var.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/inter-latin-var.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/inter-latin-var-italic.woff2") format("woff2");
  font-weight: 100 900;
  font-style: italic;
  font-display: swap;
}
/* Fallbacks métricos: reduzem o deslocamento de layout na troca de fonte. */
@font-face {
  font-family: "Heading Fallback";
  src: local("Arial"), local("Helvetica Neue"), local("Helvetica");
  size-adjust: 112%;
  ascent-override: 86%;
  descent-override: 22%;
}
@font-face {
  font-family: "Sans Fallback";
  src: local("Arial"), local("Helvetica Neue"), local("Helvetica");
  size-adjust: 107%;
  ascent-override: 90%;
  descent-override: 22%;
}

/* =============================================================================
   TOKENS
   ========================================================================== */
@layer tokens {
  :root {
    /* Cor — marca e neutros */
    /* Escala azul da marca (o nome "navy" ficou da primeira versão; o
       cliente pediu o azul vivo da referência, #007DDE → #37A8EC). */
    --navy-950: #0068c2;
    --navy-900: #005bb0;
    --navy-800: #0a78d6;
    --navy-700: #004c94;
    --navy-600: #2a9be6;
    --surface-dark: linear-gradient(100deg, var(--navy-950) 0%, #0a70c9 100%);
    --ink: #1a2230;
    --gray-700: #3a4557;
    --gray-600: #4a5568;
    --gray-500: #7a8699;
    --gray-400: #a3adbb;
    --gray-300: #c9d1dc;
    --gray-200: #dde3ea;
    --gray-100: #e9edf2;
    --paper: #f5f7fa;
    --white: #ffffff;
    --cyan: #1aa7ec;
    --cyan-soft: #7fd0f5;
    --steel: #8a94a3;
    --success: #1f6b4a;
    --danger: #a4262c;
    --warning: #8a5a00;

    /* Papéis (tema claro) */
    --bg: var(--white);
    --bg-alt: var(--paper);
    --text: var(--ink);
    --heading: var(--navy-900);
    --muted: var(--gray-600);
    --rule: var(--gray-300);
    --rule-strong: var(--navy-900);
    --accent: var(--cyan);
    --link: var(--navy-900);
    --focus: var(--navy-900);
    --field-bg: var(--white);
    --field-border: var(--gray-500);
    --on-dark: var(--white);
    --on-dark-muted: #f0f7fe;

    /* Tipografia */
    --font-heading: "Montserrat", "Heading Fallback", -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
    --font-sans: "Inter", "Sans Fallback", -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;

    --fs-display: clamp(2.125rem, 1.5rem + 2.6vw, 3.75rem);
    --fs-h1: clamp(2rem, 1.5rem + 2vw, 3.25rem);
    --fs-h2: clamp(1.625rem, 1.3rem + 1.35vw, 2.5rem);
    --fs-h3: clamp(1.25rem, 1.1rem + 0.55vw, 1.5rem);
    --fs-h4: clamp(1.125rem, 1.07rem + 0.25vw, 1.25rem);
    --fs-lead: clamp(1.1875rem, 1.08rem + 0.45vw, 1.4375rem);
    --fs-body: clamp(1.0625rem, 1.01rem + 0.22vw, 1.1875rem);
    --fs-small: 0.9375rem;
    --fs-xs: 0.8125rem;
    --fs-label: 0.75rem;
    --fs-figure: clamp(2.5rem, 1.9rem + 2.4vw, 3.875rem);

    --lh-tight: 1.1;
    --lh-heading: 1.18;
    --lh-body: 1.65;
    --tracking-display: -0.03em;
    --tracking-heading: -0.02em;
    --tracking-label: 0.14em;

    --measure: 68ch;
    --measure-narrow: 52ch;

    /* Espaçamento (base 8) */
    --s-1: 0.25rem;
    --s0: 0.5rem;
    --s1: 1rem;
    --s2: 1.5rem;
    --s3: 2rem;
    --s4: 3rem;
    --s5: 4rem;
    --s6: 6rem;
    --s7: 8rem;
    --section-y: clamp(4.5rem, 2.8rem + 6.4vw, 9rem);
    --gutter: clamp(1rem, 4.2vw, 5rem);
    --grid-gap: clamp(1rem, 0.6rem + 1.6vw, 2rem);
    --container: 82.5rem; /* 1320px */
    --header-h: 5rem;

    /* Forma */
    --radius-sm: 2px;
    --radius: 4px;
    --border: 1px;
    --border-strong: 2px;
    --shadow-none: none;
    --shadow-raise: 0 1px 2px rgb(5 15 36 / 0.06), 0 8px 24px -12px rgb(5 15 36 / 0.18);

    /* Movimento */
    --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
    --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
    --dur-fast: 180ms;
    --dur: 320ms;
    --dur-slow: 700ms;

    color-scheme: light;
  }

  /* Seções escuras redefinem os papéis. */
  .theme-dark {
    --bg: var(--navy-950);
    --bg-alt: var(--navy-900);
    --text: var(--on-dark);
    --heading: var(--white);
    --muted: var(--on-dark-muted);
    --rule: rgb(255 255 255 / 0.16);
    --rule-strong: rgb(255 255 255 / 0.72);
    --link: var(--white);
    --focus: var(--cyan-soft);
    --field-bg: rgb(255 255 255 / 0.04);
    --field-border: rgb(255 255 255 / 0.6);
    --cyan: #bfe8ff;
    --accent: var(--cyan);
    color-scheme: dark;
  }
  .theme-dark { --map-stroke: rgb(255 255 255 / 0.24); }
  .theme-navy {
    --bg: var(--navy-900);
    --bg-alt: var(--navy-800);
  }
}

/* =============================================================================
   BASE
   ========================================================================== */
@layer base {
  *,
  *::before,
  *::after {
    box-sizing: border-box;
  }

  html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    scroll-padding-top: calc(var(--header-h) + var(--s2));
    hanging-punctuation: first last;
  }

  body {
    margin: 0;
    background: var(--bg);
    color: var(--text);
    font-family: var(--font-sans);
    font-size: var(--fs-body);
    line-height: var(--lh-body);
    font-optical-sizing: auto;
    font-feature-settings: "cv11", "ss01";
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
  }

  main {
    flex: 1 0 auto;
  }

  h1,
  h2,
  h3,
  h4 {
    margin: 0;
    color: var(--heading);
    font-family: var(--font-heading);
    font-weight: 600;
    line-height: var(--lh-heading);
    letter-spacing: var(--tracking-heading);
    text-wrap: balance;
  }
  h1 {
    font-size: var(--fs-h1);
    line-height: var(--lh-tight);
    letter-spacing: var(--tracking-display);
  }
  h2 {
    font-size: var(--fs-h2);
  }
  h3 {
    font-size: var(--fs-h3);
  }
  h4 {
    font-size: var(--fs-h4);
    font-family: var(--font-sans);
    font-weight: 600;
    letter-spacing: -0.005em;
  }

  p,
  ul,
  ol,
  dl,
  blockquote,
  figure {
    margin: 0;
  }
  p {
    text-wrap: pretty;
  }

  a {
    color: var(--link);
    text-decoration-thickness: 1px;
    text-underline-offset: 0.2em;
    transition: color var(--dur-fast) var(--ease-out), text-decoration-color var(--dur-fast) var(--ease-out);
  }
  a:hover {
    text-decoration-color: var(--accent);
  }

  img,
  svg,
  video,
  canvas {
    display: block;
    max-width: 100%;
  }
  img {
    height: auto;
  }

  strong,
  b {
    font-weight: 600;
  }

  hr {
    border: 0;
    border-top: var(--border) solid var(--rule);
    margin: 0;
  }

  table {
    border-collapse: collapse;
    width: 100%;
  }

  button,
  input,
  select,
  textarea {
    font: inherit;
    color: inherit;
    letter-spacing: inherit;
  }
  button {
    cursor: pointer;
  }

  :focus-visible {
    outline: 2px solid var(--focus);
    outline-offset: 3px;
    border-radius: var(--radius-sm);
  }
  :focus:not(:focus-visible) {
    outline: none;
  }

  ::selection {
    background: var(--navy-900);
    color: var(--white);
  }

  [hidden] {
    display: none !important;
  }

  @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;
    }
  }
}

/* =============================================================================
   LAYOUT
   ========================================================================== */
@layer layout {
  .container {
    width: 100%;
    max-width: calc(var(--container) + var(--gutter) * 2);
    margin-inline: auto;
    padding-inline: var(--gutter);
  }
  .container--narrow {
    max-width: calc(52rem + var(--gutter) * 2);
  }

  .grid {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    column-gap: var(--grid-gap);
    row-gap: var(--s4);
  }
  .grid > * {
    grid-column: 1 / -1;
    min-width: 0;
  }
  @media (min-width: 62rem) {
    .grid > [class*="col-"] { grid-column-start: auto; }
  }

  @media (min-width: 62rem) {
    .col-3 { grid-column-end: span 3; }
    .col-4 { grid-column-end: span 4; }
    .col-5 { grid-column-end: span 5; }
    .col-6 { grid-column-end: span 6; }
    .col-7 { grid-column-end: span 7; }
    .col-8 { grid-column-end: span 8; }
    .col-9 { grid-column-end: span 9; }
    .start-2 { grid-column-start: 2; }
    .start-4 { grid-column-start: 4; }
    .start-5 { grid-column-start: 5; }
    .start-6 { grid-column-start: 6; }
    .start-7 { grid-column-start: 7; }
    .start-8 { grid-column-start: 8; }
    .start-9 { grid-column-start: 9; }
  }
  @media (min-width: 40rem) and (max-width: 61.99rem) {
    .md-col-6 { grid-column: auto / span 6; }
  }

  .section {
    position: relative;
    padding-block: var(--section-y);
    background: var(--bg);
    color: var(--text);
  }
  .section.theme-dark:not(.theme-navy) {
    background: var(--surface-dark);
  }
  /* Cabeçalho das páginas internas: texto só à esquerda, então o azul
     clareia à direita como na referência do cliente. */
  .page-header.section.theme-dark {
    background: linear-gradient(100deg, var(--navy-950) 0%, #007dde 55%, #37a8ec 100%);
  }
  .section--paper {
    background: var(--paper);
  }
  .section--tight {
    padding-block: calc(var(--section-y) * 0.6);
  }
  .section--flush-top {
    padding-top: 0;
  }
  /* Fio de 1px entre seções claras consecutivas. */
  .section:not(.theme-dark):not(.section--paper) + .section:not(.theme-dark):not(.section--paper)::before {
    content: "";
    position: absolute;
    inset: 0 var(--gutter) auto;
    max-width: var(--container);
    margin-inline: auto;
    border-top: var(--border) solid var(--rule);
  }


  .cluster {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--cluster, var(--s1) var(--s2));
  }
}

/* =============================================================================
   COMPONENTES
   ========================================================================== */
@layer components {
  /* ---------------------------------------------------------------------------
     Acessibilidade
     ------------------------------------------------------------------------ */
  .skip-link {
    position: absolute;
    top: var(--s1);
    left: var(--s1);
    z-index: 100;
    padding: var(--s0) var(--s1);
    background: var(--white);
    color: var(--navy-900);
    font-weight: 600;
    font-size: var(--fs-small);
    transform: translateY(-200%);
    transition: transform var(--dur-fast) var(--ease-out);
  }
  .skip-link:focus {
    transform: none;
  }

  /* ---------------------------------------------------------------------------
     Rótulos, numeração e textos auxiliares
     ------------------------------------------------------------------------ */
  .label {
    display: inline-flex;
    align-items: center;
    gap: 0.75em;
    margin: 0;
    color: var(--muted);
    font-family: var(--font-sans);
    font-size: var(--fs-label);
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
  }
  .label__num {
    color: var(--heading);
    font-variant-numeric: tabular-nums;
  }
  .label__num::after {
    content: "";
    display: inline-block;
    width: 2rem;
    height: 1px;
    margin-left: 0.75em;
    vertical-align: middle;
    background: var(--accent);
  }

  .lead {
    color: var(--muted);
    font-size: var(--fs-lead);
    line-height: 1.55;
    max-width: var(--measure-narrow);
  }
  .theme-dark .lead {
    color: var(--on-dark-muted);
  }

  .display {
    font-size: var(--fs-display);
    line-height: 1.04;
    letter-spacing: var(--tracking-display);
    font-weight: 600;
  }

  .muted {
    color: var(--muted);
  }
  .small {
    font-size: var(--fs-small);
  }

  .pending {
    background: repeating-linear-gradient(-45deg, rgb(138 90 0 / 0.08) 0 6px, transparent 6px 12px);
    outline: 1px dashed var(--warning);
    outline-offset: 2px;
  }

  /* Cabeçalho de seção: rótulo à esquerda, título e texto à direita. */
  .section-head {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    column-gap: var(--grid-gap);
    row-gap: var(--s2);
    margin-bottom: clamp(var(--s4), 5vw, var(--s6));
  }
  .section-head > * {
    grid-column: 1 / -1;
    align-self: start;
  }
  .section-head__title {
    max-width: 22ch;
  }
  .section-head__aside {
    display: flex;
    flex-direction: column;
    gap: var(--s2);
    align-items: flex-start;
  }
  @media (min-width: 62rem) {
    .section-head__label { grid-column: 1 / span 3; padding-top: 0.6em; }
    .section-head__main { grid-column: 4 / span 6; }
    .section-head__aside { grid-column: 10 / span 3; justify-content: flex-end; padding-top: 0.6em; }
    .section-head--wide .section-head__main { grid-column: 4 / span 9; }
  }
  @media (min-width: 62rem) {
    .section-head--stacked .section-head__label,
    .section-head--stacked .section-head__main { grid-column: 1 / -1; padding-top: 0; }
    .section-head--stacked .section-head__aside { grid-column: 1 / -1; padding-top: 0; }
  }
  .section-head__main > * + * {
    margin-top: var(--s2);
  }

  /* ---------------------------------------------------------------------------
     Botões e links de ação
     ------------------------------------------------------------------------ */
  .btn {
    --btn-bg: var(--navy-900);
    --btn-fg: var(--white);
    --btn-border: var(--navy-900);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    min-height: 3rem;
    padding: 0.8125rem 1.5rem;
    border: var(--border) solid var(--btn-border);
    border-radius: var(--radius-sm);
    background: var(--btn-bg);
    color: var(--btn-fg);
    font-family: var(--font-sans);
    font-size: var(--fs-small);
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.01em;
    text-align: center;
    text-decoration: none;
    white-space: nowrap;
    transition: background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);
  }
  .btn:hover {
    --btn-bg: var(--navy-700);
    --btn-border: var(--navy-700);
  }
  .btn .icon {
    width: 1.125rem;
    height: 1.125rem;
    transition: transform var(--dur) var(--ease-out);
  }
  .btn:hover .icon--arrow {
    transform: translateX(3px);
  }
  .btn--secondary {
    --btn-bg: transparent;
    --btn-fg: var(--navy-900);
    --btn-border: var(--navy-900);
  }
  .btn--secondary:hover {
    --btn-bg: var(--navy-900);
    --btn-fg: var(--white);
  }
  .theme-dark .btn {
    --btn-bg: var(--white);
    --btn-fg: var(--navy-900);
    --btn-border: var(--white);
  }
  .theme-dark .btn:hover {
    --btn-bg: var(--gray-100);
    --btn-border: var(--gray-100);
  }
  .theme-dark .btn--secondary {
    --btn-bg: transparent;
    --btn-fg: var(--white);
    --btn-border: rgb(255 255 255 / 0.55);
  }
  .theme-dark .btn--secondary:hover {
    --btn-bg: var(--white);
    --btn-fg: var(--navy-900);
    --btn-border: var(--white);
  }
  .btn--sm {
    min-height: 2.5rem;
    padding: 0.5rem 1rem;
    font-size: var(--fs-xs);
  }
  .btn--block {
    width: 100%;
  }
  .btn[disabled],
  .btn[aria-disabled="true"] {
    opacity: 0.5;
    pointer-events: none;
  }

  /* Link com seta e fio: CTA terciário em textos e listas. */
  .link-arrow {
    display: inline-flex;
    align-items: center;
    gap: 0.625rem;
    padding-bottom: 0.25rem;
    border-bottom: var(--border) solid var(--rule-strong);
    color: var(--link);
    font-size: var(--fs-small);
    font-weight: 600;
    text-decoration: none;
    transition: border-color var(--dur-fast) var(--ease-out), gap var(--dur) var(--ease-out);
  }
  .link-arrow:hover {
    border-color: var(--accent);
    gap: 0.875rem;
  }
  .link-arrow .icon {
    width: 1rem;
    height: 1rem;
  }

  .icon {
    width: 1.25rem;
    height: 1.25rem;
    flex: none;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-linejoin: round;
  }

  /* ---------------------------------------------------------------------------
     Cabeçalho e navegação
     ------------------------------------------------------------------------ */
  .site-header {
    position: sticky;
    top: 0;
    z-index: 50;
    background: rgb(255 255 255 / 0.97);
    border-bottom: var(--border) solid var(--gray-200);
    color: var(--navy-900);
    transition: background-color var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out);
  }
  @supports (backdrop-filter: blur(1px)) {
    .site-header {
      background: rgb(255 255 255 / 0.9);
      backdrop-filter: saturate(1.4) blur(12px);
    }
  }
  /* Sobre o hero escuro: transparente até a rolagem. */
  .site-header--overlay {
    position: fixed;
    inset: 0 0 auto;
    background: transparent;
    backdrop-filter: none;
    border-bottom-color: rgb(255 255 255 / 0.14);
    color: var(--white);
  }
  .site-header--overlay[data-scrolled="true"] {
    background: rgb(0 104 194 / 0.96);
    border-bottom-color: rgb(255 255 255 / 0.1);
  }
  @supports (backdrop-filter: blur(1px)) {
    .site-header--overlay[data-scrolled="true"] {
      background: rgb(0 104 194 / 0.86);
      backdrop-filter: saturate(1.2) blur(14px);
    }
  }

  .site-header__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s3);
    min-height: var(--header-h);
  }
  .site-header__brand {
    display: inline-flex;
    color: inherit;
    flex: none;
  }
  .site-header__brand .logo {
    width: clamp(8.5rem, 7rem + 3vw, 10.5rem);
    height: auto;
  }

  .nav {
    display: none;
  }
  .nav__list {
    display: flex;
    align-items: center;
    gap: clamp(1rem, 0.2rem + 1.4vw, 2rem);
    padding: 0;
    list-style: none;
  }
  .nav__link,
  .nav__toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    min-height: 2.75rem;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font-size: 0.9375rem;
    font-weight: 500;
    text-decoration: none;
    position: relative;
  }
  .nav__link::after,
  .nav__toggle::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0.45rem;
    height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--dur) var(--ease-out);
  }
  .nav__link:hover::after,
  .nav__toggle:hover::after,
  .nav__link[aria-current="page"]::after,
  .nav__item--current > .nav__toggle::after {
    transform: scaleX(1);
  }
  .nav__link[aria-current="page"]::after,
  .nav__item--current > .nav__toggle::after {
    background: var(--cyan);
  }
  .nav__toggle .icon {
    width: 0.875rem;
    height: 0.875rem;
    transition: transform var(--dur) var(--ease-out);
  }
  .nav__toggle[aria-expanded="true"] .icon {
    transform: rotate(180deg);
  }
  .nav__item {
    position: relative;
  }
  .nav__submenu {
    position: absolute;
    top: 100%;
    left: -1.25rem;
    min-width: 15rem;
    margin: 0;
    padding: 0.75rem 0;
    list-style: none;
    background: var(--white);
    border: var(--border) solid var(--gray-200);
    border-top: var(--border-strong) solid var(--navy-900);
    box-shadow: var(--shadow-raise);
    color: var(--navy-900);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    transition: opacity var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out), visibility 0s linear var(--dur-fast);
  }
  .nav__submenu a {
    display: block;
    padding: 0.625rem 1.25rem;
    color: var(--navy-900);
    font-size: var(--fs-small);
    text-decoration: none;
  }
  .nav__submenu a:hover,
  .nav__submenu a[aria-current="page"] {
    background: var(--paper);
    box-shadow: inset 2px 0 0 var(--cyan);
  }
  /* Sem JS: abre por foco/hover. Com JS: controlado por aria-expanded. */
  .no-js .nav__item:hover > .nav__submenu,
  .no-js .nav__item:focus-within > .nav__submenu,
  .nav__toggle[aria-expanded="true"] + .nav__submenu {
    opacity: 1;
    visibility: visible;
    transform: none;
    transition-delay: 0s;
  }

  .site-header__actions {
    display: flex;
    align-items: center;
    gap: var(--s1);
  }
  .site-header__cta {
    display: none;
  }
  .site-header--overlay:not([data-scrolled="true"]) .site-header__cta {
    --btn-bg: transparent;
    --btn-fg: var(--white);
    --btn-border: rgb(255 255 255 / 0.55);
  }
  .site-header--overlay .site-header__cta:hover,
  .site-header--overlay[data-scrolled="true"] .site-header__cta {
    --btn-bg: var(--white);
    --btn-fg: var(--navy-900);
    --btn-border: var(--white);
  }

  .menu-button {
    display: inline-flex;
    align-items: center;
    gap: 0.625rem;
    min-height: 2.75rem;
    padding: 0 0.25rem;
    border: 0;
    background: none;
    color: inherit;
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
  }
  .menu-button__bars {
    position: relative;
    width: 1.5rem;
    height: 0.625rem;
  }
  .menu-button__bars::before,
  .menu-button__bars::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    height: 1.5px;
    background: currentColor;
    transition: transform var(--dur) var(--ease-out), top var(--dur) var(--ease-out);
  }
  .menu-button__bars::before { top: 0; }
  .menu-button__bars::after { top: calc(100% - 1.5px); }
  .menu-button[aria-expanded="true"] .menu-button__bars::before {
    top: calc(50% - 0.75px);
    transform: rotate(45deg);
  }
  .menu-button[aria-expanded="true"] .menu-button__bars::after {
    top: calc(50% - 0.75px);
    transform: rotate(-45deg);
  }
  .no-js .menu-button {
    display: none;
  }

  /* Painel móvel */
  .mobile-nav {
    position: fixed;
    inset: var(--header-h) 0 0;
    z-index: 49;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: var(--s3) var(--gutter) var(--s5);
    background: var(--navy-950);
    color: var(--white);
  }
  .js .mobile-nav:not(.is-open) {
    display: none;
  }
  .no-js .mobile-nav {
    position: static;
    padding-top: var(--s1);
  }
  .mobile-nav__list {
    padding: 0;
    list-style: none;
    border-top: var(--border) solid rgb(255 255 255 / 0.16);
  }
  .mobile-nav__list > li {
    border-bottom: var(--border) solid rgb(255 255 255 / 0.16);
  }
  .mobile-nav__list a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 3.5rem;
    color: var(--white);
    font-family: var(--font-heading);
    font-size: 1.25rem;
    font-weight: 500;
    text-decoration: none;
  }
  .mobile-nav__list a[aria-current="page"] {
    box-shadow: inset 2px 0 0 var(--cyan);
    padding-left: var(--s1);
  }
  .mobile-nav__group {
    padding: var(--s1) 0;
  }
  .mobile-nav__group-title {
    margin-bottom: var(--s0);
    color: var(--on-dark-muted);
  }
  .mobile-nav__group ul {
    padding: 0;
    list-style: none;
  }
  .mobile-nav__group a {
    min-height: 2.75rem;
    font-family: var(--font-sans);
    font-size: 1.0625rem;
  }
  .mobile-nav__footer {
    margin-top: var(--s4);
    display: grid;
    gap: var(--s2);
  }
  .is-menu-open,
  .is-dialog-open {
    overflow: hidden;
  }

  @media (min-width: 72rem) {
    .nav {
      display: block;
    }
    .site-header__cta {
      display: inline-flex;
    }
    .menu-button,
    .mobile-nav {
      display: none !important;
    }
  }

  /* ---------------------------------------------------------------------------
     Hero
     ------------------------------------------------------------------------ */
  .hero {
    position: relative;
    display: flex;
    align-items: flex-end;
    min-height: max(40rem, 100svh);
    padding-top: calc(var(--header-h) + var(--s5));
    padding-bottom: clamp(var(--s4), 7vh, var(--s6));
    overflow: hidden;
    isolation: isolate;
  }
  .hero__visual {
    position: absolute;
    inset: 0;
    z-index: -2;
    background:
      radial-gradient(120% 90% at 78% 30%, rgb(55 168 236 / 0.85) 0%, rgb(0 125 222 / 0) 60%),
      var(--navy-950);
  }
  .hero__visual img,
  .hero__visual video,
  .hero__visual canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  .hero__visual img,
  .hero__visual video {
    filter: grayscale(0.25) contrast(1.02);
  }
  /* Véu azul sobre a imagem: uniforme no celular (texto na largura toda)
     e mais denso à esquerda, na área do texto, em telas largas. */
  .hero__visual::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
      linear-gradient(0deg, rgb(0 98 184 / 0.6) 0%, rgb(0 98 184 / 0) 40%),
      rgb(0 108 200 / 0.84);
  }
  @media (min-width: 62rem) {
    .hero__visual::after {
      background:
        linear-gradient(90deg, rgb(0 104 194 / 0.93) 0%, rgb(0 125 222 / 0.74) 45%, rgb(55 168 236 / 0.3) 100%),
        linear-gradient(0deg, rgb(0 98 184 / 0.55) 0%, rgb(0 98 184 / 0) 40%);
    }
  }
  .hero__content {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    column-gap: var(--grid-gap);
    row-gap: var(--s3);
  }
  .hero__content > * {
    grid-column: 1 / -1;
  }
  .hero__title {
    max-width: 24ch;
  }
  @media (min-width: 62rem) {
    .hero__kicker { grid-column: 1 / span 8; }
    .hero__title { grid-column: 1 / span 11; }
    .hero__lead { grid-column: 1 / span 6; }
    .hero__actions { grid-column: 1 / span 8; }
  }
  .hero__meta {
    margin-top: clamp(var(--s4), 8vh, var(--s6));
    padding-top: var(--s2);
    border-top: var(--border) solid var(--rule);
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: var(--s1) var(--s3);
    color: var(--on-dark-muted);
    font-size: var(--fs-xs);
    letter-spacing: 0.04em;
  }
  .hero__meta ul {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1.5rem;
    padding: 0;
    list-style: none;
  }
  .hero__meta li + li::before {
    content: "";
    display: inline-block;
    width: 4px;
    height: 4px;
    margin-right: 1.5rem;
    vertical-align: middle;
    border-radius: 50%;
    background: var(--cyan);
  }

  /* Cabeçalho das páginas internas */
  .page-header {
    position: relative;
    padding-top: clamp(var(--s5), 8vw, var(--s7));
    padding-bottom: clamp(var(--s4), 6vw, var(--s6));
    overflow: hidden;
  }
  .page-header__inner {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    column-gap: var(--grid-gap);
    row-gap: var(--s2);
  }
  .page-header__inner > * {
    grid-column: 1 / -1;
  }
  .page-header__title {
    max-width: 20ch;
  }
  @media (min-width: 62rem) {
    .page-header__title { grid-column: 1 / span 9; }
    .page-header__lead { grid-column: 1 / span 6; }
  }
  .page-header::after {
    /* Fio metálico discreto na base. */
    content: "";
    position: absolute;
    left: var(--gutter);
    right: var(--gutter);
    bottom: 0;
    max-width: var(--container);
    margin-inline: auto;
    height: 1px;
    background: linear-gradient(90deg, var(--cyan) 0 4rem, var(--rule) 4rem);
  }

  .breadcrumb {
    margin-bottom: var(--s3);
  }
  .breadcrumb ol {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 0.625rem;
    padding: 0;
    list-style: none;
    color: var(--muted);
    font-size: var(--fs-xs);
  }
  .breadcrumb li + li::before {
    content: "/";
    margin-right: 0.625rem;
    color: var(--gray-400);
  }
  .breadcrumb a {
    color: inherit;
    text-decoration: none;
  }
  .breadcrumb a:hover {
    color: var(--heading);
    text-decoration: underline;
  }

  /* ---------------------------------------------------------------------------
     Faixa de credenciais e dados
     ------------------------------------------------------------------------ */
  .figures {
    display: grid;
    grid-template-columns: 1fr;
    padding: 0;
    list-style: none;
    border-top: var(--border) solid var(--rule-strong);
  }
  .figures__item {
    display: grid;
    align-content: start;
    gap: var(--s0);
    padding: var(--s3) 0;
    border-bottom: var(--border) solid var(--rule);
  }
  @media (min-width: 48rem) {
    .figures {
      grid-template-columns: repeat(var(--figures-cols, 3), minmax(0, 1fr));
      border-bottom: var(--border) solid var(--rule);
    }
    .figures__item {
      padding: var(--s3) var(--s3) var(--s3) 0;
      border-bottom: 0;
    }
    .figures__item + .figures__item {
      padding-left: var(--s3);
      border-left: var(--border) solid var(--rule);
    }
  }
  .figures__value {
    display: flex;
    align-items: flex-end;
    min-height: calc(var(--fs-figure) * 1.02);
    color: var(--heading);
    font-family: var(--font-heading);
    font-size: var(--fs-figure);
    font-weight: 500;
    line-height: 1;
    letter-spacing: -0.035em;
    font-variant-numeric: tabular-nums lining-nums;
  }
  .figures__value--word {
    font-size: clamp(2rem, 1.5rem + 2vw, 3.25rem);
  }
  .figures__label {
    color: var(--heading);
    font-weight: 600;
    font-size: var(--fs-small);
  }
  .figures__detail {
    color: var(--muted);
    font-size: var(--fs-xs);
    letter-spacing: 0.02em;
  }

  /* ---------------------------------------------------------------------------
     Índice de serviços (linhas numeradas, estilo relatório)
     ------------------------------------------------------------------------ */
  .index-list {
    padding: 0;
    list-style: none;
    border-top: var(--border) solid var(--rule-strong);
    counter-reset: index;
  }
  .index-list__item {
    border-bottom: var(--border) solid var(--rule);
    counter-increment: index;
  }
  .index-list__link {
    display: grid;
    grid-template-columns: 3rem minmax(0, 1fr) auto;
    gap: var(--s1) var(--grid-gap);
    align-items: baseline;
    padding: var(--s3) 0;
    color: inherit;
    text-decoration: none;
    position: relative;
  }
  .index-list__link::before {
    content: counter(index, decimal-leading-zero);
    color: var(--muted);
    font-size: var(--fs-xs);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.08em;
  }
  .index-list__link::after {
    /* Fio de acento que cresce no hover. */
    content: "";
    position: absolute;
    left: 0;
    bottom: -1px;
    width: 100%;
    height: 1px;
    background: var(--heading);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--dur-slow) var(--ease-out);
  }
  .index-list__link:hover::after,
  .index-list__link:focus-visible::after {
    transform: scaleX(1);
  }
  .index-list__title {
    font-size: var(--fs-h3);
    font-weight: 500;
    letter-spacing: -0.015em;
    transition: color var(--dur-fast) var(--ease-out);
  }
  .index-list__summary {
    grid-column: 2 / -1;
    color: var(--muted);
    max-width: var(--measure-narrow);
  }
  .index-list__arrow {
    grid-row: 1;
    grid-column: 3;
    color: var(--heading);
    transition: transform var(--dur) var(--ease-out);
  }
  .index-list__link:hover .index-list__arrow {
    transform: translateX(4px);
  }
  @media (min-width: 62rem) {
    .index-list__link {
      grid-template-columns: 4rem minmax(0, 5fr) minmax(0, 5fr) 2rem;
      padding: var(--s4) 0;
    }
    .index-list__summary {
      grid-column: 3;
      grid-row: 1;
    }
    .index-list__arrow {
      grid-column: 4;
      justify-self: end;
    }
  }
  .index-list__kicker {
    display: block;
    margin-bottom: var(--s0);
  }

  /* ---------------------------------------------------------------------------
     Bloco editorial (texto + lista + mídia)
     ------------------------------------------------------------------------ */
  .editorial {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    column-gap: var(--grid-gap);
    row-gap: var(--s4);
    align-items: start;
  }
  .editorial > * {
    grid-column: 1 / -1;
  }
  @media (min-width: 62rem) {
    .editorial__text { grid-column: 1 / span 6; }
    .editorial__media { grid-column: 8 / span 5; }
    .editorial--media-left .editorial__text { grid-column: 7 / span 6; grid-row: 1; }
    .editorial--media-left .editorial__media { grid-column: 1 / span 5; grid-row: 1; }
  }
  .editorial__text > * + * {
    margin-top: var(--s3);
  }

  .check-list {
    padding: 0;
    list-style: none;
    border-top: var(--border) solid var(--rule);
  }
  .check-list li {
    display: grid;
    grid-template-columns: 1.5rem minmax(0, 1fr);
    gap: var(--s1);
    padding: 0.875rem 0;
    border-bottom: var(--border) solid var(--rule);
  }
  .check-list li::before {
    content: "";
    width: 0.875rem;
    height: 0;
    margin-top: 0.8em;
    /* Borda é alinhada ao pixel; fundo de 1px oscila entre linhas. */
    border-top: 1px solid var(--accent);
  }

  /* Mídia com recorte preciso e tratamento frio. */
  .media-frame {
    position: relative;
    margin: 0;
    overflow: hidden;
    aspect-ratio: var(--ratio, 4 / 5);
    background:
      linear-gradient(135deg, rgb(0 125 222 / 0.9), rgb(0 91 176 / 0.95)),
      var(--navy-900);
  }
  .media-frame--wide { --ratio: 16 / 9; }
  .media-frame--landscape { --ratio: 3 / 2; }
  .media-frame--square { --ratio: 1; }
  .media-frame img,
  .media-frame picture {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: saturate(0.9) contrast(1.02) brightness(1.04);
  }
  .media-frame::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgb(10 31 68 / 0) 65%, rgb(10 31 68 / 0.18) 100%);
    mix-blend-mode: multiply;
    pointer-events: none;
  }
  /* Placeholder enquanto não há fotografia: malha fina. */
  .media-frame--empty {
    display: grid;
    place-items: end start;
    padding: var(--s2);
    background-image:
      linear-gradient(rgb(255 255 255 / 0.06) 1px, transparent 1px),
      linear-gradient(90deg, rgb(255 255 255 / 0.06) 1px, transparent 1px),
      linear-gradient(135deg, var(--navy-800), var(--navy-950));
    background-size: 2.5rem 2.5rem, 2.5rem 2.5rem, auto;
  }
  .media-frame--empty span {
    color: var(--on-dark-muted);
    font-size: var(--fs-xs);
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
  }
  .media-frame figcaption,
  .media-credit {
    position: absolute;
    right: var(--s1);
    bottom: var(--s0);
    z-index: 1;
    color: rgb(255 255 255 / 0.78);
    font-size: 0.6875rem;
  }

  /* ---------------------------------------------------------------------------
     Bloco premium
     ------------------------------------------------------------------------ */
  .premium-grid {
    display: grid;
    grid-template-columns: 1fr;
    padding: 0;
    list-style: none;
    border-top: var(--border) solid var(--rule);
  }
  .premium-grid__item {
    padding: var(--s3) 0;
    border-bottom: var(--border) solid var(--rule);
  }
  .premium-grid__item h3 {
    font-size: var(--fs-h4);
    font-family: var(--font-heading);
    font-weight: 500;
    margin-bottom: var(--s0);
  }
  .premium-grid__item p {
    color: var(--muted);
    font-size: var(--fs-small);
  }
  @media (min-width: 48rem) {
    .premium-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      column-gap: var(--grid-gap);
    }
  }

  /* ---------------------------------------------------------------------------
     Planos — resumo (home) e tabela comparativa
     ------------------------------------------------------------------------ */
  .plan-summary {
    display: grid;
    grid-template-columns: 1fr;
    padding: 0;
    list-style: none;
    border-top: var(--border) solid var(--rule-strong);
  }
  .plan-summary__item {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--s2);
    padding: var(--s3) 0;
    border-bottom: var(--border) solid var(--rule);
  }
  @media (min-width: 48rem) {
    .plan-summary {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .plan-summary__item {
      padding: var(--s3) var(--s3) var(--s3) 0;
    }
    .plan-summary__item:nth-child(even) {
      padding-left: var(--s3);
      border-left: var(--border) solid var(--rule);
    }
  }
  @media (min-width: 72rem) {
    .plan-summary {
      grid-template-columns: 1fr 1fr 1.25fr 1.25fr;
    }
    .plan-summary__item + .plan-summary__item {
      padding-left: var(--s3);
      border-left: var(--border) solid var(--rule);
    }
  }
  .plan-summary__item--premium {
    background: linear-gradient(180deg, var(--bg-alt), transparent 70%);
  }
  .plan-summary__item--featured::before,
  .plan-table__head--featured::before {
    /* Filete superior no plano recomendado. */
    content: "";
    position: absolute;
    top: -1px;
    left: 0;
    right: 0;
    height: var(--border-strong);
    background: var(--steel);
  }
  .plan-name {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--s1);
    font-family: var(--font-heading);
    font-size: var(--fs-h3);
    font-weight: 500;
    color: var(--heading);
  }
  .plan-name--tier-3,
  .plan-name--tier-4 {
    font-weight: 600;
  }
  .plan-tier {
    color: var(--muted);
    font-family: var(--font-sans);
    font-size: var(--fs-label);
    font-weight: 600;
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
    white-space: nowrap;
  }
  .plan-price {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.25rem 0.375rem;
    color: var(--heading);
    font-variant-numeric: tabular-nums lining-nums;
  }
  .plan-price__currency {
    font-size: var(--fs-small);
    font-weight: 500;
  }
  .plan-price__value {
    font-family: var(--font-heading);
    font-size: clamp(1.75rem, 1.45rem + 1.1vw, 2.375rem);
    font-weight: 500;
    line-height: 1;
    letter-spacing: -0.03em;
  }
  .plan-price__amount {
    white-space: nowrap;
  }
  .plan-price__cents {
    font-family: var(--font-heading);
    font-size: 1.125rem;
  }
  .plan-price__period {
    color: var(--muted);
    font-size: var(--fs-xs);
  }
  .plan-price--consult .plan-price__value {
    font-size: var(--fs-h3);
  }
  .plan-tagline {
    color: var(--muted);
    font-size: var(--fs-small);
  }
  .plan-summary__cta {
    margin-top: auto;
  }

  /* Tabela comparativa (≥ 62rem) */
  .plan-table-wrap {
    display: none;
  }
  .plan-table {
    table-layout: fixed;
    font-size: var(--fs-small);
  }
  .plan-table col.plan-table__col-feature { width: 32%; }
  .plan-table col.plan-table__col-plan { width: 15%; }
  .plan-table col.plan-table__col-plan--premium { width: 19%; }
  .plan-table thead th {
    position: sticky;
    top: var(--header-h);
    z-index: 2;
    background: var(--bg);
    vertical-align: bottom;
    text-align: left;
    padding: var(--s2) var(--s2) var(--s2) 0;
    border-bottom: var(--border) solid var(--rule-strong);
    font-weight: 400;
  }
  .plan-table__head {
    position: relative;
  }
  .plan-table__head > * + * {
    margin-top: var(--s1);
  }
  .plan-table__head .plan-price {
    flex-wrap: nowrap;
    white-space: nowrap;
  }
  .plan-table__head .plan-price__value {
    font-size: clamp(1.75rem, 1.4rem + 0.8vw, 2.25rem);
  }
  .plan-table tbody th,
  .plan-table tbody td {
    padding: 0.875rem var(--s2) 0.875rem 0;
    border-bottom: var(--border) solid var(--rule);
    text-align: left;
    vertical-align: top;
  }
  .plan-table tbody th {
    font-weight: 500;
    color: var(--text);
  }
  .plan-table tbody th small {
    display: block;
    margin-top: 0.125rem;
    color: var(--muted);
    font-weight: 400;
    font-size: var(--fs-xs);
  }
  .plan-table__group th {
    padding-top: var(--s4) !important;
    color: var(--heading) !important;
    border-bottom-color: var(--rule-strong) !important;
  }
  .plan-table thead th:not(:first-child),
  .plan-table tbody td {
    padding-left: var(--s1);
  }
  .plan-table td.is-featured,
  .plan-table th.is-featured {
    background: var(--bg-alt);
  }
  .plan-table .btn {
    white-space: normal;
    width: 100%;
  }
  .plan-table tbody tr:hover > * {
    background-color: rgb(10 31 68 / 0.03);
  }
  .plan-table tfoot td {
    padding: var(--s3) var(--s2) 0 0;
    vertical-align: top;
  }
  .plan-mark {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--heading);
  }
  .plan-mark .icon {
    width: 1.125rem;
    height: 1.125rem;
  }
  .plan-mark--no {
    color: var(--gray-400);
  }

  /* Lista por plano (telas menores) */
  .plan-stack {
    display: grid;
    gap: var(--s5);
  }
  .plan-stack__plan {
    border-top: var(--border-strong) solid var(--heading);
    padding-top: var(--s3);
  }
  .plan-stack__plan > * + * {
    margin-top: var(--s2);
  }
  .plan-stack__group {
    margin-top: var(--s3);
  }
  .plan-stack__inherit {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--heading);
    font-size: var(--fs-small);
    font-weight: 600;
  }
  .plan-stack__group .label {
    margin-bottom: var(--s0);
  }
  @media (min-width: 62rem) {
    .plan-table-wrap {
      display: block;
    }
    .plan-stack {
      display: none;
    }
  }

  /* ---------------------------------------------------------------------------
     Notícias e eventos
     ------------------------------------------------------------------------ */
  .post-list {
    display: grid;
    gap: var(--s5) var(--grid-gap);
    padding: 0;
    list-style: none;
  }
  @media (min-width: 48rem) {
    .post-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (min-width: 62rem) {
    .post-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .post-list--lead > :first-child { grid-column: span 2; }
  }
  .post {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--s1);
  }
  .post__media {
    --ratio: 3 / 2;
    margin-bottom: var(--s1);
  }
  .post__media img {
    transition: filter var(--dur) var(--ease-out);
  }
  .post:hover .post__media img {
    filter: saturate(1) contrast(1.03);
  }
  .post__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
    color: var(--muted);
    font-size: var(--fs-xs);
  }
  .post__title {
    font-size: var(--fs-h4);
    font-family: var(--font-heading);
    font-weight: 500;
    line-height: 1.3;
  }
  .post__title a {
    color: inherit;
    text-decoration: none;
  }
  /* Área clicável ampliada ao cartão inteiro. */
  .post__title a::after {
    content: "";
    position: absolute;
    inset: 0;
  }
  .post__title a:hover {
    text-decoration: underline;
    text-decoration-color: var(--accent);
  }
  .post__excerpt {
    color: var(--muted);
    font-size: var(--fs-small);
  }

  .event-list {
    padding: 0;
    list-style: none;
    border-top: var(--border) solid var(--rule-strong);
  }
  .event {
    position: relative;
    display: grid;
    grid-template-columns: 4.5rem minmax(0, 1fr);
    gap: var(--s1) var(--grid-gap);
    padding: var(--s3) 0;
    border-bottom: var(--border) solid var(--rule);
  }
  @media (min-width: 62rem) {
    .event {
      grid-template-columns: 6rem minmax(0, 6fr) minmax(0, 3fr) auto;
      align-items: baseline;
    }
  }
  .event__date {
    display: grid;
    line-height: 1;
    color: var(--heading);
  }
  .event__day {
    font-family: var(--font-heading);
    font-size: 2.25rem;
    font-weight: 500;
    letter-spacing: -0.03em;
    font-variant-numeric: tabular-nums;
  }
  .event__month {
    margin-top: 0.375rem;
    font-size: var(--fs-label);
    font-weight: 600;
    letter-spacing: var(--tracking-label);
  }
  .event__title {
    font-size: var(--fs-h4);
    font-family: var(--font-heading);
    font-weight: 500;
  }
  .event__title a {
    color: inherit;
    text-decoration: none;
  }
  .event__title a::after {
    content: "";
    position: absolute;
    inset: 0;
  }
  .event__place {
    grid-column: 2;
    color: var(--muted);
    font-size: var(--fs-small);
  }
  @media (min-width: 62rem) {
    .event__place { grid-column: 3; }
  }

  /* ---------------------------------------------------------------------------
     Pessoas (diretoria) e logotipos
     ------------------------------------------------------------------------ */
  .people {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
    gap: var(--s5) var(--grid-gap);
    padding: 0;
    list-style: none;
  }
  .person__photo {
    --ratio: 4 / 5;
    margin-bottom: var(--s2);
  }
  .person__photo img {
    filter: grayscale(1) contrast(1.05);
    transition: filter var(--dur) var(--ease-out);
  }
  .person:hover .person__photo img {
    filter: grayscale(0.2);
  }
  .person__name {
    font-size: var(--fs-h4);
    font-family: var(--font-heading);
    font-weight: 500;
  }
  .person__role {
    color: var(--muted);
    font-size: var(--fs-small);
  }

  .logo-wall {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding: 0;
    list-style: none;
    border-top: var(--border) solid var(--rule);
    border-left: var(--border) solid var(--rule);
  }
  @media (min-width: 48rem) {
    .logo-wall { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  }
  .logo-wall li {
    display: grid;
    place-items: center;
    min-height: 8rem;
    padding: var(--s3);
    border-right: var(--border) solid var(--rule);
    border-bottom: var(--border) solid var(--rule);
  }
  .logo-wall img {
    max-height: 3rem;
    width: auto;
    filter: grayscale(1) opacity(0.7);
    transition: filter var(--dur) var(--ease-out);
  }
  .theme-dark .logo-wall img {
    filter: grayscale(1) brightness(0) invert(1) opacity(0.75);
  }
  .logo-wall a:hover img,
  .logo-wall li:hover img {
    filter: none;
  }
  .logo-wall__text {
    color: var(--heading);
    font-family: var(--font-sans);
    font-weight: 700;
    font-size: 1.125rem;
    letter-spacing: 0.08em;
    text-decoration: none;
  }

  /* ---------------------------------------------------------------------------
     Benefícios com logos (grade por categoria + janela de detalhes)
     ------------------------------------------------------------------------ */
  .benefits-group + .benefits-group {
    margin-top: var(--s3);
  }
  .benefits-group__title {
    margin: 0 0 var(--s1);
    font-size: var(--fs-h4);
  }
  /* Desktop: categoria à esquerda, logos à direita (grupos curtos não deixam vazios). */
  @media (min-width: 62rem) {
    .benefits-group {
      display: grid;
      grid-template-columns: repeat(12, minmax(0, 1fr));
      column-gap: var(--grid-gap);
      padding-top: var(--s2);
      border-top: var(--border) solid var(--rule);
    }
    .benefits-group + .benefits-group {
      margin-top: var(--s2);
    }
    .benefits-group__title {
      grid-column: 1 / span 3;
    }
    .benefits-group .benefits {
      grid-column: 4 / -1;
    }
  }
  .benefits {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--s0);
    margin: 0;
    padding: 0;
    list-style: none;
  }
  @media (min-width: 40rem) {
    .benefits { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  }
  @media (min-width: 72rem) {
    .benefits { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  }
  .benefits > li {
    display: flex;
  }
  .benefit {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    margin: 0;
    padding: var(--s1) var(--s1) var(--s1);
    color: var(--text);
    font: inherit;
    text-align: left;
    text-decoration: none;
    background: var(--white);
    border: var(--border) solid var(--rule);
    border-radius: var(--radius);
    cursor: pointer;
    transition: border-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out), transform var(--dur) var(--ease-out);
  }
  .benefit:hover {
    border-color: var(--accent);
    box-shadow: var(--shadow-raise);
    transform: translateY(-2px);
  }
  .benefit__logo {
    display: grid;
    place-items: center;
    height: 5.5rem;
    margin-bottom: var(--s1);
  }
  .benefit__logo picture,
  .benefit__logo img {
    display: block;
    max-width: 100%;
    max-height: 5.5rem;
    width: auto;
    height: auto;
    object-fit: contain;
  }
  .benefit__name {
    padding-right: 1.75rem;
    color: var(--heading);
    font-size: var(--fs-xs);
    font-weight: 600;
    line-height: 1.35;
  }
  .benefit__soon {
    display: inline-block;
    margin-left: 0.25em;
    padding: 0 0.4em;
    color: var(--muted);
    font-weight: 500;
    border: var(--border) solid var(--rule);
    border-radius: var(--radius-sm);
  }
  .benefit__more {
    position: absolute;
    right: var(--s1);
    bottom: var(--s1);
    display: grid;
    place-items: center;
    width: 1.25rem;
    height: 1.25rem;
    color: var(--accent);
  }
  .benefit__more .icon {
    width: 1rem;
    height: 1rem;
  }

  .benefit-dialog {
    width: min(34rem, calc(100% - 2rem));
    max-height: calc(100dvh - 2rem);
    padding: 0;
    color: var(--ink);
    background: var(--white);
    border: 0;
    border-top: 3px solid var(--accent);
    border-radius: var(--radius);
    box-shadow: 0 24px 64px -16px rgb(5 15 36 / 0.45);
  }
  .benefit-dialog::backdrop {
    background: rgb(5 15 36 / 0.6);
  }
  .benefit-dialog[open] {
    animation: benefit-in 0.28s var(--ease-out);
  }
  @keyframes benefit-in {
    from { opacity: 0; transform: translateY(0.75rem); }
  }
  .benefit-dialog__panel {
    position: relative;
    padding: var(--s3) var(--s3) var(--s2);
  }
  .benefit-dialog__close {
    position: absolute;
    top: var(--s0);
    right: var(--s0);
    display: grid;
    place-items: center;
    width: 2.75rem;
    height: 2.75rem;
    padding: 0;
    color: var(--navy-900);
    background: none;
    border: 0;
    border-radius: var(--radius-sm);
    cursor: pointer;
  }
  .benefit-dialog__close:hover {
    background: var(--gray-100);
  }
  .benefit-dialog__logo {
    display: grid;
    place-items: center start;
    height: 6rem;
    margin-bottom: var(--s2);
  }
  .benefit-dialog__logo img {
    max-width: min(16rem, 100%);
    max-height: 6rem;
    width: auto;
    height: auto;
  }
  .benefit-dialog__name {
    margin: var(--s-1) 0 var(--s1);
    color: var(--navy-900);
    font-size: var(--fs-h3);
  }
  .benefit-dialog__text {
    margin: 0;
  }
  .benefit-dialog__soon {
    margin: var(--s1) 0 0;
    color: var(--muted);
    font-weight: 600;
  }
  .benefit-dialog__actions {
    margin: var(--s2) 0 0;
  }
  .benefit-dialog__actions .icon {
    width: 1em;
    height: 1em;
  }
  .benefit-dialog__note {
    margin: var(--s2) 0 0;
    padding-top: var(--s1);
    border-top: var(--border) solid var(--rule);
  }
  @media (prefers-reduced-motion: reduce) {
    .benefit,
    .benefit-dialog[open] {
      transition: none;
      animation: none;
    }
    .benefit:hover { transform: none; }
  }

  /* ---------------------------------------------------------------------------
     FAQ
     ------------------------------------------------------------------------ */
  .faq {
    border-top: var(--border) solid var(--rule-strong);
  }
  .faq__item {
    border-bottom: var(--border) solid var(--rule);
  }
  .faq__question {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s2);
    padding: var(--s2) 0;
    color: var(--heading);
    font-family: var(--font-heading);
    font-size: var(--fs-h4);
    font-weight: 500;
    cursor: pointer;
    list-style: none;
  }
  .faq__question::-webkit-details-marker {
    display: none;
  }
  .faq__question::after {
    content: "";
    flex: none;
    width: 0.875rem;
    height: 0.875rem;
    background:
      linear-gradient(currentColor, currentColor) center / 100% 1.5px no-repeat,
      linear-gradient(currentColor, currentColor) center / 1.5px 100% no-repeat;
    transition: transform var(--dur) var(--ease-out);
  }
  .faq__item[open] .faq__question::after {
    transform: rotate(45deg);
  }
  .faq__answer {
    padding: 0 0 var(--s3);
    max-width: var(--measure);
    color: var(--muted);
  }
  .faq__answer > * + * {
    margin-top: var(--s1);
  }

  /* ---------------------------------------------------------------------------
     Texto corrido (conteúdo do editor)
     ------------------------------------------------------------------------ */
  .prose {
    max-width: var(--measure);
  }
  .legal__contact {
    padding: var(--s1) var(--s2);
    border-left: var(--border-strong) solid var(--accent);
    background: var(--bg-alt);
  }
  .legal__meta {
    padding-top: var(--s1);
    border-top: var(--border) solid var(--rule);
    color: var(--muted);
    font-size: var(--fs-small);
  }
  .prose > * + * {
    margin-top: 1.1em;
  }
  .prose h2 {
    margin-top: 2em;
    font-size: var(--fs-h3);
  }
  .prose h3 {
    margin-top: 1.75em;
    font-size: var(--fs-h4);
  }
  .prose h2 + *,
  .prose h3 + * {
    margin-top: 0.6em;
  }
  .prose ul,
  .prose ol {
    padding-left: 1.25em;
  }
  .prose li + li {
    margin-top: 0.4em;
  }
  .prose li::marker {
    color: var(--accent);
  }
  .prose blockquote {
    padding-left: var(--s2);
    border-left: var(--border-strong) solid var(--accent);
    color: var(--heading);
    font-family: var(--font-heading);
    font-size: var(--fs-lead);
    font-weight: 500;
  }
  .prose img {
    margin-block: var(--s3);
  }
  .prose table {
    font-size: var(--fs-small);
  }
  .prose th,
  .prose td {
    padding: 0.625rem 1rem 0.625rem 0;
    border-bottom: var(--border) solid var(--rule);
    text-align: left;
  }
  .prose a {
    font-weight: 500;
  }

  /* ---------------------------------------------------------------------------
     Formulários
     ------------------------------------------------------------------------ */
  .form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--s3) var(--grid-gap);
  }
  .form > * {
    grid-column: 1 / -1;
  }
  @media (min-width: 40rem) {
    .form .field--half {
      grid-column: span 1;
    }
  }
  .field {
    display: grid;
    gap: 0.5rem;
    min-width: 0;
  }
  .form__section {
    margin-top: var(--s3);
    padding-top: var(--s3);
    border-top: var(--border) solid var(--rule);
    font-size: var(--fs-h4);
  }
  .steps {
    display: grid;
    gap: var(--s1);
    padding-left: 1.25em;
  }
  .field__label {
    color: var(--heading);
    font-size: var(--fs-small);
    font-weight: 600;
  }
  .field__optional {
    color: var(--muted);
    font-weight: 400;
  }
  .field__hint {
    color: var(--muted);
    font-size: var(--fs-xs);
  }
  .input,
  .select,
  .textarea {
    width: 100%;
    min-height: 3rem;
    padding: 0.6875rem 0.875rem;
    border: var(--border) solid var(--field-border);
    border-radius: var(--radius-sm);
    background: var(--field-bg);
    color: var(--text);
    font-size: 1rem;
    line-height: 1.5;
    transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
  }
  .input::placeholder,
  .textarea::placeholder {
    color: var(--gray-500);
  }
  .input:hover,
  .select:hover,
  .textarea:hover {
    border-color: var(--heading);
  }
  .input:focus-visible,
  .select:focus-visible,
  .textarea:focus-visible {
    outline: none;
    border-color: var(--heading);
    box-shadow: 0 0 0 1px var(--heading), 0 0 0 4px rgb(26 167 236 / 0.25);
  }
  .textarea {
    min-height: 9rem;
    resize: vertical;
  }
  .select {
    appearance: none;
    padding-right: 2.75rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230a1f44' stroke-width='1.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.875rem center;
    background-size: 1.125rem;
  }
  .theme-dark .select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='1.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  }
  .theme-dark .select option {
    color: var(--ink);
  }
  .field--error .input,
  .field--error .select,
  .field--error .textarea {
    border-color: var(--danger);
    box-shadow: inset 2px 0 0 var(--danger);
  }
  .field__error {
    display: flex;
    gap: 0.375rem;
    color: var(--danger);
    font-size: var(--fs-xs);
    font-weight: 600;
  }
  .theme-dark .field__error {
    color: #ffb4b4;
  }

  .check {
    display: grid;
    grid-template-columns: 1.25rem minmax(0, 1fr);
    gap: 0.75rem;
    align-items: start;
    font-size: var(--fs-small);
    cursor: pointer;
  }
  .check input {
    appearance: none;
    width: 1.25rem;
    height: 1.25rem;
    margin: 0.125rem 0 0;
    border: var(--border) solid var(--field-border);
    border-radius: var(--radius-sm);
    background: var(--field-bg);
    display: grid;
    place-content: center;
    cursor: pointer;
  }
  .check input[type="radio"] {
    border-radius: 50%;
  }
  .check input::before {
    content: "";
    width: 0.75rem;
    height: 0.75rem;
    transform: scale(0);
    transition: transform var(--dur-fast) var(--ease-out);
    background: var(--heading);
    clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
  }
  .check input[type="radio"]::before {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    clip-path: none;
  }
  .check input:checked {
    border-color: var(--heading);
  }
  .check input:checked::before {
    transform: scale(1);
  }
  .check input:focus-visible {
    outline: 2px solid var(--focus);
    outline-offset: 2px;
  }

  /* Opções de plano no formulário de associação */
  .choice-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    gap: var(--s0);
    margin: 0;
    padding: 0;
    border: 0;
  }
  .choice-grid legend {
    margin-bottom: var(--s1);
  }
  .choice {
    position: relative;
  }
  .choice input {
    position: absolute;
    opacity: 0;
  }
  .choice span {
    display: grid;
    gap: 0.125rem;
    height: 100%;
    padding: var(--s1);
    border: var(--border) solid var(--field-border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
  }
  .choice strong {
    color: var(--heading);
    font-family: var(--font-heading);
    font-size: 1.125rem;
    font-weight: 500;
  }
  .choice small {
    color: var(--muted);
    font-size: var(--fs-xs);
    font-variant-numeric: tabular-nums;
  }
  .choice input:checked + span {
    border-color: var(--heading);
    box-shadow: inset 0 0 0 1px var(--heading), inset 0 3px 0 var(--cyan);
  }
  .choice input:focus-visible + span {
    outline: 2px solid var(--focus);
    outline-offset: 2px;
  }

  /* Campo-armadilha contra robôs: fora da tela, invisível para leitores. */
  .hp-field {
    position: absolute !important;
    left: -10000px !important;
    width: 1px;
    height: 1px;
    overflow: hidden;
  }

  .form__footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--s2);
    padding-top: var(--s1);
  }
  .form__legal {
    max-width: 44ch;
    color: var(--muted);
    font-size: var(--fs-xs);
  }

  /* ---------------------------------------------------------------------------
     Avisos
     ------------------------------------------------------------------------ */
  .notice {
    display: grid;
    grid-template-columns: 1.25rem minmax(0, 1fr);
    gap: var(--s1);
    padding: var(--s2);
    border: var(--border) solid var(--rule);
    border-left: 3px solid var(--notice-color, var(--navy-900));
    background: var(--bg);
    color: var(--text);
    font-size: var(--fs-small);
  }
  .notice .icon {
    color: var(--notice-color, var(--navy-900));
    margin-top: 0.125rem;
  }
  .notice__title {
    display: block;
    margin-bottom: 0.125rem;
    color: var(--heading);
    font-weight: 600;
  }
  .notice--success { --notice-color: var(--success); }
  .notice--error { --notice-color: var(--danger); }
  .notice--warning { --notice-color: var(--warning); }
  .theme-dark .notice { --notice-color: var(--cyan-soft); }

  /* ---------------------------------------------------------------------------
     Paginação, etiquetas, busca
     ------------------------------------------------------------------------ */
  .pagination {
    margin-top: var(--s6);
    padding-top: var(--s3);
    border-top: var(--border) solid var(--rule);
  }
  .pagination ul {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s0);
    padding: 0;
    list-style: none;
  }
  .pagination a,
  .pagination span {
    display: inline-grid;
    place-items: center;
    min-width: 2.75rem;
    min-height: 2.75rem;
    padding: 0 0.75rem;
    border: var(--border) solid transparent;
    color: var(--heading);
    font-size: var(--fs-small);
    font-variant-numeric: tabular-nums;
    text-decoration: none;
  }
  .pagination a:hover {
    border-color: var(--rule);
  }
  .pagination [aria-current="page"] {
    border-color: var(--heading);
    font-weight: 600;
  }
  .pagination__next {
    margin-left: auto;
  }
  .pagination__next a {
    display: inline-flex;
    gap: 0.5rem;
    white-space: nowrap;
  }

  .tag {
    display: inline-flex;
    align-items: center;
    min-height: 1.75rem;
    padding: 0 0.625rem;
    border: var(--border) solid var(--rule);
    border-radius: var(--radius-sm);
    color: var(--muted);
    font-size: var(--fs-xs);
    font-weight: 500;
    text-decoration: none;
  }
  a.tag:hover,
  .tag[aria-current="page"] {
    border-color: var(--heading);
    color: var(--heading);
  }

  .search {
    display: flex;
    max-width: 32rem;
  }
  .search .input {
    border-right: 0;
    border-radius: var(--radius-sm) 0 0 var(--radius-sm);
  }
  .search .btn {
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  }

  /* ---------------------------------------------------------------------------
     Chamada final e newsletter
     ------------------------------------------------------------------------ */
  .cta-band {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    column-gap: var(--grid-gap);
    row-gap: var(--s3);
    align-items: end;
  }
  .cta-band > * {
    grid-column: 1 / -1;
  }
  @media (min-width: 62rem) {
    .cta-band__text { grid-column: 1 / span 7; }
    .cta-band__actions { grid-column: 8 / span 5; justify-content: flex-end; }
  }
  .cta-band__text > * + * {
    margin-top: var(--s2);
  }

  .newsletter {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    column-gap: var(--grid-gap);
    row-gap: var(--s3);
    align-items: start;
  }
  .newsletter > * {
    grid-column: 1 / -1;
  }
  @media (min-width: 62rem) {
    .newsletter__text { grid-column: 1 / span 5; }
    .newsletter__form { grid-column: 7 / span 6; }
  }
  .newsletter__text > * + * {
    margin-top: var(--s1);
  }
  .newsletter__row {
    display: grid;
    gap: var(--s1);
  }
  @media (min-width: 40rem) {
    .newsletter__row {
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: end;
    }
  }

  /* ---------------------------------------------------------------------------
     Mapa de atuação
     ------------------------------------------------------------------------ */
  .map-figure {
    margin: 0;
  }
  .map-figure svg {
    width: 100%;
    height: auto;
  }
  .map-state {
    fill: transparent;
    stroke: var(--map-stroke, var(--rule));
    stroke-width: 0.75;
    transition: fill var(--dur) var(--ease-out), stroke var(--dur) var(--ease-out);
  }
  .map-state.is-active {
    fill: rgb(26 167 236 / 0.08);
    stroke: var(--rule-strong);
  }
  .map-dot {
    fill: var(--cyan);
  }
  .map-legend {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s0) var(--s2);
    margin-top: var(--s2);
    color: var(--muted);
    font-size: var(--fs-xs);
  }

  /* ---------------------------------------------------------------------------
     Rodapé
     ------------------------------------------------------------------------ */
  .site-footer {
    padding-top: clamp(var(--s5), 7vw, var(--s7));
    padding-bottom: var(--s3);
    background: var(--surface-dark);
    color: var(--on-dark-muted);
    font-size: var(--fs-small);
  }
  .site-footer__top {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    column-gap: var(--grid-gap);
    row-gap: var(--s4);
    padding-bottom: var(--s5);
  }
  .site-footer__top > * {
    grid-column: 1 / -1;
  }
  @media (min-width: 48rem) {
    .site-footer__col { grid-column: span 6; }
  }
  @media (min-width: 72rem) {
    .site-footer__brand { grid-column: 1 / span 4; }
    .site-footer__col { grid-column: span 2; }
    .site-footer__col--contact { grid-column: span 4; }
  }
  .site-footer__brand .logo {
    width: 11rem;
    color: var(--white);
    margin-bottom: var(--s2);
  }
  .site-footer__brand p {
    max-width: 30ch;
  }
  .site-footer h2 {
    margin-bottom: var(--s2);
    color: var(--white);
    font-family: var(--font-sans);
    font-size: var(--fs-label);
    font-weight: 600;
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
  }
  .site-footer ul {
    display: grid;
    gap: 0.625rem;
    padding: 0;
    list-style: none;
  }
  .site-footer a {
    color: var(--on-dark-muted);
    text-decoration: none;
  }
  .site-footer a:hover {
    color: var(--white);
    text-decoration: underline;
    text-decoration-color: var(--cyan);
  }
  .site-footer address {
    font-style: normal;
    display: grid;
    gap: 0.625rem;
  }
  .site-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: var(--s1) var(--s3);
    padding-top: var(--s3);
    border-top: var(--border) solid rgb(255 255 255 / 0.12);
    font-size: var(--fs-xs);
  }
  .site-footer__bottom ul {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s0) var(--s3);
  }
  .social {
    display: flex !important;
    gap: var(--s1) !important;
    margin-top: var(--s2) !important;
  }
  .social a {
    display: inline-grid;
    place-items: center;
    width: 2.75rem;
    height: 2.75rem;
    border: var(--border) solid rgb(255 255 255 / 0.2);
    border-radius: var(--radius-sm);
  }
  .social a:hover {
    border-color: var(--white);
  }

  /* ---------------------------------------------------------------------------
     Consentimento de cookies (LGPD)
     ------------------------------------------------------------------------ */
  .consent {
    position: fixed;
    left: var(--s1);
    right: var(--s1);
    bottom: var(--s1);
    z-index: 60;
    max-width: 34rem;
    padding: var(--s3);
    border: var(--border) solid rgb(255 255 255 / 0.14);
    border-top: var(--border-strong) solid var(--cyan);
    background: var(--navy-950);
    color: var(--on-dark-muted);
    box-shadow: var(--shadow-raise);
    font-size: var(--fs-small);
  }
  @media (min-width: 40rem) {
    .consent {
      left: auto;
      right: var(--s3);
      bottom: var(--s3);
    }
  }
  .consent h2 {
    margin-bottom: var(--s0);
    font-size: var(--fs-h4);
  }
  .consent__options {
    display: grid;
    gap: var(--s1);
    margin: var(--s2) 0 0;
    padding: var(--s2) 0 0;
    border: 0;
    border-top: var(--border) solid var(--rule);
  }
  .consent__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s0);
    margin-top: var(--s2);
  }
  .no-js .consent {
    display: none;
  }

  /* ---------------------------------------------------------------------------
     Páginas de erro
     ------------------------------------------------------------------------ */
  .error-page {
    min-height: 70vh;
    display: grid;
    align-content: center;
  }
  .error-page__code {
    color: var(--on-dark-muted);
    font-family: var(--font-heading);
    font-size: clamp(4.5rem, 3rem + 8vw, 9rem);
    font-weight: 600;
    line-height: 0.9;
    letter-spacing: -0.04em;
    font-variant-numeric: tabular-nums;
    /* 0.55 mantém contraste ≥ 3:1 (texto grande) sobre o marinho. */
    opacity: 0.55;
  }

  /* ---------------------------------------------------------------------------
     Revelações (aprimoradas por JS; sem JS o conteúdo aparece normalmente)
     ------------------------------------------------------------------------ */
  /* O estado inicial dos elementos abaixo da dobra é aplicado por motion.js;
     nada da primeira tela é ocultado à espera do JS. */
  /* Entrada do hero só com CSS: começa na primeira pintura, sem esperar o
     JS (o título é o LCP). */
  @keyframes hero-rise {
    from {
      clip-path: inset(0 0 100% 0);
      transform: translateY(0.6em);
    }
    to {
      clip-path: inset(0 0 -0.3em 0);
      transform: none;
    }
  }
  .hero__content > * {
    animation: hero-rise 0.9s var(--ease-out) backwards;
  }
  .hero__content > .hero__title { animation-delay: 0.08s; }
  .hero__content > .hero__lead { animation-delay: 0.2s; }
  .hero__content > .hero__actions { animation-delay: 0.3s; }
  /* Folga para ascendentes/descendentes do Montserrat dentro da máscara. */
  .split-line-mask {
    overflow-clip-margin: 0.12em;
  }
  .hero__visual img {
    will-change: transform;
  }

  /* Lenis (rolagem suave) */
  html.lenis,
  html.lenis body {
    height: auto;
  }
  .lenis.lenis-stopped {
    overflow: clip;
  }
  .lenis [data-lenis-prevent] {
    overscroll-behavior: contain;
  }
  .lenis.lenis-smooth iframe {
    pointer-events: none;
  }

  /* Faixa de ambiente (homologação/local) */
  .env-ribbon {
    position: fixed;
    right: 0;
    top: 50%;
    transform: rotate(-90deg) translateY(-100%);
    transform-origin: right top;
    z-index: 90;
    padding: 0.25rem 0.75rem;
    background: var(--warning);
    color: var(--white);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
    pointer-events: none;
  }
  @media (max-width: 47.99rem) {
    .env-ribbon { display: none; }
  }
}

/* =============================================================================
   UTILITÁRIOS
   ========================================================================== */
@layer utilities {
  .stack > * + * {
    margin-top: var(--stack, var(--s2));
  }
  .stack-sm { --stack: var(--s1); }
  .stack-lg { --stack: var(--s4); }
  .visually-hidden:not(:focus):not(:active) {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
  }
  .tnum { font-variant-numeric: tabular-nums lining-nums; }
  .font-heading { font-family: var(--font-heading); }
  .measure { max-width: var(--measure); }
  .mt-0 { margin-top: 0 !important; }
  .mt-1 { margin-top: var(--s1) !important; }
  .mt-2 { margin-top: var(--s2) !important; }
  .mt-3 { margin-top: var(--s3) !important; }
  .mt-4 { margin-top: var(--s4) !important; }
  .mt-5 { margin-top: var(--s5) !important; }
  .mb-0 { margin-bottom: 0 !important; }
  .text-right { text-align: right; }
  .bg-paper { background: var(--paper); }
}

@media print {
  .site-header,
  .site-footer,
  .consent,
  .mobile-nav,
  .hero__visual {
    display: none !important;
  }
  .theme-dark {
    --bg: #fff;
    --text: #000;
    --heading: #000;
    --muted: #333;
  }
  a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: 0.8em;
  }
}

@layer components {
  .link-reset {
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    text-decoration: none;
  }
  .link-reset:hover {
    color: var(--white);
    text-decoration: underline;
    text-decoration-color: var(--cyan);
  }
  mark.pending {
    background: rgb(255 196 0 / 0.18);
    color: inherit;
    padding: 0 0.2em;
    outline: 1px dashed rgb(255 196 0 / 0.7);
  }
}

@layer components {
  .figures--2 { --figures-cols: 2; }
  .figures--3 { --figures-cols: 3; }
  .figures--4 { --figures-cols: 4; }
}

@layer utilities {
  /* Sem margem própria: o espaçamento vem do contêiner (margem zerada na base). */
  .h1-like,
  .h2-like {
    color: var(--heading);
    font-family: var(--font-heading);
    font-weight: 500;
    text-wrap: balance;
  }
  .h1-like { font-size: var(--fs-h1); line-height: var(--lh-tight); letter-spacing: var(--tracking-display); }
  .h2-like { font-size: var(--fs-h2); line-height: var(--lh-heading); letter-spacing: var(--tracking-heading); }
}

@layer components {
  .is-menu-open .consent {
    display: none;
  }
}

@layer components {
  /* Sem JS o menu fica sempre visível: o cabeçalho sai do modo fixo. */
  .no-js .site-header--overlay {
    position: relative;
    background: var(--navy-950);
  }
  .no-js .site-header--overlay + main .hero {
    padding-top: var(--s5);
  }
}

/* =============================================================================
   PÁGINAS (Fase 4)
   ========================================================================== */
@layer components {
  /* Malha estática do hero (base da cena animada da Fase 5). */
  .hero__mesh {
    position: absolute;
    inset: 0;
    background-image:
      linear-gradient(rgb(255 255 255 / 0.045) 1px, transparent 1px),
      linear-gradient(90deg, rgb(255 255 255 / 0.045) 1px, transparent 1px);
    background-size: 4rem 4rem;
    -webkit-mask-image: radial-gradient(80% 70% at 75% 40%, #000 20%, transparent 75%);
    mask-image: radial-gradient(80% 70% at 75% 40%, #000 20%, transparent 75%);
  }

  .flash {
    padding-top: var(--s3);
  }
  .pending-note {
    margin-top: var(--s2);
  }
  .pending-note span {
    min-width: 0;
  }

  .values-grid {
    display: grid;
    padding: 0;
    list-style: none;
    border-top: var(--border) solid var(--rule-strong);
  }
  .values-grid li {
    padding: var(--s3) 0;
    border-bottom: var(--border) solid var(--rule);
  }
  .values-grid h3 {
    margin-bottom: var(--s1);
    font-size: var(--fs-h3);
  }
  .values-grid p {
    color: var(--muted);
  }
  @media (min-width: 62rem) {
    .values-grid {
      grid-template-columns: repeat(3, minmax(0, 1fr));
      column-gap: var(--grid-gap);
    }
    .values-grid li {
      padding-right: var(--s3);
    }
  }

  .aside-panel {
    align-self: start;
    padding-top: var(--s2);
    border-top: var(--border-strong) solid var(--heading);
  }
  @media (min-width: 62rem) {
    .aside-panel {
      position: sticky;
      top: calc(var(--header-h) + var(--s3));
    }
  }

  .meta-list {
    display: grid;
    margin: var(--s2) 0 0;
  }
  .meta-list > div {
    display: grid;
    gap: 0.25rem;
    padding: var(--s1) 0;
    border-bottom: var(--border) solid var(--rule);
  }
  .meta-list dt {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--muted);
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }
  .meta-list dt .icon {
    width: 1rem;
    height: 1rem;
  }
  .meta-list dd {
    margin: 0;
    color: var(--heading);
  }

  .segment-list {
    display: grid;
    gap: var(--s5) var(--grid-gap);
    padding: 0;
    list-style: none;
  }
  @media (min-width: 48rem) {
    .segment-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (min-width: 72rem) {
    .segment-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  }
  .segment-card {
    position: relative;
    display: grid;
    gap: var(--s1);
    align-content: start;
  }
  .segment-card .media-frame {
    margin-bottom: var(--s1);
  }
  .segment-card__title {
    font-size: var(--fs-h3);
  }
  .segment-card__title a {
    color: inherit;
    text-decoration: none;
  }
  .segment-card__title a::after {
    content: "";
    position: absolute;
    inset: 0;
  }
  .segment-card:hover .segment-card__title a {
    text-decoration: underline;
    text-decoration-color: var(--accent);
  }

  .link-list {
    padding: 0;
    list-style: none;
    --cluster: var(--s2) var(--s4);
  }

  .premium-plans {
    display: grid;
    gap: var(--s5) var(--grid-gap);
  }
  @media (min-width: 62rem) {
    .premium-plans { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  .premium-plan {
    display: flex;
    flex-direction: column;
    gap: var(--s2);
    padding-top: var(--s3);
    border-top: var(--border) solid var(--rule-strong);
  }
  .premium-plan .lead {
    font-size: var(--fs-body);
  }
  .premium-plan .btn {
    margin-top: auto;
    align-self: flex-start;
    width: auto;
  }

  .partner-list {
    padding: 0;
    list-style: none;
    border-top: var(--border) solid var(--rule-strong);
  }
  .partner {
    display: grid;
    gap: var(--s2) var(--grid-gap);
    padding: var(--s3) 0;
    border-bottom: var(--border) solid var(--rule);
  }
  @media (min-width: 48rem) {
    .partner { grid-template-columns: 12rem minmax(0, 1fr); align-items: start; }
  }
  .partner__logo {
    display: grid;
    place-items: center start;
    min-height: 4rem;
  }
  .partner__logo img {
    max-height: 3.5rem;
    width: auto;
    filter: grayscale(1);
  }
  .partner__name {
    font-size: var(--fs-h4);
    margin-bottom: var(--s0);
  }

  .list-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--s2);
    margin-bottom: var(--s5);
    padding-bottom: var(--s3);
    border-bottom: var(--border) solid var(--rule);
  }
  .list-toolbar ul {
    padding: 0;
    list-style: none;
    --cluster: var(--s0);
  }
  .list-toolbar .search {
    flex: 1 1 18rem;
    max-width: 24rem;
  }
  .mb-4 {
    margin-bottom: var(--s4);
  }

  .empty-state {
    padding: var(--s5) 0;
    border-top: var(--border) solid var(--rule);
  }
  /* A barra de busca já traz o fio. */
  .list-toolbar ~ .empty-state {
    padding-top: 0;
    border-top: 0;
  }
  .empty-state > * + * {
    margin-top: var(--s1);
  }

  .article__header {
    padding-bottom: var(--s4);
  }
  .article__intro {
    max-width: 52rem;
  }
  .article__intro > * + * {
    margin-top: var(--s2);
  }
  .article__intro h1 {
    font-size: clamp(1.875rem, 1.4rem + 1.9vw, 3rem);
  }
  .article__body {
    font-size: clamp(1.0625rem, 1.02rem + 0.25vw, 1.25rem);
  }
  @media (min-width: 62rem) {
    .article__aside {
      position: sticky;
      top: calc(var(--header-h) + var(--s3));
      align-self: start;
    }
  }
  .share {
    display: grid;
    gap: 0.25rem;
    margin-top: var(--s1);
    padding: 0;
    list-style: none;
  }
  .share a,
  .share button {
    display: inline-flex;
    align-items: center;
    gap: 0.625rem;
    min-height: 2.75rem;
    color: var(--heading);
    font-size: var(--fs-small);
    text-decoration: none;
  }
  .share a:hover,
  .share button:hover {
    text-decoration: underline;
    text-decoration-color: var(--accent);
    color: var(--heading);
  }

  .program {
    margin-top: var(--s2);
    padding: 0;
    list-style: none;
    border-top: var(--border) solid var(--rule-strong);
  }
  .program li {
    display: grid;
    grid-template-columns: 5rem minmax(0, 1fr);
    gap: var(--grid-gap);
    padding: var(--s2) 0;
    border-bottom: var(--border) solid var(--rule);
  }
  .program__time {
    color: var(--heading);
    font-weight: 600;
  }
  .program__title {
    font-size: var(--fs-h4);
  }

  .message-page {
    min-height: 60vh;
    display: grid;
    align-content: center;
  }

  .debug {
    overflow: auto;
    max-height: 20rem;
    padding: var(--s2);
    background: rgb(255 255 255 / 0.06);
    color: var(--on-dark-muted);
    font-size: 0.75rem;
    white-space: pre-wrap;
  }

  .legal h2 {
    font-size: var(--fs-h4);
  }

  .map-consent {
    display: grid;
    gap: var(--s1);
    justify-items: start;
  }
  .map-embed {
    width: 100%;
    aspect-ratio: 4 / 3;
    border: var(--border) solid var(--rule);
  }
  .map-embed iframe {
    width: 100%;
    height: 100%;
    border: 0;
  }

  .editorial__media .map-figure {
    max-width: 34rem;
    margin-inline: auto;
  }

  .grecaptcha-badge {
    visibility: hidden;
  }
}
