/* ===== Private Cinema 暗夜影院 ===== */
:root {
  --bg: #050204;
  --bg2: #12060c;
  --card: #160a10;
  --line: rgba(251, 113, 133, .18);
  --rose: #fb7185;
  --rose2: #e11d48;
  --gold: #f5c97b;
  --text: #f2eef0;
  --muted: #9d8d95;
  color-scheme: dark;
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

html, body {
  margin: 0;
  padding: 0;
  height: 100%;
  background: var(--bg);
  color: var(--text);
  font-family: -apple-system, "SF Pro Text", "Helvetica Neue", Arial, sans-serif;
  overscroll-behavior: none;
}

body { display: flex; justify-content: center; }

#app { width: 100%; max-width: 480px; min-height: 100svh; position: relative; }

.screen, .modal { display: block; }
.screen[hidden], .modal[hidden] { display: none !important; }

/* ---------- 启动 ---------- */
.splash {
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  background:
    radial-gradient(ellipse at 50% 120%, rgba(225,29,72,.25), transparent 60%),
    var(--bg);
}
.splash-mark { font-size: 42px; filter: drop-shadow(0 0 18px rgba(251,113,133,.5)); }
.splash-word {
  font-size: 13px;
  letter-spacing: 6px;
  color: var(--muted);
  font-weight: 600;
}

/* ---------- 首页:影院 ---------- */
.cinema {
  min-height: 100svh;
  padding: calc(14px + env(safe-area-inset-top)) 18px calc(28px + env(safe-area-inset-bottom));
  background:
    linear-gradient(180deg, rgba(5,2,4,.74) 0%, rgba(5,2,4,.30) 45%, rgba(5,2,4,.72) 78%, rgba(5,2,4,.95) 100%),
    url("assets/img/bg_sensual.jpg?v=2") center 28% / cover no-repeat,
    radial-gradient(ellipse 85% 45% at 50% -8%, rgba(225,29,72,.24), transparent 62%),
    radial-gradient(ellipse 55% 35% at 90% 108%, rgba(147,51,234,.14), transparent 60%),
    linear-gradient(180deg, #0a0306 0%, var(--bg) 45%);
  display: flex;
  flex-direction: column;
}

.cinema-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 6px 2px 0;
}
.brand { display: flex; align-items: center; gap: 8px; }
.brand-dot {
  width: 9px; height: 9px;
  border-radius: 50%;
  background: var(--rose);
  box-shadow: 0 0 10px var(--rose), 0 0 22px rgba(251,113,133,.5);
}
.brand-name {
  font-size: 13px;
  letter-spacing: 5px;
  font-weight: 800;
  background: linear-gradient(90deg, #f5c97b, #fb7185, #f5c97b);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  filter: drop-shadow(0 0 14px rgba(251,113,133,.35));
}
.head-lock { font-size: 15px; opacity: .9; filter: drop-shadow(0 0 8px rgba(251,113,133,.4)); }

.headline {
  margin: 28px 0 4px;
  text-align: center;
  font-size: 27px;
  line-height: 1.22;
  font-weight: 800;
  letter-spacing: .2px;
  background: linear-gradient(180deg, #fff 52%, rgba(251,113,133,.9));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.subhead {
  margin: 0 auto 22px;
  font-size: 12.5px;
  text-align: center;
  color: var(--muted);
  letter-spacing: .4px;
}

/* 主封面卡 */
.hero-card {
  display: block;
  width: 100%;
  padding: 0;
  border: 1px solid rgba(251,113,133,.22);
  border-radius: 18px;
  background: rgba(22,10,16,.58);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  overflow: hidden;
  cursor: pointer;
  text-align: left;
  box-shadow: 0 14px 40px rgba(0,0,0,.6), 0 0 0 1px rgba(251,113,133,.08), 0 0 36px rgba(225,29,72,.12);
}
.hero-thumb {
  position: relative;
  aspect-ratio: 9 / 12;
  background: #000;
  overflow: hidden;
}
.hero-thumb::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 55%, rgba(5,2,4,.45));
  pointer-events: none;
}
.hero-thumb video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: saturate(1.05);
}
.hero-play {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 62px;
  height: 62px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(5,2,4,.5);
  border: 1.5px solid rgba(255,255,255,.55);
  color: #fff;
  font-size: 21px;
  padding-left: 5px;
  backdrop-filter: blur(3px);
  box-shadow: 0 0 26px rgba(251,113,133,.35);
  z-index: 1;
}
.hero-play::after {
  content: '';
  position: absolute;
  inset: -9px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,.3);
  animation: pulse-ring 2.2s ease-out infinite;
  pointer-events: none;
}
@keyframes pulse-ring {
  0% { transform: scale(.88); opacity: .9; }
  100% { transform: scale(1.4); opacity: 0; }
}
.hero-badge {
  position: absolute;
  top: 10px; right: 10px;
  padding: 4px 10px;
  border-radius: 8px;
  background: linear-gradient(135deg, #f43f5e, #e11d48);
  color: #fff;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 1.5px;
  box-shadow: 0 4px 14px rgba(225,29,72,.5);
  z-index: 1;
}
.hero-lock {
  position: absolute;
  top: 10px; left: 10px;
  width: 30px; height: 30px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  background: rgba(5,2,4,.65);
  border: 1px solid rgba(255,255,255,.2);
  font-size: 14px;
  z-index: 1;
}
.hero-dur {
  position: absolute;
  right: 10px; bottom: 12px;
  padding: 3px 8px;
  border-radius: 7px;
  background: rgba(5,2,4,.75);
  font-size: 11px;
  font-weight: 700;
  z-index: 1;
}
.hero-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 13px 14px 15px;
  background: linear-gradient(180deg, var(--card), #12060c);
}
.hero-title { display: block; font-size: 16px; font-weight: 800; letter-spacing: .2px; }
.hero-tags { display: block; margin-top: 3px; font-size: 11px; color: var(--rose); letter-spacing: .4px; }
.hero-arrow {
  font-size: 24px;
  color: var(--rose);
  filter: drop-shadow(0 0 8px rgba(251,113,133,.5));
}

/* 网格 */
.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-top: 16px;
}
.tile {
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(22,10,16,.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  overflow: hidden;
  cursor: pointer;
  text-align: left;
}
.tile-thumb {
  position: relative;
  display: block;
  aspect-ratio: 9 / 13;
  background: #000;
  overflow: hidden;
}
.tile-thumb video {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.tile-play {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(5,2,4,.5);
  border: 1.5px solid rgba(255,255,255,.55);
  color: #fff;
  font-size: 15px;
  padding-left: 3px;
  backdrop-filter: blur(3px);
  box-shadow: 0 0 20px rgba(251,113,133,.35);
  z-index: 1;
  pointer-events: none;
}
.tile-dur {
  position: absolute;
  right: 5px; bottom: 5px;
  padding: 2px 5px;
  border-radius: 5px;
  background: rgba(5,2,4,.75);
  font-size: 9.5px;
  font-weight: 700;
}
.tile-name {
  display: block;
  padding: 7px 8px 9px;
  font-size: 11px;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* 解锁按钮 */
.unlock-btn {
  width: 100%;
  margin-top: 22px;
  height: 54px;
  border: 0;
  border-radius: 16px;
  background: linear-gradient(135deg, var(--rose), var(--rose2));
  color: #fff;
  font-size: 16px;
  font-weight: 800;
  letter-spacing: .3px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  box-shadow: 0 10px 28px rgba(225,29,72,.45), 0 0 0 1px rgba(255,255,255,.1) inset, 0 0 22px rgba(251,113,133,.2);
}
.unlock-btn::after {
  content: '';
  position: absolute;
  top: 0; left: -60%;
  width: 45%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.35), transparent);
  transform: skewX(-20deg);
  animation: shine 2.8s ease-in-out infinite;
}
@keyframes shine {
  0% { left: -60%; }
  55%, 100% { left: 140%; }
}
.unlock-btn:active { transform: scale(.985); }
.footnote { margin: 12px 0 0; text-align: center; font-size: 11px; color: var(--muted); letter-spacing: .3px; }

/* ---------- 播放器 ---------- */
.player {
  min-height: 100svh;
  background: #000;
  display: flex;
  flex-direction: column;
}
.player-head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: calc(12px + env(safe-area-inset-top)) 14px 12px;
}
.back { font-size: 26px; color: var(--text); line-height: 1; padding: 2px 6px; cursor: pointer; }
.player-title { flex: 1; font-size: 14px; font-weight: 700; }
.stage {
  position: relative;
  flex: 1;
  background: #000;
  display: flex;
  align-items: center;
  justify-content: center;
}
#stage-video { width: 100%; max-height: 100%; }
.stage-empty {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  background: radial-gradient(ellipse at 50% 40%, rgba(225,29,72,.14), #000 70%);
}
.stage-lock { font-size: 44px; filter: drop-shadow(0 0 16px rgba(251,113,133,.4)); }
.stage-empty p { font-size: 13px; color: var(--muted); margin: 0; }
.player-meta { padding: 14px 16px calc(20px + env(safe-area-inset-bottom)); }
.player-meta b { display: block; font-size: 15px; }
.player-meta span { font-size: 11.5px; color: var(--muted); }

/* ---------- 引导弹层 ---------- */
.modal {
  position: fixed;
  inset: 0;
  z-index: 20;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  background: rgba(5,1,4,.68);
  backdrop-filter: blur(3px);
}
.info {
  width: min(100%, 480px);
  max-height: calc(100svh - 30px);
  overflow-y: auto;
  padding: 12px 22px calc(22px + env(safe-area-inset-bottom));
  border-radius: 26px 26px 0 0;
  background: linear-gradient(180deg, #1c0712 0%, #12050c 100%);
  color: var(--text);
  border: 1px solid var(--line);
  border-bottom: none;
  box-shadow: 0 -14px 44px rgba(0,0,0,.6);
}
.sheet-handle {
  display: block;
  width: 44px; height: 5px;
  margin: 0 auto 18px;
  border-radius: 9px;
  background: rgba(255,255,255,.18);
}
.guide-eyebrow { margin: 0 0 6px; color: var(--rose); font-size: 11px; font-weight: 800; letter-spacing: 2.5px; text-align: center; }
.guide-title { margin: 0 0 8px; font-size: 19px; text-align: center; color: #fff; }
.guide-intro { margin: 0 0 14px; color: #cfc3c8; font-size: 13px; line-height: 1.5; text-align: center; }
.guide-figure { margin: 0 0 12px; }
.guide-figure img { display: block; width: 100%; max-height: 200px; object-fit: contain; border-radius: 12px; background: rgba(255,255,255,.05); }
.guide-figure figcaption { margin-top: 6px; color: var(--muted); font-size: 10px; text-align: center; }
.guide-steps { margin: 0 0 14px; padding: 0; list-style: none; display: grid; gap: 10px; }
.guide-steps li { display: flex; align-items: flex-start; gap: 10px; }
.guide-steps li span { flex: 0 0 22px; height: 22px; display: grid; place-items: center; border-radius: 50%; background: linear-gradient(135deg, var(--rose), var(--rose2)); color: #fff; font-size: 12px; font-weight: 800; }
.guide-steps li b { display: block; color: var(--text); font-size: 13px; }
.guide-steps li small { display: block; margin-top: 2px; color: var(--muted); font-size: 11px; line-height: 1.4; }
.guide-copy {
  width: 100%; height: 48px; border: 0; border-radius: 14px;
  background: linear-gradient(135deg, var(--rose), var(--rose2)); color: #fff;
  font-size: 15px; font-weight: 750; cursor: pointer;
  box-shadow: 0 8px 22px rgba(225,29,72,.38);
}
.guide-copy-status { margin: 8px 0 0; color: var(--muted); font-size: 11px; text-align: center; min-height: 16px; }
.guide-continue {
  width: 100%; height: 48px; margin-top: 10px; border: 1px solid rgba(251,113,133,.5);
  border-radius: 14px; background: rgba(251,113,133,.1); color: var(--rose);
  font-size: 15px; font-weight: 750; cursor: pointer;
}
.guide-back { margin: 14px 0 0; color: var(--muted); font-size: 12px; text-align: center; cursor: pointer; }

/* ---------- 横滑推荐区 ---------- */
.row-label {
  margin: 20px 0 10px;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 1px;
  color: var(--text);
}
.hrow {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  padding: 2px 2px 8px;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
.hrow::-webkit-scrollbar { display: none; }
.hcard {
  flex: 0 0 118px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(22,10,16,.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  overflow: hidden;
  cursor: pointer;
  text-align: left;
}
.hc-thumb {
  position: relative;
  display: block;
  aspect-ratio: 9 / 13;
  background: #000;
  overflow: hidden;
}
.hc-thumb video { width: 100%; height: 100%; object-fit: cover; display: block; }
.hc-play {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(5,2,4,.5);
  border: 1.5px solid rgba(255,255,255,.55);
  color: #fff;
  font-size: 13px;
  padding-left: 3px;
  z-index: 1;
  pointer-events: none;
}
.hc-name {
  display: block;
  padding: 6px 8px 8px;
  font-size: 10.5px;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---------- 详情页 ---------- */
.detail {
  min-height: 100svh;
  background:
    radial-gradient(ellipse at 50% -10%, rgba(225,29,72,.14), transparent 55%),
    var(--bg);
}
.detail-hero {
  position: relative;
  aspect-ratio: 9 / 11;
  background: #000;
  overflow: hidden;
}
.detail-hero video {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.detail-body { padding: 16px 18px calc(28px + env(safe-area-inset-bottom)); }
.detail-title { margin: 0 0 6px; font-size: 20px; font-weight: 800; }
.detail-tags { font-size: 11.5px; color: var(--rose); letter-spacing: .5px; }
.detail-desc { margin: 12px 0 18px; font-size: 13px; line-height: 1.6; color: #cfc3c8; }

/* ---------- 解锁弹窗 ---------- */
.unlock-visual {
  width: 88px; height: 88px;
  margin: 0 auto 14px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(251,113,133,.18), rgba(225,29,72,.06));
  border: 1px solid var(--line);
}
.unlock-icon { font-size: 38px; transition: transform .3s ease; }
.unlock-visual.shake .unlock-icon { animation: unlock-shake .5s ease; }
@keyframes unlock-shake {
  0% { transform: scale(1); }
  35% { transform: scale(1.25) rotate(-6deg); }
  70% { transform: scale(.95) rotate(4deg); }
  100% { transform: scale(1) rotate(0); }
}
.guide-tip {
  margin: 12px 0 8px;
  font-size: 11.5px;
  line-height: 1.55;
  color: var(--muted);
  text-align: center;
}

/* ---------- 预告锁定层 ---------- */
.preview-lock {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: rgba(5,2,4,.82);
  backdrop-filter: blur(8px);
  z-index: 3;
}
.preview-lock[hidden] { display: none !important; }
.preview-lock-icon { font-size: 40px; filter: drop-shadow(0 0 16px rgba(251,113,133,.45)); }
.preview-lock-title { margin: 0; font-size: 15px; font-weight: 800; color: #fff; }
.preview-lock-sub { margin: 0; font-size: 11.5px; color: var(--muted); }

/* 修复:hidden 覆盖 flex(避免占位层一直显示) */
.stage-empty[hidden] { display: none !important; }
