/* Global */
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;700&display=swap");

* {
  box-sizing: border-box;
}

html,
body {
  height: 100dvh;
  min-width: 320px;
  font-family: "Noto Sans TC", sans-serif;
}

/* Container */
.app-container {
  display: flex;
  width: 100%;
  min-height: 100%;
  background-image: url("../images/Background.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  overflow: hidden;
}

.max-width-wrapper {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 100%;
  max-width: 500px;
  margin-inline: auto;
  margin-block: 36px;
  overflow: visible;
  text-align: center;
  padding-inline: 40px;
}

.max-width-wrapper>* {
  z-index: 5;
}

.image-container {
  position: relative;
  overflow: visible;
  width: 100%;
  z-index: 1 !important;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

.keychain {
  display: block;
  height: 300px;
  width: auto;
  position: relative;
  opacity: 0;
  transform: scale(0.98);
  transition: opacity 300ms ease, transform 300ms ease;
}

.keychain.is-loaded {
  opacity: 1;
  transform: scale(1);
}

.decoration-container {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 620px;
  height: 620px;
  transform: translate(-50%, -50%);
  pointer-events: none;
  background: radial-gradient(50% 50% at 50% 50%, #F3F19D 22%, rgba(255, 255, 255, 0.00) 100%);
  z-index: -1 !important;
}

.decoration {
  position: absolute;
  width: auto;
  height: auto;
  object-fit: contain;
  pointer-events: none;
}

.decoration.stars {
  left: 142px;
  top: 264px;
}

.decoration.character {
  left: 384px;
  top: 353px;
}

.decoration.splash {
  left: 404px;
  top: 125px;
}

.qrcode-container {
  width: 158px;
  height: 158px;
  border-radius: 8px;
  background: white;
  display: flex;
  justify-content: center;
  align-items: center;
}

/* Button */
.button {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 180.293px;
  height: 42.11px;

  font-size: 19.034px;
  font-weight: 700;
  line-height: 120%;
}

.button.active {
  border-radius: 1060.545px;
  border: 1.061px solid #908DC5;
  background: #343536;
  box-shadow: -2.12px 3.74px 0px 0px #908DC5;
  color: #FCFCFC;
  cursor: pointer;
}

.button.disabled {
  border-radius: 1060.545px;
  border: 1.061px solid #9A9C9D;
  background: #E8E8E8;
  box-shadow: -2.12px 3.74px 0px 0px #9A9C9D;
  color: #9A9C9D;
  cursor: not-allowed;
}

/* Utility Classes */
.mb-12 {
  margin-bottom: 12px;
}

.mb-16 {
  margin-bottom: 16px;
}

.mb-21 {
  margin-bottom: 21px;
}

.mb-36 {
  margin-bottom: 36px;
}

.mb-43 {
  margin-bottom: 43px;
}

/* Font */
.bold {
  font-weight: 700 !important;
}

.title {
  color: #908DC5;
  -webkit-text-stroke: 4px #FCFCFC;
  paint-order: stroke fill;
  font-size: 24px;
  font-weight: 700;
  line-height: 120%;
}

.body {
  color: #343536;
  font-size: 16px;
  font-weight: 400;
  line-height: 140%;
}

.caption {
  color: #343536;
  font-size: 12px;
  font-weight: 400;
  line-height: 140%;
}

.headline {
  color: #343536;
  font-size: 24px;
  font-weight: 700;
  line-height: 140%;
}

/* Popup */
.white-popup {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 16px;
  background: #FCFCFC;
  min-width: 320px;
  min-height: 160px;
  margin: 0 auto;
  padding: 16px;
  border-radius: 48px;
  border: 8px solid #343536;
}

#preview-video {
  display: block;
  width: 100%;
  height: auto;
  max-height: calc(100vh - 220px);
  border-radius: 24px;
  border: transparent;
  object-fit: cover;
}