:root {
  color: #fff7cc;
  background: #020817;
  font-family:
    Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
    sans-serif;
  font-synthesis: none;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

* {
  box-sizing: border-box;
}

body {
  min-width: 320px;
  min-height: 100vh;
  margin: 0;
}

[v-cloak] {
  display: none;
}

.page-shell {
  display: grid;
  min-height: 100vh;
  place-items: center;
  padding: 22px;
  overflow: hidden;
  background: #020817;
}

.royal-slot {
  position: relative;
  width: min(100%, 560px);
  min-height: 620px;
  padding: 72px 28px 34px;
  overflow: hidden;
  border: 2px solid #f4c65a;
  border-radius: 34px;
  background:
    linear-gradient(180deg, rgb(34 80 166 / 42%) 0%, transparent 30%),
    radial-gradient(circle at 50% 24%, rgb(42 98 202 / 42%), transparent 30%),
    linear-gradient(145deg, #06133a 0%, #07132a 44%, #020817 100%);
  box-shadow:
    0 28px 90px rgb(0 0 0 / 56%),
    inset 0 0 0 6px rgb(255 255 255 / 4%),
    inset 0 0 42px rgb(19 94 196 / 26%),
    0 0 40px rgb(244 198 90 / 34%);
}

.royal-slot::before {
  position: absolute;
  inset: 14px;
  border: 2px solid rgb(255 219 116 / 58%);
  border-radius: 28px;
  box-shadow:
    inset 0 0 24px rgb(255 219 116 / 16%),
    0 0 18px rgb(255 219 116 / 18%);
  pointer-events: none;
  content: "";
}

.royal-slot::after {
  position: absolute;
  inset: 0;
  background: linear-gradient(115deg, transparent 22%, rgb(255 255 255 / 16%) 35%, transparent 48%);
  transform: translateX(-135%);
  animation: shine 3.2s ease-in-out infinite;
  pointer-events: none;
  content: "";
}

.badge-lights {
  position: absolute;
  inset: 22px 36px auto;
  display: grid;
  grid-template-columns: repeat(15, 1fr);
  gap: 8px;
  z-index: 2;
}

.badge-lights span {
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #fff9ca 0 18%, #ffd252 52%, #ad6415 100%);
  box-shadow:
    0 0 8px #ffd252,
    0 0 18px rgb(255 210 82 / 72%);
  animation: bulb-flash 0.85s ease-in-out infinite alternate;
}

.badge-lights span:nth-child(2n) {
  background: radial-gradient(circle at 35% 30%, #fff 0 14%, #ff3030 54%, #8c1018 100%);
  box-shadow:
    0 0 8px #ff3030,
    0 0 18px rgb(255 48 48 / 70%);
  animation-delay: 0.22s;
}

.badge-lights span:nth-child(3n) {
  background: radial-gradient(circle at 35% 30%, #fff 0 14%, #35ddff 54%, #0d6c9f 100%);
  box-shadow:
    0 0 8px #35ddff,
    0 0 18px rgb(53 221 255 / 70%);
  animation-delay: 0.42s;
}

.top-gem {
  position: absolute;
  top: 68px;
  left: 50%;
  z-index: 5;
  width: 64px;
  height: 64px;
  border: 3px solid #ffd76f;
  background:
    linear-gradient(135deg, #0a6dff 0 50%, #083cae 50%),
    #0a6dff;
  box-shadow:
    inset 0 0 10px rgb(255 255 255 / 52%),
    0 0 22px rgb(38 157 255 / 70%);
  transform: translateX(-50%) rotate(45deg);
  animation: gem-float 1.8s ease-in-out infinite;
}

.spark-field {
  position: absolute;
  inset: 86px 52px 150px;
  z-index: 4;
  pointer-events: none;
}

.spark-field span {
  position: absolute;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #fff0a5;
  box-shadow:
    0 0 10px #fff0a5,
    0 0 18px rgb(255 210 82 / 72%);
  animation: sparkle-pop 1.4s ease-in-out infinite;
}

.spark-field span:nth-child(1) {
  top: 8%;
  left: 18%;
}

.spark-field span:nth-child(2) {
  top: 18%;
  right: 18%;
  animation-delay: 0.2s;
}

.spark-field span:nth-child(3) {
  top: 42%;
  left: 8%;
  animation-delay: 0.4s;
}

.spark-field span:nth-child(4) {
  top: 50%;
  right: 7%;
  animation-delay: 0.6s;
}

.spark-field span:nth-child(5) {
  bottom: 22%;
  left: 17%;
  animation-delay: 0.8s;
}

.spark-field span:nth-child(6) {
  right: 20%;
  bottom: 16%;
  animation-delay: 1s;
}

.spark-field span:nth-child(7) {
  top: 28%;
  left: 34%;
  animation-delay: 0.15s;
}

.spark-field span:nth-child(8) {
  top: 32%;
  right: 34%;
  animation-delay: 0.35s;
}

.spark-field span:nth-child(9) {
  bottom: 34%;
  left: 29%;
  animation-delay: 0.55s;
}

.spark-field span:nth-child(10) {
  right: 31%;
  bottom: 30%;
  animation-delay: 0.75s;
}

.spark-field span:nth-child(11) {
  top: 5%;
  left: 48%;
  animation-delay: 0.95s;
}

.spark-field span:nth-child(12) {
  bottom: 7%;
  left: 50%;
  animation-delay: 1.15s;
}

.logo-stage {
  position: relative;
  z-index: 6;
  display: grid;
  justify-items: center;
  margin-top: 86px;
  text-align: center;
  animation: logo-float 1.8s ease-in-out infinite;
}

.hkt-title {
  display: flex;
  justify-content: center;
  gap: 6px;
  width: 100%;
  line-height: 0.86;
}

.hkt-title span {
  position: relative;
  display: inline-block;
  color: transparent;
  background:
    repeating-linear-gradient(
      180deg,
      #123c91 0 22px,
      #ffffff 22px 32px,
      #c80f22 32px 44px,
      #ffffff 44px 54px
    );
  background-size: 100% 120px;
  background-clip: text;
  -webkit-background-clip: text;
  font-size: 118px;
  font-weight: 950;
  letter-spacing: 0;
  -webkit-text-stroke: 3px #e3a437;
  filter:
    drop-shadow(0 4px 0 #6f370b)
    drop-shadow(0 10px 10px rgb(0 0 0 / 44%))
    drop-shadow(0 0 16px rgb(255 211 94 / 38%));
  animation: letter-shimmer 1.6s linear infinite;
}

.hkt-title span:nth-child(2) {
  animation-delay: 0.12s;
}

.hkt-title span:nth-child(3) {
  animation-delay: 0.24s;
}

.hkt-title span::after {
  position: absolute;
  top: 8px;
  right: 12px;
  left: 12px;
  color: rgb(255 255 255 / 86%);
  font-size: 18px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 3px;
  text-shadow: none;
  -webkit-text-stroke: 0;
  content: "★ ★";
}

.seven-row {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: -8px;
  line-height: 0.9;
}

.seven-row span {
  color: #f21622;
  font-size: 154px;
  font-weight: 950;
  letter-spacing: 0;
  -webkit-text-stroke: 4px #e5a539;
  filter:
    drop-shadow(0 5px 0 #65130d)
    drop-shadow(0 12px 12px rgb(0 0 0 / 46%))
    drop-shadow(0 0 16px rgb(255 48 48 / 40%));
  animation: seven-pulse 1.25s ease-in-out infinite;
}

.seven-row span:nth-child(2) {
  animation-delay: 0.14s;
}

.seven-row span:nth-child(3) {
  animation-delay: 0.28s;
}

.nameplate {
  position: relative;
  display: grid;
  width: min(100%, 440px);
  min-height: 86px;
  margin-top: -2px;
  place-items: center;
  border: 3px solid #f4c65a;
  border-radius: 18px;
  background:
    linear-gradient(180deg, rgb(38 85 177 / 28%), transparent),
    #07194d;
  box-shadow:
    inset 0 0 0 3px rgb(255 255 255 / 6%),
    inset 0 0 22px rgb(25 85 185 / 34%),
    0 0 22px rgb(244 198 90 / 34%);
  animation: plate-glow 1.6s ease-in-out infinite alternate;
}

.nameplate::before,
.nameplate::after {
  position: absolute;
  top: 50%;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #fff8cb 0 12%, #ffc742 52%, #9f5b10 100%);
  box-shadow: 0 0 10px rgb(255 209 84 / 70%);
  transform: translateY(-50%);
  content: "";
}

.nameplate::before {
  left: 16px;
}

.nameplate::after {
  right: 16px;
}

.nameplate span {
  color: #ffd66c;
  font-size: 45px;
  font-weight: 950;
  letter-spacing: 0;
  text-shadow:
    0 2px 0 #5b2b05,
    0 0 12px rgb(255 214 108 / 58%);
}

.subtitle {
  position: relative;
  z-index: 6;
  margin: 20px auto 0;
  color: #fff0a5;
  font-size: 18px;
  font-weight: 850;
  line-height: 1.4;
  text-align: center;
  text-shadow: 0 0 12px rgb(255 212 90 / 55%);
}

.error-text {
  color: #ff9d9d;
}

.progress {
  position: relative;
  z-index: 6;
  width: min(100%, 430px);
  height: 13px;
  margin: 18px auto 0;
  overflow: hidden;
  border: 1px solid rgb(255 240 165 / 40%);
  border-radius: 999px;
  background: rgb(0 0 0 / 56%);
  box-shadow:
    inset 0 0 0 1px rgb(255 255 255 / 8%),
    0 0 14px rgb(255 212 90 / 20%);
}

.progress span {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #ff3333, #ffd252, #35ddff);
  transform-origin: left;
  animation: loading 3s linear forwards;
  box-shadow: 0 0 18px rgb(255 212 90 / 76%);
}

@keyframes loading {
  from {
    transform: scaleX(0);
  }

  to {
    transform: scaleX(1);
  }
}

@keyframes bulb-flash {
  from {
    opacity: 0.46;
    transform: scale(0.84);
  }

  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes gem-float {
  0%,
  100% {
    transform: translateX(-50%) translateY(0) rotate(45deg) scale(1);
    filter: brightness(1);
  }

  50% {
    transform: translateX(-50%) translateY(-7px) rotate(45deg) scale(1.08);
    filter: brightness(1.24);
  }
}

@keyframes sparkle-pop {
  0%,
  100% {
    opacity: 0;
    transform: scale(0.3);
  }

  45% {
    opacity: 1;
    transform: scale(1.35);
  }
}

@keyframes logo-float {
  0%,
  100% {
    transform: translateY(0) scale(1);
  }

  50% {
    transform: translateY(-6px) scale(1.015);
  }
}

@keyframes letter-shimmer {
  from {
    background-position-y: 0;
  }

  to {
    background-position-y: 120px;
  }
}

@keyframes seven-pulse {
  0%,
  100% {
    transform: translateY(0) scale(1);
    filter:
      drop-shadow(0 5px 0 #65130d)
      drop-shadow(0 12px 12px rgb(0 0 0 / 46%))
      drop-shadow(0 0 16px rgb(255 48 48 / 40%));
  }

  50% {
    transform: translateY(-5px) scale(1.04);
    filter:
      drop-shadow(0 5px 0 #65130d)
      drop-shadow(0 16px 16px rgb(0 0 0 / 50%))
      drop-shadow(0 0 28px rgb(255 48 48 / 66%));
  }
}

@keyframes plate-glow {
  from {
    box-shadow:
      inset 0 0 0 3px rgb(255 255 255 / 6%),
      inset 0 0 22px rgb(25 85 185 / 34%),
      0 0 22px rgb(244 198 90 / 34%);
  }

  to {
    box-shadow:
      inset 0 0 0 3px rgb(255 255 255 / 8%),
      inset 0 0 30px rgb(25 85 185 / 48%),
      0 0 34px rgb(244 198 90 / 52%);
  }
}

@keyframes shine {
  0%,
  46% {
    transform: translateX(-135%);
  }

  76%,
  100% {
    transform: translateX(135%);
  }
}

@media (max-width: 520px) {
  .page-shell {
    padding: 14px;
  }

  .royal-slot {
    min-height: 560px;
    padding: 62px 16px 26px;
    border-radius: 26px;
  }

  .royal-slot::before {
    inset: 10px;
    border-radius: 22px;
  }

  .badge-lights {
    inset: 18px 26px auto;
    grid-template-columns: repeat(15, 1fr);
    gap: 5px;
  }

  .top-gem {
    top: 64px;
    width: 48px;
    height: 48px;
  }

  .logo-stage {
    margin-top: 76px;
  }

  .hkt-title {
    gap: 3px;
  }

  .hkt-title span {
    font-size: 82px;
    -webkit-text-stroke-width: 2px;
  }

  .hkt-title span::after {
    top: 6px;
    right: 8px;
    left: 8px;
    font-size: 12px;
    letter-spacing: 1px;
  }

  .seven-row {
    gap: 6px;
    margin-top: -2px;
  }

  .seven-row span {
    font-size: 116px;
    -webkit-text-stroke-width: 3px;
  }

  .nameplate {
    min-height: 68px;
    border-radius: 14px;
  }

  .nameplate span {
    font-size: 32px;
  }

  .subtitle {
    margin-top: 18px;
    font-size: 17px;
  }
}

@media (max-width: 360px) {
  .hkt-title span {
    font-size: 72px;
  }

  .seven-row span {
    font-size: 102px;
  }

  .nameplate span {
    font-size: 28px;
  }
}
