/* ============================================================
   css/chat/chat-game-hub.css — 游戏中心
   韩系法式花艺 · 暖米纸底 · 玫瑰金装饰 · 衬线花字
   参考TRPG小窝精致层次：Hero花字区 + 分区标题金线 + 双层阴影卡片
   完全融入主设计系统，跟随 [data-theme-mode] 深浅切换
   ============================================================ */

/* ================================================================
   PHASE 0: 共享基础组件 — 所有游戏复用
   ================================================================ */

/* ---- 统一游戏顶栏 ---- */
.game-topbar {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  flex-shrink: 0;
  padding: 10px 14px;
  /* ★ iOS 刘海（2028 实锤，长期规则 #65）：子游戏顶栏是全屏游戏层里最顶的元素，
     必须自己让出安全区，否则被状态栏/刘海盖住、右上角按钮点不到（安卓 env=0 零影响）。 */
  padding-top: calc(10px + env(safe-area-inset-top, 0px));
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}
.game-topbar .game-back,
.game-back {
  width: 34px; height: 34px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  border: 1px solid var(--gold-light);
  color: var(--text-secondary);
  background: var(--surface-solid);
  transition: all 0.18s ease;
  flex-shrink: 0;
}
.game-topbar .game-back:hover,
.game-back:hover {
  color: var(--rose);
  border-color: var(--rose);
  background: var(--rose-light);
  transform: scale(1.05);
}
.game-topbar .game-back:active,
.game-back:active { transform: scale(0.94); }
.game-topbar .game-title-wrap {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
}
.game-topbar .game-title-cn {
  font-family: var(--font-reading);
  font-size: 17px; font-weight: 600;
  letter-spacing: 2px;
  color: var(--text-primary);
  line-height: 1.15;
}
.game-topbar .game-title-en {
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--gold, #C4A86A);
  opacity: 0.75;
}
.game-topbar .game-spacer { width: 34px; flex-shrink: 0; }

/* ---- 共享分区标题（仿TRPG .tgp-sec） ---- */
.game-sec-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 10px;
}
.game-sec-zh {
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 1.5px;
  color: var(--text-primary);
  flex-shrink: 0;
}
.game-sec-en {
  font-family: var(--font-decorative);
  font-style: italic;
  font-size: 11px;
  letter-spacing: 1px;
  color: var(--gold, #C4A86A);
  opacity: 0.7;
  flex-shrink: 0;
}
.game-sec-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, rgba(196,168,106,0.25), transparent);
  align-self: center;
}

/* ---- 统一游戏分区卡片 ---- */
.game-section-card {
  background: var(--surface-solid);
  border: 1px solid var(--gold-light);
  border-radius: var(--radius-lg, 14px);
  padding: var(--space-lg, 16px);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.55) inset,
    var(--shadow-xs),
    var(--shadow-sm);
  position: relative;
  transition: border-color 0.3s ease;
}
.game-section-card::before {
  content: '';
  position: absolute;
  inset: 5px;
  border: 0.5px solid rgba(196,168,106,0.1);
  border-radius: calc(var(--radius-lg, 14px) - 5px);
  pointer-events: none;
}
[data-theme-mode="dark"] .game-section-card {
  box-shadow:
    0 1px 0 rgba(255,255,255,0.03) inset,
    var(--shadow-xs),
    var(--shadow-sm);
}
[data-theme-mode="dark"] .game-section-card::before {
  border-color: rgba(196,168,106,0.05);
}

/* ---- 渐变金线分隔 ---- */
.game-divider {
  height: 1px;
  margin: var(--space-md, 12px) var(--space-sm, 8px);
  background: linear-gradient(90deg, transparent, rgba(196,168,106,0.22), transparent);
}

/* ---- 棋盘外框 ---- */
.pk-board-frame {
  display: flex;
  justify-content: center;
  align-items: center;
  flex: 1;
  overflow: auto;
  padding: var(--space-md);
  background: var(--surface-solid);
  border: 1.5px solid var(--gold-light);
  border-radius: var(--radius-lg);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.55) inset,
    var(--shadow-xs),
    var(--shadow-sm);
  position: relative;
}
.pk-board-frame::before {
  content: '';
  position: absolute;
  inset: 6px;
  border: 0.5px solid rgba(196,168,106,0.1);
  border-radius: calc(var(--radius-lg, 14px) - 6px);
  pointer-events: none;
}
[data-theme-mode="dark"] .pk-board-frame {
  box-shadow:
    0 1px 0 rgba(255,255,255,0.03) inset,
    var(--shadow-xs),
    var(--shadow-sm);
}
.pk-board-frame canvas {
  border-radius: 8px;
  cursor: pointer;
  max-width: 100%;
  height: auto;
}

/* ---- 棋盘状态文字 ---- */
.pk-board-status {
  text-align: center;
  padding: 10px 0 4px;
  font-family: var(--font-reading);
  font-size: 12px;
  color: var(--text-secondary);
  letter-spacing: 1px;
  flex-shrink: 0;
}

/* ---- 通用弹出sheet（二级框） ---- */
.game-sheet-overlay {
  position: absolute;
  inset: 0;
  z-index: 200;
  background: rgba(30,26,24,0.30);
  display: flex;
  align-items: flex-end;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.28s cubic-bezier(0.22,0.61,0.36,1);
}
.game-sheet-overlay.open {
  opacity: 1;
  pointer-events: auto;
}
.game-sheet {
  width: 100%;
  max-width: 480px;
  max-height: 70vh;
  background: var(--surface-solid);
  border-radius: 18px 18px 0 0;
  box-shadow: var(--shadow-lg);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  transform: translateY(40px);
  transition: transform 0.28s cubic-bezier(0.22,0.61,0.36,1);
  padding: 20px 16px calc(20px + env(safe-area-inset-bottom, 0px));
}
.game-sheet-overlay.open .game-sheet {
  transform: translateY(0);
}
.game-sheet-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--gold-light);
}
.game-sheet-title {
  font-family: var(--font-decorative);
  font-size: 17px;
  font-style: italic;
  font-weight: 500;
  letter-spacing: 2px;
  color: var(--text-primary);
}
.game-sheet-en {
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--gold, #C4A86A);
  opacity: 0.7;
}
.game-sheet-close {
  margin-left: auto;
  width: 30px; height: 30px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: transparent;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  color: var(--text-secondary);
  transition: all 0.15s ease;
  flex-shrink: 0;
}
.game-sheet-close:hover {
  color: var(--rose);
  border-color: var(--rose);
  background: var(--rose-light);
}
.game-sheet-close:active { transform: scale(0.92); }

/* ---- 共享按钮体系 ---- */
.game-btn {
  padding: 10px 22px; border-radius: 22px; cursor: pointer;
  font-family: var(--font-reading); font-size: 13px; font-weight: 500;
  letter-spacing: 0.5px; transition: all 0.2s ease;
  border: none; box-shadow: none; background: transparent;
}
.game-btn:active { transform: scale(0.96); }
.game-btn.primary {
  border: none; background: var(--rose); color: #fff;
  box-shadow: 0 1px 0 rgba(255,255,255,0.25) inset, var(--shadow-sm), 0 4px 16px rgba(200,160,160,0.25);
}
.game-btn.primary:hover { transform: translateY(-1px); background: var(--rose-hover);
  box-shadow: 0 1px 0 rgba(255,255,255,0.25) inset, var(--shadow-md), 0 6px 24px rgba(200,160,160,0.35); }
.game-btn.secondary {
  border: 1px solid var(--border); color: var(--text-secondary); background: transparent;
}
.game-btn.secondary:hover { border-color: var(--text-muted); color: var(--text-primary); }
.game-btn.ghost {
  border: 1px solid var(--gold-light); background: var(--gold-light);
  color: var(--gold-dark, #A89050);
}
.game-btn.ghost:hover { background: rgba(196,168,106,0.25); transform: translateY(-1px); }
.game-btn.rose {
  border: 1px solid var(--rose); color: var(--rose); background: transparent;
}
.game-btn.rose:hover { background: var(--rose-light); transform: translateY(-1px); }

/* ---- 共享 Chip 体系 ---- */
.game-chip {
  display: inline-flex; align-items: center;
  padding: 5px 14px; border-radius: 16px;
  border: 1px solid var(--border); background: rgba(255,255,255,0.4);
  cursor: pointer; font-family: var(--font-reading); font-size: 12px;
  color: var(--text-secondary); letter-spacing: 0.5px;
  transition: all 0.2s ease; box-shadow: 0 1px 0 rgba(255,255,255,0.3) inset;
}
.game-chip:hover { border-color: var(--rose); color: var(--rose); background: var(--rose-light); transform: translateY(-1px); }
.game-chip.on {
  border-color: var(--rose); background: var(--rose); color: #fff;
  font-weight: 500; box-shadow: 0 1px 0 rgba(255,255,255,0.2) inset, 0 2px 10px rgba(201,168,168,0.3);
}
.game-chip:active { transform: scale(0.95); }
[data-theme-mode="dark"] .game-chip { background: rgba(255,255,255,0.04); }

/* ---- 共享 Tab 体系 ---- */
.game-tab-bar {
  display: flex; gap: 4px; padding: 8px 12px;
  border-bottom: 1px solid var(--border); background: var(--surface);
  overflow-x: auto; -webkit-overflow-scrolling: touch; flex-shrink: 0;
}
.game-tab {
  padding: 6px 14px; border-radius: 18px;
  border: 1px solid var(--border); background: transparent;
  cursor: pointer; font-size: 12px; font-family: var(--font-reading);
  color: var(--text-secondary); white-space: nowrap; flex-shrink: 0;
  transition: all 0.2s ease;
}
.game-tab:hover { border-color: var(--rose); color: var(--rose); }
.game-tab.on { background: var(--rose); color: #fff; border-color: var(--rose); box-shadow: var(--shadow-glow); }

/* ---- 空状态 ---- */
.game-empty-state {
  text-align: center; padding: 60px 20px;
}
.game-empty-state .en-label {
  font-family: var(--font-decorative); font-size: 18px; font-style: italic;
  color: var(--text-muted); opacity: 0.35; margin-bottom: 8px; display: block; letter-spacing: 1px;
}
.game-empty-state .cn-label {
  font-size: 12px; color: var(--text-muted); opacity: 0.45; letter-spacing: 1px;
}

/* ================================================================
   游戏中心 Overlay
   ================================================================ */
.game-hub-overlay {
  position: fixed;
  top: 0; bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  height: 100vh;               /* ★ 撑满视口：flex 列容器若不设高度/list 无 min-height 会被内容撑出/挤压 */
  height: 100dvh;              /* ★ iOS 视口 bug：100vh 会算进地址栏/底部横条高度，把游戏最底部按钮挤出屏外；
                                  100dvh=当前可视高度，动态跟随，五子棋/围棋底部按钮不再被吞（安卓/旧浏览器忽略此行回落 100vh） */
  max-width: 480px;
  z-index: 400;
  background:
    radial-gradient(ellipse 90% 38% at 50% -4%, rgba(201,168,168,0.13), transparent 58%),
    radial-gradient(ellipse 50% 28% at 85% 105%, rgba(184,168,196,0.08), transparent 55%),
    linear-gradient(180deg, var(--bg-primary), var(--bg-chat));
  display: none;
  flex-direction: column;
  color: var(--text-primary);
}
.game-hub-overlay.open { display: flex; }

/* ★ 进入具体小游戏时，把游戏中心底色压成跟随主题（浅色游戏不再闪黑底）；
   只有真正的暗色游戏(塔罗)用 .tarot-active 单独压回暗色 → 屏幕放大缩小动画不漏白底/不漏黑底（甲方实锤） */
.game-hub-overlay.in-game {
  background:
    radial-gradient(ellipse 90% 38% at 50% -4%, var(--rose-light, rgba(201,168,168,0.13)), transparent 58%),
    radial-gradient(ellipse 50% 28% at 85% 105%, rgba(184,168,196,0.08), transparent 55%),
    linear-gradient(180deg, var(--bg-primary), var(--bg-chat));
}
.game-hub-overlay.in-game.tarot-active {
  background:
    radial-gradient(130% 60% at 50% 0%, rgba(150,120,180,0.16), transparent 55%),
    radial-gradient(100% 100% at 50% 100%, rgba(120,100,150,0.12), transparent 50%),
    linear-gradient(180deg, #14101E, #1C1728);
}

/* 顶部装饰光池 */
.game-hub-overlay::before {
  content: '';
  position: absolute;
  top: -20px; left: 50%;
  transform: translateX(-50%);
  width: 340px; height: 220px;
  background: radial-gradient(ellipse, rgba(200,170,160,0.09), transparent 70%);
  pointer-events: none;
  z-index: 0;
}

/* ---- 顶栏 ---- */
.game-hub-topbar {
  display: grid;
  grid-template-columns: 40px 1fr 40px;
  align-items: center;
  padding: 10px 14px;
  padding-top: calc(10px + env(safe-area-inset-top, 0px));
  flex-shrink: 0;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  position: relative;
  z-index: 1;
}
.game-hub-topbar .collapse-icon-btn {
  width: 38px; height: 38px;
  margin-left: -2px;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
  color: var(--text-secondary);
  display: flex; align-items: center; justify-content: center;
  padding: 0; line-height: 1;
  transition: all 0.18s ease;
}
.game-hub-topbar .collapse-icon-btn:hover {
  color: var(--rose);
  border-color: var(--rose);
  background: var(--rose-light);
  transform: scale(1.05);
}
.game-hub-topbar .collapse-icon-btn:active { transform: scale(0.94); }

/* ★ 进入具体小游戏时隐藏「游戏 Games」顶栏（游戏列表页保留它）；
   子游戏自带暗色顶栏成为唯一顶栏，避免两张顶栏叠着又发白 */
.game-hub-overlay.in-game .game-hub-topbar { display: none; }

.game-hub-title-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
}
.game-hub-title {
  font-family: var(--font-reading);
  font-size: 19px; font-weight: 600;
  letter-spacing: 4px;
  color: var(--rose);
}
.game-hub-subtitle {
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 5px;
  text-transform: uppercase;
  color: var(--gold, #C4A86A);
  opacity: 0.7;
}

/* ---- Hero区（仿TRPG lobby） ---- */
.game-hub-hero {
  text-align: center;
  padding: 28px 20px 18px;
  flex-shrink: 0;
  position: relative;
  z-index: 1;
}
.game-hub-hero-script {
  font-family: var(--font-handwriting, 'Great Vibes', cursive);
  font-size: 26px;
  color: var(--rose);
  opacity: 0.85;
  line-height: 1.2;
}
.game-hub-hero-zh {
  margin-top: 4px;
  font-size: 12px;
  letter-spacing: 2px;
  color: var(--text-secondary);
}

/* ---- 游戏列表 ---- */
.game-hub-list {
  flex: 1;
  min-height: 0;               /* ★ 必修：flex 子项默认 min-height:auto 导致列表撑不出滚动、卡片被压缩 */
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 6px 16px calc(24px + env(safe-area-inset-bottom, 0px));
  display: flex;
  flex-direction: column;
  gap: 12px;
  position: relative;
  z-index: 1;
}

/* 游戏卡（跑团）的「暂锁」角标：贴卡右上角，避开箭头/装饰内框 */
.game-card .il-lock-badge { top: 10px; right: 10px; }

/* ---- 游戏卡片（完全仿TRPG .trpg-choice） ---- */
.game-card {
  position: relative;
  flex-shrink: 0;              /* ★ 必修：flex 列子项默认 flex-shrink:1 会被压扁（上下很窄/字叠） */
  border-radius: var(--radius-lg, 14px);
  padding: 20px 18px;
  cursor: pointer;
  background: var(--surface-solid);
  border: 1px solid var(--gold-light);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.6) inset,
    var(--shadow-xs),
    var(--shadow-sm);
  transition: all 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
  overflow: hidden;
  display: flex;
  align-items: center;
  gap: 14px;
}
.game-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(150% 80% at 50% 0%, var(--rose-light, rgba(201,168,168,0.1)), transparent 60%);
  pointer-events: none;
  transition: opacity 0.35s ease;
  opacity: 0;
}
.game-card::after {
  content: '';
  position: absolute;
  inset: 5px;
  border: 0.5px solid rgba(196,168,106,0.1);
  border-radius: calc(var(--radius-lg, 14px) - 5px);
  pointer-events: none;
}
.game-card:hover, .game-card:active {
  border-color: var(--rose);
  background: var(--surface-solid);
  transform: translateY(-3px);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.6) inset,
    var(--shadow-sm),
    var(--shadow-md),
    var(--shadow-glow);
}
.game-card:hover::before { opacity: 1; }
.game-card:active { transform: scale(0.97); }

/* 图标区 */
.game-card-icon {
  width: 56px; height: 56px;
  border-radius: 50%;
  background: var(--rose-light, rgba(201,168,168,0.12));
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  box-shadow:
    0 1px 0 rgba(255,255,255,0.45) inset,
    0 2px 8px rgba(201,168,168,0.1);
  transition: all 0.3s ease;
}
.game-card:hover .game-card-icon {
  transform: scale(1.08);
  background: rgba(201,168,168,0.2);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.45) inset,
    0 4px 16px rgba(201,168,168,0.2);
}
.game-card-icon svg {
  width: 26px; height: 26px;
  stroke: var(--rose);
  fill: none;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* 信息区 */
.game-card-info { flex: 1; min-width: 0; }
.game-card-name {
  font-family: var(--font-reading);
  font-size: 17px; font-weight: 600;
  letter-spacing: 2px;
  color: var(--text-primary);
  margin-bottom: 2px;
}
.game-card-name-en {
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--gold, #C4A86A);
  opacity: 0.65;
  margin-bottom: 6px;
}
.game-card-desc {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.6;
  letter-spacing: 0.3px;
}

/* 右侧箭头 — CSS SVG线条图标 */
.game-card-arrow {
  flex-shrink: 0;
  width: 28px; height: 28px;
  display: flex; align-items: center; justify-content: center;
  color: var(--text-muted);
  transition: all 0.3s ease;
}
.game-card-arrow svg {
  width: 18px; height: 18px;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.game-card:hover .game-card-arrow {
  color: var(--rose);
  transform: translateX(4px);
}

/* ---- 游戏容器（内嵌游戏） ---- */
#game-container {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  position: relative;
}

/* ================================================================
   游戏结果卡片（聊天气泡内）— 暖米/奶油纸底 · 金色装饰 · 衬线花字
   ================================================================ */
.bubble.game-result-bubble {
  background: transparent !important;
  box-shadow: none !important;
  border: none !important;
  padding: 0 !important;
  max-width: 280px !important;
}
.game-result-card {
  max-width: 260px;
  border-radius: 14px;
  overflow: hidden;
  background: linear-gradient(180deg, var(--surface-solid), var(--bg-chat) 60%, var(--bg-primary));
  border: 1.5px solid var(--gold-light);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.7) inset,
    var(--shadow-sm),
    var(--shadow-md);
  color: var(--text-primary);
  font-family: var(--font-reading);
}
.gr-header {
  text-align: center;
  padding: 18px 16px 10px;
}
.gr-title {
  font-family: var(--font-decorative);
  font-size: 20px;
  font-style: italic;
  letter-spacing: 3px;
  background: linear-gradient(175deg, var(--rose), var(--gold));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
.gr-sub {
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 5px;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-top: 3px;
}
.gr-divider {
  height: 1px;
  margin: 0 14px;
  background: linear-gradient(90deg, transparent, var(--gold-light), transparent);
}
.gr-list {
  padding: 10px 18px;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.gr-row {
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-size: 13px;
  line-height: 1.5;
}
.gr-dim {
  flex: 0 0 auto;
  min-width: 32px;
  font-weight: 600;
  color: var(--rose);
  font-size: 12px;
  font-family: var(--font-reading);
  font-style: italic;
}
.gr-val {
  color: var(--text-primary);
  font-weight: 500;
}
.gr-row.gr-gore .gr-dim,
.gr-row.gr-gore .gr-val {
  color: var(--danger);
}
.gr-footer {
  text-align: center;
  padding: 8px 16px 14px;
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--text-muted);
}

/* ================================================================
   灵感生成器专属浪漫泡泡卡 — Inspiro Sweet Card
   ================================================================ */
.bubble.inspiro-result-bubble {
  background: transparent !important;
  box-shadow: none !important;
  border: none !important;
  padding: 0 !important;
  max-width: 290px !important;
}
.inspiro-sweet-card {
  max-width: 270px;
  border-radius: 16px;
  overflow: hidden;
  background: linear-gradient(175deg, var(--surface-solid), var(--bg-chat) 40%, var(--bg-primary));
  border: 1.5px solid var(--gold-light);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.8) inset,
    var(--shadow-sm),
    0 0 40px rgba(200,160,160,0.10);
  position: relative;
}
.inspiro-sweet-card::before {
  content: '';
  position: absolute;
  inset: 6px;
  border: 0.5px solid rgba(196,168,106,0.18);
  border-radius: 12px;
  pointer-events: none;
}
.inspiro-sweet-card::after {
  content: '';
  position: absolute;
  top: 12px; right: 14px;
  width: 6px; height: 6px;
  border: 1px solid var(--gold);
  border-radius: 50%;
  opacity: 0.4;
  pointer-events: none;
}
.is-header {
  text-align: center;
  padding: 20px 18px 8px;
}
.is-title {
  font-family: var(--font-decorative);
  font-size: 18px;
  font-style: italic;
  font-weight: 500;
  letter-spacing: 2.5px;
  background: linear-gradient(160deg, var(--rose) 20%, var(--gold) 70%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
.is-sub {
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 5px;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-top: 2px;
}
.is-divider {
  height: 1px;
  margin: 4px 20px;
  background: linear-gradient(90deg, transparent, rgba(196,168,106,0.3), transparent);
}
.is-words {
  padding: 10px 20px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: center;
}
.is-word {
  display: inline-block;
  padding: 3px 12px;
  border: 1px solid rgba(196,168,106,0.35);
  border-radius: 20px;
  font-size: 13px;
  color: var(--text-primary);
  background: rgba(255,255,255,0.45);
  font-family: var(--font-reading);
  letter-spacing: 0.5px;
  transition: all 0.2s ease;
}
.is-word:hover {
  border-color: var(--rose);
  background: var(--rose-light, rgba(201,168,168,0.12));
}
.is-footer {
  text-align: center;
  padding: 6px 18px 16px;
}
.is-signature {
  font-family: var(--font-handwriting, 'Great Vibes', cursive);
  font-size: 18px;
  color: var(--rose);
  transform: rotate(-2deg);
  display: inline-block;
  letter-spacing: 1px;
}
.is-note {
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-top: 2px;
}
.is-response-text {
  padding: 8px 18px;
  font-size: 13px;
  line-height: 1.8;
  color: var(--text-primary);
  font-family: var(--font-reading);
  letter-spacing: 0.3px;
  text-align: center;
}
.is-response-text br + br { display: none; }

/* ================================================================
   灵感画笺 / 随机出游 · 「求帮选」卡（候选做成小标签）
   ================================================================ */
.bubble.inspiro-airoll-bubble,
.bubble.outing-airoll-bubble {
  background: transparent !important;
  box-shadow: none !important;
  border: none !important;
  padding: 0 !important;
  max-width: 290px !important;
}
.inspiro-ai-pick-card,
.outing-ai-pick-card {
  max-width: 284px;
  width: 100%;
  box-sizing: border-box;
  border-radius: 16px;
  overflow: hidden;
  background: linear-gradient(175deg, var(--surface-solid), var(--bg-chat) 40%, var(--bg-primary));
  border: 1.5px solid var(--gold-light);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.8) inset,
    var(--shadow-sm),
    0 0 40px rgba(200,160,160,0.10);
  color: var(--text-primary);
  font-family: var(--font-reading);
  position: relative;
}
.iap-head { text-align: center; padding: 18px 16px 5px; }
.iap-title {
  font-family: var(--font-decorative);
  font-size: 18px;
  font-style: italic;
  font-weight: 500;
  letter-spacing: 2.5px;
  color: var(--rose);
}
.iap-en {
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 5px;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-top: 2px;
}
.iap-divider {
  height: 1px;
  margin: 4px 20px;
  background: linear-gradient(90deg, transparent, rgba(196,168,106,0.3), transparent);
}
.iap-sets { padding: 8px 16px; display: flex; flex-direction: column; gap: 10px; }
.iap-set { display: flex; flex-direction: column; gap: 5px; }
.iap-set-label {
  font-family: var(--font-reading);
  font-size: 10px;
  letter-spacing: 3px;
  color: var(--rose);
  opacity: 0.85;
}
.iap-set-words { display: flex; flex-wrap: wrap; gap: 5px; }
.iap-word {
  display: inline-block;
  padding: 2px 9px;
  border: 1px solid rgba(196,168,106,0.35);
  border-radius: 13px;
  font-size: 11px;
  color: var(--text-primary);
  background: rgba(255,255,255,0.45);
  font-family: var(--font-reading);
  letter-spacing: 0.5px;
}
.iap-note {
  text-align: center;
  padding: 8px 18px 14px;
  font-size: 11px;
  color: var(--text-muted);
  letter-spacing: 0.3px;
}

/* ================================================================
   PK结果泡泡卡
   ================================================================ */
.bubble.pk-result-bubble {
  background: transparent !important;
  box-shadow: none !important;
  border: none !important;
  padding: 0 !important;
  max-width: 280px !important;
}
.pk-result-card {
  max-width: 260px;
  border-radius: 14px;
  overflow: hidden;
  background: linear-gradient(180deg, var(--surface-solid), var(--bg-chat) 60%, var(--bg-primary));
  border: 1.5px solid var(--gold-light);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.7) inset,
    var(--shadow-sm),
    var(--shadow-md);
}
.pk-result-header {
  text-align: center;
  padding: 16px 16px 6px;
}
.pk-result-title {
  font-family: var(--font-decorative);
  font-size: 17px;
  font-style: italic;
  font-weight: 500;
  letter-spacing: 2px;
  color: var(--text-primary);
}
.pk-result-stats {
  display: flex;
  justify-content: center;
  gap: 20px;
  padding: 8px 16px 4px;
  font-size: 11px;
  color: var(--text-secondary);
  font-family: var(--font-reading);
}
.pk-result-stats .pk-stat-num {
  font-family: var(--font-decorative);
  font-size: 18px;
  font-style: italic;
  color: var(--rose);
  font-weight: 600;
  margin: 0 3px;
}
.pk-result-stats .pk-stat-label {
  font-size: 10px;
  letter-spacing: 1.5px;
  color: var(--text-muted);
}
.pk-divider {
  height: 1px;
  margin: 8px 16px;
  background: linear-gradient(90deg, transparent, var(--gold-light), transparent);
}
.pk-rounds {
  padding: 4px 18px 12px;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.pk-round-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
}
.pk-round-num {
  font-family: var(--font-decorative);
  font-size: 11px;
  font-style: italic;
  color: var(--text-muted);
  min-width: 16px;
}
.pk-round-user { color: var(--text-primary); }
.pk-round-vs {
  color: var(--text-muted);
  font-size: 10px;
  margin: 0 2px;
}
.pk-round-ai { color: var(--rose); }
.pk-round-result {
  margin-left: auto;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1px;
}
.pk-round-result.win { color: var(--sage); }
.pk-round-result.lose { color: var(--text-muted); }
.pk-round-result.draw { color: var(--lavender); }
.pk-result-footer {
  text-align: center;
  padding: 6px 16px 14px;
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--text-muted);
}

/* ================================================================
   随机出游泡泡卡 — Outing Sweet Card
   ================================================================ */
.bubble.outing-result-bubble {
  background: transparent !important;
  box-shadow: none !important;
  border: none !important;
  padding: 0 !important;
  max-width: 290px !important;
}
.outing-sweet-card {
  max-width: 270px;
  border-radius: 16px;
  overflow: hidden;
  background: linear-gradient(175deg, var(--surface-solid), var(--bg-chat) 40%, var(--bg-primary));
  border: 1.5px solid var(--gold-light);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.8) inset,
    var(--shadow-sm),
    0 0 40px rgba(200,160,160,0.10);
  position: relative;
}
.outing-sweet-card::before {
  content: ''; position: absolute; inset: 6px;
  border: 0.5px solid rgba(196,168,106,0.18); border-radius: 12px; pointer-events: none;
}
.outing-sweet-card::after {
  content: '';
  position: absolute; top: 12px; right: 14px;
  width: 6px; height: 6px;
  border: 1px solid var(--gold);
  border-radius: 50%;
  opacity: 0.4;
  pointer-events: none;
}
.oc-header { text-align: center; padding: 20px 18px 8px; }
.oc-title {
  font-family: var(--font-decorative); font-size: 18px; font-style: italic; font-weight: 500;
  letter-spacing: 2.5px;
  background: linear-gradient(160deg, var(--rose) 20%, var(--gold) 70%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
}
.oc-sub {
  font-family: var(--font-reading); font-size: 9px; letter-spacing: 5px;
  text-transform: uppercase; color: var(--text-muted); margin-top: 2px;
}
.oc-when {
  margin-top: 8px; font-family: var(--font-reading); font-size: 10px;
  letter-spacing: 1px; color: var(--text-secondary);
}
.oc-when::before {
  content: ''; display: inline-block; width: 12px; height: 12px; vertical-align: -2px;
  margin-right: 5px; border-radius: 50%;
  border: 1px solid var(--gold); opacity: 0.7;
}
.oc-divider {
  height: 1px; margin: 4px 20px;
  background: linear-gradient(90deg, transparent, rgba(196,168,106,0.3), transparent);
}
.oc-section { padding: 6px 18px; }
.oc-label {
  font-size: 11px; color: var(--text-muted); font-family: var(--font-reading);
  letter-spacing: 2px; margin-bottom: 4px;
}
.oc-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.oc-chip {
  display: inline-block; padding: 2px 10px;
  border-radius: 14px; font-size: 11px; font-family: var(--font-reading);
  letter-spacing: 0.5px; line-height: 1.5;
}
.oc-chip.place {
  border: 1px solid var(--gold-light); color: var(--text-primary);
  background: rgba(255,255,255,0.45);
}
.oc-chip.activity {
  border: 1px solid rgba(201,168,168,0.3); color: var(--rose);
  background: var(--rose-light, rgba(201,168,168,0.12));
}
.oc-footer { text-align: center; padding: 6px 18px 16px; }
.oc-signature {
  font-family: var(--font-handwriting, 'Great Vibes', cursive); font-size: 18px;
  color: var(--rose); transform: rotate(-2deg);
  display: inline-block; letter-spacing: 1px;
}
.oc-note {
  font-family: var(--font-reading); font-size: 9px;
  letter-spacing: 3px; text-transform: uppercase; color: var(--text-muted); margin-top: 2px;
}
.oc-cal-note {
  text-align: center; font-size: 10px; color: var(--rose);
  font-family: var(--font-reading); letter-spacing: 0.5px;
  padding: 2px 18px 6px; opacity: 0.9;
}

/* ================================================================
   通用弹出层（再战弹层 / 确认弹窗等）
   ================================================================ */
.game-popup-overlay {
  position: absolute;
  inset: 0;
  z-index: 150;
  background: rgba(30,26,24,0.35);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.28s cubic-bezier(0.22,0.61,0.36,1);
}
.game-popup-overlay.open {
  opacity: 1;
  pointer-events: auto;
}
.game-popup-card {
  background: linear-gradient(175deg, var(--surface-solid), var(--bg-chat) 40%, var(--bg-primary));
  border-radius: 18px;
  border: 1.5px solid var(--gold-light);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.8) inset,
    var(--shadow-md),
    0 0 40px rgba(200,160,160,0.12);
  padding: 24px 20px;
  max-width: 300px;
  width: 85%;
  text-align: center;
  transform: scale(0.92) translateY(12px);
  transition: transform 0.28s cubic-bezier(0.22,0.61,0.36,1);
}
.game-popup-overlay.open .game-popup-card {
  transform: scale(1) translateY(0);
}
.game-popup-title {
  font-family: var(--font-decorative);
  font-size: 18px;
  font-style: italic;
  font-weight: 500;
  letter-spacing: 2px;
  color: var(--text-primary);
  margin-bottom: 6px;
}
.game-popup-sub {
  font-family: var(--font-reading);
  font-size: 9px;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--gold, #C4A86A);
  opacity: 0.7;
  margin-bottom: 14px;
}
.game-popup-actions {
  display: flex;
  gap: 10px;
  justify-content: center;
  flex-wrap: wrap;
}
.game-popup-btn {
  padding: 10px 22px;
  border-radius: 22px;
  cursor: pointer;
  font-family: var(--font-reading);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.5px;
  transition: all 0.2s ease;
}
.game-popup-btn.primary {
  border: none;
  background: var(--rose-dark, #A88080);
  color: #fff;
  box-shadow: var(--shadow-sm);
}
.game-popup-btn.primary:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}
.game-popup-btn.primary:active { transform: scale(0.96); }
.game-popup-btn.secondary {
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text-secondary);
}
.game-popup-btn.secondary:hover {
  border-color: var(--text-muted);
  color: var(--text-primary);
}
.game-popup-btn.secondary:active { transform: scale(0.96); }
.game-popup-btn.ghost {
  border: 1px solid var(--gold-light);
  background: var(--gold-light, rgba(196,168,106,0.15));
  color: var(--gold-dark, #A89050);
}
.game-popup-btn.ghost:hover {
  background: rgba(196,168,106,0.25);
  transform: translateY(-1px);
}
.game-popup-btn.ghost:active { transform: scale(0.96); }

/* ================================================================
   窄屏适配 (≤370px)
   ================================================================ */
@media (max-width: 370px) {
  .game-hub-hero { padding: 20px 14px 12px; }
  .game-hub-hero-script { font-size: 22px; }
  .game-hub-list { padding: 4px 10px 18px; gap: 10px; }
  .game-hub-topbar { padding: 8px 10px; padding-top: calc(8px + env(safe-area-inset-top, 0px)); }
  .game-hub-title { font-size: 17px; letter-spacing: 2px; }

  .game-card { padding: 14px 12px; gap: 10px; }
  .game-card-icon { width: 44px; height: 44px; }
  .game-card-icon svg { width: 22px; height: 22px; }
  .game-card-name { font-size: 15px; letter-spacing: 1px; }
  .game-card-name-en { font-size: 8px; }
  .game-card-desc { font-size: 11px; }

  .game-topbar { padding: 8px 10px; padding-top: calc(8px + env(safe-area-inset-top, 0px)); }
  .game-topbar .game-title-cn { font-size: 15px; letter-spacing: 1.5px; }
  .game-topbar .game-back { width: 30px; height: 30px; }
  .game-topbar .game-spacer { width: 30px; }

  .game-section-card { padding: 12px 10px; }
  .game-sec-zh { font-size: 13px; }

  /* 结果卡片窄屏 */
  .game-result-card { max-width: 230px; }
  .gr-title { font-size: 17px; }
  .gr-row { font-size: 11px; }
  .inspiro-sweet-card { max-width: 240px; }
  .is-title { font-size: 16px; }
  .is-word { font-size: 11px; padding: 2px 10px; }
  .pk-result-card { max-width: 230px; }
  .pk-result-title { font-size: 15px; }
  .outing-sweet-card { max-width: 240px; }

  .game-sheet { padding: 16px 12px calc(16px + env(safe-area-inset-bottom, 0px)); }
  .game-sheet-title { font-size: 15px; }
  .game-popup-card { padding: 18px 14px; }
  .game-popup-title { font-size: 16px; }
}

/* ================================================================
   命运之轮 18x 首次知情确认弹层（挂 #app 居中卡片，非全屏层）
   ================================================================ */
.ruota-18x-overlay {
  position: fixed; left: 50%; top: 0; transform: translateX(-50%);
  width: 100%; max-width: 480px; height: 100%;
  z-index: 1520;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0, 0, 0, 0.32);
  opacity: 0; pointer-events: none;
  transition: opacity 0.22s ease;
}
.ruota-18x-overlay.show { opacity: 1; pointer-events: auto; }
.ruota-18x-panel {
  width: 84%; max-width: 330px;
  background: var(--surface-solid, #fffdf8);
  border: 1px solid var(--gold-light, rgba(201, 168, 138, 0.4));
  border-radius: 18px;
  padding: 26px 20px 18px;
  box-shadow: 0 18px 48px rgba(80, 50, 30, 0.18);
  text-align: center;
  transform: translateY(10px) scale(0.97);
  transition: transform 0.22s ease;
}
.ruota-18x-overlay.show .ruota-18x-panel { transform: translateY(0) scale(1); }
.ruota-18x-title {
  font-family: var(--font-reading, Georgia, serif);
  font-size: 18px; font-weight: 600; letter-spacing: 2px;
  color: var(--text-primary, #3a2c25);
  margin-bottom: 14px;
}
.ruota-18x-desc {
  font-size: 13px; line-height: 1.8;
  color: var(--text-secondary, #8a7a70);
  margin-bottom: 18px;
}
.ruota-18x-ok {
  width: 100%;
  padding: 11px 0;
  border: none; border-radius: 24px;
  background: linear-gradient(135deg, var(--rose, #c98d90), var(--rose-dark, #b26f74));
  color: #fff;
  font-size: 14px; letter-spacing: 1px;
  cursor: pointer;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
  box-shadow: 0 6px 16px rgba(178, 111, 116, 0.3);
}
.ruota-18x-ok:hover { transform: scale(1.02); box-shadow: 0 8px 20px rgba(178, 111, 116, 0.38); }
.ruota-18x-ok:active { transform: scale(0.97); }
.ruota-18x-no {
  width: 100%;
  margin-top: 8px;
  padding: 9px 0;
  border: 1px solid var(--border, rgba(0, 0, 0, 0.1));
  border-radius: 24px;
  background: transparent;
  color: var(--text-secondary, #8a7a70);
  font-size: 13px;
  cursor: pointer;
  transition: all 0.18s ease;
}
.ruota-18x-no:hover { color: var(--rose, #c98d90); border-color: var(--rose, #c98d90); }
.ruota-18x-no:active { transform: scale(0.97); }

