/* AZ /hg · 对齐撸撸短剧 HOME（黑底 #000 / 主色 #C62222）· 仅新皮 */
:root {
  --app-background: #000;
  --app-surface: #0f0f0f;
  --app-primary: #c62222;
  --app-primary-soft: rgba(198, 34, 34, 0.05);
  --app-text-primary: rgba(255, 255, 255, 0.9);
  --app-text-secondary: rgba(255, 255, 255, 0.55);
  --app-text-placeholder: rgba(255, 255, 255, 0.35);
  --tabbar-h: 14.667vw;
  --safe-b: env(safe-area-inset-bottom, 0px);
  --font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
}

* { box-sizing: border-box; }
html, body {
  margin: 0;
  min-height: 100%;
  background: var(--app-background);
  color: var(--app-text-primary);
  font-family: var(--font);
  -webkit-tap-highlight-color: transparent;
}
button, input { font: inherit; color: inherit; }
button { border: 0; background: transparent; cursor: pointer; padding: 0; }
img { display: block; max-width: 100%; }
[hidden] { display: none !important; }

.app {
  max-width: 560px;
  margin: 0 auto;
  min-height: 100vh;
  min-height: 100dvh;
  background: #000;
  position: relative;
  overflow: hidden;
}

.main_content {
  height: calc(100vh - var(--tabbar-h) - var(--safe-b));
  height: calc(100dvh - var(--tabbar-h) - var(--safe-b));
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.page-home {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  background: #000;
}
.page-sub {
  flex: 1;
  min-height: 0;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  background: #000;
  padding-bottom: 4vw;
}

/* ---- header：logo | 搜索 | 签到 ---- */
.header_search {
  height: 12.8vw;
  max-height: 56px;
  padding: 0 4.267vw;
  display: flex;
  align-items: center;
  gap: 2.667vw;
  flex-shrink: 0;
}
.header_logo {
  display: flex;
  align-items: center;
  gap: 1.6vw;
  flex-shrink: 0;
}
.logo_mark {
  width: 8vw;
  height: 8vw;
  max-width: 34px;
  max-height: 34px;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, #ff5a4a, var(--app-primary) 60%, #7a1010);
  box-shadow: 0 0 0 1px rgba(255,255,255,0.08);
}
.logo_text {
  font-size: 4vw;
  font-weight: 600;
  color: #f2f2f4;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.search-input {
  flex: 1;
  min-width: 0;
  height: 9.6vw;
  max-height: 40px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.16);
  display: flex;
  align-items: center;
  padding: 0 3.2vw;
  gap: 1.6vw;
}
.search-icon {
  color: var(--app-text-placeholder);
  font-size: 3.733vw;
  line-height: 1;
}
.search-input input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: none;
  background: transparent;
  color: #fff;
  font-size: 3.467vw;
}
.search-input input::placeholder { color: #ffffffb3; }
.sign_icon {
  flex-shrink: 0;
  width: 10vw;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4vw;
  color: var(--app-text-secondary);
}
.sign_cal {
  width: 6.4vw;
  height: 6.4vw;
  border-radius: 1.2vw;
  border: 1px solid rgba(255,255,255,0.25);
  display: grid;
  place-items: center;
  font-size: 2.8vw;
  color: #fff;
}
.sign_icon small {
  font-size: 2.4vw;
  color: var(--app-text-secondary);
}

/* ---- 一级 tabs ---- */
.homeTab {
  position: relative;
  height: 13.333vw;
  max-height: 54px;
  flex-shrink: 0;
  padding-right: 11.733vw;
}
.primary-tabs {
  height: 100%;
  display: flex;
  align-items: flex-end;
  gap: 5.333vw;
  overflow-x: auto;
  padding: 0 4.267vw;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
.primary-tabs::-webkit-scrollbar { display: none; }
.ptab {
  flex: 0 0 auto;
  position: relative;
  height: 100%;
  display: flex;
  align-items: center;
  font-size: 4.267vw;
  color: var(--app-text-primary);
  white-space: nowrap;
  padding-bottom: 2.4vw;
}
.ptab.active {
  color: #fff;
  font-weight: 600;
}
.ptab.active::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 1.6vw;
  transform: translateX(-50%);
  width: 4.267vw;
  height: 0.533vw;
  border-radius: 3.2vw;
  background: var(--app-primary);
}
.ptab .dot {
  position: absolute;
  top: 2.4vw;
  right: -1.6vw;
  width: 1.6vw;
  height: 1.6vw;
  border-radius: 50%;
  background: #f52c56;
}
.home-menu {
  position: absolute;
  right: 0;
  top: 0;
  width: 11.733vw;
  height: 100%;
  display: grid;
  place-items: center;
  color: #fff;
  font-size: 4.8vw;
  background: linear-gradient(to left, #000 55%, transparent);
  z-index: 5;
}

/* ---- 二级 pills ---- */
.drama-module {
  flex: 1;
  min-height: 0;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 4vw;
}
.filters {
  display: flex;
  gap: 2.667vw;
  overflow-x: auto;
  padding: 2.133vw 4.267vw 2.667vw;
  scrollbar-width: none;
}
.filters::-webkit-scrollbar { display: none; }
.filter {
  flex: 0 0 auto;
  padding: 1.067vw 2.667vw;
  line-height: 4.8vw;
  font-size: 3.2vw;
  color: #ffffff8c;
  background: rgba(255, 255, 255, 0.05);
  border-radius: 5.333vw;
  white-space: nowrap;
}
.filter.is-active {
  background: var(--app-primary);
  color: #fff;
  font-weight: 600;
}

/* ---- banner ---- */
.advBox { padding: 0 4.267vw 1.6vw; }
.banner_box {
  position: relative;
  height: 38.133vw;
  border-radius: 1.6vw;
  overflow: hidden;
  background: #1a1a1a;
}
.banner_box img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.banner_box .banner-title {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: 8vw 3.2vw 2.4vw;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,.75));
  font-size: 3.733vw;
  font-weight: 600;
}
.indicators {
  position: absolute;
  right: 2.4vw;
  bottom: 2.4vw;
  display: flex;
  gap: 1.2vw;
  align-items: center;
}
.indicators i {
  width: 1.6vw;
  height: 1.6vw;
  border-radius: 50%;
  background: rgba(255,255,255,0.35);
}
.indicators i.on {
  width: 3.2vw;
  border-radius: 3.2vw;
  background: var(--app-primary);
}

/* ---- 2 列卡片 ---- */
.drama-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 3.2vw 1.867vw;
  padding: 1.6vw 4.267vw 3.2vw;
}
.drama-cover-card {
  width: 44.8vw;
  border-radius: 2.4vw;
  overflow: hidden;
  background: #0a0a0a;
  cursor: pointer;
  content-visibility: auto;
  contain-intrinsic-size: 44.8vw 73vw;
}
.cover-wrap {
  position: relative;
  width: 100%;
  height: 59.733vw;
  background: #1a1a1a;
  overflow: hidden;
}
.cover-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  background: #1a1a1a;
}
.scroll-tip {
  text-align: center;
  color: #ffffff59;
  font-size: 3.2vw;
  padding: 4vw 2vw 8vw;
}
.pager { display: none; }
.cover-mask {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 8vw;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,.6));
}
.cover-meta {
  position: absolute;
  left: 0; right: 0; bottom: 2.133vw;
  padding: 0 2.133vw;
  display: flex;
  justify-content: space-between;
  align-items: center;
  z-index: 1;
}
.heat {
  display: flex;
  align-items: center;
  gap: 0.8vw;
  font-size: 2.667vw;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,.6);
}
.heat::before {
  content: "🔥";
  font-size: 2.8vw;
}
.lock-tag {
  font-size: 2.4vw;
  background: var(--app-primary);
  color: #fff;
  border-radius: 0.8vw;
  padding: 0.4vw 1.2vw;
  font-weight: 600;
}
.home-content {
  height: 13.333vw;
  padding: 1.6vw;
  display: flex;
  flex-direction: column;
  gap: 1.067vw;
  justify-content: center;
}
.home-content .title {
  font-size: 3.2vw;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.3;
}
.home-content .footer {
  display: flex;
  gap: 1.6vw;
  flex-wrap: wrap;
}
.home-content .tag {
  font-size: 2.667vw;
  color: #fff;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 0.8vw;
  padding: 0 1.067vw;
  line-height: 4vw;
  max-width: 18vw;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pager {
  display: flex;
  justify-content: center;
  gap: 2.667vw;
  padding: 2vw 4.267vw 6vw;
}
.pager button {
  min-width: 22vw;
  height: 8.5vw;
  border-radius: 999px;
  background: rgba(255,255,255,0.08);
  color: #fff;
  font-size: 3.2vw;
  border: 1px solid rgba(255,255,255,0.12);
}
.pager button:disabled { opacity: 0.35; }

.loading, .empty {
  width: 100%;
  text-align: center;
  color: var(--app-text-secondary);
  padding: 16vw 4vw;
  font-size: 3.467vw;
}

/* ---- 跑马灯 ---- */
.marqueeBar {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: calc(var(--tabbar-h) + var(--safe-b));
  width: min(560px, 100%);
  height: 8.267vw;
  max-height: 36px;
  background: rgba(0, 0, 0, 0.85);
  display: flex;
  align-items: center;
  gap: 2vw;
  padding: 0 3.2vw;
  z-index: 999;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.marqueeBar.hidden { display: none; }
.not_horn { font-size: 3.2vw; flex-shrink: 0; }
.homeNotice {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
}
.homeNotice span {
  display: inline-block;
  padding-left: 100%;
  animation: marquee 14s linear infinite;
  font-size: 3.2vw;
  color: rgba(255,255,255,0.85);
}
@keyframes marquee {
  0% { transform: translateX(0); }
  100% { transform: translateX(-100%); }
}
.closeMarquee {
  flex-shrink: 0;
  width: 5vw;
  height: 5vw;
  color: #5d6573;
  font-size: 4vw;
  line-height: 1;
}

/* ---- 浮动优惠 ---- */
.rightBottomBox {
  position: fixed;
  right: max(4.267vw, calc(50% - 280px + 4.267vw));
  bottom: calc(var(--tabbar-h) + var(--safe-b) + 22vw);
  width: 14vw;
  height: 14vw;
  max-width: 56px;
  max-height: 56px;
  border-radius: 50%;
  background: linear-gradient(145deg, #ffb347, #f68804 55%, #e85d04);
  box-shadow: 0 4px 16px rgba(246, 136, 4, 0.45);
  z-index: 10;
  display: grid;
  place-items: center;
}
.limitedTime {
  font-size: 2.4vw;
  font-weight: 700;
  color: #fff;
  text-align: center;
  line-height: 1.15;
  padding: 0 1vw;
}

/* ---- 底栏 6 tab ---- */
.tab_wrapper {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: 0;
  width: min(560px, 100%);
  height: calc(var(--tabbar-h) + var(--safe-b));
  padding-bottom: var(--safe-b);
  background: #000;
  border-top: 1px solid rgba(255,255,255,0.08);
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  z-index: 1000;
}
.tabbar-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.8vw;
  color: #ffffff59;
  position: relative;
}
.tabbar-item .ico {
  width: 6.4vw;
  height: 6.4vw;
  max-width: 28px;
  max-height: 28px;
  display: grid;
  place-items: center;
  font-size: 4.2vw;
  line-height: 1;
  border-radius: 1.2vw;
}
.tabbar-item .tabbar-item-text {
  font-size: 3.2vw;
  line-height: 1;
}
.tabbar-item.active { color: var(--app-primary); }
.tabbar-item.active .ico {
  background: var(--app-primary);
  color: #fff;
  font-weight: 700;
}
.tabbar-item .newsTip {
  position: absolute;
  top: 1.6vw;
  right: 22%;
  width: 1.6vw;
  height: 1.6vw;
  border-radius: 50%;
  background: #fd0563;
}

/* ---- 子页：我的 / 播放 / 积分 ---- */
.sub-head {
  padding: 4.267vw;
  display: flex;
  align-items: center;
  gap: 3.2vw;
}
.sub-head h2 {
  margin: 0;
  font-size: 4.8vw;
  font-weight: 600;
}
.back-btn {
  width: 8vw;
  height: 8vw;
  border-radius: 50%;
  background: rgba(255,255,255,0.08);
  color: #fff;
  font-size: 4vw;
}
.profile-card {
  margin: 0 4.267vw 3.2vw;
  padding: 4.267vw;
  border-radius: 2.4vw;
  background: #141414;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 3vw;
}
.profile-card .name { font-size: 4.267vw; font-weight: 700; }
.profile-card .sub { margin-top: 1.2vw; color: var(--app-text-secondary); font-size: 3.2vw; }
.btn {
  border-radius: 999px;
  padding: 2.4vw 4vw;
  font-size: 3.2vw;
  background: rgba(255,255,255,0.08);
  color: #fff;
}
.btn-primary {
  background: var(--app-primary);
  color: #fff;
  font-weight: 700;
}
.btn-block { width: 100%; }
.action-list { padding: 0 4.267vw; display: grid; gap: 2.133vw; }
.action-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 3.733vw 3.2vw;
  background: #141414;
  border-radius: 2.4vw;
  color: #fff;
  font-size: 3.733vw;
}
.action-item span { color: var(--app-text-secondary); font-size: 3.2vw; }
.points-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2.133vw;
  padding: 0 4.267vw 4vw;
}
.stat {
  background: #141414;
  border-radius: 2.4vw;
  padding: 3.733vw;
}
.stat .lab { color: var(--app-text-secondary); font-size: 3.2vw; }
.stat .val {
  margin-top: 1.6vw;
  font-size: 6.4vw;
  font-weight: 800;
  color: var(--app-primary);
}

.player-page { padding: 3.2vw 4.267vw 8vw; }
.player-box {
  background: #111;
  border-radius: 1.6vw;
  overflow: hidden;
  min-height: 48vw;
}
.player-box video { width: 100%; max-height: 62vh; background: #000; display: block; }
.meta-panel {
  margin-top: 3.2vw;
  background: #141414;
  border-radius: 2.4vw;
  padding: 3.733vw;
}
.meta-panel h3 { margin: 0 0 1.6vw; font-size: 4.267vw; }
.meta-panel .muted { color: var(--app-text-secondary); font-size: 3.2vw; line-height: 1.5; }
.unlock-box {
  margin-top: 3.2vw;
  padding: 3.2vw;
  border-radius: 2.4vw;
  background: rgba(198, 34, 34, 0.12);
  border: 1px solid rgba(198, 34, 34, 0.35);
}
.unlock-box .cost {
  font-size: 6.4vw;
  font-weight: 800;
  color: var(--app-primary);
  margin: 1.2vw 0 2.4vw;
}
.ep-row { display: flex; flex-wrap: wrap; gap: 2vw; margin-top: 2.667vw; }
.ep-chip {
  position: relative;
  min-width: 10vw;
  text-align: center;
  padding: 2vw 2.667vw;
  border-radius: 1.6vw;
  background: rgba(255,255,255,0.08);
  font-size: 3.2vw;
  overflow: visible;
}
.ep-chip.active { background: var(--app-primary); font-weight: 700; }
.ep-chip.is-vip {
  border: 1px solid rgba(232, 180, 90, 0.45);
  background: linear-gradient(160deg, rgba(40,30,16,0.95), rgba(255,255,255,0.06));
}
.ep-chip .ep-num { display: inline-block; }
.ep-vip-badge {
  position: absolute;
  top: -1.6vw;
  right: -1.6vw;
  z-index: 2;
  font-size: 2.133vw;
  font-weight: 800;
  line-height: 1;
  padding: 0.8vw 1.333vw;
  border-radius: 999px;
  color: #1a1208;
  background: linear-gradient(135deg, #f0d08a, #c4892d);
  box-shadow: 0 2px 6px rgba(0,0,0,.35);
  letter-spacing: 0.04em;
}
.sheet-vip-hint {
  margin-left: 2vw;
  font-size: 2.933vw;
  font-weight: 600;
  color: #e8b45a;
}

/* modal / toast */
.modal-mask {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.62);
  display: none;
  align-items: flex-end;
  justify-content: center;
  z-index: 2000;
  padding: 3.2vw;
}
.modal-mask.show { display: flex; }
.modal {
  width: min(440px, 100%);
  background: #1a1a1a;
  border-radius: 3.2vw 3.2vw 2.4vw 2.4vw;
  padding: 4.267vw;
  margin-bottom: calc(var(--safe-b) + 2vw);
}
.modal h3 { margin: 0 0 3.2vw; font-size: 4.267vw; }
.modal .field { display: grid; gap: 1.2vw; margin-bottom: 2.667vw; }
.modal .field label { font-size: 3.2vw; color: var(--app-text-secondary); }
.modal input {
  border: 1px solid rgba(255,255,255,0.12);
  background: #0a0a0a;
  border-radius: 2.4vw;
  padding: 3.2vw;
  color: #fff;
  outline: none;
}
.modal-actions { display: flex; gap: 2.133vw; justify-content: flex-end; margin-top: 2vw; }

.toast {
  position: fixed;
  left: 50%;
  bottom: calc(var(--tabbar-h) + var(--safe-b) + 12vw);
  transform: translateX(-50%);
  background: rgba(30, 30, 30, 0.95);
  color: #fff;
  padding: 2.4vw 4vw;
  border-radius: 999px;
  opacity: 0;
  pointer-events: none;
  transition: 0.2s;
  z-index: 2100;
  max-width: 86vw;
  text-align: center;
  font-size: 3.2vw;
}
.toast.show { opacity: 1; }

/* admin 页复用 */
.admin { max-width: 920px; margin: 0 auto; padding: 24px 16px 60px; color: #eee; }
.hint { color: #999; font-size: 13px; line-height: 1.5; }
.section-head h2 { color: #fff; }

@media (min-width: 560px) {
  .logo_text { font-size: 16px; }
  .ptab { font-size: 15px; }
  .filter { font-size: 12px; }
  .home-content .title { font-size: 13px; }
  .tabbar-item .tabbar-item-text { font-size: 11px; }
}

/* ========== AI 全屏竖屏播放器（对齐黄果/撸撸） ========== */
.app.is-immersive .tab_wrapper,
.app.is-immersive .marqueeBar,
.app.is-immersive .rightBottomBox,
.app.is-immersive .main_content > .page-home {
  display: none !important;
}
.app.is-immersive .main_content {
  height: 100vh;
  height: 100dvh;
}
.app.is-immersive #pageSub {
  padding: 0;
  overflow: hidden;
  height: 100%;
}

.fs-player {
  position: fixed;
  inset: 0;
  z-index: 1500;
  background: #000;
  max-width: 560px;
  margin: 0 auto;
  left: 0; right: 0;
}
.fs-player video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #000;
}
.fs-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
}
.fs-layer > * { pointer-events: auto; }

.fs-top {
  position: absolute;
  top: 0; left: 0; right: 0;
  padding: calc(2.4vw + env(safe-area-inset-top, 0px)) 3.2vw 2.4vw;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 2vw;
  background: linear-gradient(180deg, rgba(0,0,0,.55), transparent);
  z-index: 3;
}
.fs-back {
  width: 9vw; height: 9vw;
  max-width: 40px; max-height: 40px;
  border-radius: 50%;
  background: rgba(0,0,0,.35);
  color: #fff;
  font-size: 5vw;
  display: grid;
  place-items: center;
}
.fs-brand {
  display: flex;
  align-items: center;
  gap: 1.6vw;
  color: #fff;
  font-size: 3.2vw;
  opacity: .9;
}
.fs-brand .mark {
  width: 6.4vw; height: 6.4vw;
  border-radius: 50%;
  background: linear-gradient(135deg, #ffb347, #c62222);
}
.fs-unmute {
  border-radius: 999px;
  padding: 1.6vw 3.2vw;
  background: rgba(0,0,0,.45);
  border: 1px solid rgba(255,255,255,.25);
  color: #fff;
  font-size: 3.2vw;
  white-space: nowrap;
}
.fs-unmute.hidden { display: none; }

.fs-rail {
  position: absolute;
  right: 2.667vw;
  bottom: 28vw;
  display: flex;
  flex-direction: column;
  gap: 4.8vw;
  align-items: center;
  z-index: 4;
  transition: opacity .2s, transform .2s;
}
.fs-rail.is-hidden {
  opacity: 0;
  pointer-events: none;
  transform: translateX(8px);
}
.fs-rail .rail-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1vw;
  color: #fff;
  text-shadow: 0 1px 4px rgba(0,0,0,.6);
  min-width: 12vw;
}
.fs-rail .rail-ico {
  width: 11vw; height: 11vw;
  max-width: 48px; max-height: 48px;
  border-radius: 50%;
  background: rgba(0,0,0,.28);
  display: grid;
  place-items: center;
  font-size: 5.2vw;
  border: 1px solid rgba(255,255,255,.12);
}
.fs-rail .rail-btn.is-on .rail-ico {
  background: rgba(198,34,34,.85);
}
.fs-rail .rail-lab {
  font-size: 2.667vw;
  color: rgba(255,255,255,.92);
}

.fs-eye {
  position: absolute;
  right: 2.667vw;
  bottom: 16vw;
  z-index: 5;
  width: 11vw; height: 11vw;
  max-width: 48px; max-height: 48px;
  border-radius: 50%;
  background: rgba(0,0,0,.35);
  color: #fff;
  font-size: 5vw;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.15);
}

.fs-bottom {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: 0 3.2vw calc(2.4vw + env(safe-area-inset-bottom, 0px));
  background: linear-gradient(0deg, rgba(0,0,0,.72), transparent);
  z-index: 3;
  transition: opacity .2s;
}
.fs-bottom.is-hidden { opacity: 0; pointer-events: none; }
.fs-title-row {
  display: flex;
  align-items: center;
  gap: 1.6vw;
  color: #fff;
  font-size: 4vw;
  font-weight: 700;
  margin-bottom: 1.6vw;
}
.fs-meta-row {
  display: flex;
  align-items: center;
  gap: 2vw;
  flex-wrap: wrap;
  margin-bottom: 2.4vw;
}
.fs-ep {
  color: #fff;
  font-size: 3.2vw;
}
.fs-tag {
  font-size: 2.667vw;
  color: #fff;
  background: rgba(255,255,255,.16);
  border-radius: 1.2vw;
  padding: 0.8vw 1.6vw;
}
.fs-progress {
  display: flex;
  align-items: center;
  gap: 2vw;
  color: rgba(255,255,255,.85);
  font-size: 2.667vw;
  margin-bottom: 2.4vw;
}
.fs-progress input[type=range] {
  flex: 1;
  accent-color: #fff;
  height: 0.8vw;
}
.fs-series-bar {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: rgba(20,20,20,.95);
  border-radius: 3.2vw 3.2vw 0 0;
  padding: 3.2vw 3.733vw;
  color: #fff;
  font-size: 3.467vw;
  border: 1px solid rgba(255,255,255,.08);
  border-bottom: 0;
}

.fs-unlock {
  position: absolute;
  inset: 0;
  z-index: 6;
  background: rgba(0,0,0,.72);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 6vw;
}
.fs-unlock-card {
  width: min(86vw, 360px);
  background: #1a1a1a;
  border-radius: 3.2vw;
  padding: 5.333vw;
  text-align: center;
  color: #fff;
}
.fs-unlock-card .cost {
  font-size: 8vw;
  font-weight: 800;
  color: #c62222;
  margin: 2vw 0 4vw;
}

.sheet-mask {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.55);
  z-index: 1600;
  display: none;
  align-items: flex-end;
  justify-content: center;
}
.sheet-mask.show { display: flex; }
.sheet {
  width: min(560px, 100%);
  background: #1c1c1e;
  border-radius: 4vw 4vw 0 0;
  padding: 3.2vw 0 calc(4vw + env(safe-area-inset-bottom, 0px));
  max-height: 70vh;
  overflow: auto;
}
.sheet-handle {
  width: 10vw; height: 1vw;
  border-radius: 999px;
  background: rgba(255,255,255,.25);
  margin: 0 auto 3.2vw;
}
.sheet-title {
  color: #fff;
  font-size: 4vw;
  font-weight: 700;
  padding: 0 4.267vw 2.667vw;
}
.sheet-item {
  width: 100%;
  text-align: left;
  padding: 3.733vw 4.267vw;
  color: #fff;
  font-size: 3.733vw;
  border-top: 1px solid rgba(255,255,255,.06);
  background: transparent;
}
.sheet-item.active { color: #c62222; font-weight: 700; }
.ep-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 2.133vw;
  padding: 0 4.267vw 2vw;
}
.ep-grid .ep-chip {
  position: relative;
  background: rgba(255,255,255,.08);
  border-radius: 1.6vw;
  padding: 2.667vw 0;
  text-align: center;
  color: #fff;
  font-size: 3.467vw;
  overflow: visible;
}
.ep-grid .ep-chip.active {
  background: #c62222;
  font-weight: 700;
}
.ep-grid .ep-chip.is-vip {
  border: 1px solid rgba(232, 180, 90, 0.45);
  background: linear-gradient(160deg, rgba(40,30,16,0.95), rgba(255,255,255,0.06));
}
.ep-grid {
  overflow: visible;
  padding-top: 2vw;
}

.share-card {
  width: min(86vw, 360px);
  margin: auto;
  background: #2a2a2c;
  border-radius: 3.2vw;
  padding: 4vw;
  color: #fff;
}
.share-card .share-head {
  display: flex;
  gap: 2.4vw;
  align-items: center;
  margin-bottom: 3.2vw;
}
.share-card .share-logo {
  width: 11vw; height: 11vw;
  border-radius: 2.4vw;
  background: linear-gradient(135deg, #c62222, #ff6b4a);
}
.share-card .share-poster {
  width: 100%;
  aspect-ratio: 3/4;
  max-height: 46vh;
  object-fit: cover;
  border-radius: 2.4vw;
  background: #111;
  margin-bottom: 3.2vw;
}
.share-card .share-invite {
  display: flex;
  gap: 3.2vw;
  align-items: center;
  margin-bottom: 3.2vw;
}
.share-card .qr-box {
  width: 22vw; height: 22vw;
  background: #fff;
  border-radius: 1.6vw;
  display: grid;
  place-items: center;
  color: #111;
  font-size: 2.4vw;
  text-align: center;
  padding: 1vw;
}
.share-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2.133vw;
}
.share-actions .btn { padding: 3.2vw; border-radius: 999px; }
.share-actions .btn-primary { background: #c62222; }

.btn-vip {
  background: linear-gradient(135deg, #e8b45a 0%, #c4892d 55%, #a66b1a 100%);
  color: #1a1208;
  font-weight: 800;
}
.btn-ghost-light {
  background: rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.85);
  border: 1px solid rgba(255,255,255,0.12);
}
.unlock-head {
  font-size: 4.8vw;
  font-weight: 800;
  letter-spacing: 0.02em;
  margin-bottom: 2vw;
}
.unlock-pts {
  color: rgba(255,255,255,0.65);
  font-size: 3.467vw;
  margin-bottom: 4.267vw;
}
.unlock-pts b { color: #ff5a5a; font-size: 4.267vw; }
.unlock-box .unlock-main,
.fs-unlock-card .unlock-main { margin-bottom: 2.667vw; }
.unlock-box .btn-block + .btn-block,
.fs-unlock-card .btn-block + .btn-block { margin-top: 2.133vw; }
.fs-unlock-card .unlock-head { font-size: 5.333vw; }
.fs-unlock-card {
  background: linear-gradient(180deg, #242018 0%, #141414 48%, #101010 100%);
  border: 1px solid rgba(232, 180, 90, 0.28);
  box-shadow: 0 12px 40px rgba(0,0,0,.45);
}
.fs-unlock-card .cost { display: none; }
.modal-tip {
  color: rgba(255,255,255,0.7);
  font-size: 3.467vw;
  line-height: 1.55;
  margin: 0 0 4vw;
}
.modal-actions-col {
  display: grid;
  gap: 2.133vw;
}
.modal-actions-col .btn { width: 100%; padding: 3.2vw; border-radius: 999px; }

.shop-page, .invite-page {
  padding-bottom: calc(6vw + var(--safe-b));
  min-height: 100%;
  overflow: auto;
  background:
    radial-gradient(120% 60% at 50% -10%, rgba(198,34,34,0.28), transparent 55%),
    radial-gradient(80% 40% at 100% 20%, rgba(232,180,90,0.12), transparent 50%),
    #000;
}
.shop-hero, .invite-hero {
  margin: 0 4.267vw 4vw;
  padding: 5.333vw 4.267vw;
  border-radius: 3.2vw;
  background: linear-gradient(145deg, #2a1818 0%, #151010 55%, #0c0c0c 100%);
  border: 1px solid rgba(255,255,255,0.06);
}
.shop-hero-lab, .invite-badge {
  font-size: 3.2vw;
  color: rgba(255,255,255,0.55);
  letter-spacing: 0.08em;
}
.shop-hero-val {
  margin-top: 1.6vw;
  font-size: 11vw;
  font-weight: 800;
  line-height: 1;
  color: #fff;
  background: linear-gradient(90deg, #fff, #ffb4b4);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.shop-hero-sub, .invite-sub {
  margin-top: 2.4vw;
  font-size: 3.2vw;
  color: rgba(255,255,255,0.55);
  line-height: 1.45;
}
.shop-sec { padding: 0 4.267vw 4vw; }
.shop-sec-t {
  font-size: 3.733vw;
  font-weight: 700;
  margin-bottom: 2.667vw;
  color: rgba(255,255,255,0.9);
}
.pkg-grid, .vip-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2.667vw;
}
.pkg-card, .vip-card {
  position: relative;
  text-align: left;
  padding: 4vw 3.2vw;
  border-radius: 2.667vw;
  background: #141414;
  border: 1px solid rgba(255,255,255,0.06);
  color: #fff;
  overflow: hidden;
}
.pkg-card.is-hot, .vip-card {
  border-color: rgba(232,180,90,0.35);
  background: linear-gradient(160deg, #241c12 0%, #141414 70%);
}
.pkg-tag {
  position: absolute;
  top: 0; right: 0;
  background: #c62222;
  color: #fff;
  font-size: 2.667vw;
  font-weight: 700;
  padding: 1vw 2.4vw;
  border-radius: 0 2.667vw 0 2vw;
}
.pkg-pts, .vip-card-t { font-size: 3.733vw; font-weight: 800; }
.pkg-price, .vip-card-p {
  margin-top: 1.6vw;
  font-size: 3.2vw;
  color: #e8b45a;
}
.vip-card-cta {
  margin-top: 2.4vw;
  display: inline-block;
  padding: 1.2vw 3.2vw;
  border-radius: 999px;
  background: linear-gradient(135deg, #e8b45a, #c4892d);
  color: #1a1208;
  font-size: 2.933vw;
  font-weight: 800;
}
.shop-empty {
  padding: 4vw;
  text-align: center;
  color: rgba(255,255,255,0.5);
  font-size: 3.2vw;
  line-height: 1.5;
  background: #141414;
  border-radius: 2.4vw;
  margin-bottom: 2.667vw;
}
.market-pick { max-height: 50vh; overflow: auto; display: grid; gap: 2vw; }
.market-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 3.2vw;
  border-radius: 2vw;
  background: #1a1a1a;
  color: #fff;
  font-size: 3.467vw;
}
.market-row .price { color: #e8b45a; font-weight: 700; }

.invite-title {
  margin-top: 2vw;
  font-size: 5.867vw;
  font-weight: 800;
  letter-spacing: 0.02em;
}
.invite-code-box, .invite-link-box {
  margin-top: 4vw;
  padding: 3.733vw;
  border-radius: 2.667vw;
  background: rgba(0,0,0,0.35);
  border: 1px dashed rgba(232,180,90,0.35);
}
.invite-code-box .lab, .invite-link-box .lab {
  font-size: 3.2vw;
  color: rgba(255,255,255,0.5);
}
.invite-code-box .code {
  margin: 2vw 0 3.2vw;
  font-size: 9.6vw;
  font-weight: 800;
  letter-spacing: 0.18em;
  color: #e8b45a;
  text-align: center;
}
.invite-link-box .link {
  margin: 2vw 0 3.2vw;
  font-size: 3.2vw;
  word-break: break-all;
  color: rgba(255,255,255,0.75);
  line-height: 1.45;
}
.inv-list { display: grid; gap: 0; }
.inv-row {
  display: flex;
  justify-content: space-between;
  gap: 3vw;
  padding: 3.467vw 0;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  font-size: 3.467vw;
}
.inv-row .muted { color: rgba(255,255,255,0.4); font-size: 3.2vw; }

.perm-page {
  padding-bottom: calc(6vw + var(--safe-b));
  min-height: 100%;
  overflow: auto;
  background:
    radial-gradient(120% 55% at 50% -8%, rgba(232,180,90,0.22), transparent 55%),
    radial-gradient(70% 40% at 0% 30%, rgba(198,34,34,0.18), transparent 50%),
    #000;
}
.perm-hero {
  margin: 0 4.267vw 4vw;
  padding: 5.333vw 4.267vw;
  border-radius: 3.2vw;
  background: linear-gradient(145deg, #2a2214 0%, #16120c 55%, #0c0c0c 100%);
  border: 1px solid rgba(232,180,90,0.28);
}
.perm-hero-lab {
  font-size: 3.2vw;
  color: #e8b45a;
  letter-spacing: 0.12em;
  font-weight: 700;
}
.perm-hero-t {
  margin-top: 2vw;
  font-size: 5.867vw;
  font-weight: 800;
}
.perm-hero-sub {
  margin-top: 2vw;
  font-size: 3.2vw;
  color: rgba(255,255,255,0.55);
  line-height: 1.45;
}
.perm-bal {
  margin-top: 3.2vw;
  font-size: 3.467vw;
  color: rgba(255,255,255,0.7);
}
.perm-bal b { color: #ff6b6b; font-size: 4.267vw; }
#permBrowse, #permElite {
  display: grid;
  gap: 2.667vw;
}
.perm-card {
  position: relative;
  text-align: left;
  padding: 4.267vw 3.733vw;
  border-radius: 2.667vw;
  background: #141414;
  border: 1px solid rgba(255,255,255,0.06);
  color: #fff;
  overflow: hidden;
}
.perm-card.is-hot {
  border-color: rgba(232,180,90,0.4);
  background: linear-gradient(160deg, #2a2010 0%, #141414 70%);
}
.perm-card-t { font-size: 4vw; font-weight: 800; }
.perm-card-d {
  margin-top: 1.2vw;
  font-size: 3.2vw;
  color: rgba(255,255,255,0.5);
  line-height: 1.4;
}
.perm-card-p {
  margin-top: 2.4vw;
  font-size: 3.733vw;
  font-weight: 700;
  color: #e8b45a;
}
.perm-card-cta {
  margin-top: 2.667vw;
  display: inline-block;
  padding: 1.6vw 4vw;
  border-radius: 999px;
  background: linear-gradient(135deg, #e8b45a, #c4892d);
  color: #1a1208;
  font-size: 3.2vw;
  font-weight: 800;
}
