/* Shared by the first HTML paint and the React loading screen. */
.roller-loading {
  position: fixed;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 22px;
  padding: 24px;
  background: #f7f4ee;
  color: #1f2428;
  font-family: "Aptos", "Segoe UI", system-ui, sans-serif;
}

.roller-loading-mark {
  display: block;
  position: relative;
  width: min(60vw, 220px);
}

.roller-loading-mark img {
  display: block;
  width: 100%;
  height: auto;
  animation: roller-glide 2.4s ease-in-out infinite;
}

.roller-loading-mark::after {
  content: "";
  display: block;
  width: 48%;
  height: 3px;
  margin: 4px auto 0;
  border-radius: 3px;
  background: #135e48;
  opacity: 0.25;
  animation: roller-track 2.4s ease-in-out infinite;
}

.roller-loading-message {
  margin: 0;
  min-height: 1.4em;
  color: #6b665d;
  font-size: 1.05rem;
  font-weight: 800;
  letter-spacing: 0.2px;
  text-align: center;
}

@keyframes roller-glide {
  0%, 100% { transform: translate(-4px, 2px) rotate(-1deg); }
  50% { transform: translate(4px, -4px) rotate(1deg); }
}

@keyframes roller-track {
  0%, 100% { transform: scaleX(0.85); opacity: 0.18; }
  50% { transform: scaleX(1); opacity: 0.3; }
}

@media (prefers-reduced-motion: reduce) {
  .roller-loading-mark img,
  .roller-loading-mark::after { animation: none; }
}
