body, html {
  margin: 0;
  padding: 0;
  height: 100vh;
  overflow: hidden;
  font-family: Arial, sans-serif;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgb(20, 20, 20);
  animation: appear 4s;
}

@keyframes appear {
  0% {
    opacity: 0;
    transform: scale(1.2);
  }
}

canvas#bg-canvas {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -2;
}

#startButton {
  position: absolute;
  top: 40%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 10px 20px;
  background-color: #282828;
  color: #FFEB3B;
  font-size: 16px;
  border-radius: 5px;
  cursor: pointer;
  z-index: 10;
}

#startButton:hover {
  background-color: #282828;
}

.chat-container {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: transparent !important;
  padding: 1rem;
  color: white;
  z-index: 10;
}

.messages {
  max-height: 300px;
  overflow-y: auto;
}

.input-area {
  display: flex;
}

.input-area input {
  padding: 10px;
  font-size: 16px;
  border-radius: 5px;
  background-color: #000000;
  color: #FFEB3B;
  flex: 1;
}

.input-area button {
  padding: 10px 20px;
  background-color: #282828;
  color: #282828;
  font-size: 16px;
  border-radius: 5px;
  cursor: pointer;
}

.input-area button:hover {
  background-color: #282828;
}

.container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  filter: url('#gooey');
  z-index: -1;
  pointer-events: none;
}

.container .circle {
  position: relative;
  min-width: 300px;
  height: 300px;
  border-radius: 50%;
  background: #fff;
}

.container .circle:before {
  content: '';
  position: absolute;
  top: -50px;
  left: -50px;
  right: -50px;
  bottom: -50px;
  border-radius: 50%;
  background: #fff;
  z-index: -1;
  filter: blur(50px);
}

.container .circle.circle1,
.container .circle.circle1:before {
  background: linear-gradient(90deg, #f00, #0ff);
}

.container .circle.circle2,
.container .circle.circle2:before {
  background: linear-gradient(90deg, #ffeb3b, #da00ff);
}

.container .circle.circle1 {
  animation: animate1 20s linear infinite;
}

@keyframes animate1 {
  0% {
    transform: translateX(0) rotate(0deg);
  }
  30% {
    transform: translateX(250px) rotate(240deg);
  }
  60% {
    transform: translateX(250px) rotate(480deg);
  }
  100% {
    transform: translateX(0) rotate(720deg);
  }
}

.container .circle.circle2 {
  animation: animate2 20s linear infinite;
}

@keyframes animate2 {
  0% {
    transform: translateX(0) rotate(0deg);
  }
  30% {
    transform: translateX(-250px) rotate(-240deg);
  }
  60% {
    transform: translateX(-250px) rotate(-480deg);
  }
  100% {
    transform: translateX(0) rotate(-720deg);
  }
}

svg {
  height: 0;
  width: 0;
}

h2 {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 100%;
  text-align: center;
  color: #fff;
  font-family: ui-rounded, 'Hiragino Maru Gothic ProN', Quicksand, Comfortaa, Manjari, 'Arial Rounded MT', 'Arial Rounded MT Bold', Calibri, source-sans-pro, sans-serif;
  font-weight: normal;
  letter-spacing: 2.5px;
  font-size: 4em;
  z-index: 10000;
  pointer-events: none;
}

/* Orb and particle styles */
:root {
  --orb-size: 500px;
  --glow-color: #00ffcc;
  --bright-flash: #ffffff;
  --bg-color: #1a1a1a;
  --particle-color: #ffffff;
  --animation-speed: 4s;
  --particle-orbit-radius: 250px;
}

.orb-container {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--orb-size);
  height: var(--orb-size);
  perspective: 1000px;
  z-index: -1;
  pointer-events: none;
  background: var(--bg-color);
  opacity: 1;
}

.orb {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%, var(--glow-color), transparent 70%);
  animation: pulse 2s ease-in-out infinite, flash 4s linear infinite;
  box-shadow: 0 0 60px var(--glow-color), inset 0 0 40px var(--glow-color);
}

@keyframes pulse {
  0%, 100% {
    transform: scale(1);
    opacity: 0.9;
  }
  50% {
    transform: scale(1.3);
    opacity: 1;
  }
}

@keyframes flash {
  0%, 8.33%, 16.67%, 25%, 33.33%, 41.67%, 50%, 58.33%, 66.67%, 75%, 83.33%, 91.67% {
    box-shadow: 0 0 60px var(--glow-color), inset 0 0 40px var(--glow-color);
    background: radial-gradient(circle at 50% 50%, var(--glow-color), transparent 70%);
  }
  8.34%, 16.68%, 25.01%, 33.34%, 41.68%, 50.01%, 58.34%, 66.68%, 75.01%, 83.34%, 91.68%, 100% {
    box-shadow: 0 0 100px var(--bright-flash), inset 0 0 60px var(--bright-flash);
    background: radial-gradient(circle at 50% 50%, var(--bright-flash), transparent 60%);
  }
}

.particle {
  position: absolute;
  width: 8px;
  height: 8px;
  background: var(--particle-color);
  border-radius: 50%;
  left: 50%;
  top: 50%;
  animation: spiral calc(var(--animation-speed) * var(--i)) linear infinite;
  transform-origin: center;
}

@keyframes spiral {
  0% {
    transform: translate(-50%, -50%) rotateZ(calc(var(--angle) * 1deg)) translateX(var(--particle-orbit-radius)) scale(1);
    opacity: 0.9;
  }
  100% {
    transform: translate(-50%, -50%) rotateZ(calc(var(--angle) * 1deg + 360deg)) translateX(0) scale(0);
    opacity: 0;
  }
}

/* Particle angles and durations for staggered arrivals */
.particle:nth-child(1) { --angle: 0; --i: 1.0; }
.particle:nth-child(2) { --angle: 45; --i: 1.1; }
.particle:nth-child(3) { --angle: 90; --i: 1.2; }
.particle:nth-child(4) { --angle: 135; --i: 1.3; }
.particle:nth-child(5) { --angle: 180; --i: 1.4; }
.particle:nth-child(6) { --angle: 225; --i: 1.5; }
.particle:nth-child(7) { --angle: 270; --i: 1.6; }
.particle:nth-child(8) { --angle: 315; --i: 1.7; }
.particle:nth-child(9) { --angle: 360; --i: 1.8; }
.particle:nth-child(10) { --angle: 405; --i: 1.9; }
.particle:nth-child(11) { --angle: 450; --i: 2.0; }
.particle:nth-child(12) { --angle: 495; --i: 2.1; }

/* Nebula and Smoke */
.o {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.o1 {
  background: url(https://thepyli.com/projects/chat/bg.png);
  z-index: 1;
}

.o2 {
  background: url(https://thepyli.com/projects/chat/stars.png);
  z-index: 2;
  animation: 200s scroll infinite linear;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  filter: alpha(opacity=50);
  -moz-opacity: 0.5;
  -khtml-opacity: 0.5;
  opacity: 0.5;
}

.o3 {
  background: url(https://thepyli.com/projects/chat/nebula.png);
  z-index: 3;
  animation: 200s scroll2 infinite linear;
}

.o4 {
  background: url(https://thepyli.com/projects/chat/clouds.png);
  z-index: 3;
  animation: 400s scroll infinite linear;
}

@-webkit-keyframes scroll {
  100% {
    background-position: -3000px 0px;
  }
}
@-moz-keyframes scroll {
  100% {
    background-position: -3000px 0px;
  }
}
@-o-keyframes scroll {
  100% {
    background-position: -3000px 0px;
  }
}
@-ms-keyframes scroll {
  100% {
    background-position: -3000px 0px;
  }
}
@keyframes scroll {
  100% {
    background-position: -3000px 0px;
  }
}

@-webkit-keyframes scroll2 {
  100% {
    background-position: -3000px 0px;
  }
}
@-moz-keyframes scroll2 {
  100% {
    background-position: -3000px 0px;
  }
}
@-o-keyframes scroll2 {
  100% {
    background-position: -3000px 0px;
  }
}
@-ms-keyframes scroll2 {
  100% {
    background-position: -3000px 0px;
  }
}
@keyframes scroll2 {
  100% {
    background-position: 3000px 0px;
  }
}

/* TV static scene */
.container_row {
  display: flex;
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  z-index: 4; /* Above scrolling layers (1-3), below chat-container (10) */
}

.layer1, .layer2 {
  width: 100vw;
  height: 100vh;
  position: absolute;
  top: 0;
  left: 0;
}

.layer2 {
  margin-left: 0; /* Remove overlap, layers stack via z-index */
  z-index: 5; /* Above layer1 */
}

.tv-static {
  width: 100vw;
  height: 100vh;
  background-image: repeating-radial-gradient(circle at 17% 32%, white, black 0.00085px);
  background-size: cover;
  position: absolute;
  top: 0;
  left: 0;
}

.animation1 {
  animation: back1 1s linear infinite;
}

.animation2 {
  animation: back2 0.1s linear infinite;
}

@keyframes back1 {
  from {
    background-size: 100% 100%;
  }
  to {
    background-size: 99% 100%;
  }
}

@keyframes back2 {
  from {
    background-size: 48.56% 50%;
  }
  to {
    background-size: 43.9% 50.1%;
  }
}

/* Hexagonal scene */
.hex-container {
  display: grid;
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: #000;
  z-index: 4; /* Above scrolling layers (1-3), TV static (4-5), below chat-container (10) */
}

.hex-container div {
  grid-area: 1/1;
}

.hex-element {
  place-self: center;
  transform: rotate(calc(var(--i) / var(--n) * 1turn)) translate(40%);
  mix-blend-mode: screen;
  position: relative; /* Ensure stacking context */
}

.rainbow {
  background: conic-gradient(
    hsl(270, 85%, 65%),
    hsl(210, 85%, 65%),
    hsl(150, 85%, 65%),
    hsl(90, 85%, 65%),
    hsl(30, 85%, 65%),
    hsl(330, 85%, 65%)
  );
  background: linear-gradient(to right, #b294ff, #54d6ff, #54ff94, #d4ff54, #ff9e54, #ff94d4); /* Fallback */
  clip-path: circle(calc(50% - 18px));
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1; /* Below hexagon */
}

@property --a {
  syntax: '<angle>';
  initial-value: 0deg;
  inherits: false;
}

@keyframes a {
  to {
    --a: 1turn;
  }
}

.hexagon {
  padding: 2.25em; /* 0.25 * r, where r=9em */
  background: #000;
  filter: blur(9px) contrast(27);
  mix-blend-mode: darken;
  position: relative;
  z-index: 2; /* Above rainbow */
}

.hexagon::after {
  content: '';
  display: block;
  padding: 9em; /* r=9em */
  transform: scalex(-1) rotate(var(--a));
  background: #fff;
  clip-path: polygon(
    100% 50%,
    75% 93.3%,
    25% 93.3%,
    0% 50%,
    25% 6.7%,
    75% 6.7%
  );
  --mask: linear-gradient(red, red); /* Simplified fallback mask */
  -webkit-mask: conic-gradient(from calc(-6 * var(--a)), red, 95%, transparent);
  mask: conic-gradient(from calc(-6 * var(--a)), red, 95%, transparent);
  animation: a 18s linear infinite;
}

/* Spinning Rings Scene */
body {
  background: #1C1C1C; /* Matches existing dark background in bg.js */
}

.wrap {
  top: 50%;
  left: 50%;
  margin-left: -150px;
  transform: translate(-50%, -50%);
  position: absolute;
  display: none; /* Hidden by default */
  z-index: 4; /* Matches .orb-container, .container_row, .hex-container */
}

.wrap ul {
  transform: rotate3d(0, 1, 0, 45deg);
}

.wrap ul li {
  list-style: none;
  box-shadow: inset 1px 1px 40px #19A598;
  background: #1C1C1C;
  border-radius: 55%;
  position: absolute;
  top: 50%;
  left: 50%;
}

.wrap ul li:nth-child(1) {
  border: 1px solid #189c90;
  width: 30px;
  height: 30px;
  z-index: -1;
  margin-top: -15px;
  margin-left: 5px;
  animation: spin 2s 0.2s infinite;
}

.wrap ul li:nth-child(2) {
  border: 1px solid #169388;
  width: 60px;
  height: 60px;
  z-index: -2;
  margin-top: -30px;
  margin-left: 10px;
  animation: spin 2s 0.4s infinite;
}

.wrap ul li:nth-child(3) {
  border: 1px solid #158a80;
  width: 90px;
  height: 90px;
  z-index: -3;
  margin-top: -45px;
  margin-left: 15px;
  animation: spin 2s 0.6s infinite;
}

.wrap ul li:nth-child(4) {
  border: 1px solid #148277;
  width: 120px;
  height: 120px;
  z-index: -4;
  margin-top: -60px;
  margin-left: 20px;
  animation: spin 2s 0.8s infinite;
}

.wrap ul li:nth-child(5) {
  border: 1px solid #12796f;
  width: 150px;
  height: 150px;
  z-index: -5;
  margin-top: -75px;
  margin-left: 25px;
  animation: spin 2s 1s infinite;
}

.wrap ul li:nth-child(6) {
  border: 1px solid #117067;
  width: 180px;
  height: 180px;
  z-index: -6;
  margin-top: -90px;
  margin-left: 30px;
  animation: spin 2s 1.2s infinite;
}

.wrap ul li:nth-child(7) {
  border: 1px solid #10675f;
  width: 210px;
  height: 210px;
  z-index: -7;
  margin-top: -105px;
  margin-left: 35px;
  animation: spin 2s 1.4s infinite;
}

.wrap ul li:nth-child(8) {
  border: 1px solid #0e5e57;
  width: 240px;
  height: 240px;
  z-index: -8;
  margin-top: -120px;
  margin-left: 40px;
  animation: spin 2s 1.6s infinite;
}

.wrap ul li:nth-child(9) {
  border: 1px solid #0d554f;
  width: 270px;
  height: 270px;
  z-index: -9;
  margin-top: -135px;
  margin-left: 45px;
  animation: spin 2s 1.8s infinite;
}

.wrap ul li:nth-child(10) {
  border: 1px solid #0c4c46;
  width: 300px;
  height: 300px;
  z-index: -10;
  margin-top: -150px;
  margin-left: 50px;
  animation: spin 2s 2s infinite;
}

.wrap ul li:nth-child(11) {
  border: 1px solid #0a443e;
  width: 330px;
  height: 330px;
  z-index: -11;
  margin-top: -165px;
  margin-left: 55px;
  animation: spin 2s 2.2s infinite;
}

.wrap ul li:nth-child(12) {
  border: 1px solid #093b36;
  width: 360px;
  height: 360px;
  z-index: -12;
  margin-top: -180px;
  margin-left: 60px;
  animation: spin 2s 2.4s infinite;
}

@keyframes spin {
  0% {
    transform: rotate(0deg) scale(1);
  }
  50% {
    transform: rotate(360deg) scale(2);
  }
  100% {
    transform: rotate(0deg) scale(1);
  }
}

/* Spinning Bars Scene */
.spinning-bars {
  display: none; /* Hidden by default */
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  text-align: center;
  margin: 0;
  padding: 0;
  background-color: #080808;
  transform-style: preserve-3d;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 4; /* Matches .orb-container, .container_row, .hex-container, .wrap */
}

.spinning-bars span {
  position: relative;
  height: 200px;
  width: 1px;
  transform-style: preserve-3d;
  background-color: bisque;
  margin-left: 20px;
  border: 1px solid #00ceaf;
  transform: perspective(600px);
  animation: animation 2.5s linear infinite;
  box-shadow: 10px 5px 50px #dfe6cc;
}

.spinning-bars span::before {
  content: "";
  position: absolute;
  top: -5px;
  transform-origin: top;
  width: 20px;
  height: 20px;
  background-color: rgb(155, 211, 0);
  border-radius: 50px;
  left: -8px;
  transform-style: preserve-3d;
  box-shadow: 0px 0px 20px #aeea07, inset 5px 5px 10px #000;
}

.spinning-bars span::after {
  content: "";
  position: absolute;
  bottom: 0;
  transform-origin: bottom;
  width: 20px;
  height: 20px;
  background-color: rgb(6, 198, 121);
  border-radius: 50px;
  bottom: -5px;
  left: -8px;
  transform-style: preserve-3d;
  box-shadow: 0px 0px 20px #25f1cf, inset 5px 5px 10px #000;
}

.spinning-bars span:nth-child(1) { animation-delay: 0.1s; }
.spinning-bars span:nth-child(2) { animation-delay: 0.2s; }
.spinning-bars span:nth-child(3) { animation-delay: 0.3s; }
.spinning-bars span:nth-child(4) { animation-delay: 0.4s; }
.spinning-bars span:nth-child(5) { animation-delay: 0.5s; }
.spinning-bars span:nth-child(6) { animation-delay: 0.6s; }
.spinning-bars span:nth-child(7) { animation-delay: 0.7s; }
.spinning-bars span:nth-child(8) { animation-delay: 0.8s; }
.spinning-bars span:nth-child(9) { animation-delay: 1s; }
.spinning-bars span:nth-child(10) { animation-delay: 1.1s; }
.spinning-bars span:nth-child(11) { animation-delay: 1.2s; }
.spinning-bars span:nth-child(12) { animation-delay: 1.3s; }
.spinning-bars span:nth-child(13) { animation-delay: 1.4s; }
.spinning-bars span:nth-child(14) { animation-delay: 1.5s; }
.spinning-bars span:nth-child(15) { animation-delay: 1.6s; }
.spinning-bars span:nth-child(16) { animation-delay: 1.7s; }
.spinning-bars span:nth-child(17) { animation-delay: 1.8s; }
.spinning-bars span:nth-child(18) { animation-delay: 1.9s; }
.spinning-bars span:nth-child(19) { animation-delay: 2s; }
.spinning-bars span:nth-child(20) { animation-delay: 2.1s; }
.spinning-bars span:nth-child(21) { animation-delay: 2.2s; }
.spinning-bars span:nth-child(22) { animation-delay: 2.3s; }
.spinning-bars span:nth-child(23) { animation-delay: 2.4s; }
.spinning-bars span:nth-child(24) { animation-delay: 2.5s; }
.spinning-bars span:nth-child(25) { animation-delay: 2.6s; }
.spinning-bars span:nth-child(26) { animation-delay: 2.7s; }
.spinning-bars span:nth-child(27) { animation-delay: 2.8s; }
.spinning-bars span:nth-child(28) { animation-delay: 2.9s; }
.spinning-bars span:nth-child(29) { animation-delay: 3s; }
.spinning-bars span:nth-child(30) { animation-delay: 3.1s; }
.spinning-bars span:nth-child(31) { animation-delay: 3.2s; }
.spinning-bars span:nth-child(32) { animation-delay: 3.3s; }
.spinning-bars span:nth-child(33) { animation-delay: 3.4s; }
.spinning-bars span:nth-child(34) { animation-delay: 3.5s; }

@keyframes animation {
  0% {
    transform: perspective(600px) rotateX(0deg);
  }
  100% {
    transform: perspective(600px) rotateX(360deg);
  }
}

/* Helix Scene */
.helix {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%); /* Center container */
    width: 100vw;
    height: 100vh;
    display: none; /* Hidden by default */
    flex-direction: column;
    align-items: center; /* Center strands horizontally */
    justify-content: center; /* Center strands vertically */
    font-size: 4vmin; /* Consistent scaling */
    z-index: 4; /* Above background, below chat */
    background: #000; /* Pure black background */
    pointer-events: none;
    overflow: hidden; /* Prevent overflow issues */
}

.strand {
    display: flex;
    align-items: center;
    justify-content: center; /* Center left/right within strand */
    gap: 0.75em;
    margin: 0.5em 0;
    --d: calc(var(--i) / var(--total));
    --color: hsl(calc(-0.05turn + (var(--d) * 0.85turn)), 95%, 75%);
    --duration: 1.5s;
    --delay: calc((var(--duration) * -1) + 0.1s * var(--i));
    animation: var(--duration) cubic-bezier(0.4, 0, 0.6, 1) infinite;
    animation-delay: var(--delay);
    width: 16em; /* Fixed width for helix */
    max-width: 100%; /* Prevent overflow */
}

.left,
.right {
    animation: inherit;
    display: grid;
    grid-template-areas: "layer";
    align-items: center;
    width: 8em;
}

.left > *,
.right > * {
    grid-area: layer;
}

.left {
    transform: translateZ(0px);
}

.right {
    transform: scaleX(-1);
}

.dot {
    animation: inherit;
    animation-duration: calc(var(--duration) * 2);
    width: 100%;
    animation-name: move-dot;
}

@keyframes move-dot {
    50% {
        transform: translateX(200%);
    }
}

.dot {
    --scale-start: 0.5;
    --scale-end: 1;
}

.right .dot {
    --scale-start: 1;
    --scale-end: 0.5;
}

.dot::before {
    display: block;
    content: "";
    border-radius: 50%;
    width: 2em;
    height: 2em;
    background: var(--color);
    animation: inherit;
    animation-name: scale-dot;
    box-shadow: 0 0 20px var(--color);
}

@keyframes scale-dot {
    33% {
        transform: scale(var(--scale-start));
    }
    66% {
        transform: scale(var(--scale-end));
    }
}

.line {
    width: calc(100% - 2em);
    height: 0.5em;
    border-radius: 1em;
    background: var(--color);
    /* Removed margin-left: auto to prevent left offset */
    transform-origin: center right;
    animation: inherit;
    animation-name: scale-line;
    box-shadow: 0 0 15px var(--color);
}

@keyframes scale-line {
    50% {
        transform: scaleX(0.1);
    }
}

/* Five Spheres Scene */
.five-spheres {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    display: flex; /* Use flex to distribute spheres */
    flex-wrap: wrap; /* Allow wrapping for smaller screens */
    justify-content: space-around; /* Distribute spheres evenly */
    align-items: center; /* Center vertically */
    background: black;
    animation: flashBackground 4s infinite ease-in-out;
    z-index: 4; /* Matches other CSS scenes */
    pointer-events: none;
    overflow: hidden; /* Prevent overflow */
}

@keyframes flashBackground {
    0%, 100% { background: black; }
    50% { background: #444; }
}

.sphere-container {
    position: absolute;
    perspective: 2000px;
    width: 20vmin; /* Reduced size for better distribution */
    height: 20vmin;
    max-width: 300px; /* Smaller max size */
    min-width: 100px; /* Ensure visibility on small screens */
    min-height: 100px;
    transform: translate(-50%, -50%); /* Center each sphere initially */
}

/* Floating animations for each sphere, adjusted to cover full viewport */
.sphere-container:nth-child(1) {
    top: 20%;
    left: 20%;
    animation: float1 20s infinite ease-in-out;
}
.sphere-container:nth-child(2) {
    top: 30%;
    left: 40%;
    animation: float2 22s infinite ease-in-out;
}
.sphere-container:nth-child(3) {
    top: 50%;
    left: 60%;
    animation: float3 24s infinite ease-in-out;
}
.sphere-container:nth-child(4) {
    top: 70%;
    left: 30%;
    animation: float4 26s infinite ease-in-out;
}
.sphere-container:nth-child(5) {
    top: 80%;
    left: 80%;
    animation: float5 28s infinite ease-in-out;
}

@keyframes float1 {
    0% { transform: translate(-50%, -50%) translate(0, 0); }
    25% { transform: translate(-50%, -50%) translate(30vw, 30vh); }
    50% { transform: translate(-50%, -50%) translate(20vw, -20vh); }
    75% { transform: translate(-50%, -50%) translate(-30vw, 20vh); }
    100% { transform: translate(-50%, -50%) translate(0, 0); }
}
@keyframes float2 {
    0% { transform: translate(-50%, -50%) translate(10vw, -10vh); }
    25% { transform: translate(-50%, -50%) translate(-20vw, 30vh); }
    50% { transform: translate(-50%, -50%) translate(30vw, 10vh); }
    75% { transform: translate(-50%, -50%) translate(-10vw, -30vh); }
    100% { transform: translate(-50%, -50%) translate(10vw, -10vh); }
}
@keyframes float3 {
    0% { transform: translate(-50%, -50%) translate(-15vw, 15vh); }
    25% { transform: translate(-50%, -50%) translate(20vw, -30vh); }
    50% { transform: translate(-50%, -50%) translate(15vw, 20vh); }
    75% { transform: translate(-50%, -50%) translate(-20vw, -15vh); }
    100% { transform: translate(-50%, -50%) translate(-15vw, 15vh); }
}
@keyframes float4 {
    0% { transform: translate(-50%, -50%) translate(25vw, -5vh); }
    25% { transform: translate(-50%, -50%) translate(-20vw, 25vh); }
    50% { transform: translate(-50%, -50%) translate(-25vw, -10vh); }
    75% { transform: translate(-50%, -50%) translate(20vw, 5vh); }
    100% { transform: translate(-50%, -50%) translate(25vw, -5vh); }
}
@keyframes float5 {
    0% { transform: translate(-50%, -50%) translate(-10vw, 25vh); }
    25% { transform: translate(-50%, -50%) translate(25vw, -20vh); }
    50% { transform: translate(-50%, -50%) translate(10vw, 30vh); }
    75% { transform: translate(-50%, -50%) translate(-25vw, -10vh); }
    100% { transform: translate(-50%, -50%) translate(-10vw, 25vh); }
}

.sphere {
    position: relative;
    width: 100%;
    height: 100%;
    transform-style: preserve-3d;
    animation: rotate 12s infinite linear;
}

@keyframes rotate {
    from { transform: rotateY(0deg); }
    to { transform: rotateY(360deg); }
}

.dot {
    position: absolute;
    width: 1.2vmin; /* Slightly smaller for performance */
    height: 1.2vmin;
    border-radius: 50%;
    transform-style: preserve-3d;
    min-width: 8px;
    min-height: 8px;
    background: radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%);
    animation: lightning 2s infinite ease-in-out;
    animation-delay: calc(var(--i) * -0.04s);
}

@keyframes lightning {
    0%, 100% { 
        box-shadow: 0 0 5px 2px rgba(255, 255, 255, 0.7);
        opacity: 0.8;
    }
    50% { 
        box-shadow: 0 0 15px 8px rgba(173, 216, 230, 0.9);
        opacity: 1;
    }
}

/* Media query for smaller screens */
@media (max-width: 600px) {
    .sphere-container {
        width: 15vmin; /* Smaller for mobile */
        height: 15vmin;
        min-width: 80px;
        min-height: 80px;
    }
    .dot {
        width: 1vmin;
        height: 1vmin;
        min-width: 6px;
        min-height: 6px;
    }
    /* Adjust float animations for smaller screens */
    @keyframes float1 {
        0% { transform: translate(-50%, -50%) translate(0, 0); }
        25% { transform: translate(-50%, -50%) translate(20vw, 20vh); }
        50% { transform: translate(-50%, -50%) translate(15vw, -15vh); }
        75% { transform: translate(-50%, -50%) translate(-20vw, 15vh); }
        100% { transform: translate(-50%, -50%) translate(0, 0); }
    }
    @keyframes float2 {
        0% { transform: translate(-50%, -50%) translate(5vw, -5vh); }
        25% { transform: translate(-50%, -50%) translate(-15vw, 20vh); }
        50% { transform: translate(-50%, -50%) translate(20vw, 5vh); }
        75% { transform: translate(-50%, -50%) translate(-5vw, -20vh); }
        100% { transform: translate(-50%, -50%) translate(5vw, -5vh); }
    }
    @keyframes float3 {
        0% { transform: translate(-50%, -50%) translate(-10vw, 10vh); }
        25% { transform: translate(-50%, -50%) translate(15vw, -20vh); }
        50% { transform: translate(-50%, -50%) translate(10vw, 15vh); }
        75% { transform: translate(-50%, -50%) translate(-15vw, -10vh); }
        100% { transform: translate(-50%, -50%) translate(-10vw, 10vh); }
    }
    @keyframes float4 {
        0% { transform: translate(-50%, -50%) translate(15vw, -5vh); }
        25% { transform: translate(-50%, -50%) translate(-15vw, 15vh); }
        50% { transform: translate(-50%, -50%) translate(-15vw, -5vh); }
        75% { transform: translate(-50%, -50%) translate(15vw, 5vh); }
        100% { transform: translate(-50%, -50%) translate(15vw, -5vh); }
    }
    @keyframes float5 {
        0% { transform: translate(-50%, -50%) translate(-5vw, 15vh); }
        25% { transform: translate(-50%, -50%) translate(15vw, -15vh); }
        50% { transform: translate(-50%, -50%) translate(5vw, 20vh); }
        75% { transform: translate(-50%, -50%) translate(-15vw, -5vh); }
        100% { transform: translate(-50%, -50%) translate(-5vw, 15vh); }
    }
}

/* Reduced to 50 dots per sphere, evenly distributed */
.dot:nth-child(1) { transform: rotateY(0deg) rotateX(0deg) translateZ(10vmin); background: hsl(0, 100%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 1; }
.dot:nth-child(2) { transform: rotateY(36deg) rotateX(18deg) translateZ(10vmin); background: hsl(36, 100%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 2; }
.dot:nth-child(3) { transform: rotateY(72deg) rotateX(36deg) translateZ(10vmin); background: hsl(72, 100%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 3; }
.dot:nth-child(4) { transform: rotateY(108deg) rotateX(54deg) translateZ(10vmin); background: hsl(108, 100%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 4; }
.dot:nth-child(5) { transform: rotateY(144deg) rotateX(72deg) translateZ(10vmin); background: hsl(144, 100%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 5; }
.dot:nth-child(6) { transform: rotateY(180deg) rotateX(90deg) translateZ(10vmin); background: hsl(180, 100%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 6; }
.dot:nth-child(7) { transform: rotateY(216deg) rotateX(108deg) translateZ(10vmin); background: hsl(216, 100%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 7; }
.dot:nth-child(8) { transform: rotateY(252deg) rotateX(126deg) translateZ(10vmin); background: hsl(252, 100%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 8; }
.dot:nth-child(9) { transform: rotateY(288deg) rotateX(144deg) translateZ(10vmin); background: hsl(288, 100%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 9; }
.dot:nth-child(10) { transform: rotateY(324deg) rotateX(162deg) translateZ(10vmin); background: hsl(324, 100%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 10; }
.dot:nth-child(11) { transform: rotateY(0deg) rotateX(36deg) translateZ(10vmin); background: hsl(0, 90%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 11; }
.dot:nth-child(12) { transform: rotateY(36deg) rotateX(54deg) translateZ(10vmin); background: hsl(36, 90%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 12; }
.dot:nth-child(13) { transform: rotateY(72deg) rotateX(72deg) translateZ(10vmin); background: hsl(72, 90%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 13; }
.dot:nth-child(14) { transform: rotateY(108deg) rotateX(90deg) translateZ(10vmin); background: hsl(108, 90%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 14; }
.dot:nth-child(15) { transform: rotateY(144deg) rotateX(108deg) translateZ(10vmin); background: hsl(144, 90%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 15; }
.dot:nth-child(16) { transform: rotateY(180deg) rotateX(126deg) translateZ(10vmin); background: hsl(180, 90%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 16; }
.dot:nth-child(17) { transform: rotateY(216deg) rotateX(144deg) translateZ(10vmin); background: hsl(216, 90%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 17; }
.dot:nth-child(18) { transform: rotateY(252deg) rotateX(162deg) translateZ(10vmin); background: hsl(252, 90%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 18; }
.dot:nth-child(19) { transform: rotateY(288deg) rotateX(180deg) translateZ(10vmin); background: hsl(288, 90%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 19; }
.dot:nth-child(20) { transform: rotateY(324deg) rotateX(198deg) translateZ(10vmin); background: hsl(324, 90%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 20; }
.dot:nth-child(21) { transform: rotateY(0deg) rotateX(72deg) translateZ(10vmin); background: hsl(0, 80%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 21; }
.dot:nth-child(22) { transform: rotateY(36deg) rotateX(90deg) translateZ(10vmin); background: hsl(36, 80%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 22; }
.dot:nth-child(23) { transform: rotateY(72deg) rotateX(108deg) translateZ(10vmin); background: hsl(72, 80%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 23; }
.dot:nth-child(24) { transform: rotateY(108deg) rotateX(126deg) translateZ(10vmin); background: hsl(108, 80%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 24; }
.dot:nth-child(25) { transform: rotateY(144deg) rotateX(144deg) translateZ(10vmin); background: hsl(144, 80%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 25; }
.dot:nth-child(26) { transform: rotateY(180deg) rotateX(162deg) translateZ(10vmin); background: hsl(180, 80%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 26; }
.dot:nth-child(27) { transform: rotateY(216deg) rotateX(180deg) translateZ(10vmin); background: hsl(216, 80%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 27; }
.dot:nth-child(28) { transform: rotateY(252deg) rotateX(198deg) translateZ(10vmin); background: hsl(252, 80%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 28; }
.dot:nth-child(29) { transform: rotateY(288deg) rotateX(216deg) translateZ(10vmin); background: hsl(288, 80%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 29; }
.dot:nth-child(30) { transform: rotateY(324deg) rotateX(234deg) translateZ(10vmin); background: hsl(324, 80%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 30; }
.dot:nth-child(31) { transform: rotateY(0deg) rotateX(108deg) translateZ(10vmin); background: hsl(0, 70%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 31; }
.dot:nth-child(32) { transform: rotateY(36deg) rotateX(126deg) translateZ(10vmin); background: hsl(36, 70%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 32; }
.dot:nth-child(33) { transform: rotateY(72deg) rotateX(144deg) translateZ(10vmin); background: hsl(72, 70%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 33; }
.dot:nth-child(34) { transform: rotateY(108deg) rotateX(162deg) translateZ(10vmin); background: hsl(108, 70%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 34; }
.dot:nth-child(35) { transform: rotateY(144deg) rotateX(180deg) translateZ(10vmin); background: hsl(144, 70%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 35; }
.dot:nth-child(36) { transform: rotateY(180deg) rotateX(198deg) translateZ(10vmin); background: hsl(180, 70%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 36; }
.dot:nth-child(37) { transform: rotateY(216deg) rotateX(216deg) translateZ(10vmin); background: hsl(216, 70%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 37; }
.dot:nth-child(38) { transform: rotateY(252deg) rotateX(234deg) translateZ(10vmin); background: hsl(252, 70%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 38; }
.dot:nth-child(39) { transform: rotateY(288deg) rotateX(252deg) translateZ(10vmin); background: hsl(288, 70%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 39; }
.dot:nth-child(40) { transform: rotateY(324deg) rotateX(270deg) translateZ(10vmin); background: hsl(324, 70%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 40; }
.dot:nth-child(41) { transform: rotateY(0deg) rotateX(144deg) translateZ(10vmin); background: hsl(0, 60%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 41; }
.dot:nth-child(42) { transform: rotateY(36deg) rotateX(162deg) translateZ(10vmin); background: hsl(36, 60%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 42; }
.dot:nth-child(43) { transform: rotateY(72deg) rotateX(180deg) translateZ(10vmin); background: hsl(72, 60%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 43; }
.dot:nth-child(44) { transform: rotateY(108deg) rotateX(198deg) translateZ(10vmin); background: hsl(108, 60%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 44; }
.dot:nth-child(45) { transform: rotateY(144deg) rotateX(216deg) translateZ(10vmin); background: hsl(144, 60%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 45; }
.dot:nth-child(46) { transform: rotateY(180deg) rotateX(234deg) translateZ(10vmin); background: hsl(180, 60%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 46; }
.dot:nth-child(47) { transform: rotateY(216deg) rotateX(252deg) translateZ(10vmin); background: hsl(216, 60%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 47; }
.dot:nth-child(48) { transform: rotateY(252deg) rotateX(270deg) translateZ(10vmin); background: hsl(252, 60%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 48; }
.dot:nth-child(49) { transform: rotateY(288deg) rotateX(288deg) translateZ(10vmin); background: hsl(288, 60%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 49; }
.dot:nth-child(50) { transform: rotateY(324deg) rotateX(306deg) translateZ(10vmin); background: hsl(324, 60%, 50%) radial-gradient(circle, rgba(255,255,255,0.8) 20%, transparent 70%); --i: 50; }

.black-hole {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    display: none;
    justify-content: center;
    align-items: center;
    background-color: #000;
    z-index: 4;
    pointer-events: none;
    overflow: hidden;
}
.black-hole canvas#glscreen {
    width: 100%;
    height: 100%;
    transform: translateZ(0); /* Force hardware acceleration */
}