:root.xuan-mobile-boot {
  background: #070605;
}

:root.xuan-mobile-boot body {
  background: #070605;
}

:root.xuan-mobile-boot #root {
  opacity: 0 !important;
  pointer-events: none !important;
}

.xuan-boot {
  position: fixed;
  inset: 0;
  z-index: 4000;
  display: grid;
  place-items: center;
  overflow: hidden;
  padding:
    calc(34px + env(safe-area-inset-top, 0px))
    calc(34px + env(safe-area-inset-right, 0px))
    calc(34px + env(safe-area-inset-bottom, 0px))
    calc(34px + env(safe-area-inset-left, 0px));
  background:
    radial-gradient(circle at 50% 45%, rgb(224 200 151 / 14%) 0, rgb(112 82 47 / 6%) 25%, transparent 56%),
    radial-gradient(circle at 50% 120%, rgb(62 75 93 / 14%) 0, transparent 48%),
    #070605;
  color: #f2e8d6;
  font-family: Georgia, "Times New Roman", serif;
  transition: opacity .82s cubic-bezier(.22, 1, .36, 1), visibility .82s step-end;
}

.xuan-boot::before,
.xuan-boot::after {
  content: "";
  position: absolute;
  pointer-events: none;
}

.xuan-boot::before {
  inset: 18px;
  border: 1px solid rgb(208 167 99 / 16%);
}

.xuan-boot::after {
  left: 50%;
  top: 46%;
  width: min(60vw, 720px);
  aspect-ratio: 1;
  translate: -50% -50%;
  border-radius: 50%;
  background: radial-gradient(circle, rgb(247 237 218 / 10%) 0, rgb(208 167 99 / 4%) 39%, transparent 70%);
  filter: blur(22px);
  animation: xuanBootBreath 3.8s ease-in-out infinite;
}

.xuan-boot.is-exiting {
  opacity: 0;
  visibility: hidden;
}

.xuan-boot-panel {
  position: relative;
  z-index: 2;
  width: min(76vw, 680px);
  text-align: center;
}

.xuan-boot-brand {
  color: rgb(242 232 214 / 86%);
  font: 600 clamp(11px, 1.2vw, 15px)/1.1 Georgia, "Times New Roman", serif;
  letter-spacing: .38em;
}

.xuan-boot-brand-cn {
  margin-top: 10px;
  color: rgb(218 207 188 / 58%);
  font: 400 clamp(9px, 1vw, 12px)/1.2 system-ui, sans-serif;
  letter-spacing: .34em;
}

.xuan-boot-orbit {
  position: relative;
  width: min(32vw, 248px);
  aspect-ratio: 1;
  margin: clamp(28px, 5vh, 54px) auto;
  border: 1px solid rgb(208 167 99 / 20%);
  border-radius: 50%;
  transform: rotate(-15deg) scaleY(.42);
  box-shadow: 0 0 38px rgb(208 167 99 / 7%);
}

.xuan-boot-orbit::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 42%;
  aspect-ratio: 1;
  translate: -50% -50%;
  border-radius: 50%;
  background: radial-gradient(circle at 34% 30%, #f4ead7 0, #a68f6c 28%, #3b342d 65%, #11100f 100%);
  box-shadow: 0 0 24px rgb(247 237 218 / 32%), 0 0 72px rgb(208 167 99 / 14%);
  transform: scaleY(2.38);
  animation: xuanBootMoon 3.8s ease-in-out infinite;
}

.xuan-boot-star {
  position: absolute;
  left: 50%;
  top: -4px;
  width: 8px;
  height: 8px;
  margin: -4px;
  border-radius: 50%;
  background: #fff8df;
  box-shadow: 0 0 8px #fff8df, 0 0 22px rgb(230 185 105 / 86%), 0 0 44px rgb(208 167 99 / 54%);
  transform-origin: 4px calc(min(16vw, 124px) + 4px);
  animation: xuanBootOrbit 4.6s linear infinite;
}

.xuan-boot-kicker {
  color: #d0a763;
  font: 700 clamp(9px, 1vw, 12px)/1.2 ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: .3em;
}

.xuan-boot-title {
  margin: 14px 0 0;
  color: #f2e8d6;
  font: 500 clamp(28px, 4.1vw, 58px)/.96 Georgia, "Times New Roman", serif;
  letter-spacing: .035em;
}

.xuan-boot-title-cn {
  margin-top: 13px;
  color: rgb(218 207 188 / 78%);
  font: 400 clamp(12px, 1.4vw, 17px)/1.35 system-ui, sans-serif;
  letter-spacing: .24em;
}

.xuan-boot-progress {
  position: relative;
  width: min(64vw, 520px);
  height: 1px;
  margin: clamp(28px, 5vh, 48px) auto 0;
  overflow: visible;
  background: rgb(208 167 99 / 18%);
}

.xuan-boot-progress-fill {
  display: block;
  width: 0;
  height: 100%;
  background: linear-gradient(90deg, rgb(113 83 45 / 24%), #d0a763 62%, #fff4d5);
  box-shadow: 0 0 12px rgb(208 167 99 / 44%);
  transition: width .42s cubic-bezier(.22, 1, .36, 1);
}

.xuan-boot-status {
  min-height: 16px;
  margin-top: 14px;
  color: rgb(218 207 188 / 64%);
  font: 600 clamp(9px, 1vw, 12px)/1.2 ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: .2em;
}

.xuan-boot-enter {
  width: min(64vw, 420px);
  min-height: 60px;
  margin-top: 25px;
  padding: 13px 26px;
  border: 1px solid rgb(208 167 99 / 30%);
  border-radius: 0;
  background: linear-gradient(90deg, rgb(11 9 8 / 70%), rgb(31 24 17 / 88%), rgb(11 9 8 / 70%));
  color: rgb(242 232 214 / 50%);
  font: 700 clamp(11px, 1.2vw, 14px)/1.2 ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: .2em;
  opacity: .46;
}

.xuan-boot-enter:not(:disabled) {
  color: #f2e8d6;
  border-color: rgb(208 167 99 / 72%);
  box-shadow: 0 0 36px rgb(208 167 99 / 12%);
  opacity: 1;
  animation: xuanBootButton 2.6s ease-in-out infinite;
}

.xuan-boot-enter-cn {
  display: block;
  margin-top: 7px;
  color: rgb(218 207 188 / 78%);
  font: 400 12px/1.2 system-ui, sans-serif;
  letter-spacing: .2em;
}

@keyframes xuanBootBreath {
  0%, 100% { opacity: .58; transform: scale(.96); }
  50% { opacity: 1; transform: scale(1.035); }
}

@keyframes xuanBootMoon {
  0%, 100% { filter: brightness(.78); }
  50% { filter: brightness(1.08); }
}

@keyframes xuanBootOrbit {
  to { transform: rotate(360deg) scaleY(2.38); }
}

@keyframes xuanBootButton {
  0%, 100% { box-shadow: 0 0 22px rgb(208 167 99 / 8%); }
  50% { box-shadow: 0 0 42px rgb(208 167 99 / 20%); }
}

@media (orientation: portrait) and (max-width: 1024px) {
  .xuan-boot-panel {
    width: min(88vw, 620px);
  }

  .xuan-boot-orbit {
    width: min(48vw, 248px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .xuan-boot::after,
  .xuan-boot-orbit::before,
  .xuan-boot-star,
  .xuan-boot-enter:not(:disabled) {
    animation: none;
  }
}
