
:root {
--color-bg1: rgba(110, 207, 246, 1);
--color-bg2: rgba(3, 43, 67, 1);
--color1: 0, 180, 240;
--color2: 0, 100, 170;
--color3: 10, 50, 100;
--color4: 5, 25, 60;
--color5: 220, 250, 255;
--color-interactive: 0, 230, 255;

  --circle-size: 80%;   
  --blending: hard-light;
}



@keyframes moveInCircle {
  0% {
    transform: rotate(0deg);
  }
  50% {
    transform: rotate(180deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

@keyframes moveVertical {
  0% {
    transform: translateY(-50%);
  }
  50% {
    transform: translateY(50%);
  }
  100% {
    transform: translateY(-50%);
  }
}

@keyframes moveHorizontal {
  0% {
    transform: translateX(-50%) translateY(-10%);
  }
  50% {
    transform: translateX(50%) translateY(10%);
  }
  100% {
    transform: translateX(-50%) translateY(-10%);
  }
}





.gradient-bg {
  width: 100%;
 
  height: 140svh; /* ensures Safari/Android coverage */
  position: relative;
  overflow: hidden;
  background: linear-gradient(40deg, var(--color-bg1), var(--color-bg2));
}

.gradient-bg svg {
  position: fixed;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
}


.gradient-bg .gradients-container {
  filter: url(#goo) blur(40px);
  width: 100%;
  height: 100%;
}


.g1, .g2, .g3, .g4, .g5, .interactive {
  position: absolute;
  border-radius: 50%;
  mix-blend-mode: hard-light;
}


.g1 {
   position: absolute;
  background: radial-gradient(circle at center, rgba(var(--color1), 0.8) 0, rgba(var(--color1), 0) 50%) no-repeat;
    mix-blend-mode: var(--blending);

    width: var(--circle-size);
    height: var(--circle-size);
    top: calc(50% - var(--circle-size) / 2);
    left: calc(50% - var(--circle-size) / 2);

    transform-origin: center center;
    animation: moveVertical 30s ease infinite;

    opacity: 1;

}
.g2 {
    position: absolute;
    background: radial-gradient(circle at center, rgba(var(--color2), 0.8) 0, rgba(var(--color2), 0) 50%) no-repeat;
    mix-blend-mode: var(--blending);

    width: var(--circle-size);
    height: var(--circle-size);
    top: calc(50% - var(--circle-size) / 2);
    left: calc(50% - var(--circle-size) / 2);

    transform-origin: calc(50% - 400px);
    animation: moveInCircle 20s reverse infinite;

    opacity: 1;
  }

  .g3 {
    position: absolute;
    background: radial-gradient(circle at center, rgba(var(--color3), 0.8) 0, rgba(var(--color3), 0) 50%) no-repeat;
    mix-blend-mode: var(--blending);

    width: var(--circle-size);
    height: var(--circle-size);
    top: calc(50% - var(--circle-size) / 2 + 200px);
    left: calc(50% - var(--circle-size) / 2 - 500px);

    transform-origin: calc(50% + 400px);
    animation: moveInCircle 40s linear infinite;

    opacity: 1;
  }

  .g4 {
    position: absolute;
    background: radial-gradient(circle at center, rgba(var(--color4), 0.8) 0, rgba(var(--color4), 0) 50%) no-repeat;
    mix-blend-mode: var(--blending);

    width: var(--circle-size);
    height: var(--circle-size);
    top: calc(50% - var(--circle-size) / 2);
    left: calc(50% - var(--circle-size) / 2);

    transform-origin: calc(50% - 200px);
    animation: moveHorizontal 40s ease infinite;

    opacity: 0.7;
  }

  .g5 {
    position: absolute;
    background: radial-gradient(circle at center, rgba(var(--color5), 0.8) 0, rgba(var(--color5), 0) 50%) no-repeat;
    mix-blend-mode: var(--blending);

    width: calc(var(--circle-size) * 2);
    height: calc(var(--circle-size) * 2);
    top: calc(50% - var(--circle-size));
    left: calc(50% - var(--circle-size));

    transform-origin: calc(50% - 800px) calc(50% + 200px);
    animation: moveInCircle 20s ease infinite;

    opacity: 1;
  }

  .interactive {
    position: absolute;
    background: radial-gradient(circle at center, rgba(var(--color-interactive), 0.8) 0, rgba(var(--color-interactive), 0) 50%) no-repeat;
    mix-blend-mode: var(--blending);

    width: 100%;
    height: 100%;
    top: -50%;
    left: -50%;

    opacity: 0.7;
  }

/* Desktop ≥1280px */
@media (max-width: 1580px) {
  .gradient-bg {
    height: 105dvh; /* reduce height for large desktops */
  }
}


@media (max-width: 1024px) {
  :root {
    --circle-size: 110%;
    --blending: hard-light;
  }

  .g6, .g7 {
    display: block;
    width: var(--circle-size);
    height: var(--circle-size);
    border-radius: 50%;
    mix-blend-mode: var(--blending);
    opacity: 0.7;
    top: -10%;
    left: -10%;
    animation-duration: 30s;
    animation-iteration-count: infinite;
  }

  .g1 { width: var(--circle-size); height: var(--circle-size); top: -10%; left: -10%; animation: moveVertical 30s ease infinite; }
  .g2 { width: var(--circle-size); height: var(--circle-size); top: -20%; left: -15%; animation: moveInCircle 20s reverse infinite; }
  .g3 { width: var(--circle-size); height: var(--circle-size); top: 10%; left: -25%; animation: moveInCircle 40s linear infinite; }
  .g4 { width: var(--circle-size); height: var(--circle-size); top: -5%; left: -5%; animation: moveHorizontal 40s ease infinite; opacity: 0.7; }
  .g5 { width: calc(var(--circle-size) * 2); height: calc(var(--circle-size) * 2); top: -15%; left: -20%; animation: moveInCircle 20s ease infinite; }
  .interactive { width: 100%; height: 100%; top: -50%; left: -50%; opacity: 0.7; }
  .gradients-container { filter: url(#goo) blur(35px); }
}
@media (max-width: 1024px) {
  .gradient-bg {
    height: 132dvh;
  }
}
@media (max-width: 900px) and (orientation: landscape) and (max-height: 500px) {
  .gradient-bg {
    height: 160svh;
  }
}
/* --------------------------- 
   898px and below
--------------------------- */
@media (max-width: 898px) {
  :root {
    --circle-size: 105%;
    --blending: hard-light;
  }

  .g6, .g7 { width: var(--circle-size); height: var(--circle-size); top: -12%; left: -12%; }
  .g1 { top: -12%; left: -12%; }
  .g2 { top: -22%; left: -18%; }
  .g3 { top: 12%; left: -28%; }
  .g4 { top: -6%; left: -6%; }
  .g5 { top: -17%; left: -22%; }
  .gradients-container { filter: url(#goo) blur(34px); }
}

@media (max-width: 600px) {
  .gradient-bg {
    height: 138svh;
  }
}


@media (max-width: 598px) {
  :root {
    --circle-size: 100%;
    --blending: hard-light;
     --color-bg1: rgba(160, 240, 255, 1); /* lighter turquoise */
    --color-bg2: rgba(30, 80, 110, 1);   /* lighter dark blue */
  }

  .g6, .g7 { width: var(--circle-size); height: var(--circle-size); top: -14%; left: -14%; }
  .g1 { top: -14%; left: -14%; }
  .g2 { top: -24%; left: -20%; }
  .g3 { top: 14%; left: -30%; }
  .g4 { top: -7%; left: -7%; }
  .g5 { top: -18%; left: -25%; }
  .gradients-container { filter: url(#goo) blur(33px); }
}

@media (max-width: 398px) {
  :root {
    --circle-size: 90%;
    --blending: hard-light;
    --color-bg1: rgba(200, 255, 255, 1); /* very light turquoise */
    --color-bg2: rgba(45, 100, 130, 1);  /* slightly lighter dark blue */
  }

  .g6, .g7 { width: var(--circle-size); height: var(--circle-size); top: -16%; left: -16%; }
  .g1 { top: -16%; left: -16%; }
  .g2 { top: -26%; left: -22%; }
  .g3 { top: 16%; left: -32%; }
  .g4 { top: -8%; left: -8%; }
  .g5 { top: -19%; left: -27%; }
  .gradients-container { filter: url(#goo) blur(32px); }
}