/* tj-lizzy prelander 樣式（票 05）
   行動優先，設計基準 390px；桌機用 min-width 斷點放寬版心。
   配色沿用 banner-pipeline 模板實際值：CTA 粉紅 #ff2d6b、深底 #111。 */

@font-face {
  font-family: 'Noto Sans TC';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url('assets/fonts/NotoSansTC-400.woff') format('woff');
}
@font-face {
  font-family: 'Noto Sans TC';
  font-style: normal;
  font-weight: 700;
  font-display: block;
  src: url('assets/fonts/NotoSansTC-700.woff') format('woff');
}

:root {
  --accent: #ff2d6b;
  --bg: #111114;
  --bg-raised: #1b1b20;
  --text: #f4f4f6;
  --text-dim: #b7b7c0;
  --border: #2c2c33;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html, body {
  width: 100%;
  overflow-x: hidden;
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: 'Noto Sans TC', sans-serif;
  line-height: 1.6;
}

body.gate-active {
  overflow: hidden;
  height: 100%;
}

img {
  max-width: 100%;
  display: block;
}

ul, ol {
  list-style: none;
}

a {
  color: inherit;
  text-decoration: none;
}

.container {
  max-width: 480px;
  margin: 0 auto;
  padding: 0 20px;
}

/* ---------- 年齡閘 ---------- */
#age-gate {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(6, 6, 8, 0.97);
  padding: 24px;
}

body:not(.gate-active) #age-gate {
  display: none;
}

.age-gate-box {
  max-width: 360px;
  width: 100%;
  text-align: center;
  background: var(--bg-raised);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 32px 24px;
}

.age-gate-box h1 {
  font-size: 20px;
  font-weight: 700;
  margin-bottom: 12px;
}

.age-gate-box p {
  color: var(--text-dim);
  font-size: 15px;
  margin-bottom: 24px;
}

.age-gate-actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.btn {
  display: inline-block;
  border: none;
  border-radius: 999px;
  padding: 14px 24px;
  font-size: 16px;
  font-weight: 700;
  font-family: inherit;
  cursor: pointer;
  text-align: center;
  width: 100%;
}

.btn-primary {
  background: var(--accent);
  color: #fff;
}

.btn-secondary {
  background: transparent;
  color: var(--text-dim);
  border: 1px solid var(--border);
}

/* ---------- Hero ---------- */
.hero {
  position: relative;
  min-height: 78vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: #000;
}

.hero-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 15%;
}

.hero-gradient {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 30%,
    rgba(0, 0, 0, 0.75) 70%,
    rgba(0, 0, 0, 0.92) 100%
  );
}

.hero-stretched-link {
  position: absolute;
  inset: 0;
  z-index: 1;
}

.hero-content {
  position: relative;
  z-index: 2;
  width: 100%;
  padding: 24px 20px 32px;
}

.hero-content h1 {
  font-size: 28px;
  font-weight: 700;
  line-height: 1.3;
  margin-bottom: 8px;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.6);
}

.hero-content .subtitle {
  font-size: 16px;
  color: var(--text-dim);
  margin-bottom: 16px;
}

.price-row {
  font-size: 14px;
  color: var(--text-dim);
  margin-bottom: 20px;
}

/* ---------- 內容清單區 ---------- */
.section {
  padding-top: 40px;
  padding-bottom: 40px;
}

.section h2 {
  font-size: 22px;
  font-weight: 700;
  margin-bottom: 16px;
}

.content-list {
  margin-bottom: 24px;
}

.content-list li {
  position: relative;
  padding-left: 22px;
  font-size: 16px;
  margin-bottom: 10px;
  color: var(--text);
}

.content-list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 9px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--accent);
}

/* 瀑布牆：CSS columns 做 masonry，圖片保留原比例才有「牆」的錯落感 */
.photo-grid {
  columns: 2;
  column-gap: 10px;
}

/* overflow:hidden／border-radius 放在 figure 而非 .wall-tile，
   避免 .wall-tile 自身的 hover box-shadow 被自己的 overflow:hidden 裁掉 */
.wall-tile {
  display: block;
  break-inside: avoid;
  margin-bottom: 10px;
}

.photo-grid figure {
  position: relative;
  border-radius: 12px;
  overflow: hidden;
  background: var(--bg-raised);
}

.photo-grid img {
  width: 100%;
  height: auto;
  display: block;
}

.photo-grid .locked img {
  filter: blur(14px);
  transform: scale(1.1);
}

.wall-outro {
  margin-top: 16px;
  text-align: center;
  font-size: 14px;
  color: var(--text-dim);
}

.lock-icon {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
}

.lock-icon svg {
  width: 32px;
  height: 32px;
}

/* ---------- 訂閱流程區 ---------- */
.steps-list {
  counter-reset: step;
  margin-bottom: 16px;
}

.steps-list li {
  counter-increment: step;
  position: relative;
  padding-left: 34px;
  font-size: 16px;
  margin-bottom: 14px;
}

.steps-list li::before {
  content: counter(step);
  position: absolute;
  left: 0;
  top: 0;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}

.steps-note {
  font-size: 14px;
  color: var(--text-dim);
}

/* ---------- FAQ ---------- */
.faq-item {
  border-top: 1px solid var(--border);
  padding: 16px 0;
}

.faq-item:last-child {
  border-bottom: 1px solid var(--border);
}

.faq-item .q {
  font-weight: 700;
  font-size: 16px;
  margin-bottom: 6px;
}

.faq-item .a {
  color: var(--text-dim);
  font-size: 15px;
}

/* ---------- 尾部 ---------- */
.footer {
  padding-top: 40px;
  padding-bottom: 48px;
  text-align: center;
}

.footer .btn-primary {
  margin-bottom: 20px;
}

.footer .warning {
  font-size: 12px;
  color: var(--text-dim);
}

/* CTA 按鈕通用：Hero 與尾部共用主要樣式 */
.hero-content .btn-primary,
.footer .btn-primary {
  display: block;
}

/* ---------- CTA 浮動效果（僅行銷用 [data-cta]，年齡閘按鈕不套用） ---------- */
@keyframes cta-float {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-2px);
  }
}

/* 桌機：hover 上移＋粉紅光暈陰影，:active 按下回彈（CTA 與瀑布牆 16 格共用同一套邏輯） */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  [data-cta],
  .wall-tile {
    transition: transform 180ms ease, box-shadow 180ms ease;
  }

  [data-cta]:hover,
  .wall-tile:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 24px rgba(255, 45, 107, 0.45);
  }

  [data-cta]:active,
  .wall-tile:active {
    transform: translateY(0);
    box-shadow: 0 4px 12px rgba(255, 45, 107, 0.3);
  }
}

/* 行動：常駐輕微浮動動畫，尊重 prefers-reduced-motion */
@media (hover: none) and (prefers-reduced-motion: no-preference) {
  [data-cta],
  .wall-tile {
    animation: cta-float 2.8s ease-in-out infinite;
  }

  /* 瀑布牆 16 格各錯開 0.3s，打散同步浮動的海浪感 */
  .photo-grid .wall-tile:nth-child(1) { animation-delay: 0s; }
  .photo-grid .wall-tile:nth-child(2) { animation-delay: 0.3s; }
  .photo-grid .wall-tile:nth-child(3) { animation-delay: 0.6s; }
  .photo-grid .wall-tile:nth-child(4) { animation-delay: 0.9s; }
  .photo-grid .wall-tile:nth-child(5) { animation-delay: 1.2s; }
  .photo-grid .wall-tile:nth-child(6) { animation-delay: 1.5s; }
  .photo-grid .wall-tile:nth-child(7) { animation-delay: 1.8s; }
  .photo-grid .wall-tile:nth-child(8) { animation-delay: 2.1s; }
  .photo-grid .wall-tile:nth-child(9) { animation-delay: 2.4s; }
  .photo-grid .wall-tile:nth-child(10) { animation-delay: 2.7s; }
  .photo-grid .wall-tile:nth-child(11) { animation-delay: 3s; }
  .photo-grid .wall-tile:nth-child(12) { animation-delay: 3.3s; }
  .photo-grid .wall-tile:nth-child(13) { animation-delay: 3.6s; }
  .photo-grid .wall-tile:nth-child(14) { animation-delay: 3.9s; }
  .photo-grid .wall-tile:nth-child(15) { animation-delay: 4.2s; }
  .photo-grid .wall-tile:nth-child(16) { animation-delay: 4.5s; }
}

/* ---------- 桌機斷點 ---------- */
@media (min-width: 768px) {
  .container {
    max-width: 720px;
  }

  .hero-content {
    padding: 32px 40px 48px;
  }

  .hero-content h1 {
    font-size: 36px;
  }

  .age-gate-actions {
    flex-direction: row;
  }

  .photo-grid {
    columns: 3;
  }

  .btn {
    width: auto;
    flex: 1;
  }

  .hero-content .btn-primary,
  .footer .btn-primary {
    display: inline-block;
    width: auto;
    padding-left: 40px;
    padding-right: 40px;
  }
}
