body {
  margin: 0;
}
.world-loading,
.world-loading * {
  box-sizing: border-box;
}
.world-loading {
  min-height: 100svh;
  width: 100%;
  margin: 0;
  padding: max(32px, env(safe-area-inset-top))
    max(22px, env(safe-area-inset-right)) max(30px, env(safe-area-inset-bottom))
    max(22px, env(safe-area-inset-left));
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  color: #335a45;
  background:
    radial-gradient(ellipse at 20% 15%, #e8f4d6 0, transparent 45%),
    radial-gradient(ellipse at 90% 75%, #fff0c8 0, transparent 45%), #fffaf2;
  font-family: "DM Sans Variable", ui-rounded, system-ui, sans-serif;
  overflow: hidden;
}
.world-loading-illustration {
  display: contents;
}
.world-loading-brand {
  position: relative;
  margin-bottom: 10px;
  color: #31815a;
  font:
    800 34px/1 "Manrope Variable",
    ui-rounded,
    system-ui,
    sans-serif;
  letter-spacing: -1.6px;
}
.world-loading-brand > span {
  font-size: 19px;
  margin-left: 3px;
  color: #d3ac55;
  vertical-align: super;
}
.world-loading-brand small {
  display: block;
  margin-top: 7px;
  font:
    700 9px/1.3 system-ui,
    sans-serif;
  letter-spacing: 2px;
}
.world-loading-scene {
  position: relative;
  width: min(310px, 100%);
  aspect-ratio: 1;
  flex: none;
  isolation: isolate;
}
.world-loading-scene::before {
  content: "";
  position: absolute;
  inset: 13%;
  border-radius: 50%;
  background: #e8f2d6;
  box-shadow:
    0 0 0 18px #eaf1db66,
    0 0 0 35px #f0f3e755;
}
.world-friend {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.world-friend-bob {
  transform-origin: 120px 230px;
  animation: world-bob 2.7s ease-in-out infinite;
}
.world-friend-eyes {
  transform-origin: 120px 132px;
  animation: world-blink 4.8s infinite;
}
.world-friend-shadow {
  transform-origin: 120px 248px;
  animation: world-shadow 2.7s ease-in-out infinite;
}
.world-orbit {
  position: absolute;
  inset: 6%;
  border: 1.5px dashed #b7cc9899;
  border-radius: 50%;
  animation: world-orbit 35s linear infinite;
}
.world-star {
  position: absolute;
  z-index: 2;
  color: #deb451;
  font-size: 29px;
  font-style: normal;
  animation: world-twinkle 2.8s ease-in-out infinite;
}
.star-one {
  top: 14%;
  left: 6%;
}
.star-two {
  right: 8%;
  top: 36%;
  font-size: 21px;
  animation-delay: -0.8s;
}
.star-three {
  bottom: 20%;
  left: 5%;
  font-size: 23px;
  animation-delay: -1.7s;
}
.world-petal {
  position: absolute;
  background: #a7c98c;
  width: 14px;
  height: 22px;
  border-radius: 12px 2px 12px 2px;
  animation: world-twinkle 3s ease-in-out infinite;
}
.petal-one {
  top: 10%;
  right: 11%;
  transform: rotate(25deg);
}
.petal-two {
  bottom: 22%;
  right: 5%;
  width: 9px;
  height: 15px;
  transform: rotate(-35deg);
  animation-delay: -1.4s;
}
.world-scene-note {
  position: absolute;
  bottom: 3px;
  left: 0;
  width: 100%;
  font-size: 9px;
  font-weight: 650;
  letter-spacing: 1.3px;
  color: #718563;
}
.world-loading-copy {
  width: min(390px, 100%);
  padding-top: 26px;
}
.world-loading h1 {
  margin: 0;
  color: #315641;
  font:
    800 clamp(25px, 6vw, 32px)/1.25 "Manrope Variable",
    ui-rounded,
    system-ui,
    sans-serif;
  letter-spacing: -1px;
}
.world-loading p {
  color: #71806a;
  font-size: 13px;
  line-height: 1.75;
  margin: 12px auto 0;
  max-width: 32ch;
}
.world-loading-dots {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  height: 29px;
  margin-top: 19px;
}
.world-loading-dots i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #8eb07b;
  animation: world-dot 1.3s ease-in-out infinite;
}
.world-loading-dots i:nth-child(2) {
  animation-delay: 0.16s;
}
.world-loading-dots i:nth-child(3) {
  animation-delay: 0.32s;
}
.world-loading-retry {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 46px;
  margin-top: 18px;
  padding: 11px 23px;
  color: #315c42;
  background: #e4efd5;
  border: 1px solid #c5d9b4;
  border-radius: 16px;
  font:
    700 13px/1.4 system-ui,
    sans-serif;
  cursor: pointer;
}
.world-loading-retry:focus-visible {
  outline: 3px solid #779e5d;
  outline-offset: 4px;
}
.world-loading-retry[hidden] {
  display: none;
}
.world-loading.is-error .world-friend-bob,
.world-loading.is-error .world-orbit {
  animation-play-state: paused;
}
.world-loading noscript {
  font-size: 13px;
  line-height: 1.6;
  margin-top: 20px;
  max-width: 30ch;
}
@keyframes world-bob {
  0%,
  100% {
    transform: translateY(0) rotate(-2deg);
  }
  50% {
    transform: translateY(-9px) rotate(2deg);
  }
}
@keyframes world-blink {
  0%,
  42%,
  46%,
  100% {
    transform: scaleY(1);
  }
  44% {
    transform: scaleY(0.1);
  }
}
@keyframes world-shadow {
  50% {
    transform: scaleX(0.84);
    opacity: 0.08;
  }
}
@keyframes world-orbit {
  to {
    transform: rotate(360deg);
  }
}
@keyframes world-twinkle {
  50% {
    opacity: 0.45;
    translate: 0 -5px;
  }
}
@keyframes world-dot {
  0%,
  60%,
  100% {
    transform: translateY(0);
    opacity: 0.45;
  }
  30% {
    transform: translateY(-5px);
    opacity: 1;
  }
}
@media (max-height: 620px) {
  .world-loading {
    padding-block: 22px;
  }
  .world-loading-brand {
    font-size: 28px;
  }
  .world-loading-scene {
    width: 230px;
  }
  .world-loading-copy {
    padding-top: 16px;
  }
  .world-loading h1 {
    font-size: 25px;
  }
  .world-loading-dots {
    margin-top: 10px;
  }
}
@media (max-height: 450px) and (min-width: 550px) {
  .world-loading {
    display: grid;
    grid-template-columns: 230px minmax(0, 330px);
    column-gap: 24px;
    align-content: center;
  }
  .world-loading-brand {
    grid-column: 2;
    grid-row: 1;
    justify-self: center;
  }
  .world-loading-scene {
    grid-column: 1;
    grid-row: 1/3;
  }
  .world-loading-copy {
    grid-column: 2;
    grid-row: 2;
    padding-top: 10px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .world-loading *,
  .world-loading *::before {
    animation: none !important;
    transition: none !important;
  }
}
