/* TOP only. Without JavaScript the overlay is never displayed. */
html.is-home-loading { overflow: hidden; }
.home-loader {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 100000;
  place-items: center;
  overflow: hidden;
  background: #fdfbef;
  opacity: 0;
  visibility: hidden;
  transition: opacity .45s ease, visibility 0s .45s;
}
.is-home-loading .home-loader,
.is-home-ready .home-loader { display: grid; }
.is-home-loading .home-loader { opacity: 1; visibility: visible; transition: none; }
.home-loader::before,
.home-loader::after {
  content: '';
  position: absolute;
  width: clamp(160px, 38vw, 500px);
  aspect-ratio: 1;
  border-radius: 50%;
  background: #fed338;
  opacity: .18;
}
.home-loader::before { left: -12%; bottom: -20%; }
.home-loader::after { right: -12%; top: -20%; }
.home-loader-inner { position: relative; text-align: center; padding: 30px; }
.home-loader-logo { display: block; width: clamp(180px, 35vw, 280px); height: auto; margin: 0 auto 34px; }
.home-loader-dots { display: flex; justify-content: center; gap: 13px; }
.home-loader-dots span {
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #fd8c26;
  animation: loader-dot 1.15s ease-in-out infinite;
}
.home-loader-dots span:nth-child(2) { background: #fed338; animation-delay: .14s; }
.home-loader-dots span:nth-child(3) { background: #fb4669; animation-delay: .28s; }
.home-loader-label { margin: 22px 0 0; font-size: 11px; line-height: 1.5; letter-spacing: .28em; color: #42210b; }
@keyframes loader-dot { 0%, 70%, 100% { transform: translateY(0); opacity: .5; } 35% { transform: translateY(-8px); opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .home-loader { transition: none; }
  .home-loader-dots span { animation: none; opacity: 1; }
}
