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

@property --shadow-size {
  syntax: '<length>';
  inherits: false;
  initial-value: 100px;
}

@property --color1 {
  syntax: '<color>';
  inherits: false;
  initial-value: #00ff99;
}

@property --color2 {
  syntax: '<color>';
  inherits: false;
  initial-value: #006aff;
}

body {
  height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #0f1628;
  font-family: sans-serif;
  position: relative;
  overflow: hidden;
}

h1 {
  max-width: 90%;
  color: white;
  text-align: center;
}

.top-bottom-effect,
.left-right-effect {
  width: 100%;
  height: 100%;
  position: absolute;
  opacity: 0.5;
}

.top-bottom-effect::before,
.top-bottom-effect::after,
.left-right-effect::before,
.left-right-effect::after {
  content: '';
  width: 100%;
  height: 100%;
  position: absolute;
  filter: blur(var(--shadow-size));
  -webkit-filter: blur(var(--shadow-size));
  animation:
    shadow-mov 4s infinite,
    border-color 4s infinite;
  -webkit-animation:
    shadow-mov 4s infinite,
    border-color 4s infinite;
}

/* Top */
.top-bottom-effect::before {
  top: -100%;
  background: linear-gradient(to right, var(--color1), var(--color2));
  animation-delay: 0s;
}

/* Right */
.left-right-effect::after {
  right: -100%;
  background: linear-gradient(to bottom, var(--color1), var(--color2));
  animation-delay: -1s;
}

/* Bottom */
.top-bottom-effect::after {
  bottom: -100%;
  background: linear-gradient(to left, var(--color1), var(--color2));
  animation-delay: -2s;
}

/* Left */
.left-right-effect::before {
  left: -100%;
  background: linear-gradient(to top, var(--color1), var(--color2));
  animation-delay: -3s;
}

@keyframes shadow-mov {
  50% {
    --shadow-size: 60px;
  }
  100% {
    --shadow-size: 100px;
  }
}

@keyframes border-color {
  0%,
  100% {
    --color1: #00ff99;
    --color2: #006aff;
  }
  50% {
    --color1: #006aff;
    --color2: #00ff99;
  }
}
