:root {
  --sky-top: #8fd5f8;
  --sky-mid: #3f94ca;
  --sky-deep: #0a4b81;
  --ocean-deep: #042542;
  --text: #f0fbff;
  --muted: #ceecff;
  --accent-bg: #ffffff;
  --accent-text: #0a3f71;
}

html,
body {
  height: 100%;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: "Avenir Next", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  color: var(--text);
  background: linear-gradient(
    180deg,
    var(--sky-top) 0%,
    var(--sky-mid) 36%,
    var(--sky-deep) 62%,
    var(--ocean-deep) 100%
  );
  min-height: 100%;
  position: relative;
  overflow: hidden;
}

.scene {
  position: fixed;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}

.sun-glow {
  position: absolute;
  top: -24vmin;
  right: -16vmin;
  width: 62vmin;
  height: 62vmin;
  border-radius: 50%;
  background: radial-gradient(
    circle,
    rgba(255, 243, 188, 0.58) 0%,
    rgba(255, 243, 188, 0.18) 44%,
    rgba(255, 243, 188, 0) 72%
  );
}

.ocean-sheen {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 56vh;
  background: linear-gradient(
    180deg,
    rgba(102, 198, 242, 0.18) 0%,
    rgba(35, 130, 191, 0.38) 42%,
    rgba(5, 52, 92, 0.82) 100%
  );
}

.wave-layer {
  position: absolute;
  left: -50%;
  width: 200%;
  background-repeat: repeat-x;
  background-size: 1200px 100%;
  transform-origin: center;
  will-change: transform, background-position;
}

.wave-back {
  bottom: 20vh;
  height: 22vh;
  opacity: 0.42;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 320' preserveAspectRatio='none'%3E%3Cpath fill='%239fdfff' d='M0,96C100,64,200,64,300,96C400,128,500,128,600,96C700,64,800,64,900,96C1000,128,1100,128,1200,96C1300,64,1400,64,1500,96C1567,117,1600,117,1600,117L1600,320L0,320Z'/%3E%3C/svg%3E");
  animation: wave-slide-left 22s linear infinite, wave-rise 7s ease-in-out infinite;
}

.wave-mid {
  bottom: 10vh;
  height: 26vh;
  opacity: 0.55;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 320' preserveAspectRatio='none'%3E%3Cpath fill='%2354b2ea' d='M0,128C120,92,240,92,360,128C480,164,600,164,720,128C840,92,960,92,1080,128C1200,164,1320,164,1440,128C1520,106,1600,106,1600,106L1600,320L0,320Z'/%3E%3C/svg%3E");
  animation: wave-slide-right 15s linear infinite, wave-rise 6s ease-in-out infinite
    reverse;
}

.wave-front {
  bottom: -2vh;
  height: 30vh;
  opacity: 0.86;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 320' preserveAspectRatio='none'%3E%3Cpath fill='%232a89ca' d='M0,150C80,110,160,110,240,150C320,190,400,190,480,150C560,110,640,110,720,150C800,190,880,190,960,150C1040,110,1120,110,1200,150C1280,190,1360,190,1440,150C1520,110,1600,110,1600,110L1600,320L0,320Z'/%3E%3C/svg%3E");
  animation: wave-slide-left 11s linear infinite, wave-rise 5s ease-in-out infinite;
}

.hero {
  position: relative;
  z-index: 1;
  min-height: 100vh;
  max-width: 980px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.9rem;
  padding: clamp(2rem, 6vw, 5rem);
}

.eyebrow {
  margin: 0;
  font-size: 0.92rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
}

h1 {
  margin: 0;
  max-width: 16ch;
  font-size: clamp(2.1rem, 6.2vw, 4.6rem);
  line-height: 1.05;
  text-wrap: balance;
}

.description {
  margin: 0;
  max-width: 56ch;
  font-size: clamp(1.05rem, 2.5vw, 1.3rem);
  line-height: 1.55;
  color: var(--muted);
}

.button {
  margin-top: 0.35rem;
  display: inline-flex;
  width: fit-content;
  text-decoration: none;
  background: var(--accent-bg);
  color: var(--accent-text);
  padding: 0.75rem 1.2rem;
  border-radius: 10px;
  font-weight: 700;
  box-shadow: 0 10px 30px rgba(0, 18, 41, 0.22);
}

.button:hover {
  transform: translateY(-1px);
}

@keyframes wave-slide-left {
  0% {
    background-position-x: 0;
  }
  100% {
    background-position-x: 1200px;
  }
}

@keyframes wave-slide-right {
  0% {
    background-position-x: 0;
  }
  100% {
    background-position-x: -1200px;
  }
}

@keyframes wave-rise {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-14px);
  }
}

@media (max-width: 760px) {
  .hero {
    justify-content: flex-start;
    padding-top: 4.75rem;
  }

  .wave-back {
    bottom: 24vh;
  }

  .wave-mid {
    bottom: 13vh;
  }
}
