* { box-sizing: border-box; }

html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow-x: hidden;
  background: #eef7ff;
}

body {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  height: auto;
  min-height: calc(100vh + 26px);
  overflow-x: hidden;
  overflow-y: auto;
  font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
}

.landing-page {
  position: relative;
  height: 100vh;
  width: auto;
  aspect-ratio: 3000 / 1397;
  flex: 0 0 auto;
  overflow: hidden;
}

.page-artwork {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: fill;
  user-select: none;
  -webkit-user-drag: none;
}

.brand-logo-cover {
  position: absolute;
  left: 12.72%;
  top: .75%;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 3.48%;
  aspect-ratio: 1;
  padding: .3%;
  overflow: hidden;
  background: #fff;
}

.brand-logo-cover img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  image-rendering: pixelated;
}

.hotspot {
  position: absolute;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 14px;
  overflow: hidden;
  color: #fff;
  background: linear-gradient(115deg, #073eb8 0%, #0863dc 55%, #22cedd 100%);
  box-shadow: 0 10px 22px rgba(0, 77, 183, .24), inset 0 1px 0 rgba(255,255,255,.28);
  cursor: pointer;
  text-decoration: none;
  font-family: "Microsoft YaHei", "Segoe UI", sans-serif;
  font-weight: 700;
  letter-spacing: .04em;
  transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}

.hotspot::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: -45%;
  width: 28%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.32), transparent);
  transform: skewX(-22deg);
  transition: left .55s ease;
  pointer-events: none;
}

.hotspot:hover {
  transform: translateY(-2px);
  box-shadow: 0 15px 30px rgba(0, 77, 183, .32), inset 0 1px 0 rgba(255,255,255,.34);
  filter: saturate(1.08) brightness(1.04);
}

.hotspot:hover::after { left: 120%; }

.hotspot:active {
  transform: translateY(1px) scale(.985);
  box-shadow: 0 5px 13px rgba(0, 77, 183, .22), inset 0 2px 5px rgba(0,37,110,.18);
}

.header-download {
  left: 79.75%;
  top: 1.8%;
  width: 8.2%;
  height: 5.8%;
  border-radius: 12px;
  color: transparent;
  background: transparent;
  box-shadow: none;
  font-size: clamp(13px, 1.05vw, 25px);
}

.header-download::after {
  display: block;
  left: -55%;
  width: 24%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.58), transparent);
  animation: header-button-shine 2.8s ease-in-out infinite;
}

.header-download:hover,
.header-download:active {
  transform: none;
  box-shadow: none;
  filter: none;
}

@keyframes header-button-shine {
  0%, 48% { left: -55%; opacity: 0; }
  56% { opacity: 1; }
  78%, 100% { left: 130%; opacity: 0; }
}

.primary-download {
  left: 12.85%;
  top: 45.8%;
  width: 17.15%;
  height: 9.35%;
  gap: .55em;
  border-radius: 18px;
  font-size: clamp(18px, 1.45vw, 36px);
}

.button-icon {
  width: 1.22em;
  height: 1.22em;
  flex: 0 0 auto;
  object-fit: contain;
}

.company-footer {
  position: static;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 26px;
  flex: 0 0 26px;
  border-top: 1px solid rgba(255, 255, 255, .9);
  color: #111;
  background: rgba(255, 255, 255, .74);
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}

.hotspot:focus-visible {
  outline: 3px solid #fff;
  outline-offset: -5px;
  box-shadow: 0 0 0 2px #003da8;
}

@media (prefers-reduced-motion: reduce) {
  .hotspot,
  .hotspot::after { transition: none; }
}

.download-notice {
  position: fixed;
  left: 50%;
  bottom: 28px;
  z-index: 5;
  padding: 12px 22px;
  border-radius: 8px;
  color: #fff;
  background: rgba(12,52,124,.94);
  opacity: 0;
  transform: translate(-50%, 16px);
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease;
  font-size: 14px;
}

.download-notice.show {
  opacity: 1;
  transform: translate(-50%, 0);
}
