*, *::before, *::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html, body {
  width: 100vw;
  height: 100vh;
  height: 100dvh; /* mobile dynamic viewport */
  overflow: hidden;
  background: #0a0a0f;
  font-family: system-ui, -apple-system, sans-serif;
  -webkit-font-smoothing: antialiased;
}

/* Floating gradient background layer (Apple-style) */
#hero-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  background: linear-gradient(
    135deg,
    #0a0a0f 0%,
    #1a1a2e 25%,
    #16213e 50%,
    #1a1a2e 75%,
    #0a0a0f 100%
  );
  background-size: 400% 400%;
  animation: heroGradientFloat 20s ease infinite;
  pointer-events: none;
}

@keyframes heroGradientFloat {
  0%, 100% { background-position: 0% 50%; }
  25%      { background-position: 100% 0%; }
  50%      { background-position: 100% 100%; }
  75%      { background-position: 0% 100%; }
}

/* WebGL canvas — transparent, on top of gradient */
#hero-canvas {
  position: fixed;
  inset: 0;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
