:root {
  --color-page-bg: #080b16;
  --hero-gem-width: 119px;
  --hero-gem-height: 250px;
  --hero-gem-left: 50%;
  --hero-gem-top: 41%;
  --hero-gem-opacity: 0.92;
  --space-safe-top: env(safe-area-inset-top, 0px);
  --space-safe-right: env(safe-area-inset-right, 0px);
  --space-safe-bottom: env(safe-area-inset-bottom, 0px);
  --space-safe-left: env(safe-area-inset-left, 0px);
}

* {
  box-sizing: border-box;
}

html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
  background: var(--color-page-bg);
}

body {
  padding-top: var(--space-safe-top);
  padding-right: var(--space-safe-right);
  padding-bottom: var(--space-safe-bottom);
  padding-left: var(--space-safe-left);
}

.home-hero {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: url("../images/hero-art.jpg") center center / cover no-repeat;
  isolation: isolate;
}

.top-left-official-icon {
  position: absolute;
  top: clamp(20px, 3vw, 58px);
  left: clamp(20px, 3vw, 58px);
  z-index: 30;
  display: block;
  width: clamp(110px, 10vw, 180px);
  height: auto;
  pointer-events: none;
  user-select: none;
}

/* 悬念阶段（stage=1）不展示左上角官方 Logo。 */
.home-hero.is-suspense .top-left-official-icon {
  display: none;
}

/* 悬念阶段（stage=1）不展示“官方信息”入口。 */
.home-hero.is-suspense .copbtn {
  display: none;
}

/*
 * 宝石舞台：坐标相对等比舞台（1920 × 1080 原生像素/百分比），
 * GSAP 只改变变换，不改变素材尺寸。
 */
.hero-gem-stage {
  position: absolute;
  z-index: 2;
  top: var(--hero-gem-top);
  left: var(--hero-gem-left);
  width: var(--hero-gem-width);
  height: var(--hero-gem-height);
  padding: 0;
  border: 0;
  background: transparent;
  pointer-events: auto;
  cursor: pointer;
  transform: translate(-50%, -50%);
  transform-origin: 50% 50%;
  will-change: transform;
  border: none;
  background: transparent;
}

.hero-gem-stage:disabled {
  cursor: wait;
}

.hero-gem-stage.is-easter-egg-unlocked {
  cursor: default;
}

.hero-gem {
  position: absolute;
  z-index: 2;
  inset: 0;
  width: var(--hero-gem-width);
  max-width: none;
  height: var(--hero-gem-height);
  object-fit: contain;
  display: block;
  pointer-events: none;
  opacity: var(--hero-gem-opacity);
  transform-origin: 50% 50%;
  will-change: transform;
}

.home-hero__video {
  position: absolute;
  z-index: 0;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

/* 宝石光效视频：两个视频都铺满等比舞台（舞台比例 = 素材比例，即完整画面），
   并使用 screen 消隐黑底。 */
.home-hero__gem-base-light,
.home-hero__gem-outer-light {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  mix-blend-mode: screen;
  pointer-events: none;
}

/* 底座光在宝石后面。 */
.home-hero__gem-base-light {
  z-index: 1;
}

/* 外层光在宝石前面。 */
.home-hero__gem-outer-light {
  z-index: 3;
}

/* 宝石每次点击播放一次的爆发特效视频（坐标相对等比舞台）。 */
.home-hero__gem-click-effect {
  position: absolute;
  z-index: 4;
  top: 42%;
  left: 50%;
  width: 50%;
  height: 50%;
  display: block;
  opacity: 0;
  transform: translate(-50%, -50%);
  object-fit: contain;
  mix-blend-mode: screen;
  pointer-events: none;
}

.home-hero__gem-click-effect.is-playing {
  opacity: 1;
}

.qr-panel {
  position: absolute;
  right: clamp(16px, 2.8vw, 48px);
  bottom: clamp(16px, 4.5vh, 54px);
  z-index: 5;
  display: none;
  width: 178px;
  height: 423px;
  background: url("../images/qr-panel-frame.png") center / 100% 100% no-repeat;
  isolation: isolate;
  transition: transform 420ms cubic-bezier(0.16, 1, 0.3, 1), opacity 260ms ease;
  will-change: transform, opacity;
}

.qr-panel__content {
  position: absolute;
  inset: 0;
  transition: opacity 220ms ease, visibility 220ms ease;
}

.qr-panel__items {
  position: absolute;
  inset: 0;
}

.qr-panel__item {
  position: absolute;
  top: var(--qr-item-top);
  left: var(--qr-item-left);
  width: 139px;
  height: 139px;
  margin: 0;
  transform: translateX(-50%);
}

/* 两个二维码的位置独立可调，后续只需修改 top 百分比。 */
.qr-panel__item:first-child {
  --qr-item-top: 6.6%;
  left: 52%;
}

.qr-panel__item:last-child {
  --qr-item-top: 55%;
   left: 52%;
}

.qr-panel__qr-frame {
  display: block;
  width: 100%;
  aspect-ratio: 1;
  background: #fff;
}

.qr-panel__qr {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #fff;
}

.qr-panel__toggle {
  position: absolute;
  top: 50%;
  left: -62px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 44px;
  min-height: 92px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  cursor: pointer;
  transform: translateY(-50%);
  transition: transform 180ms ease;
}

.qr-panel__toggle::before {
  position: absolute;
  inset: 0;
  background: url("../images/qr-collapse-toggle.png") center / 40px 35px no-repeat;
  content: "";
  pointer-events: none;
  transform: rotate(180deg);
  transition: transform 220ms ease;
}

.qr-panel__toggle:focus-visible {
  outline: 2px solid rgba(255, 235, 165, 0.92);
  outline-offset: 2px;
}

.qr-panel__toggle:active {
  transform: translateY(-50%) scale(0.97);
}

.qr-panel.is-collapsed {
  transform: translateX(100%);
  background-image: none;
}

.qr-panel.is-collapsed .qr-panel__content {
  display: none;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}

.qr-panel.is-collapsed .qr-panel__toggle::before {
  transform: translateX(0);
  animation: qrToggleHint 1.6s ease-in-out infinite;
}

@keyframes qrToggleHint {
  0%,
  100% {
    transform: translateX(0);
  }

  50% {
    transform: translateX(-6px);
  }
}

@media (max-width: 640px) {
  .qr-panel {
    right: 10px;
    bottom: 14px;
    width: min(178px, calc(100vw - 56px));
  }

  .qr-panel__toggle {
    left: -40px;
    width: 40px;
  }
}

@media (orientation: portrait) and (max-width: 640px) {
  .qr-panel {
    right: 8px;
    bottom: 8px;
    width: clamp(126px, 35vw, 156px);
  }

  .qr-panel__content {
    inset: 0;
  }

  .qr-panel__toggle {
    left: -36px;
    width: 36px;
    min-height: 82px;
  }

  .qr-panel__toggle::before {
    background-size: 32px 28px;
  }

}

.hero-button {
  position: absolute;
  left: 0;
  right: 0;
  bottom: clamp(24px, 7vh, 76px);
  z-index: 4;
  display: block;
  margin: 0 auto;
  width: 301px;
  max-width: calc(100vw - 48px);
  height: auto;
  cursor: pointer;
  transition: filter 220ms ease, transform 180ms ease;
  transform-origin: 50% 50%;
  will-change: auto;
}

/* 悬停仅放大 + 提亮，不做外发光（drop-shadow），
   避免按钮周围出现一圈模糊光晕。 */
@media (hover: hover) and (pointer: fine) {
  .hero-button:hover,
  .hero-button:focus-visible {
    filter: brightness(1.18) saturate(1.12);
    transform: scale(1.05);
  }

  .hero-button:active {
    transform: scale(0.98);
    filter: brightness(1.05) saturate(1.05);
  }
}

.hero-button.is-assembled {
  cursor: default;
  pointer-events: none;
  filter: none;
  animation: none;
}

.hero-button.is-assembled:hover,
.hero-button.is-assembled:focus-visible {
  filter: none;
  transform: none;
}

.animated {
  animation-duration: 1s;
  animation-fill-mode: both;
}

.orderBtn {
  animation-delay: 0.6s;
}

.fadeInUp {
  animation-name: fadeInUp;
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .qr-panel:not(.is-collapsed) {
    opacity: 1 !important;
    transform: none !important;
  }

  .qr-panel.is-collapsed {
    transform: translateX(100%) !important;
  }

  .qr-panel,
  .qr-panel__content,
  .qr-panel__toggle,
  .qr-panel__toggle::before {
    transition: none !important;
    animation: none !important;
  }

  .hero-button {
    opacity: 1;
    animation: none;
  }

  .hero-gem {
    transform: none !important;
  }
}

@media (orientation: portrait) {
  /* 横屏设计稿：竖屏时整体旋转 90°，保持首屏构图。 */
  .home-hero {
    width: 100vh;
    height: 100vw;
    transform-origin: left top;
    transform: translateX(100vw) rotate(90deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-hero__video {
    display: none;
  }
}
/* v2 双阶段展示 */
.stage {
  position: absolute;
  inset: 0;
}

.stage[hidden],
.TW-foot[hidden] {
  display: none !important;
}

.stage-concept {
  z-index: 1;
}

.stage-suspense {
  z-index: 20;
  display: grid;
  place-items: end center;
  padding: 0 24px clamp(24px, 7vh, 76px);
  background: url("../images/suspense-bg.jpg") center / cover no-repeat;
}

.suspense-button {
  display: block;
  width: min(301px, calc(100vw - 48px));
  height: auto;
  cursor: default;
  pointer-events: none;
  user-select: none;
}

@media (max-width: 640px) {
  .stage-suspense {
    padding-right: 16px;
    padding-left: 16px;
  }
}
.home-hero[data-stage-ready="false"] {
  visibility: hidden;
}

.home-hero[data-stage-ready="true"] {
  visibility: visible;
}
