/* =========================================================
   封面页（index.html） —— 巨幅背景 + 一句理念 + 入口
   与主站共用 style.css 的 :root 变量，不重复定义颜色
   未来要加的动效，优先写在这里 + assets/js/cover.js 的扩展点
   ========================================================= */

.cover-body {
  overflow: hidden;
  background: #080808;
}

.cover {
  position: fixed;
  inset: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  padding: clamp(16px, 2.6vw, 30px) var(--gutter) clamp(18px, 3vw, 32px);
  overflow: hidden;
}

/* ---------- 媒体层 ---------- */

.cover-media {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  background: #060606;
}

.cover-media img,
.cover-media video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cover-media.is-empty .cover-media img { display: none; }

/* 地球画布：独立一层，过场时可以飞到右上 */
.cover-canvas {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  display: block;
  pointer-events: none;
  will-change: transform;
}

.cover.is-exiting .cover-canvas {
  z-index: 45;
  transition: transform 1.15s cubic-bezier(0.36, 0.05, 0.2, 1);
}

/* ---------- 覆盖层 ---------- */

.cover-grid {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background-image:
    linear-gradient(to right, rgba(255, 255, 255, 0.05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
  background-size: calc(100% / 12) 100%, 100% calc(100% / 6);
  mask-image: radial-gradient(ellipse at 50% 50%, #000 20%, transparent 85%);
  -webkit-mask-image: radial-gradient(ellipse at 50% 50%, #000 20%, transparent 85%);
}

.cover-glow {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    radial-gradient(circle at 26% 40%, rgba(240, 215, 92, 0.10), transparent 44%),
    radial-gradient(circle at 80% 76%, rgba(255, 255, 255, 0.06), transparent 46%);
}

.cover-vignette {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 50% 45%, transparent 26%, rgba(0, 0, 0, 0.78) 100%),
    linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent 45%);
}

.cover-scanline {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  z-index: 2;
  height: 1px;
  pointer-events: none;
  opacity: 0.45;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(240, 215, 92, 0.45) 18%,
    rgba(240, 215, 92, 0.45) 82%,
    transparent
  );
  animation: coverScan 9s linear infinite;
}

@keyframes coverScan {
  from { transform: translateY(0); }
  to { transform: translateY(100vh); }
}

/* ---------- 顶栏 ---------- */

.cover-top {
  position: relative;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  color: var(--fg-3);
}

.cover-brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--fg);
}

.cover-dot {
  width: 6px;
  height: 6px;
  background: var(--acc);
  display: inline-block;
}

.cover-meta b {
  margin: 0 6px;
  font-weight: 400;
  color: var(--line-3);
}

/* ---------- 中间文案 ---------- */

.cover-main {
  position: relative;
  z-index: 3;
  margin-top: auto;
  margin-bottom: clamp(28px, 6vh, 64px);
  max-width: min(94vw, 1180px);
  transition: opacity 0.28s ease;
}

.cover-kicker {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: clamp(14px, 2.4vw, 20px);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  color: var(--fg-3);
}
.cover-kicker::before {
  content: "";
  width: 26px;
  height: 1px;
  background: var(--acc);
}

/* ---------- 四个词：由下往上浮现 ---------- */

.cover-words {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 0;
  border-top: 1px solid var(--line-2);
  font-family: var(--sans);
  font-weight: 600;
}

.cover-word {
  position: relative;
  display: block;
  padding: 16px 18px 6px 18px;
  border-left: 1px solid var(--line);
}
.cover-word:first-child {
  border-left: 0;
  padding-left: 0;
}

.word-idx {
  display: block;
  margin-bottom: 10px;
  font-family: var(--mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.16em;
  color: var(--acc);
}

/* 遮罩 + 位移：文字从遮罩下沿升起 */
.word-mask {
  display: block;
  overflow: hidden;
}

.word-move {
  display: block;
  transform: translateY(115%);
  opacity: 0;
  animation: wordRise 0.95s var(--ease) both;
  animation-delay: calc(0.25s + var(--i, 0) * 0.12s);
}

.word-cn {
  display: block;
  font-size: clamp(1.7rem, 3.2vw, 2.6rem);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.1;
  color: var(--fg);
}

.word-en {
  display: block;
  margin-top: 10px;
  font-family: var(--mono);
  font-style: normal;
  font-size: 10px;
  letter-spacing: 0.16em;
  color: var(--fg-3);
}

@keyframes wordRise {
  from {
    transform: translateY(115%);
    opacity: 0;
  }
  60% {
    opacity: 1;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

.cover-sub {
  margin-top: 16px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  color: var(--fg-3);
}

/* ---------- 底部入口 ---------- */

.cover-foot {
  position: relative;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  transition: opacity 0.28s ease;
}

.cover-note {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.2em;
  color: var(--fg-3);
}

.cover-enter {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  min-height: 58px;
  padding: 0 26px 0 20px;
  background: var(--acc);
  color: var(--ink);
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%);
  transition: transform 0.2s var(--ease), background 0.16s linear;
}
.cover-enter:hover { background: #e6ff3d; transform: translateY(-2px); }
.cover-enter:active { transform: translateY(0); }

.enter-tag {
  font-family: var(--mono);
  font-size: 9.5px;
  letter-spacing: 0.12em;
  opacity: 0.55;
}
.enter-label {
  font-family: var(--mono);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.24em;
}
.enter-cn {
  padding-left: 14px;
  border-left: 1px solid rgba(13, 13, 13, 0.25);
  font-size: 12px;
  opacity: 0.7;
}
.enter-arrow {
  font-family: var(--mono);
  font-size: 15px;
  transition: transform 0.2s var(--ease);
}
.cover-enter:hover .enter-arrow { transform: translateX(5px); }

/* ---------- 进场动画（只作用在子元素，方便退出动画复用父级） ---------- */

.cover-top > *,
.cover-kicker,
.cover-sub,
.cover-foot > * {
  animation: coverRise 0.75s var(--ease) both;
}
.cover-top > :nth-child(2) { animation-delay: 0.06s; }
.cover-kicker { animation-delay: 0.1s; }

.cover-sub { animation-delay: 0.24s; }
.cover-foot > * { animation-delay: 0.3s; }

@keyframes coverRise {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: none; }
}

/* ---------- 退出：内容淡出 + 黑幕从左扫过 ---------- */

.cover.is-exiting .cover-main,
.cover.is-exiting .cover-foot,
.cover.is-exiting .cover-top {
  opacity: 0;
}

.cover.is-exiting .cover-media {
  transform: scale(1.05);
  opacity: 0.45;
  transition: transform 0.7s var(--ease), opacity 0.5s ease;
}

/* ---------- 过场：WELCOME 浮现 ---------- */

.cover-transit-bg {
  position: absolute;
  inset: 0;
  z-index: 40;
  background: #060606;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.42s ease;
}

.cover.is-exiting .cover-transit-bg {
  opacity: 1;
}

.cover-transit {
  position: absolute;
  inset: 0;
  z-index: 50;
  display: grid;
  place-items: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.4s ease;
}

.cover.is-exiting .cover-transit {
  opacity: 1;
  pointer-events: auto;
}

.transit-inner {
  display: grid;
  justify-items: center;
  gap: clamp(14px, 2.4vw, 22px);
  text-align: center;
}

/* 遮罩 + 位移：WELCOME 由下往上推出 */
.transit-mask {
  display: block;
  overflow: hidden;
  padding: 0 0.08em;
}

.transit-word {
  display: block;
  font-family: var(--sans);
  font-size: clamp(2.2rem, 6.4vw, 4.4rem);
  font-weight: 700;
  letter-spacing: 0.22em;
  padding-left: 0.22em; /* 抵消最后一字的字距，保证视觉居中 */
  color: rgba(239, 236, 229, 0.66);
  text-shadow: 0 0 40px rgba(0, 0, 0, 0.55);
  transform: translateY(110%);
}
.cover.is-exiting .transit-word {
  animation: transitUp 0.9s cubic-bezier(0.22, 0.85, 0.3, 1) 0.06s forwards;
}

/* 进度线：跟着过场走完 */
.transit-bar {
  display: block;
  width: clamp(120px, 22vw, 260px);
  height: 1px;
  background: var(--acc);
  transform: scaleX(0);
  transform-origin: left center;
}
.cover.is-exiting .transit-bar {
  animation: transitBar 1.1s cubic-bezier(0.25, 0.8, 0.25, 1) 0.14s forwards;
}

/* 一行小字 */
.transit-cn {
  font-family: var(--sans);
  font-size: 13px;
  letter-spacing: 0.34em;
  text-indent: 0.34em;
  color: var(--fg-2);
  opacity: 0;
  transform: translateY(6px);
}
.cover.is-exiting .transit-cn {
  animation: transitFade 0.6s ease 0.5s forwards;
}

@keyframes transitUp {
  to { transform: translateY(0); }
}
@keyframes transitBar {
  to { transform: scaleX(1); }
}
@keyframes transitFade {
  to { opacity: 1; transform: none; }
}

/* ---------- 手机 ---------- */

@media (max-width: 700px) {

  .cover-main {
    max-width: 100%;
    margin-bottom: 26px;
  }
  .cover-words { grid-template-columns: 1fr 1fr; }
  .cover-word { padding: 14px 12px 4px 14px; }
  .cover-word:nth-child(odd) { border-left: 0; padding-left: 0; }
  .cover-word:nth-child(n + 3) { border-top: 1px solid var(--line); }
  .word-cn { font-size: clamp(1.5rem, 7vw, 2rem); }

  .cover-foot {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  .cover-note { order: 2; font-size: 9.5px; }
  .cover-enter {
    width: 100%;
    justify-content: space-between;
    min-height: 56px;
    padding: 0 20px;
  }
}

/* ---------- 减少动态效果 ---------- */

@media (prefers-reduced-motion: reduce) {
  .cover-scanline { display: none; }
  .cover-top > *,
  .cover-kicker,
  .cover-sub,
  .cover-foot > * { animation: none; }
  .word-move {
    animation: none;
    transform: none;
    opacity: 1;
  }
  /* 减少动态效果：过场直接呈现终态，不做位移动画 */
  .transit-word { transform: none; }
  .transit-bar { transform: scaleX(1); }
  .transit-cn { opacity: 1; transform: none; }
  .cover.is-exiting .transit-word,
  .cover.is-exiting .transit-bar,
  .cover.is-exiting .transit-cn { animation: none; }
}

/* 过场时地球飞到右侧，文字块在桌面端向左让出空间 */
@media (min-width: 900px) {
  .transit-inner { transform: translateX(-17%); }
}

/* 手机端：地球偏小，过场文案居中即可 */
@media (max-width: 899px) {
  .transit-inner { transform: none; }
}
