/* =============================================================================
   Base — reset, fundo e layout da página (idêntico ao HTML final aprovado)
   ============================================================================= */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html,
body {
  width: 100%;
  min-height: 100%;
}

body {
  min-height: 100dvh;
  overflow: hidden;
  color: var(--text);
  font-family: "Avenir Next", Avenir, "SF Pro Display", Inter, "Helvetica Neue",
    Arial, sans-serif;
  background: radial-gradient(
      ellipse at 50% 45%,
      rgba(255, 255, 255, 0.02),
      transparent 42%
    ),
    radial-gradient(ellipse at 22% 22%, rgba(255, 255, 255, 0.012), transparent 38%),
    radial-gradient(ellipse at 82% 78%, rgba(0, 0, 0, 0.16), transparent 52%),
    radial-gradient(ellipse at 62% 54%, rgba(140, 150, 165, 0.035), transparent 55%),
    linear-gradient(145deg, var(--bg), var(--bg2));
  -webkit-font-smoothing: antialiased;
  text-rendering: geometricPrecision;
}

body::before,
body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
}
body::before {
  opacity: 0.18;
  mix-blend-mode: soft-light;
  filter: blur(38px);
  transform: scale(1.05);
  background: radial-gradient(
      ellipse at 30% 35%,
      rgba(255, 255, 255, 0.08),
      transparent 60%
    ),
    radial-gradient(ellipse at 68% 58%, rgba(170, 180, 190, 0.07), transparent 62%),
    radial-gradient(ellipse at 80% 18%, rgba(255, 255, 255, 0.045), transparent 56%),
    radial-gradient(ellipse at 20% 78%, rgba(0, 0, 0, 0.18), transparent 70%);
}
body::after {
  opacity: 0.18;
  background: repeating-linear-gradient(
    118deg,
    rgba(255, 255, 255, 0.014) 0,
    rgba(255, 255, 255, 0.014) 1px,
    transparent 1px,
    transparent 5px
  );
}

.page {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  min-height: 100dvh;
  padding: max(24px, env(safe-area-inset-top))
    max(18px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom))
    max(18px, env(safe-area-inset-left));
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    transition-duration: 0.001ms !important;
  }
}
