/* ============================================================
   TIPOGRAFIA — Open Sans (self-hosted) + fluid typography
   Viewport de interpolação: 375px → 1440px
   Fórmula:
     clamp(MINrem, calc(MINrem + (MAX-MIN) * ((100vw - 375px) / 1065)), MAXrem)
   ============================================================ */

/* ---- @font-face: latin + latin-ext (PT-BR) ---- */
/* 300 */
@font-face{
  font-family:"Open Sans";
  font-style:normal; font-weight:300; font-display:swap;
  src:url("../fonts/open-sans/latin-ext-300-normal.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Open Sans";
  font-style:normal; font-weight:300; font-display:swap;
  src:url("../fonts/open-sans/latin-300-normal.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Open Sans";
  font-style:italic; font-weight:300; font-display:swap;
  src:url("../fonts/open-sans/latin-ext-300-italic.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Open Sans";
  font-style:italic; font-weight:300; font-display:swap;
  src:url("../fonts/open-sans/latin-300-italic.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* 400 */
@font-face{
  font-family:"Open Sans";
  font-style:normal; font-weight:400; font-display:swap;
  src:url("../fonts/open-sans/latin-ext-400-normal.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Open Sans";
  font-style:normal; font-weight:400; font-display:swap;
  src:url("../fonts/open-sans/latin-400-normal.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Open Sans";
  font-style:italic; font-weight:400; font-display:swap;
  src:url("../fonts/open-sans/latin-ext-400-italic.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Open Sans";
  font-style:italic; font-weight:400; font-display:swap;
  src:url("../fonts/open-sans/latin-400-italic.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* 500 */
@font-face{
  font-family:"Open Sans";
  font-style:normal; font-weight:500; font-display:swap;
  src:url("../fonts/open-sans/latin-ext-500-normal.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Open Sans";
  font-style:normal; font-weight:500; font-display:swap;
  src:url("../fonts/open-sans/latin-500-normal.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Open Sans";
  font-style:italic; font-weight:500; font-display:swap;
  src:url("../fonts/open-sans/latin-ext-500-italic.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Open Sans";
  font-style:italic; font-weight:500; font-display:swap;
  src:url("../fonts/open-sans/latin-500-italic.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* 600 */
@font-face{
  font-family:"Open Sans";
  font-style:normal; font-weight:600; font-display:swap;
  src:url("../fonts/open-sans/latin-ext-600-normal.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Open Sans";
  font-style:normal; font-weight:600; font-display:swap;
  src:url("../fonts/open-sans/latin-600-normal.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Open Sans";
  font-style:italic; font-weight:600; font-display:swap;
  src:url("../fonts/open-sans/latin-ext-600-italic.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Open Sans";
  font-style:italic; font-weight:600; font-display:swap;
  src:url("../fonts/open-sans/latin-600-italic.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* 700 */
@font-face{
  font-family:"Open Sans";
  font-style:normal; font-weight:700; font-display:swap;
  src:url("../fonts/open-sans/latin-ext-700-normal.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Open Sans";
  font-style:normal; font-weight:700; font-display:swap;
  src:url("../fonts/open-sans/latin-700-normal.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Open Sans";
  font-style:italic; font-weight:700; font-display:swap;
  src:url("../fonts/open-sans/latin-ext-700-italic.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Open Sans";
  font-style:italic; font-weight:700; font-display:swap;
  src:url("../fonts/open-sans/latin-700-italic.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root{
  /* Fonte */
  --font-sans: "Open Sans", system-ui, Arial, Tahoma, sans-serif;
  --f-display: var(--font-sans);
  --f-body: var(--font-sans);

  /* Viewport de interpolação (px) */
  --fluid-vw-min: 375;
  --fluid-vw-max: 1440;
  --fluid-vw-range: 1065; /* 1440 - 375 */

  /*
    Helper (documentação):
      --fs-X: clamp(
        MINrem,
        calc(MINrem + (MAX - MIN) * ((100vw - 375px) / 1065)),
        MAXrem
      );
    Onde MIN/MAX estão em rem (px / 16).
  */

  /* heading-xl — H1 / hero  (36 → 64 | lh 40 → 72) */
  --fs-heading-xl: clamp(2.25rem, calc(2.25rem + 1.75 * ((100vw - 375px) / 1065)), 4rem);
  --lh-heading-xl: clamp(2.5rem,  calc(2.5rem  + 2    * ((100vw - 375px) / 1065)), 4.5rem);

  /* heading-lg — H2  (28 → 40 | lh 32 → 48) — levemente acima do exemplo para preservar presença visual do site */
  --fs-heading-lg: clamp(1.75rem, calc(1.75rem + 0.75 * ((100vw - 375px) / 1065)), 2.5rem);
  --lh-heading-lg: clamp(2rem,    calc(2rem    + 1    * ((100vw - 375px) / 1065)), 3rem);

  /* heading-md — H3/H4  (20 → 24 | lh 24 → 28) */
  --fs-heading-md: clamp(1.25rem, calc(1.25rem + 0.25 * ((100vw - 375px) / 1065)), 1.5rem);
  --lh-heading-md: clamp(1.5rem,  calc(1.5rem  + 0.25 * ((100vw - 375px) / 1065)), 1.75rem);

  /* lead — texto de apoio sob títulos (17 → 21) */
  --fs-lead: clamp(1.0625rem, calc(1.0625rem + 0.25 * ((100vw - 375px) / 1065)), 1.3125rem);
  --lh-lead: clamp(1.5rem,    calc(1.5rem    + 0.25 * ((100vw - 375px) / 1065)), 1.75rem);

  /* body — 16px fixo | lh 22 → 24 */
  --fs-body: 1rem;
  --lh-body: clamp(1.375rem, calc(1.375rem + 0.125 * ((100vw - 375px) / 1065)), 1.5rem);

  /* small — 14px / lh 20 fixos */
  --fs-small: 0.875rem;
  --lh-small: 1.25rem;
}

html{
  font-family: var(--font-sans);
}

body{
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  font-weight: 400;
}

/* ---- Mapeamento dos tokens nos componentes tipográficos do site ---- */
.h1{
  font-family: var(--font-sans);
  font-size: var(--fs-heading-xl);
  line-height: var(--lh-heading-xl);
  font-weight: 700;
  letter-spacing: -.025em;
}
.h2{
  font-family: var(--font-sans);
  font-size: var(--fs-heading-lg);
  line-height: var(--lh-heading-lg);
  font-weight: 700;
  letter-spacing: -.02em;
}
.h3{
  font-family: var(--font-sans);
  font-size: var(--fs-heading-md);
  line-height: var(--lh-heading-md);
  font-weight: 700;
}
.lead{
  font-family: var(--font-sans);
  font-size: var(--fs-lead);
  line-height: var(--lh-lead);
}
.body-md{
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
}
.body-sm,
.caption{
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  line-height: var(--lh-small);
}
.btn{
  font-family: var(--font-sans);
}
.eyebrow{
  font-family: var(--font-sans);
  font-size: var(--fs-small);
}

/* Utilitários para novos componentes */
.text-heading-xl{ font-size: var(--fs-heading-xl); line-height: var(--lh-heading-xl); font-weight: 700; }
.text-heading-lg{ font-size: var(--fs-heading-lg); line-height: var(--lh-heading-lg); font-weight: 700; }
.text-heading-md{ font-size: var(--fs-heading-md); line-height: var(--lh-heading-md); font-weight: 700; }
.text-lead{ font-size: var(--fs-lead); line-height: var(--lh-lead); }
.text-body{ font-size: var(--fs-body); line-height: var(--lh-body); }
.text-small{ font-size: var(--fs-small); line-height: var(--lh-small); }
