/* ============================================================
   base.css — reset + tipografia base + utilidades de layout
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; font-size: 100%; } /* 16px base */

/* Telas grandes: escala a base rem → container, tipografia e espaçamentos
   crescem juntos e o conteúdo mantém a mesma "imponência" proporcional. */
@media (min-width: 1600px) { html { font-size: 106.25%; } } /* ~17px */
@media (min-width: 1920px) { html { font-size: 118.75%; } } /* ~19px */
@media (min-width: 2560px) { html { font-size: 137.50%; } } /* ~22px */
@media (min-width: 3200px) { html { font-size: 162.50%; } } /* ~26px */

/* Lenis controla o scroll; html não rola nativamente */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }

body {
  font-family: var(--f-body);
  font-size: var(--fs-body);
  line-height: 1.6;
  color: var(--c-mist);
  background: var(--c-black);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

h1, h2, h3, h4 {
  font-family: var(--f-display);
  font-weight: 700;
  line-height: 0.95;
  letter-spacing: 0.01em;
  color: var(--c-white);
  text-transform: uppercase;
}

a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; height: auto; }
button { font: inherit; cursor: pointer; border: 0; background: none; color: inherit; }

::selection { background: var(--c-accent); color: var(--c-black); }

/* ---- layout helpers ---- */
.container {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.section { padding-block: var(--sec-md); }   /* = --section-v-padding-md real */
.eyebrow {
  font-family: var(--f-slab);
  font-size: var(--fs-small);
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--c-accent);
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
}
.eyebrow::before {
  content: ""; width: 28px; height: 1px; background: var(--c-accent);
}
.lead { font-size: var(--fs-h3); color: var(--c-white); line-height: 1.35; }
.muted { color: var(--c-mist); }

/* ---- Termos técnicos de destaque (QP, JORC, MSaaS, etc.) ---- */
.term { color: var(--c-accent); font-weight: 700; }

/* ---- Reveals (fade-up). Estado inicial oculto; .is-revealed (adicionado
   por IntersectionObserver) revela. Robusto a navegações SPA do Barba. ---- */
[data-reveal] { opacity: 0; transform: translateY(30px); transition: opacity 0.8s var(--ease-out), transform 0.8s var(--ease-out); }
[data-reveal].is-revealed { opacity: 1; transform: none; }

/* respeita quem prefere menos movimento */
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
}
