/* ============================================================
   BASE — Reset, body, utilitários, botões, animações
   ============================================================ */

/* ===========================
   RESET & BASE
=========================== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html {
  scroll-behavior: smooth;
  font-size: 16px;
  /* Defesa contra overflow horizontal vazando no iOS Safari quando algum
     descendente força scrollWidth > viewport. overflow-x:hidden no <body>
     sozinho às vezes não basta — o <html> precisa clipar também. */
  overflow-x: hidden;
  overflow-x: clip; /* progressive enhancement (Safari 16+) — não cria scroll-container */
}
body {
  font-family: var(--font-sans);
  background: #ffffff;
  color: #0F1923;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
  overflow-x: clip;
}
img { max-width: 100%; display: block; height: auto; }
a { text-decoration: none; color: inherit; }
ul { list-style: none; }

/* Acessibilidade: foco visível para navegação por teclado */
:focus-visible {
  outline: 3px solid #2D72F5;
  outline-offset: 3px;
  border-radius: 4px;
  transition: outline-offset .15s var(--ease-out);
}
/* Skip link (acessibilidade) */
.skip-link {
  position: absolute; top: -100px; left: 16px;
  background: #1558D6; color: #fff;
  padding: 12px 20px; border-radius: 6px;
  font-weight: 600; font-size: 14px;
  z-index: 9999; transition: top .2s var(--ease-out);
}
.skip-link:focus { top: 16px; }

/* Respeita preferência de reduzir movimento (acessibilidade) */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .logos__track { animation: none !important; }
}

/* Visually hidden for screen readers */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0);
  white-space: nowrap; border: 0;
}

/* ===========================
   UTILITY
=========================== */
.container { max-width: 1200px; margin: 0 auto; padding: 0 24px; }
.tag {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--blue-light); color: var(--blue);
  font-size: 13px; font-weight: 600; letter-spacing: .02em;
  padding: 5px 12px; border-radius: 100px;
  border: 1px solid rgba(21,88,214,.15);
}
.tag--white {
  background: rgba(255,255,255,.12); color: #fff;
  border-color: rgba(255,255,255,.2);
}

/* Buttons */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font-family: inherit; font-size: 15px; font-weight: 600;
  border-radius: var(--radius-md); padding: 13px 26px; cursor: pointer;
  border: 2px solid transparent;
  white-space: nowrap; line-height: 1;
  transition:
    transform .18s var(--ease-out),
    background-color .2s var(--ease-out),
    border-color .2s var(--ease-out),
    color .2s var(--ease-out),
    box-shadow .25s var(--ease-out);
}
/* Feedback de press universal (Emil: buttons must feel responsive) */
.btn:active { transform: scale(.97); }

.btn--primary {
  background: var(--blue); color: #fff;
  box-shadow: var(--shadow-blue);
}
@media (hover: hover) and (pointer: fine) {
  .btn--primary:hover {
    background: var(--blue-dark);
    transform: translateY(-1px);
    box-shadow: 0 12px 36px rgba(21,88,214,.35);
  }
  .btn--white:hover { transform: translateY(-1px); }
}
.btn--primary:active { transform: translateY(0) scale(.97); }

.btn--ghost {
  background: transparent; color: #fff;
  border-color: rgba(255,255,255,.3);
}
.btn--ghost:hover { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.5); }

.btn--outline {
  background: transparent; color: var(--blue);
  border-color: var(--blue);
}
.btn--outline:hover { background: var(--blue); color: #fff; }

.btn--white {
  background: #fff; color: var(--blue);
  box-shadow: var(--shadow-md);
}
.btn--white:hover {
  background: #f0f4ff;
  box-shadow: var(--shadow-lg);
}

.btn--lg { font-size: 17px; padding: 16px 36px; }
.btn--sm { font-size: 14px; padding: 10px 20px; }

/* Section headings */
.section-label {
  font-size: 13px; font-weight: 600; letter-spacing: .08em;
  text-transform: uppercase; color: var(--blue);
  margin-bottom: 12px;
}
.section-title {
  font-family: var(--font-display);
  font-size: clamp(26px, 3.4vw, 38px);
  font-weight: 600; line-height: 1.15;
  letter-spacing: -.02em; color: #0F1923;
  text-wrap: balance;
}
.section-title span { color: var(--blue); font-style: normal; }
.section-desc {
  font-size: 17px; color: var(--slate);
  line-height: 1.7; max-width: 560px;
  text-wrap: pretty;
}
.section-header {
  text-align: center; margin-bottom: 64px;
}
.section-header .section-desc { margin: 16px auto 0; }

/* ===========================
   ANIMATIONS (Emil: ease-out + stagger curto)
=========================== */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
.fade-up { animation: fadeUp .55s var(--ease-out) both; }
/* Stagger curto: 40ms entre itens — não trava a página */
.fade-up--d1 { animation-delay: 40ms; }
.fade-up--d2 { animation-delay: 80ms; }
.fade-up--d3 { animation-delay: 120ms; }
.fade-up--d4 { animation-delay: 160ms; }

/* Scroll reveal */
.reveal {
  opacity: 0; transform: translateY(20px);
  transition:
    opacity .5s var(--ease-out),
    transform .5s var(--ease-out);
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal--delay-1 { transition-delay: 40ms; }
.reveal--delay-2 { transition-delay: 80ms; }
.reveal--delay-3 { transition-delay: 120ms; }
.reveal--delay-4 { transition-delay: 160ms; }
.reveal--delay-5 { transition-delay: 200ms; }

