
/* Анимированная шарообразная фон-загрузка */
@property --angle {
  syntax: "<angle>";
  inherits: false;
  initial-value: 0deg;
}

:root {
  --bg: oklch(18% 0.03 270);     /* Тёмный фиолетово-серый фон */
  --c1: oklch(60% 0.19 65);   /* Было 72% */
  --c2: oklch(62% 0.18 135);  /* Было 78% */
  --c3: oklch(65% 0.18 230);  /* Было 85% */
}

html, body {
  margin: 0;
  padding: 0;
  height: 100%;
  width: 100%;
  overflow: hidden;
  background-color: var(--bg);
}

.fill-viewport {
  position: fixed;
  inset: 0;
  margin: 0;
  padding: 0;
  overflow: hidden;
}

#preloadContainer {
  z-index: 2;
  opacity: 1;
  background-color: black;
  transition: opacity 0.5s ease;
}

.rein {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%); /* центрирование */
  z-index: -1;

  width: min(80vmin, 90vw);  /* адаптивная ширина */
  aspect-ratio: 1 / 1;       /* круглая форма */
  display: grid;
  grid-template-areas: "stack";

  border-radius: 50%;
}

.rein::before,
.rein::after {
  content: "";
  display: block;
  grid-area: stack;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  transform: translateZ(0);
}

.rein::before {
  background:
    conic-gradient(from calc(var(--angle) * 2) at 25% 70%, var(--c3), transparent 20% 80%, var(--c3)),
    conic-gradient(from calc(var(--angle) * 2) at 45% 75%, var(--c2), transparent 30% 60%, var(--c2)),
    conic-gradient(from calc(var(--angle) * -3) at 80% 20%, var(--c1), transparent 40% 60%, var(--c1)),
    conic-gradient(from calc(var(--angle) * 2) at 15% 5%, var(--c2), transparent 10% 90%, var(--c2)),
    conic-gradient(from calc(var(--angle) * 1) at 20% 80%, var(--c1), transparent 10% 90%, var(--c1)),
    conic-gradient(from calc(var(--angle) * -2) at 85% 10%, var(--c3), transparent 20% 80%, var(--c3));
  box-shadow: inset var(--bg) 0 0 5vmin 1vmin;
  filter: blur(3vmin) contrast(5);
  animation: rotate 20s linear infinite;
}

.rein::after {
  --dot: 1.5px;
  background-image: radial-gradient(circle at center, var(--bg) var(--dot), transparent var(--dot));
  background-size: calc(var(--dot) * 2) calc(var(--dot) * 2);
  mask-image: radial-gradient(black 25%, transparent 75%);
  backdrop-filter: blur(8vmin) contrast(10);
  mix-blend-mode: overlay;
}

@keyframes rotate {
  to {
    --angle: 360deg;
  }
}
.loading-message {
  position: absolute;
  top: calc(50% + 22vmin); /* ниже шара */
  left: 50%;
  transform: translateX(-50%);
  color: white;
  font-size: 3vmin;
  font-family: Arial, sans-serif;
  text-shadow: 0 0 1vmin black;
  z-index: 3;
  text-align: center;
  pointer-events: none;
}