/* ===== 福源阁 - 国风禅意设计系统（移动端App化） ===== */

/* CSS Variables */
:root {
  --bg-primary: #1c1a1e;
  --bg-secondary: #252228;
  --bg-card: rgba(255, 255, 255, 0.035);
  --bg-card-hover: rgba(255, 255, 255, 0.07);
  --bg-overlay: rgba(0, 0, 0, 0.65);
  --gold: #c9a84c;
  --gold-light: #e0c872;
  --gold-dim: #8a7230;
  --gold-glow: rgba(201, 168, 76, 0.25);
  --purple: #5b3a6b;
  --purple-light: #8a5f9b;
  --purple-dark: #3a2248;
  --green-dark: #1e3528;
  --green-gold: #2a4a1e;
  --red: #a63d2f;
  --red-light: #c9503f;
  --text-primary: #ede6d6;
  --text-secondary: #a89e8e;
  --text-dim: #6e6458;
  --border-gold: rgba(201, 168, 76, 0.18);
  --border-subtle: rgba(255, 255, 255, 0.05);
  --shadow-gold: rgba(201, 168, 76, 0.08);
  --radius: 12px;
  --radius-sm: 8px;
  --radius-lg: 16px;
  --transition: all 0.3s ease;
  --font-serif: "Noto Serif SC", "Source Han Serif SC", "Songti SC", "SimSun", serif;
  --font-sans: "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  /* App壳高度 */
  --header-height: 44px;
  --tabbar-height: 56px;
  --tabbar-safe: calc(var(--tabbar-height) + env(safe-area-inset-bottom, 0px));
}

/* Reset */
*, *::before, *::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  font-size: 18px;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  /* 禁止双击缩放 */
  touch-action: manipulation;
}

body {
  font-family: var(--font-serif);
  background: var(--bg-primary);
  color: var(--text-primary);
  line-height: 1.7;
  min-height: 100vh;
  overflow-x: hidden;
  /* 禁止点击高亮 */
  -webkit-tap-highlight-color: transparent;
  /* 页面入场动画 */
  animation: pageIn 0.25s ease;
}

@keyframes pageIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Background Pattern */
body::before {
  content: "";
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background:
    radial-gradient(ellipse at 20% 20%, rgba(108, 52, 131, 0.15) 0%, transparent 50%),
    radial-gradient(ellipse at 80% 80%, rgba(212, 175, 55, 0.05) 0%, transparent 50%),
    radial-gradient(ellipse at 50% 50%, rgba(26, 58, 42, 0.2) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
}

/* Typography */
h1, h2, h3, h4 {
  font-weight: 600;
  letter-spacing: 0.05em;
}

a {
  color: var(--gold);
  text-decoration: none;
  transition: var(--transition);
}
a:active {
  color: var(--gold-light);
}

/* ===== App壳 - 固定顶栏 ===== */
.app-header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--header-height);
  background: linear-gradient(135deg, #1a1a2e, #16213e);
  border-bottom: 1px solid var(--border-gold);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 999;
  padding-top: env(safe-area-inset-top, 0px);
  /* 适配iPhone刘海屏 */
}

.app-header .header-back {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  padding-top: env(safe-area-inset-top, 0px);
  color: var(--gold);
  font-size: 0.9rem;
  min-width: 44px;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.app-header .header-title {
  color: var(--gold);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.1em;
}

.app-header .header-action {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  padding-top: env(safe-area-inset-top, 0px);
  color: var(--gold-dim);
  font-size: 0.85rem;
  min-width: 44px;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

/* ===== App壳 - 固定底栏Tab ===== */
.app-tabbar {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  height: var(--tabbar-height);
  padding-bottom: env(safe-area-inset-bottom, 0px);
  background: linear-gradient(135deg, #1a1a2e, #16213e);
  border-top: 1px solid var(--border-gold);
  display: flex;
  align-items: stretch;
  justify-content: space-around;
  z-index: 999;
}

.tab-item {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  color: var(--text-dim);
  font-size: 0.82rem;
  text-decoration: none;
  min-height: 44px;
  transition: color 0.2s;
  -webkit-tap-highlight-color: transparent;
}

.tab-item .tab-icon {
  font-size: 1.3rem;
  line-height: 1;
}

.tab-item .tab-label {
  line-height: 1;
}

.tab-item.active {
  color: var(--gold);
}

.tab-item:active {
  color: var(--gold-light);
}

/* ===== App壳 - 主内容区 ===== */
.app-content {
  padding-top: calc(var(--header-height) + env(safe-area-inset-top, 0px) + 8px);
  padding-bottom: calc(var(--tabbar-safe) + 8px);
  position: relative;
  z-index: 1;
}

.app-content .container {
  max-width: 480px;
  margin: 0 auto;
  padding: 0 16px;
}

/* 首页不需要顶栏padding，因为自己有header */
.home-content {
  padding-top: calc(var(--header-height) + env(safe-area-inset-top, 0px) + 8px);
  padding-bottom: calc(var(--tabbar-safe) + 16px);
}

/* Container（无App壳的独立页面使用，保留兼容） */
.container {
  max-width: 480px;
  margin: 0 auto;
  padding: 0 16px;
  position: relative;
  z-index: 1;
}

/* ===== Site Header (首页用，简化) ===== */
.site-header {
  text-align: center;
  padding: 16px 0 12px;
  position: relative;
}

.site-header .logo-link {
  display: inline-block;
  text-decoration: none;
}

.site-header .site-title {
  font-size: 1.4rem;
  color: var(--gold);
  letter-spacing: 0.15em;
  margin-bottom: 2px;
}

.site-header .site-subtitle {
  font-size: 0.9rem;
  color: var(--text-dim);
  letter-spacing: 0.1em;
}

.site-header::after {
  content: "";
  display: block;
  width: 100px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  margin: 10px auto 0;
}

/* ===== Page Header (子页面用，替换为app-header) ===== */
.page-header {
  display: none; /* 已由app-header替代 */
}

/* ===== Profile Link ===== */
.profile-link {
  display: none; /* 已移至app-header */
}

/* ===== 首页宫格样式 ===== */
.home-daily-sign {
  display: block;
  background: var(--bg-card);
  border: 2px solid var(--border-gold);
  border-radius: var(--radius);
  padding: 20px 16px;
  text-align: center;
  margin-bottom: 12px;
  text-decoration: none;
  color: inherit;
  transition: var(--transition);
}

.home-daily-sign:active {
  background: rgba(212, 175, 55, 0.08);
}

.home-daily-sign .sign-icon {
  font-size: 2.2rem;
  display: block;
  margin-bottom: 6px;
}

.home-daily-sign .sign-title {
  font-size: 1rem;
  color: var(--gold);
  letter-spacing: 0.1em;
  margin-bottom: 4px;
}

.home-daily-sign .sign-desc {
  font-size: 0.92rem;
  color: var(--text-dim);
}

.home-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin: 12px 0;
}

.home-grid-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 12px 4px;
  text-decoration: none;
  color: inherit;
  border-radius: var(--radius-sm);
  transition: background 0.2s;
  -webkit-tap-highlight-color: transparent;
  min-height: 80px;
}

.home-grid-item:active {
  background: rgba(212, 175, 55, 0.08);
}

.home-grid-item .grid-icon {
  font-size: 1.8rem;
  line-height: 1;
  margin-bottom: 6px;
}

.home-grid-item .grid-name {
  font-size: 0.88rem;
  color: var(--text-secondary);
  text-align: center;
  line-height: 1.3;
}

/* 今日运势速览 */
.home-fortune {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius);
  padding: 14px 16px;
  margin-top: 12px;
}

.home-fortune .fortune-title {
  font-size: 0.85rem;
  color: var(--gold);
  margin-bottom: 8px;
}

.home-fortune .fortune-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 0;
  font-size: 0.92rem;
}

.home-fortune .fortune-label {
  color: var(--text-secondary);
}

.home-fortune .fortune-value {
  color: var(--text-primary);
}

/* ===== Cards ===== */
.card {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 12px;
  transition: var(--transition);
}

.card:active {
  background: var(--bg-card-hover);
}

.card-title {
  font-size: 1rem;
  color: var(--gold);
  margin-bottom: 8px;
}

/* ===== Module Cards (Homepage - 保留兼容) ===== */
.module-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin: 12px 0;
}

.module-card {
  display: block;
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius);
  padding: 14px 16px;
  text-decoration: none;
  color: inherit;
  transition: var(--transition);
  position: relative;
  overflow: hidden;
  min-height: 44px; /* 触控区域 */
}

.module-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background: linear-gradient(135deg, rgba(212, 175, 55, 0.05), transparent);
  opacity: 0;
  transition: var(--transition);
}

.module-card:active {
  background: var(--bg-card-hover);
  border-color: var(--border-gold);
}

.module-card:active::before {
  opacity: 1;
}

.module-card .module-icon {
  font-size: 1.4rem;
  margin-bottom: 4px;
  display: inline-block;
}

.module-card .module-badge {
  position: absolute;
  top: 10px;
  right: 10px;
  font-size: 0.92rem;
  padding: 2px 8px;
  border-radius: 10px;
  background: rgba(212, 175, 55, 0.15);
  color: var(--gold);
  letter-spacing: 0.05em;
}

.module-card .module-name {
  font-size: 0.95rem;
  color: var(--gold);
  margin-bottom: 2px;
  letter-spacing: 0.08em;
}

.module-card .module-desc {
  font-size: 0.9rem;
  color: var(--text-secondary);
  line-height: 1.5;
}

/* ===== Buttons - 移动端触控优化 ===== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 14px 24px;
  border: none;
  border-radius: var(--radius-sm);
  font-family: var(--font-serif);
  font-size: 0.9rem;
  cursor: pointer;
  transition: var(--transition);
  letter-spacing: 0.05em;
  text-decoration: none;
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}

.btn-gold {
  background: linear-gradient(135deg, var(--gold), var(--gold-dim));
  color: #1a1a2e;
  font-weight: 600;
}

.btn-gold:active {
  background: linear-gradient(135deg, var(--gold-light), var(--gold));
  transform: scale(0.98);
}

.btn-outline {
  background: transparent;
  color: var(--gold);
  border: 1px solid var(--border-gold);
}

.btn-outline:active {
  background: rgba(212, 175, 55, 0.1);
  border-color: var(--gold);
}

.btn-full {
  width: 100%;
}

.btn-sm {
  padding: 10px 16px;
  font-size: 0.8rem;
  min-height: 36px;
}

.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

/* ===== Form Elements - 移动端触控 ===== */
.form-group {
  margin-bottom: 16px;
}

.form-label {
  display: block;
  font-size: 0.85rem;
  color: var(--text-secondary);
  margin-bottom: 8px;
  letter-spacing: 0.05em;
}

.form-input, .form-select, .form-textarea {
  width: 100%;
  padding: 12px 16px;
  min-height: 44px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-family: var(--font-serif);
  font-size: 16px; /* 防止iOS缩放 */
  transition: var(--transition);
  -webkit-appearance: none;
  appearance: none;
}

.form-input:focus, .form-select:focus, .form-textarea:focus {
  outline: none;
  border-color: var(--gold);
  box-shadow: 0 0 0 2px rgba(212, 175, 55, 0.1);
}

.form-textarea {
  resize: vertical;
  min-height: 80px;
}

.form-select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23a09888' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 36px;
}

/* ===== Radio Group - 触控优化 ===== */
.radio-group {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.radio-item {
  position: relative;
}

.radio-item input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.radio-item label {
  display: inline-block;
  padding: 10px 16px;
  min-height: 44px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-size: 0.85rem;
  cursor: pointer;
  transition: var(--transition);
  line-height: 24px;
}

.radio-item input:checked + label {
  background: rgba(212, 175, 55, 0.12);
  border-color: var(--gold);
  color: var(--gold);
}

.radio-item label:active {
  border-color: var(--border-gold);
}

/* ===== Tabs ===== */
.tabs {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--border-subtle);
  margin-bottom: 16px;
  overflow-x: auto;
}

.tab-item-content {
  padding: 12px 16px;
  font-size: 0.85rem;
  color: var(--text-dim);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: var(--transition);
  white-space: nowrap;
  min-height: 44px;
  display: flex;
  align-items: center;
}

.tab-item-content.active {
  color: var(--gold);
  border-bottom-color: var(--gold);
}

.tab-item-content:active {
  color: var(--text-secondary);
}

/* ===== Master Selection - 触控优化 ===== */
.master-list {
  display: grid;
  gap: 10px;
  margin: 12px 0;
}

.master-card {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius);
  padding: 14px;
  cursor: pointer;
  transition: var(--transition);
  display: flex;
  gap: 12px;
  align-items: flex-start;
  min-height: 44px;
}

.master-card:active {
  border-color: var(--border-gold);
}

.master-card.selected {
  border-color: var(--gold);
  background: rgba(212, 175, 55, 0.06);
}

/* 所求何事标签 */
.purpose-list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 20px;
}
.purpose-tag {
  padding: 8px 20px;
  border: 1px solid var(--border-color);
  border-radius: 20px;
  font-size: 0.88rem;
  color: var(--text-secondary);
  background: rgba(255,255,255,0.03);
  cursor: pointer;
  transition: all 0.2s;
}
.purpose-tag:active {
  transform: scale(0.96);
}
.purpose-tag.selected {
  border-color: var(--gold);
  color: var(--gold);
  background: rgba(212, 175, 55, 0.08);
}

/* 签文→八字引导 */
.lottery-cta-area {
  text-align: center;
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid rgba(212, 175, 55, 0.15);
}
.lottery-cta-btn {
  display: inline-block;
  padding: 12px 32px;
  border: 1px solid var(--gold);
  border-radius: 24px;
  color: var(--gold);
  font-size: 0.92rem;
  text-decoration: none;
  background: rgba(212, 175, 55, 0.06);
  transition: all 0.2s;
}
.lottery-cta-btn:active {
  transform: scale(0.96);
  background: rgba(212, 175, 55, 0.12);
}

.master-card .master-icon {
  font-size: 1.8rem;
  flex-shrink: 0;
}

.master-card .master-info {
  flex: 1;
}

.master-card .master-name {
  font-size: 0.9rem;
  color: var(--gold);
  margin-bottom: 2px;
}

.master-card .master-title {
  font-size: 0.85rem;
  color: var(--text-dim);
  margin-bottom: 4px;
}

.master-card .master-desc {
  font-size: 0.88rem;
  color: var(--text-secondary);
  line-height: 1.5;
}

/* ===== Light Types (Qifu) ===== */
.light-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  margin: 12px 0;
}

.light-card {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 14px 10px;
  text-align: center;
  cursor: pointer;
  transition: var(--transition);
  min-height: 44px;
}

.light-card:active {
  border-color: var(--border-gold);
}

.light-card.selected {
  border-color: var(--gold);
  background: rgba(212, 175, 55, 0.08);
}

.light-card .light-icon {
  font-size: 1.6rem;
  margin-bottom: 4px;
  display: block;
}

.light-card .light-name {
  font-size: 0.85rem;
  color: var(--gold);
  margin-bottom: 2px;
}

.light-card .light-desc {
  font-size: 0.82rem;
  color: var(--text-dim);
  line-height: 1.4;
}

/* ===== Duration Selection ===== */
.duration-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  margin: 12px 0;
}

.duration-card {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 14px;
  text-align: center;
  cursor: pointer;
  transition: var(--transition);
  min-height: 44px;
}

.duration-card:active {
  border-color: var(--border-gold);
}

.duration-card.selected {
  border-color: var(--gold);
  background: rgba(212, 175, 55, 0.08);
}

.duration-card .duration-name {
  font-size: 0.82rem;
  color: var(--text-primary);
  margin-bottom: 4px;
}

.duration-card .duration-price {
  font-size: 1.1rem;
  color: var(--gold);
  font-weight: 600;
}

/* ===== Light Wall ===== */
.light-wall-stats {
  text-align: center;
  margin: 12px 0;
  font-size: 0.82rem;
  color: var(--text-secondary);
}

.light-wall-stats .stat-highlight {
  color: var(--gold);
  font-weight: 600;
}

.light-wall-scroll {
  height: 40px;
  overflow: hidden;
  margin: 10px 0;
  position: relative;
}

.light-wall-scroll .scroll-content {
  animation: scrollUp 20s linear infinite;
}

@keyframes scrollUp {
  0% { transform: translateY(0); }
  100% { transform: translateY(-50%); }
}

.light-wall-scroll .scroll-item {
  font-size: 0.88rem;
  color: var(--text-dim);
  padding: 2px 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.light-wall-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin: 12px 0;
}

.lantern-item {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 10px 8px;
  text-align: center;
}

.lantern-item .lantern-name {
  font-size: 0.85rem;
  color: var(--gold);
  margin-bottom: 2px;
}

.lantern-item .lantern-by {
  font-size: 0.82rem;
  color: var(--text-dim);
}

/* ===== Almanac ===== */
.almanac-date {
  text-align: center;
  padding: 16px 0;
}

.almanac-date h2 {
  font-size: 1.3rem;
  color: var(--gold);
  margin-bottom: 4px;
}

.almanac-date .almanac-sub {
  font-size: 0.92rem;
  color: var(--text-secondary);
}

.almanac-ganzhi {
  text-align: center;
  font-size: 0.92rem;
  color: var(--text-secondary);
  margin-bottom: 10px;
}

.almanac-rating {
  text-align: center;
  padding: 10px;
  margin: 10px 0;
  border-radius: var(--radius-sm);
}

.rating-shangshang { background: rgba(46, 204, 113, 0.12); color: #2ecc71; }
.rating-shangji { background: rgba(46, 204, 113, 0.08); color: #27ae60; }
.rating-zhongping { background: rgba(212, 175, 55, 0.08); color: var(--gold); }
.rating-xiaji { background: rgba(231, 76, 60, 0.08); color: #e67e22; }
.rating-xiaxia { background: rgba(231, 76, 60, 0.12); color: #e74c3c; }

.yiji-section {
  margin: 14px 0;
}

.yiji-section h3 {
  font-size: 0.85rem;
  margin-bottom: 8px;
}

.yiji-section .yi-title { color: #2ecc71; }
.yiji-section .ji-title { color: #e74c3c; }

.yiji-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.yiji-tag {
  padding: 4px 10px;
  border-radius: 4px;
  font-size: 0.88rem;
}

.yi-tag {
  background: rgba(46, 204, 113, 0.08);
  color: #2ecc71;
  border: 1px solid rgba(46, 204, 113, 0.15);
}

.ji-tag {
  background: rgba(231, 76, 60, 0.08);
  color: #e74c3c;
  border: 1px solid rgba(231, 76, 60, 0.15);
}

.shensha-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 10px 0;
}

.shensha-item {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 10px;
}

.shensha-item .shensha-label {
  font-size: 0.85rem;
  color: var(--text-dim);
  margin-bottom: 4px;
}

.shensha-item .shensha-value {
  font-size: 0.82rem;
  color: var(--text-primary);
}

.shichen-table {
  width: 100%;
  margin: 10px 0;
}

.shichen-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  padding: 8px 0;
  border-bottom: 1px solid var(--border-subtle);
  font-size: 0.92rem;
}

.shichen-row .shichen-time {
  color: var(--text-secondary);
}

.shichen-row .shichen-chong {
  color: var(--text-dim);
  text-align: right;
}

.future-days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
  margin: 14px 0;
}

.future-day {
  text-align: center;
  padding: 6px 2px;
  border-radius: var(--radius-sm);
  background: var(--bg-card);
}

.future-day .day-week {
  font-size: 0.82rem;
  color: var(--text-dim);
}

.future-day .day-date {
  font-size: 0.9rem;
  color: var(--text-primary);
  margin: 2px 0;
}

.future-day .day-rating {
  font-size: 0.92rem;
}

/* ===== Lottery ===== */
.lottery-draw {
  text-align: center;
  padding: 24px 0;
}

.lottery-cylinder {
  width: 120px;
  height: 180px;
  margin: 0 auto 16px;
  position: relative;
  cursor: pointer;
  transition: var(--transition);
  min-height: 44px;
}

.lottery-cylinder:active {
  transform: scale(0.95);
}

.lottery-cylinder.shaking {
  animation: shake 0.5s ease-in-out;
}

@keyframes shake {
  0%, 100% { transform: rotate(0deg); }
  20% { transform: rotate(-5deg); }
  40% { transform: rotate(5deg); }
  60% { transform: rotate(-3deg); }
  80% { transform: rotate(3deg); }
}

.lottery-result {
  background: var(--bg-card);
  border: 1px solid var(--border-gold);
  border-radius: var(--radius);
  padding: 20px 16px;
  margin: 16px 0;
  text-align: center;
}

.lottery-result .result-number {
  font-size: 1.8rem;
  color: var(--gold);
  margin-bottom: 6px;
}

.lottery-result .result-level {
  font-size: 0.85rem;
  padding: 4px 12px;
  border-radius: 12px;
  display: inline-block;
  margin-bottom: 10px;
}

.lottery-result .result-poem {
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 2;
  white-space: pre-line;
  margin-bottom: 14px;
}

.lottery-result .result-detail {
  font-size: 0.92rem;
  color: var(--text-dim);
  line-height: 1.8;
  text-align: left;
}

/* ===== Dream ===== */
.dream-search {
  margin: 12px 0;
}

.dream-categories {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 10px 0;
}

.dream-cat-btn {
  padding: 8px 14px;
  border-radius: 20px;
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  color: var(--text-secondary);
  font-size: 0.92rem;
  cursor: pointer;
  transition: var(--transition);
  font-family: var(--font-serif);
  min-height: 36px;
}

.dream-cat-btn.active {
  background: rgba(212, 175, 55, 0.1);
  border-color: var(--gold);
  color: var(--gold);
}

.dream-cat-btn:active {
  border-color: var(--border-gold);
}

.dream-list {
  margin: 14px 0;
}

.dream-item {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 14px;
  margin-bottom: 8px;
  cursor: pointer;
  transition: var(--transition);
}

.dream-item:active {
  border-color: var(--border-gold);
}

.dream-item .dream-title {
  font-size: 0.88rem;
  color: var(--text-primary);
  margin-bottom: 4px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.dream-item .dream-rating {
  font-size: 0.82rem;
  padding: 2px 8px;
  border-radius: 8px;
}

.dream-item .dream-brief {
  font-size: 0.88rem;
  color: var(--text-dim);
  line-height: 1.5;
}

.dream-detail {
  background: var(--bg-card);
  border: 1px solid var(--border-gold);
  border-radius: var(--radius);
  padding: 16px;
  margin: 14px 0;
}

.dream-detail .dream-detail-title {
  font-size: 1rem;
  color: var(--gold);
  margin-bottom: 8px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.dream-detail .dream-detail-content {
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 1.8;
}

/* ===== Bazi Form ===== */
.bazi-form {
  margin: 14px 0;
}

.bazi-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 10px;
}

/* ===== Divination ===== */
.divination-tube {
  text-align: center;
  padding: 16px 0;
}

.coin-container {
  display: flex;
  justify-content: center;
  gap: 16px;
  margin: 16px 0;
}

.coin {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--gold), var(--gold-dim));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  color: #1a1a2e;
  font-weight: 700;
  cursor: pointer;
  transition: var(--transition);
  user-select: none;
  min-width: 44px;
  min-height: 44px;
}

.coin:active {
  transform: scale(0.9);
}

.coin.flipping {
  animation: coinFlip 0.6s ease-in-out;
}

@keyframes coinFlip {
  0% { transform: rotateY(0deg); }
  50% { transform: rotateY(180deg); }
  100% { transform: rotateY(360deg); }
}

.hexagram-display {
  background: var(--bg-card);
  border: 1px solid var(--border-gold);
  border-radius: var(--radius);
  padding: 20px 16px;
  margin: 16px 0;
  text-align: center;
}

.hexagram-yao {
  display: flex;
  justify-content: center;
  gap: 6px;
  margin: 4px 0;
}

.yao-line {
  width: 36px;
  height: 6px;
  background: var(--gold);
  border-radius: 3px;
}

.yao-line.broken {
  width: 14px;
}

.yao-line.changing {
  background: var(--red-light);
}

/* ===== Palmistry ===== */
.upload-area {
  border: 2px dashed var(--border-gold);
  border-radius: var(--radius);
  padding: 32px 16px;
  text-align: center;
  cursor: pointer;
  transition: var(--transition);
  margin: 12px 0;
}

.upload-area:active {
  background: rgba(212, 175, 55, 0.04);
  border-color: var(--gold);
}

.upload-area .upload-icon {
  font-size: 2.2rem;
  margin-bottom: 8px;
  display: block;
}

.upload-area .upload-text {
  font-size: 0.82rem;
  color: var(--text-secondary);
}

.upload-area .upload-hint {
  font-size: 0.88rem;
  color: var(--text-dim);
  margin-top: 4px;
}

.palm-preview {
  width: 100%;
  max-width: 280px;
  border-radius: var(--radius-sm);
  margin: 10px auto;
  display: block;
}

/* ===== Naming ===== */
.naming-style-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin: 10px 0;
}

.style-item {
  padding: 10px;
  text-align: center;
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: var(--transition);
  font-size: 0.82rem;
  color: var(--text-secondary);
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.style-item.selected {
  border-color: var(--gold);
  background: rgba(212, 175, 55, 0.08);
  color: var(--gold);
}

/* ===== Meditation ===== */
.meditation-player {
  text-align: center;
  padding: 24px 0;
}

.meditation-circle {
  width: 140px;
  height: 140px;
  border-radius: 50%;
  border: 2px solid var(--border-gold);
  margin: 0 auto 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2.6rem;
  position: relative;
  cursor: pointer;
  transition: var(--transition);
}

.meditation-circle.playing {
  border-color: var(--gold);
  box-shadow: 0 0 40px var(--gold-glow);
  animation: breathe 4s ease-in-out infinite;
}

@keyframes breathe {
  0%, 100% { transform: scale(1); box-shadow: 0 0 40px var(--gold-glow); }
  50% { transform: scale(1.05); box-shadow: 0 0 60px var(--gold-glow); }
}

.meditation-tracks {
  margin: 16px 0;
}

.track-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px;
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  margin-bottom: 8px;
  cursor: pointer;
  transition: var(--transition);
}

.track-item:active, .track-item.active {
  border-color: var(--border-gold);
}

.track-item.active {
  background: rgba(212, 175, 55, 0.06);
}

.track-item .track-icon {
  font-size: 1.4rem;
}

.track-item .track-info {
  flex: 1;
}

.track-item .track-name {
  font-size: 0.88rem;
  color: var(--text-primary);
}

.track-item .track-desc {
  font-size: 0.88rem;
  color: var(--text-dim);
}

/* ===== Profile ===== */
.profile-header {
  text-align: center;
  padding: 16px 0;
}

.profile-avatar {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  border: 2px solid var(--gold);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 8px;
  font-size: 1.4rem;
  background: rgba(212, 175, 55, 0.1);
}

.profile-name {
  font-size: 1rem;
  color: var(--gold);
  margin-bottom: 2px;
}

.profile-id {
  font-size: 0.88rem;
  color: var(--text-dim);
}

.profile-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 14px 0;
}

.profile-stat {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 14px;
  text-align: center;
}

.profile-stat .stat-value {
  font-size: 1.3rem;
  color: var(--gold);
}

.profile-stat .stat-label {
  font-size: 0.88rem;
  color: var(--text-dim);
}

.profile-section {
  margin: 14px 0;
}

.profile-section h3 {
  font-size: 0.88rem;
  color: var(--text-secondary);
  margin-bottom: 8px;
}

.record-item {
  display: flex;
  justify-content: space-between;
  padding: 10px 0;
  border-bottom: 1px solid var(--border-subtle);
  font-size: 0.8rem;
}

.record-item .record-type {
  color: var(--text-primary);
}

.record-item .record-date {
  color: var(--text-dim);
}

/* ===== Incense / Online Worship ===== */
.incense-section {
  text-align: center;
  padding: 20px 0;
  margin: 12px 0;
}

.incense-display {
  font-size: 3.2rem;
  margin-bottom: 10px;
}

.incense-count {
  font-size: 0.82rem;
  color: var(--text-secondary);
  margin-bottom: 10px;
}

/* ===== Share Section ===== */
.share-section {
  text-align: center;
  padding: 20px 0;
  margin: 12px 0;
  background: var(--bg-card);
  border-radius: var(--radius);
}

.share-buttons {
  display: flex;
  justify-content: center;
  gap: 10px;
  margin-top: 10px;
}

.share-btn {
  padding: 10px 16px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border-gold);
  background: transparent;
  color: var(--gold);
  font-size: 0.8rem;
  cursor: pointer;
  transition: var(--transition);
  font-family: var(--font-serif);
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}

.share-btn:active {
  background: rgba(212, 175, 55, 0.1);
}

/* ===== 分享解锁遮罩 ===== */
.unlock-overlay {
  position: relative;
  margin-top: 12px;
}

.unlock-overlay .unlock-content {
  max-height: 60px;
  overflow: hidden;
  position: relative;
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 1.8;
  /* 只显示3行 */
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}

.unlock-overlay .unlock-blur {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 36px;
  background: linear-gradient(transparent, var(--bg-primary));
  pointer-events: none;
}

.unlock-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 14px 20px;
  margin-top: 8px;
  border: 1px solid var(--border-gold);
  border-radius: var(--radius-sm);
  background: rgba(212, 175, 55, 0.08);
  color: var(--gold);
  font-size: 0.88rem;
  font-family: var(--font-serif);
  cursor: pointer;
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}

.unlock-btn:active {
  background: rgba(212, 175, 55, 0.15);
}

.unlock-full {
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 1.8;
  white-space: pre-line;
}

/* ===== 生成分享卡片按钮 ===== */
.share-card-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 12px 16px;
  margin-top: 10px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-secondary);
  font-size: 0.82rem;
  font-family: var(--font-serif);
  cursor: pointer;
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}

.share-card-btn:active {
  background: rgba(255, 255, 255, 0.04);
  border-color: var(--border-gold);
}

/* Canvas分享卡片（隐藏） */
.share-card-canvas {
  display: none;
}

/* ===== 推广员页面样式 ===== */
.promoter-register {
  text-align: center;
  padding: 24px 0;
}

.promoter-register .promo-title {
  font-size: 1.2rem;
  color: var(--gold);
  margin-bottom: 8px;
  letter-spacing: 0.1em;
}

.promoter-register .promo-desc {
  font-size: 0.82rem;
  color: var(--text-secondary);
  margin-bottom: 16px;
  line-height: 1.6;
}

.promoter-id-display {
  background: var(--bg-card);
  border: 2px solid var(--border-gold);
  border-radius: var(--radius);
  padding: 16px;
  text-align: center;
  margin: 16px 0;
}

.promoter-id-display .id-label {
  font-size: 0.92rem;
  color: var(--text-dim);
  margin-bottom: 4px;
}

.promoter-id-display .id-value {
  font-size: 1.4rem;
  color: var(--gold);
  font-weight: 600;
  letter-spacing: 0.1em;
}

.promoter-link-box {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 12px;
  margin: 12px 0;
  display: flex;
  align-items: center;
  gap: 8px;
}

.promoter-link-box .link-text {
  flex: 1;
  font-size: 0.9rem;
  color: var(--text-secondary);
  word-break: break-all;
}

.promoter-link-box .copy-btn {
  padding: 8px 12px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border-gold);
  background: transparent;
  color: var(--gold);
  font-size: 0.92rem;
  cursor: pointer;
  min-height: 36px;
  white-space: nowrap;
  font-family: var(--font-serif);
  -webkit-tap-highlight-color: transparent;
}

.promoter-link-box .copy-btn:active {
  background: rgba(212, 175, 55, 0.1);
}

.promoter-stats-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin: 14px 0;
}

.promoter-stat {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 12px 8px;
  text-align: center;
}

.promoter-stat .pstat-value {
  font-size: 1.2rem;
  color: var(--gold);
  font-weight: 600;
}

.promoter-stat .pstat-label {
  font-size: 0.82rem;
  color: var(--text-dim);
  margin-top: 2px;
}

.promoter-rules {
  margin: 16px 0;
}

.promoter-rules .rule-item {
  display: flex;
  gap: 8px;
  padding: 8px 0;
  border-bottom: 1px solid var(--border-subtle);
  font-size: 0.92rem;
  color: var(--text-secondary);
  line-height: 1.6;
}

.promoter-rules .rule-item .rule-icon {
  flex-shrink: 0;
  font-size: 0.9rem;
}

/* ===== Footer ===== */
.site-footer {
  text-align: center;
  padding: 24px 0;
  margin-top: 16px;
  border-top: 1px solid var(--border-subtle);
}

.site-footer .footer-quote {
  font-size: 0.92rem;
  color: var(--text-dim);
  line-height: 1.7;
  margin-bottom: 6px;
  font-style: italic;
}

.site-footer .footer-brand {
  font-size: 0.92rem;
  color: var(--gold-dim);
  letter-spacing: 0.1em;
}

.site-footer .footer-disclaimer {
  font-size: 0.68rem;
  color: var(--text-dim);
  margin-top: 6px;
  line-height: 1.5;
}

/* ===== Payment Modal ===== */
.modal-overlay {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background: var(--bg-overlay);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}

.modal-overlay.hidden {
  display: none;
}

.modal-content {
  background: var(--bg-secondary);
  border: 1px solid var(--border-gold);
  border-radius: var(--radius-lg);
  padding: 20px;
  max-width: 340px;
  width: 100%;
  text-align: center;
}

.modal-content h3 {
  color: var(--gold);
  margin-bottom: 14px;
}

.qr-placeholder {
  width: 180px;
  height: 180px;
  background: white;
  margin: 0 auto 14px;
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #333;
  font-size: 0.92rem;
}

.modal-content .modal-price {
  font-size: 1.3rem;
  color: var(--gold);
  font-weight: 600;
  margin-bottom: 6px;
}

.modal-content .modal-hint {
  font-size: 0.88rem;
  color: var(--text-dim);
  margin-bottom: 14px;
}

/* ===== AI Result ===== */
.ai-result {
  background: var(--bg-card);
  border: 1px solid var(--border-gold);
  border-radius: var(--radius);
  padding: 16px;
  margin: 14px 0;
}

.ai-result .result-master {
  font-size: 0.92rem;
  color: var(--gold-dim);
  margin-bottom: 6px;
}

.ai-result .result-content {
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 1.8;
  white-space: pre-line;
}

.ai-result .result-content p {
  margin-bottom: 6px;
}

.ai-loading {
  text-align: center;
  padding: 32px 0;
  color: var(--text-dim);
}

.ai-loading .loading-dots::after {
  content: '';
  animation: dots 1.5s steps(4, end) infinite;
}

@keyframes dots {
  0% { content: ''; }
  25% { content: '.'; }
  50% { content: '..'; }
  75% { content: '...'; }
}

/* ===== Utilities ===== */
.text-center { text-align: center; }
.text-gold { color: var(--gold); }
.text-dim { color: var(--text-dim); }
.text-secondary { color: var(--text-secondary); }
.mt-8 { margin-top: 8px; }
.mt-16 { margin-top: 16px; }
.mt-24 { margin-top: 24px; }
.mb-8 { margin-bottom: 8px; }
.mb-16 { margin-bottom: 16px; }
.mb-24 { margin-bottom: 24px; }

.divider {
  width: 50px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  margin: 16px auto;
}

/* ===== Section Headings ===== */
.section-heading {
  font-size: 0.9rem;
  color: var(--gold);
  text-align: center;
  margin: 20px 0 12px;
  letter-spacing: 0.1em;
  position: relative;
}

.section-heading::before,
.section-heading::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 36px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold-dim));
}

.section-heading::before {
  right: calc(50% + 3em);
  background: linear-gradient(90deg, transparent, var(--gold-dim));
}

.section-heading::after {
  left: calc(50% + 3em);
  background: linear-gradient(270deg, transparent, var(--gold-dim));
}

/* ===== Why Choose Section ===== */
.features-grid {
  display: grid;
  gap: 12px;
  margin: 12px 0;
}

.feature-item {
  text-align: center;
  padding: 14px;
}

.feature-item .feature-icon {
  font-size: 1.4rem;
  margin-bottom: 6px;
}

.feature-item .feature-title {
  font-size: 0.85rem;
  color: var(--gold);
  margin-bottom: 4px;
}

.feature-item .feature-desc {
  font-size: 0.88rem;
  color: var(--text-dim);
}

/* ===== Classics Bar ===== */
.classics-bar {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px;
  margin: 14px 0;
}

.classic-item {
  font-size: 0.85rem;
  color: var(--text-dim);
  padding: 4px 10px;
  border: 1px solid var(--border-subtle);
  border-radius: 12px;
}

/* ===== Checkin ===== */
.checkin-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 22px;
  border: 1px solid var(--border-gold);
  border-radius: 20px;
  background: transparent;
  color: var(--gold);
  font-family: var(--font-serif);
  font-size: 0.82rem;
  cursor: pointer;
  transition: var(--transition);
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}

.checkin-btn:active {
  background: rgba(212, 175, 55, 0.1);
}

.checkin-btn.checked {
  background: rgba(46, 204, 113, 0.1);
  border-color: rgba(46, 204, 113, 0.3);
  color: #2ecc71;
}

/* ===== Daily Free ===== */
.daily-free {
  text-align: center;
  font-size: 0.8rem;
  color: var(--text-secondary);
  margin-bottom: 14px;
}

.daily-free .free-count {
  color: var(--gold);
  font-weight: 600;
}

/* ===== 桌面端适配（移动端优先） ===== */
@media (min-width: 768px) {
  .container {
    max-width: 600px;
  }

  .module-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .light-wall-grid {
    grid-template-columns: repeat(4, 1fr);
  }

  .home-grid {
    grid-template-columns: repeat(5, 1fr);
  }
}

@media (min-width: 1024px) {
  .container {
    max-width: 720px;
  }

  .module-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* ===== Animations ===== */
.fade-in {
  animation: fadeIn 0.4s ease-in;
}

@keyframes fadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

.glow-pulse {
  animation: glowPulse 2s ease-in-out infinite;
}

@keyframes glowPulse {
  0%, 100% { text-shadow: 0 0 5px var(--gold-glow); }
  50% { text-shadow: 0 0 20px var(--gold-glow), 0 0 40px rgba(212, 175, 55, 0.1); }
}

/* ===== Toast ===== */
.toast {
  position: fixed;
  top: calc(var(--header-height) + env(safe-area-inset-top, 0px) + 10px);
  left: 50%;
  transform: translateX(-50%);
  background: var(--bg-secondary);
  border: 1px solid var(--border-gold);
  border-radius: var(--radius-sm);
  padding: 10px 20px;
  color: var(--gold);
  font-size: 0.82rem;
  z-index: 2000;
  animation: toastIn 0.3s ease, toastOut 0.3s ease 2.5s forwards;
  max-width: 90%;
  text-align: center;
}

@keyframes toastIn {
  from { opacity: 0; transform: translateX(-50%) translateY(-16px); }
  to { opacity: 1; transform: translateX(-50%) translateY(0); }
}

@keyframes toastOut {
  from { opacity: 1; }
  to { opacity: 0; }
}

/* ===== Scrollbar ===== */
::-webkit-scrollbar {
  width: 4px;
}

::-webkit-scrollbar-track {
  background: transparent;
}

::-webkit-scrollbar-thumb {
  background: var(--gold-dim);
  border-radius: 2px;
}


/* ===== 分析进度条 ===== */
.analysis-progress {
  text-align: center;
  padding: 24px 0;
}

.progress-text {
  font-size: 0.85rem;
  color: var(--text-secondary);
  margin-bottom: 12px;
}

.progress-bar-track {
  width: 100%;
  height: 6px;
  background: rgba(255, 255, 255, 0.06);
  border-radius: 3px;
  overflow: hidden;
}

.progress-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--gold-dim), var(--gold));
  border-radius: 3px;
  transition: width 0.6s ease;
}

/* ===== 结果半锁定遮罩 ===== */
.result-brief {
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 1.8;
  padding: 12px 0;
}

.half-lock-overlay {
  position: relative;
  margin: 12px 0;
  padding: 24px 16px;
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius);
  text-align: center;
}

.lock-icon {
  font-size: 2rem;
  margin-bottom: 8px;
}

.lock-text {
  font-size: 0.88rem;
  color: var(--text-secondary);
  margin-bottom: 16px;
}

.unlock-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.unlock-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 14px 20px;
  border: 1px solid var(--border-gold);
  border-radius: var(--radius-sm);
  background: rgba(212, 175, 55, 0.08);
  color: var(--gold);
  font-size: 0.88rem;
  font-family: var(--font-serif);
  cursor: pointer;
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}

.unlock-btn:active {
  background: rgba(212, 175, 55, 0.15);
}

.unlock-pay-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 12px 20px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-secondary);
  font-size: 0.82rem;
  font-family: var(--font-serif);
  cursor: pointer;
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}

.unlock-pay-btn:active {
  background: rgba(255, 255, 255, 0.04);
}

/* ===== 宫格价格标签（锚定+体验价） ===== */
.grid-price {
  font-size: 0.92rem;
  color: var(--text-dim);
  margin-top: 2px;
  line-height: 1.2;
}

.grid-price s {
  color: var(--text-dim);
  opacity: 0.5;
  font-size: 0.55rem;
  text-decoration: line-through;
}

.grid-price strong {
  color: var(--gold);
  font-weight: 600;
  font-size: 0.82rem;
}

/* ===== 锚定价格通用样式 ===== */
.price-original {
  text-decoration: line-through;
  color: var(--text-dim);
  opacity: 0.6;
  font-size: 0.85em;
  margin-right: 4px;
}

.price-current {
  color: var(--gold);
  font-weight: 700;
}

/* 支付弹窗价格行 */
.modal-price-row {
  margin-bottom: 6px;
  font-size: 1.3rem;
}

.modal-price-row .price-original {
  font-size: 0.9rem;
  text-decoration: line-through;
  color: var(--text-dim);
  opacity: 0.5;
}

.modal-price-row .price-current {
  font-size: 1.3rem;
  color: var(--gold);
  font-weight: 700;
}

/* ===== 签诗原文完整展示 ===== */
.result-poem-full {
  font-size: 0.88rem;
  color: var(--text-secondary);
  line-height: 2;
  white-space: pre-line;
  padding: 12px 0;
  text-align: center;
  border-bottom: 1px solid var(--border-subtle);
  margin-bottom: 12px;
}

/* ===== 结果预览区（核心点拨1句） ===== */
.result-preview {
  padding: 12px 0;
}

.result-master-label {
  font-size: 0.9rem;
  color: var(--gold-dim);
  margin-bottom: 8px;
  letter-spacing: 0.05em;
}

.preview-insight {
  font-size: 0.92rem;
  color: var(--text-primary);
  line-height: 1.8;
  font-style: italic;
}

/* ===== AI完整结果 ===== */
.ai-result-full {
  padding: 12px 0;
}

.result-content-full {
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 1.8;
  white-space: pre-line;
}

/* ===== 古典参证引用 ===== */
.classical-ref {
  font-size: 0.88rem;
  color: var(--gold-dim);
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--border-subtle);
  letter-spacing: 0.03em;
}

/* ===== 解锁按钮（付费优先+分享次之） ===== */
.unlock-pay-btn-primary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 14px 20px;
  border: 1px solid var(--gold);
  border-radius: var(--radius-sm);
  background: rgba(212, 175, 55, 0.12);
  color: var(--gold);
  font-size: 0.92rem;
  font-weight: 600;
  font-family: var(--font-serif);
  cursor: pointer;
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}

.unlock-pay-btn-primary:active {
  background: rgba(212, 175, 55, 0.2);
}

.unlock-btn-secondary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 12px 20px;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-secondary);
  font-size: 0.82rem;
  font-family: var(--font-serif);
  cursor: pointer;
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}

.unlock-btn-secondary:active {
  background: rgba(255, 255, 255, 0.04);
}

/* ===== 会员标识 ===== */
.member-badge {
  display: inline-block;
  font-size: 0.85rem;
  padding: 2px 8px;
  border-radius: 10px;
  background: rgba(212, 175, 55, 0.12);
  color: var(--gold);
  letter-spacing: 0.05em;
  vertical-align: middle;
}

.member-hint {
  text-align: center;
  font-size: 0.92rem;
  color: var(--gold);
  padding: 4px 0;
}

.free-hint {
  text-align: center;
  font-size: 0.9rem;
  color: var(--text-secondary);
  padding: 4px 0;
}

.free-hint-empty {
  color: var(--text-dim);
}

.upgrade-link {
  color: var(--gold);
  text-decoration: underline;
  font-size: 0.9rem;
}

/* ===== 会员卡 ===== */
.member-card {
  border-radius: var(--radius);
  padding: 20px;
  text-align: center;
  margin-bottom: 16px;
}

.member-level-name {
  font-size: 1.6rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  margin-bottom: 4px;
}

.member-level-desc {
  font-size: 0.82rem;
  color: var(--text-secondary);
  margin-bottom: 6px;
}

.member-expiry {
  font-size: 0.85rem;
  color: var(--text-dim);
}

/* ===== 权益列表 ===== */
.benefit-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid var(--border-subtle);
  font-size: 0.82rem;
}

.benefit-name {
  color: var(--text-primary);
}

.benefit-value {
  color: var(--text-dim);
}

.benefit-unlimited {
  color: var(--gold);
  font-weight: 600;
}

/* ===== 升级卡片 ===== */
.upgrade-card {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius);
  padding: 20px 16px;
  text-align: center;
  margin-bottom: 12px;
  position: relative;
}

.upgrade-card-popular {
  border-color: var(--gold);
  background: rgba(212, 175, 55, 0.04);
}

.upgrade-level {
  font-size: 1.2rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  margin-bottom: 4px;
}

.upgrade-price {
  font-size: 2rem;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 2px;
}

.upgrade-period {
  font-size: 0.85rem;
  font-weight: 400;
  color: var(--text-dim);
}

.upgrade-note {
  font-size: 0.88rem;
  color: var(--gold-dim);
  margin-bottom: 6px;
}

.upgrade-desc {
  font-size: 0.82rem;
  color: var(--text-secondary);
  margin-bottom: 14px;
}

.popular-badge {
  position: absolute;
  top: -1px;
  right: 12px;
  background: linear-gradient(135deg, var(--gold), var(--gold-dim));
  color: #1a1a2e;
  font-size: 0.82rem;
  padding: 3px 10px;
  border-radius: 0 0 6px 6px;
  font-weight: 600;
}

.upgrade-btn {
  font-size: 0.85rem;
  margin-top: 4px;
}

/* ===== 价格对比表 ===== */
.price-compare {
  margin: 14px 0;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  overflow: hidden;
}

.compare-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  font-size: 0.9rem;
}

.compare-header {
  background: rgba(255, 255, 255, 0.04);
  font-weight: 600;
  color: var(--text-secondary);
}

.compare-footer {
  background: rgba(255, 255, 255, 0.02);
  border-top: 1px solid var(--border-subtle);
}

.compare-item {
  padding: 8px 4px;
  text-align: center;
  color: var(--text-dim);
  border-bottom: 1px solid var(--border-subtle);
}

.compare-header .compare-item {
  border-bottom-color: var(--border-gold);
  color: var(--text-secondary);
}

.compare-highlight {
  color: var(--gold);
  font-weight: 600;
}

/* ===== 月卡购买区域 ===== */
.pass-section {
  margin: 16px 0;
}

/* ===== 会员卡面分档视觉 ===== */
.member-card {
  border-radius: var(--radius-lg);
  padding: 24px 20px;
  text-align: center;
  margin-bottom: 16px;
  position: relative;
  overflow: hidden;
}

/* 善缘：暗色底+金色细边框 */
.card-shan {
  border: 1px solid var(--border-subtle);
  background: var(--bg-card);
}

/* 福缘：暗色底+金色渐变边框 */
.card-fu {
  border: 2px solid var(--gold);
  background: linear-gradient(135deg, rgba(212,175,55,0.06), rgba(212,175,55,0.02));
}

.card-fu::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 3px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
}

/* 慧缘：暗紫渐变底+金色粗边框 */
.card-hui {
  border: 2px solid var(--gold-light);
  background: linear-gradient(135deg, rgba(108,52,131,0.15), rgba(212,175,55,0.06));
}

.card-hui::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 3px;
  background: linear-gradient(90deg, transparent, var(--gold-light), transparent);
}

/* 觉缘：全金渐变底 */
.card-jue {
  border: 2px solid var(--gold-light);
  background: linear-gradient(135deg, rgba(212,175,55,0.12), rgba(240,208,96,0.08), rgba(255,107,53,0.04));
}

.card-jue::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 4px;
  background: linear-gradient(90deg, var(--gold-dim), var(--gold-light), var(--gold), var(--gold-light), var(--gold-dim));
}

/* ===== 仪式模式进度条（付费/会员） ===== */
.analysis-progress.ritual-mode {
  padding: 28px 0;
}

.analysis-progress.ritual-mode .progress-text {
  font-size: 0.88rem;
  color: var(--gold);
  letter-spacing: 0.05em;
}

.analysis-progress.ritual-mode .progress-bar-track {
  height: 4px;
  background: rgba(212, 175, 55, 0.08);
}

.analysis-progress.ritual-mode .progress-bar-fill {
  background: linear-gradient(90deg, var(--gold-dim), var(--gold), var(--gold-light));
}

/* ===== 5层阶梯渲染样式 ===== */
.tiers-container {
  margin: 12px 0;
}

.tier-block {
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius);
  margin-bottom: 10px;
  overflow: hidden;
  transition: var(--transition);
}

.tier-unlocked {
  border-color: var(--border-gold);
}

.tier-locked {
  position: relative;
}

.tier-future {
  opacity: 0.5;
}

.tier-header {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border-subtle);
}

.tier-icon {
  font-size: 1.2rem;
  line-height: 1;
}

.tier-name {
  flex: 1;
  font-size: 0.88rem;
  color: var(--gold);
  letter-spacing: 0.05em;
}

.tier-badge {
  font-size: 0.85rem;
  padding: 2px 8px;
  border-radius: 10px;
}

.tier-badge-unlocked {
  background: rgba(46, 204, 113, 0.12);
  color: #2ecc71;
}

.tier-badge-locked {
  background: rgba(255, 255, 255, 0.04);
  color: var(--text-dim);
}

.tier-content {
  padding: 12px 16px;
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 1.8;
  white-space: pre-line;
}

.tier-blur {
  max-height: 60px;
  overflow: hidden;
  position: relative;
  -webkit-line-clamp: 2;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  filter: blur(1px);
  opacity: 0.6;
}

.tier-blur-deep {
  filter: blur(3px);
  opacity: 0.3;
  max-height: 36px;
}

.tier-lock-overlay {
  padding: 16px;
  text-align: center;
  border-top: 1px solid var(--border-subtle);
}

.tier-lock-text {
  font-size: 0.85rem;
  color: var(--text-secondary);
  margin-bottom: 12px;
  font-style: italic;
}

.tier-unlock-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.tier-unlock-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 14px 20px;
  border-radius: var(--radius-sm);
  font-family: var(--font-serif);
  font-size: 0.88rem;
  cursor: pointer;
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
  transition: var(--transition);
}

.tier-unlock-primary {
  border: 1px solid var(--gold);
  background: rgba(212, 175, 55, 0.12);
  color: var(--gold);
  font-weight: 600;
}

.tier-unlock-primary:active {
  background: rgba(212, 175, 55, 0.2);
  transform: scale(0.98);
}

.tier-unlock-secondary {
  border: 1px solid var(--border-subtle);
  background: transparent;
  color: var(--text-secondary);
}

.tier-unlock-secondary:active {
  background: rgba(255, 255, 255, 0.04);
}

/* ===== 付费选项卡片（单项 vs 月卡锚定） ===== */
.unlock-choice {
  margin: 20px 0 8px;
  padding: 20px 16px;
  background: rgba(255, 215, 0, 0.04);
  border: 1px solid rgba(255, 215, 0, 0.15);
  border-radius: 12px;
}
.unlock-choice-title {
  text-align: center;
  font-size: 0.95rem;
  color: var(--gold);
  margin-bottom: 16px;
  letter-spacing: 0.05em;
}
.unlock-choice-cards {
  display: flex;
  gap: 10px;
}
.unlock-card {
  flex: 1;
  padding: 16px 10px;
  background: rgba(0, 0, 0, 0.3);
  border: 1px solid var(--border-subtle);
  border-radius: 10px;
  text-align: center;
  cursor: pointer;
  transition: all 0.2s;
  position: relative;
}
.unlock-card:active {
  transform: scale(0.97);
}
.unlock-card-hot {
  border-color: var(--gold);
  background: rgba(255, 215, 0, 0.08);
}
.unlock-card-badge {
  position: absolute;
  top: -8px;
  right: -4px;
  background: linear-gradient(135deg, #e74c3c, #c0392b);
  color: #fff;
  font-size: 0.65rem;
  padding: 2px 8px;
  border-radius: 8px;
  font-weight: 600;
}
.unlock-card-label {
  font-size: 0.85rem;
  color: var(--text-secondary);
  margin-bottom: 6px;
}
.unlock-card-hot .unlock-card-label {
  color: var(--gold);
}
.unlock-card-price {
  font-size: 1.2rem;
  font-weight: 700;
  color: #fff;
  margin-bottom: 4px;
}
.unlock-card-price .price-original {
  font-size: 0.75rem;
  color: var(--text-dim);
  text-decoration: line-through;
  margin-right: 4px;
}
.unlock-card-price .price-current {
  color: var(--gold);
}
.unlock-card-desc {
  font-size: 0.72rem;
  color: var(--text-dim);
}
.unlock-choice-share {
  text-align: center;
  margin-top: 12px;
}

/* ===== 签等级徽章 ===== */
.fortune-level-badge {
  text-align: center;
  padding: 16px 0 8px;
  font-size: 1.2rem;
  font-weight: 700;
  letter-spacing: 0.15em;
}

.fortune-shangshang {
  color: #f0d060;
  text-shadow: 0 0 20px rgba(240, 208, 96, 0.4), 0 0 40px rgba(240, 208, 96, 0.15);
  animation: goldGlow 2s ease-in-out infinite;
}

@keyframes goldGlow {
  0%, 100% { text-shadow: 0 0 20px rgba(240, 208, 96, 0.4); }
  50% { text-shadow: 0 0 30px rgba(240, 208, 96, 0.6), 0 0 50px rgba(240, 208, 96, 0.2); }
}

.fortune-shang {
  color: #d4af37;
  text-shadow: 0 0 10px rgba(212, 175, 55, 0.2);
}

.fortune-zhong {
  color: var(--text-secondary);
}

.fortune-xia {
  color: var(--text-dim);
}

/* ===== 分享区域差异化 ===== */
.share-area {
  margin-top: 12px;
}

.share-redirect-area {
  text-align: center;
  padding: 20px 16px;
  margin-top: 12px;
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius);
}

.share-redirect-text {
  font-size: 0.88rem;
  color: var(--text-secondary);
  margin-bottom: 12px;
}

.share-card-btn-glow {
  border-color: var(--gold) !important;
  background: rgba(212, 175, 55, 0.08) !important;
  color: var(--gold) !important;
  font-weight: 600;
  animation: subtleGlow 3s ease-in-out infinite;
}

@keyframes subtleGlow {
  0%, 100% { box-shadow: 0 0 0 rgba(212, 175, 55, 0); }
  50% { box-shadow: 0 0 12px rgba(212, 175, 55, 0.15); }
}

/* ===== 命盘进度徽章（顶栏） ===== */
.mingpan-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 8px;
  background: rgba(212, 175, 55, 0.12);
  border: 1px solid var(--border-gold);
  border-radius: 10px;
  color: var(--gold);
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-decoration: none;
  min-height: 20px;
}

.mingpan-badge:active {
  background: rgba(212, 175, 55, 0.2);
}

/* ===== 每日运势卡片（首页） ===== */
.daily-fortune-card {
  background: var(--bg-card);
  border: 2px solid var(--border-gold);
  border-radius: var(--radius);
  padding: 20px 16px;
  margin-bottom: 12px;
  position: relative;
  overflow: hidden;
}

.daily-fortune-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 3px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
}

.daily-fortune-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}

.daily-fortune-title {
  font-size: 1rem;
  color: var(--gold);
  letter-spacing: 0.08em;
}

.daily-fortune-date {
  font-size: 0.88rem;
  color: var(--text-dim);
}

.daily-fortune-phrase {
  font-size: 0.95rem;
  color: var(--text-primary);
  line-height: 1.8;
  margin-bottom: 14px;
  font-style: italic;
}

.daily-fortune-overall {
  display: inline-block;
  padding: 3px 12px;
  border-radius: 12px;
  font-size: 0.92rem;
  font-weight: 600;
  margin-bottom: 12px;
}

.overall-daji { background: rgba(240, 208, 96, 0.15); color: #f0d060; }
.overall-zhongji { background: rgba(212, 175, 55, 0.1); color: var(--gold); }
.overall-xiaoji { background: rgba(46, 204, 113, 0.1); color: #2ecc71; }
.overall-zhongping { background: rgba(255, 255, 255, 0.04); color: var(--text-secondary); }
.overall-xiaoxiong { background: rgba(231, 76, 60, 0.08); color: #e67e22; }

.fortune-unlock-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 12px;
}

.fortune-unlock-item {
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  padding: 10px 8px;
  text-align: center;
  cursor: pointer;
  transition: var(--transition);
  min-height: 60px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  -webkit-tap-highlight-color: transparent;
}

.fortune-unlock-item:active {
  border-color: var(--border-gold);
  background: rgba(212, 175, 55, 0.04);
}

.fortune-unlock-item .unlock-label {
  font-size: 0.92rem;
  color: var(--text-secondary);
}

.fortune-unlock-item .unlock-price {
  font-size: 0.85rem;
  color: var(--gold);
  font-weight: 600;
}

.fortune-unlock-item.unlocked {
  border-color: var(--border-gold);
  background: rgba(212, 175, 55, 0.06);
}

.fortune-unlock-item.unlocked .unlock-label {
  color: var(--gold);
}

.fortune-unlock-item.unlocked .unlock-price {
  font-size: 0.88rem;
  color: var(--text-secondary);
  font-weight: 400;
}

.fortune-unlock-all {
  margin-top: 8px;
}

.fortune-revealed {
  font-size: 0.85rem;
  color: var(--text-secondary);
  line-height: 1.7;
  padding: 8px 0;
}

/* ===== 生日输入弹窗 ===== */
.birthday-modal {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background: var(--bg-overlay);
  z-index: 1001;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}

.birthday-modal-content {
  background: var(--bg-secondary);
  border: 1px solid var(--border-gold);
  border-radius: var(--radius-lg);
  padding: 24px 20px;
  max-width: 340px;
  width: 100%;
  text-align: center;
}

.birthday-modal-content h3 {
  color: var(--gold);
  margin-bottom: 6px;
}

.birthday-modal-content p {
  font-size: 0.92rem;
  color: var(--text-dim);
  margin-bottom: 16px;
}

.birthday-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
  margin-bottom: 16px;
}

.birthday-row .form-input {
  text-align: center;
  padding: 10px 4px;
}

/* ===== 命盘页 ===== */
.mingpan-progress-bar {
  margin: 16px 0;
}

.mingpan-progress-track {
  width: 100%;
  height: 8px;
  background: rgba(255, 255, 255, 0.06);
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 8px;
}

.mingpan-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--gold-dim), var(--gold));
  border-radius: 4px;
  transition: width 0.6s ease;
}

.mingpan-progress-text {
  text-align: center;
  font-size: 0.92rem;
  color: var(--text-dim);
}

.mingpan-progress-text strong {
  color: var(--gold);
  font-size: 0.95rem;
}

.mingpan-grid {
  display: grid;
  gap: 10px;
  margin: 16px 0;
}

.mingpan-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  transition: var(--transition);
}

.mingpan-item.completed {
  border-color: var(--border-gold);
  background: rgba(212, 175, 55, 0.04);
}

.mingpan-item .mp-icon {
  font-size: 1.4rem;
  flex-shrink: 0;
}

.mingpan-item .mp-info {
  flex: 1;
  min-width: 0;
}

.mingpan-item .mp-name {
  font-size: 0.88rem;
  color: var(--text-primary);
  margin-bottom: 2px;
}

.mingpan-item.completed .mp-name {
  color: var(--gold);
}

.mingpan-item .mp-brief {
  font-size: 0.88rem;
  color: var(--text-dim);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.mingpan-item.completed .mp-brief {
  color: var(--text-secondary);
}

.mingpan-item .mp-action {
  flex-shrink: 0;
  font-size: 0.92rem;
  color: var(--gold);
  white-space: nowrap;
  min-height: 36px;
  display: flex;
  align-items: center;
}

.mingpan-item .mp-action .price-current {
  font-weight: 600;
}

.mingpan-item.completed .mp-action {
  color: #2ecc71;
  font-size: 0.85rem;
}

.mingpan-complete-btn {
  margin-top: 16px;
  text-align: center;
}

.mingpan-complete-btn .upgrade-note {
  font-size: 0.88rem;
  color: var(--gold-dim);
  margin-top: 6px;
}

/* ===== 祈福灯5档选择 ===== */
.qifu-light-grid {
  display: grid;
  gap: 10px;
  margin: 12px 0;
}

.qifu-light-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius);
  cursor: pointer;
  transition: var(--transition);
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}

.qifu-light-item:active {
  border-color: var(--border-gold);
}

.qifu-light-item.selected {
  border-color: var(--gold);
  background: rgba(212, 175, 55, 0.06);
}

.qifu-light-item .ql-icon {
  font-size: 1.6rem;
  flex-shrink: 0;
}

.qifu-light-item .ql-info {
  flex: 1;
}

.qifu-light-item .ql-name {
  font-size: 0.9rem;
  color: var(--text-primary);
  margin-bottom: 2px;
}

.qifu-light-item.selected .ql-name {
  color: var(--gold);
}

.qifu-light-item .ql-desc {
  font-size: 0.88rem;
  color: var(--text-dim);
}

.qifu-light-item .ql-right {
  text-align: right;
  flex-shrink: 0;
}

.qifu-light-item .ql-price {
  font-size: 1.1rem;
  color: var(--gold);
  font-weight: 600;
}

.qifu-light-item .ql-days {
  font-size: 0.82rem;
  color: var(--text-dim);
}

/* ===== 虚拟佛堂 ===== */
.virtual-shrine {
  background: var(--bg-card);
  border: 1px solid var(--border-gold);
  border-radius: var(--radius);
  padding: 20px 16px;
  text-align: center;
  margin-bottom: 16px;
  position: relative;
  overflow: hidden;
}

.virtual-shrine::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background: radial-gradient(ellipse at 50% 30%, rgba(212, 175, 55, 0.06), transparent 60%);
  pointer-events: none;
}

.shrine-title {
  font-size: 0.9rem;
  color: var(--gold);
  margin-bottom: 12px;
  letter-spacing: 0.08em;
  position: relative;
}

.shrine-stats {
  font-size: 0.92rem;
  color: var(--text-dim);
  margin-bottom: 14px;
  position: relative;
}

.shrine-stats strong {
  color: var(--gold);
}

.shrine-lanterns {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  padding: 8px 0;
  position: relative;
}

.shrine-lantern {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}

.shrine-lantern .lantern-flame {
  font-size: 1.6rem;
  animation: flicker 2s ease-in-out infinite alternate;
}

@keyframes flicker {
  0% { opacity: 0.8; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.05); }
  100% { opacity: 0.9; transform: scale(0.98); }
}

.shrine-lantern .lantern-label {
  font-size: 0.92rem;
  color: var(--text-dim);
}

/* 我的灯列表 */
.my-lights-list {
  margin: 14px 0;
}

.my-light-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px;
  background: var(--bg-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  margin-bottom: 8px;
}

.my-light-item .ml-icon {
  font-size: 1.4rem;
}

.my-light-item .ml-info {
  flex: 1;
}

.my-light-item .ml-name {
  font-size: 0.85rem;
  color: var(--text-primary);
}

.my-light-item .ml-for {
  font-size: 0.88rem;
  color: var(--text-dim);
}

.my-light-item .ml-days {
  font-size: 0.9rem;
  color: var(--gold);
  font-weight: 600;
  white-space: nowrap;
}

.my-light-item .ml-days.expiring {
  color: #e67e22;
  animation: subtleGlow 1.5s ease-in-out infinite;
}

.my-light-item .ml-renew {
  padding: 6px 12px;
  border: 1px solid var(--border-gold);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--gold);
  font-size: 0.88rem;
  font-family: var(--font-serif);
  cursor: pointer;
  min-height: 32px;
  -webkit-tap-highlight-color: transparent;
}

.my-light-item .ml-renew:active {
  background: rgba(212, 175, 55, 0.1);
}

/* 划线价 - 深色背景可辨识 */
.price-original {
  color: rgba(200, 185, 160, 0.45);
  text-decoration: line-through;
  font-size: 0.82em;
  margin-right: 4px;
}
/* "起"字缩小降低心理防线 */
.grid-price small {
  font-size: 0.65em;
  opacity: 0.7;
  font-weight: 400;
}

/* 结缘人收益滚动条 */
.recent-earnings {
  background: rgba(201, 168, 76, 0.08);
  border: 1px solid rgba(201, 168, 76, 0.15);
  border-radius: 8px;
  padding: 8px 12px;
  margin-bottom: 16px;
  overflow: hidden;
}
.earning-scroll {
  color: var(--gold-light);
  font-size: 0.78rem;
  white-space: nowrap;
  animation: scrollEarnings 15s linear infinite;
  opacity: 0.85;
}
@keyframes scrollEarnings {
  0% { transform: translateX(100%); }
  100% { transform: translateX(-100%); }
}

/* 功德灯墙实时动态 */
.live-feed {
  background: rgba(201, 168, 76, 0.06);
  border: 1px solid rgba(201, 168, 76, 0.12);
  border-radius: 8px;
  padding: 6px 12px;
  margin-bottom: 12px;
  overflow: hidden;
  height: 32px;
  line-height: 32px;
}
.live-feed-inner {
  color: var(--gold);
  font-size: 0.78rem;
  white-space: nowrap;
  animation: scrollFeed 20s linear infinite;
  opacity: 0.8;
}
@keyframes scrollFeed {
  0% { transform: translateX(100%); }
  100% { transform: translateX(-100%); }
}

/* ===== CSS Icons ===== */
.icon{display:inline-block;width:1.2em;height:1.2em;position:relative;vertical-align:middle;flex-shrink:0}
.icon-lantern::before{content:'';position:absolute;top:.05em;left:.15em;width:.9em;height:1em;background:radial-gradient(ellipse at 50% 40%,#e8534a,#a63d2f);border-radius:50% 50% 45% 45%;box-shadow:0 0 .3em rgba(232,83,74,.3)}
.icon-lantern::after{content:'';position:absolute;top:-.05em;left:.4em;width:.4em;height:.2em;background:var(--gold);border-radius:.1em .1em 0 0}
.icon-candle::before{content:'';position:absolute;top:.05em;left:.4em;width:.3em;height:.4em;background:radial-gradient(ellipse,#f0d060,#e0a020);border-radius:50% 50% 30% 30%;box-shadow:0 0 .3em rgba(240,208,96,.5)}
.icon-candle::after{content:'';position:absolute;top:.45em;left:.35em;width:.4em;height:.65em;background:linear-gradient(to bottom,#ede6d6,#c9c0ae);border-radius:.05em .05em .15em .15em}
.icon-stick::before{content:'';position:absolute;top:.05em;left:.5em;width:.15em;height:1.1em;background:linear-gradient(to bottom,#7ab648,#4a8a2a);border-radius:.08em;box-shadow:.15em 0 0 0 #6aa038,-.12em 0 0 0 #6aa038}
.icon-crystal::before{content:'';position:absolute;top:.05em;left:.15em;width:.9em;height:.85em;background:radial-gradient(ellipse at 35% 35%,#b07acc,#6b3a8b,#4a2268);border-radius:50%;box-shadow:inset 0 -.1em .2em rgba(255,255,255,.15),0 0 .25em rgba(107,58,139,.3)}
.icon-crystal::after{content:'';position:absolute;bottom:0;left:.25em;width:.7em;height:.25em;background:linear-gradient(to bottom,var(--gold-dim),var(--gold));border-radius:0 0 .3em .3em;clip-path:polygon(10% 0%,90% 0%,100% 100%,0% 100%)}
.icon-meditate::before{content:'';position:absolute;top:.1em;left:.15em;width:.9em;height:.95em;background:var(--gold);border-radius:50%;opacity:.15}
.icon-meditate::after{content:'';position:absolute;top:.15em;left:.35em;width:.5em;height:.5em;background:var(--gold);border-radius:50% 50% 20% 20%;box-shadow:0 .55em 0 -.15em var(--gold)}
.icon-coin::before{content:'';position:absolute;top:.05em;left:.1em;width:1em;height:1em;background:radial-gradient(circle,var(--gold-light),var(--gold),var(--gold-dim));border-radius:50%;box-shadow:inset 0 0 .1em rgba(0,0,0,.15)}
.icon-coin::after{content:'';position:absolute;top:.35em;left:.4em;width:.35em;height:.35em;background:var(--bg-primary);border:1px solid var(--gold-dim)}
.icon-palm::before{content:'';position:absolute;top:.05em;left:.15em;width:.9em;height:1.05em;background:var(--gold);border-radius:.35em .35em .2em .2em;opacity:.85}
.icon-palm::after{content:'';position:absolute;top:.15em;left:.1em;width:.2em;height:.45em;background:var(--gold);border-radius:.1em;box-shadow:.85em 0 0 0 var(--gold),.65em -.1em 0 0 var(--gold),.2em -.05em 0 0 var(--gold)}
.icon-calendar::before{content:'';position:absolute;top:.15em;left:.1em;width:1em;height:.9em;background:var(--bg-secondary);border:1.5px solid var(--gold-dim);border-radius:.15em}
.icon-calendar::after{content:'';position:absolute;top:.05em;left:.25em;width:.7em;height:.2em;background:var(--gold);border-radius:.05em}
.icon-moon::before{content:'';position:absolute;top:.05em;left:.15em;width:.9em;height:.9em;background:var(--gold);border-radius:50%;box-shadow:.3em -.15em 0 0 var(--bg-primary)}
.icon-brush::before{content:'';position:absolute;top:.05em;left:.45em;width:.25em;height:.7em;background:linear-gradient(to bottom,var(--gold-dim),#8b6914);border-radius:.05em;transform:rotate(-15deg)}
.icon-brush::after{content:'';position:absolute;top:.7em;left:.38em;width:.4em;height:.4em;background:linear-gradient(to bottom,#3a2a1a,#1a1a1a);border-radius:.1em .1em .2em .2em;transform:rotate(-15deg)}
.icon-shield::before{content:'';position:absolute;top:.05em;left:.15em;width:.9em;height:1.05em;background:linear-gradient(135deg,var(--gold-light),var(--gold));clip-path:polygon(50% 0%,100% 15%,100% 65%,50% 100%,0% 65%,0% 15%)}
.icon-shield::after{content:'';position:absolute;top:.25em;left:.4em;width:.4em;height:.4em;background:var(--bg-primary);border-radius:50%}
.icon-star::before{content:'';position:absolute;top:.05em;left:.1em;width:1em;height:1em;background:var(--gold);clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.icon-peach::before{content:'';position:absolute;top:.15em;left:.2em;width:.8em;height:.85em;background:radial-gradient(ellipse at 40% 35%,#f5a0b0,#e07090);border-radius:50% 50% 45% 45%}
.icon-peach::after{content:'';position:absolute;top:0;left:.5em;width:.35em;height:.25em;background:#5a9a3a;border-radius:0 80% 0 80%;transform:rotate(-30deg)}
.icon-pray::before{content:'';position:absolute;top:.1em;left:.3em;width:.6em;height:.9em;background:var(--gold);border-radius:.3em .3em .15em .15em;transform:rotate(-8deg)}
.icon-pray::after{content:'';position:absolute;top:.1em;left:.3em;width:.6em;height:.9em;background:var(--gold-dim);border-radius:.3em .3em .15em .15em;transform:rotate(8deg)}
.icon-ingot::before{content:'';position:absolute;top:.2em;left:.1em;width:1em;height:.7em;background:radial-gradient(ellipse at 50% 30%,var(--gold-light),var(--gold));border-radius:50% 50% 10% 10%}
.icon-ingot::after{content:'';position:absolute;top:.05em;left:.35em;width:.5em;height:.3em;background:var(--gold-dim);border-radius:50% 50% 0 0}
.icon-dharma::before{content:'';position:absolute;top:.05em;left:.1em;width:1em;height:1em;border:2px solid var(--gold);border-radius:50%}
.icon-dharma::after{content:'';position:absolute;top:.45em;left:.25em;width:.7em;height:.15em;background:var(--gold);border-radius:.08em;transform:rotate(60deg)}
.icon-lotus::before{content:'';position:absolute;top:.15em;left:.2em;width:.8em;height:.7em;background:radial-gradient(ellipse at 50% 60%,#f0a0b8,#e080a0,#d06088);border-radius:50% 50% 30% 30%}
.icon-lotus::after{content:'';position:absolute;top:.05em;left:.35em;width:.5em;height:.35em;background:radial-gradient(ellipse,#f5c0d0,#e8a0b8);border-radius:50% 50% 20% 20%}
.icon-person::before{content:'';position:absolute;top:.05em;left:.4em;width:.4em;height:.4em;background:var(--gold);border-radius:50%}
.icon-person::after{content:'';position:absolute;top:.5em;left:.25em;width:.7em;height:.55em;background:var(--gold);border-radius:.35em .35em 0 0;opacity:.85}
.icon-briefcase::before{content:'';position:absolute;top:.2em;left:.1em;width:1em;height:.75em;background:var(--gold-dim);border:1.5px solid var(--gold);border-radius:.15em}
.icon-briefcase::after{content:'';position:absolute;top:.05em;left:.35em;width:.5em;height:.25em;border:1.5px solid var(--gold);border-bottom:none;border-radius:.15em .15em 0 0}
.icon-heart::before{content:'';position:absolute;top:.15em;left:.1em;width:1em;height:.85em;background:#e06080;clip-path:path('M0.5 0.85 C0.15 0.55 0 0.3 0.18 0.12 C0.3 0 0.45 0.05 0.5 0.2 C0.55 0.05 0.7 0 0.82 0.12 C1 0.3 0.85 0.55 0.5 0.85')}
.icon-wave::before{content:'';position:absolute;top:.3em;left:.05em;width:1.1em;height:.5em;border-bottom:2px solid var(--gold);border-radius:0 0 50% 50%;box-shadow:0 -.35em 0 -.02em var(--gold-dim)}
.icon-amulet::before{content:'';position:absolute;top:.05em;left:.25em;width:.7em;height:1em;background:var(--gold);border-radius:.35em;box-shadow:inset 0 0 .15em rgba(0,0,0,.2)}
.icon-amulet::after{content:'';position:absolute;top:.35em;left:.45em;width:.3em;height:.3em;background:var(--bg-primary);border-radius:50%}
.icon-home::before{content:'';position:absolute;top:.35em;left:.1em;width:1em;height:.7em;background:var(--gold);border-radius:.1em}
.icon-home::after{content:'';position:absolute;top:.05em;left:.15em;width:0;height:0;border-left:.45em solid transparent;border-right:.45em solid transparent;border-bottom:.4em solid var(--gold)}
.icon-check::before{content:'';position:absolute;top:.25em;left:.15em;width:.35em;height:.6em;border-right:2.5px solid #2ecc71;border-bottom:2.5px solid #2ecc71;transform:rotate(40deg)}
.icon-lock::before{content:'';position:absolute;top:.3em;left:.15em;width:.9em;height:.7em;background:var(--gold-dim);border-radius:.1em}
.icon-lock::after{content:'';position:absolute;top:.05em;left:.3em;width:.6em;height:.4em;border:2px solid var(--gold);border-bottom:none;border-radius:.3em .3em 0 0}
.icon-unlock::before{content:'';position:absolute;top:.3em;left:.15em;width:.9em;height:.7em;background:var(--gold-dim);border-radius:.1em}
.icon-unlock::after{content:'';position:absolute;top:0;left:.35em;width:.6em;height:.35em;border:2px solid var(--gold);border-bottom:none;border-left:none;border-radius:0 .3em .3em 0}
.icon-bulb::before{content:'';position:absolute;top:.05em;left:.2em;width:.8em;height:.8em;background:radial-gradient(circle at 50% 40%,#f0d060,var(--gold));border-radius:50%;box-shadow:0 0 .3em rgba(240,208,96,.3)}
.icon-bulb::after{content:'';position:absolute;top:.8em;left:.4em;width:.4em;height:.25em;background:var(--gold-dim);border-radius:0 0 .1em .1em}
.icon-scroll::before{content:'';position:absolute;top:.1em;left:.2em;width:.8em;height:.9em;background:var(--bg-secondary);border:1px solid var(--gold-dim);border-radius:.05em}
.icon-scroll::after{content:'';position:absolute;top:.05em;left:.12em;width:.15em;height:1em;background:var(--gold);border-radius:.08em;box-shadow:.8em 0 0 0 var(--gold)}
.icon-taiji::before{content:'';position:absolute;top:.05em;left:.1em;width:1em;height:1em;background:linear-gradient(to bottom,var(--text-primary) 50%,var(--gold) 50%);border-radius:50%;border:1px solid var(--gold-dim)}
.icon-taiji::after{content:'';position:absolute;top:.3em;left:.35em;width:.3em;height:.3em;background:var(--text-primary);border-radius:50%;box-shadow:.3em 0 0 0 var(--gold)}
.icon-leaf::before{content:'';position:absolute;top:.1em;left:.15em;width:.8em;height:.9em;background:linear-gradient(135deg,#d4a040,#c08030);border-radius:50% 0 50% 0;transform:rotate(-15deg)}
.icon-bell::before{content:'';position:absolute;top:.1em;left:.2em;width:.8em;height:.7em;background:var(--gold);border-radius:50% 50% 0 0}
.icon-bell::after{content:'';position:absolute;top:.75em;left:.5em;width:.2em;height:.2em;background:var(--gold-dim);border-radius:50%}
.icon-camera::before{content:'';position:absolute;top:.25em;left:.1em;width:1em;height:.7em;background:var(--bg-secondary);border:1.5px solid var(--gold);border-radius:.1em}
.icon-camera::after{content:'';position:absolute;top:.35em;left:.38em;width:.4em;height:.4em;border:1.5px solid var(--gold);border-radius:50%}
.icon-sparkle::before{content:'';position:absolute;top:.15em;left:.15em;width:.9em;height:.9em;background:var(--gold);clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);opacity:.6}
.icon-sparkle::after{content:'';position:absolute;top:.3em;left:.3em;width:.5em;height:.5em;background:var(--gold-light);clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);transform:rotate(30deg)}
.icon-megaphone::before{content:'';position:absolute;top:.2em;left:.15em;width:.7em;height:.7em;background:var(--gold);clip-path:polygon(0% 30%,60% 0%,60% 100%,0% 70%)}
.icon-megaphone::after{content:'';position:absolute;top:.3em;left:.85em;width:.2em;height:.5em;background:var(--gold-dim);border-radius:0 .2em .2em 0}
.icon-clipboard::before{content:'';position:absolute;top:.15em;left:.15em;width:.9em;height:.9em;background:var(--bg-secondary);border:1.5px solid var(--gold-dim);border-radius:.08em}
.icon-clipboard::after{content:'';position:absolute;top:.05em;left:.35em;width:.5em;height:.2em;background:var(--gold);border-radius:.05em}
.icon-creditcard::before{content:'';position:absolute;top:.2em;left:.05em;width:1.1em;height:.75em;background:var(--bg-secondary);border:1.5px solid var(--gold-dim);border-radius:.08em}
.icon-creditcard::after{content:'';position:absolute;top:.45em;left:.05em;width:1.1em;height:.15em;background:var(--gold-dim)}
.icon-link::before{content:'';position:absolute;top:.3em;left:.05em;width:.55em;height:.45em;border:2px solid var(--gold);border-radius:.25em}
.icon-link::after{content:'';position:absolute;top:.3em;left:.55em;width:.55em;height:.45em;border:2px solid var(--gold);border-radius:.25em}
.icon-chart::before{content:'';position:absolute;bottom:.1em;left:.1em;width:.25em;height:.6em;background:var(--gold);border-radius:.05em .05em 0 0;box-shadow:.35em .15em 0 0 var(--gold-dim),.7em -.1em 0 0 var(--gold-light)}
.icon-chart::after{content:'';position:absolute;bottom:.05em;left:.05em;width:1.1em;height:.08em;background:var(--gold-dim);border-radius:.04em}
.icon-book::before{content:'';position:absolute;top:.1em;left:.15em;width:.9em;height:.9em;background:var(--gold-dim);border-radius:0 .1em .1em 0;border-left:2px solid var(--gold)}
.icon-book::after{content:'';position:absolute;top:.25em;left:.35em;width:.55em;height:.08em;background:var(--gold);border-radius:.04em;box-shadow:0 .2em 0 0 var(--gold),0 .4em 0 0 var(--gold)}

/* ===== Visual Enhancement ===== */
.card,.module-card,.daily-fortune-card,.upgrade-card{box-shadow:inset 0 0 20px rgba(201,168,76,.03),0 2px 8px rgba(0,0,0,.15)}
.divider{text-align:center;margin:20px 0;position:relative;height:1px;background:linear-gradient(90deg,transparent,var(--border-gold),transparent)}
.divider::before{content:'◆';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg-primary);color:var(--gold-dim);font-size:.5rem;padding:0 8px;line-height:1}
.btn:active{transform:scale(.97)}
.btn-gold:active{transform:scale(.97);background:linear-gradient(135deg,var(--gold-light),var(--gold))}
.daily-fortune-card::before{content:"";position:absolute;top:0;left:0;width:100%;height:3px;background:repeating-linear-gradient(90deg,transparent 0px,transparent 8px,var(--gold) 8px,var(--gold) 10px,transparent 10px,transparent 14px,var(--gold-dim) 14px,var(--gold-dim) 16px)}
.card-title,.section-heading,.site-header .site-title{letter-spacing:.08em;text-shadow:0 0 12px rgba(201,168,76,.08)}
body::after{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(201,168,76,.008) 2px,rgba(201,168,76,.008) 3px);pointer-events:none;z-index:0}
/* Toast elegant float up */
.toast{animation:toastIn .4s cubic-bezier(.4,0,.2,1)!important}
@keyframes toastIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
/* Ripple effect on gold buttons */
.btn-gold{position:relative;overflow:hidden}
.btn-gold .ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.3);transform:scale(0);animation:rippleAnim .6s linear;pointer-events:none}
@keyframes rippleAnim{to{transform:scale(4);opacity:0}}
/* Title stroke animation for 首次 */
@keyframes strokeDraw{from{stroke-dashoffset:200}to{stroke-dashoffset:0}}
.site-title-anim{stroke-dasharray:200;animation:strokeDraw 2s ease forwards}

/* ===== 点灯仪式 - Light Blessing ===== */
.light-blessing-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:10000;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.6);animation:blessingFadeIn .3s ease}
.blessing-glow{position:absolute;width:60px;height:60px;border-radius:50%;background:radial-gradient(circle,rgba(240,208,96,.8),rgba(212,175,55,.4),transparent);animation:lightBlessing 2.5s ease-out forwards}
.blessing-text{position:relative;z-index:1;color:var(--gold-light);font-size:1.3rem;font-weight:600;letter-spacing:.15em;text-align:center;text-shadow:0 0 20px rgba(240,208,96,.5),0 0 40px rgba(240,208,96,.2);opacity:0;animation:blessingTextIn .6s ease .4s forwards;line-height:1.8}
.blessing-particles{position:absolute;top:50%;left:50%;width:0;height:0}
.blessing-particle{position:absolute;width:4px;height:4px;background:var(--gold-light);border-radius:50%;animation:particleFloat 2s ease-out forwards}
@keyframes lightBlessing{0%{transform:scale(1);opacity:1}50%{transform:scale(20);opacity:.6}100%{transform:scale(40);opacity:0}}
@keyframes blessingTextIn{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:translateY(0)}}
@keyframes blessingFadeIn{from{opacity:0}to{opacity:1}}
@keyframes particleFloat{0%{transform:translate(0,0) scale(1);opacity:1}100%{transform:translate(var(--px),var(--py)) scale(0);opacity:0}}
/* Paid blessing - more particles */
.blessing-premium .blessing-particle{width:6px;height:6px;box-shadow:0 0 8px rgba(240,208,96,.6)}
.blessing-ring{position:absolute;width:60px;height:60px;border-radius:50%;border:2px solid rgba(240,208,96,.4);animation:ringExpand 2s ease-out forwards}
@keyframes ringExpand{0%{transform:scale(1);opacity:.8}100%{transform:scale(15);opacity:0}}
/* 灯亮起过渡 */
.shrine-lantern{opacity:0;animation:lanternLightOn .5s ease forwards}
.shrine-lantern:nth-child(1){animation-delay:.1s}
.shrine-lantern:nth-child(2){animation-delay:.2s}
.shrine-lantern:nth-child(3){animation-delay:.3s}
@keyframes lanternLightOn{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}
/* 选灯微光 */
.qifu-light-item.selected{animation:selectedGlow 2s ease-in-out infinite}
@keyframes selectedGlow{0%,100%{box-shadow:0 0 8px rgba(212,175,55,.1)}50%{box-shadow:0 0 16px rgba(212,175,55,.25)}}
/* 心愿框烛光摇曳 */
#wishText:focus{border-color:var(--gold);animation:candleFlicker 2s ease-in-out infinite}
@keyframes candleFlicker{0%,100%{box-shadow:0 0 8px rgba(240,208,96,.15)}25%{box-shadow:0 0 12px rgba(240,208,96,.25)}50%{box-shadow:0 0 6px rgba(240,208,96,.1)}75%{box-shadow:0 0 10px rgba(240,208,96,.2)}}

/* ===== 摇签仪式 ===== */
.lottery-cylinder.shaking{animation:shakeHard 2.5s ease-in-out}
@keyframes shakeHard{0%,100%{transform:translateY(0) rotate(0)}10%{transform:translateY(-8px) rotate(-3deg)}20%{transform:translateY(4px) rotate(2deg)}30%{transform:translateY(-10px) rotate(-4deg)}40%{transform:translateY(6px) rotate(3deg)}50%{transform:translateY(-12px) rotate(-5deg)}60%{transform:translateY(8px) rotate(4deg)}70%{transform:translateY(-8px) rotate(-3deg)}80%{transform:translateY(4px) rotate(2deg)}90%{transform:translateY(-4px) rotate(-1deg)}}
/* 签掉落 */
.lottery-result.drop-in{animation:stickDrop .8s cubic-bezier(.22,.68,.36,1.2) forwards}
@keyframes stickDrop{0%{opacity:0;transform:translateY(-60px) scale(.9)}60%{opacity:1;transform:translateY(8px) scale(1.02)}80%{transform:translateY(-3px) scale(.99)}100%{transform:translateY(0) scale(1)}}
/* 上上签金光 */
.fortune-shangshang .lottery-result-inner,.fortune-shangshang .result-poem-full{border:2px solid var(--gold)!important;box-shadow:0 0 30px rgba(240,208,96,.2),inset 0 0 20px rgba(240,208,96,.05)!important;animation:goldShine 3s ease-in-out infinite}
@keyframes goldShine{0%,100%{box-shadow:0 0 20px rgba(240,208,96,.15),inset 0 0 20px rgba(240,208,96,.03)}50%{box-shadow:0 0 40px rgba(240,208,96,.3),inset 0 0 30px rgba(240,208,96,.08)}}
/* 下下签暗淡+温和 */
.fortune-xia .lottery-result-inner{opacity:.75;border-color:var(--text-dim)!important}
/* 打字机效果 */
.typewriter{overflow:hidden;white-space:pre-wrap;border-right:2px solid var(--gold);animation:typing 2s steps(40,end),blinkCaret .75s step-end infinite}
@keyframes typing{from{max-height:0}to{max-height:500px}}
@keyframes blinkCaret{from,to{border-color:transparent}50%{border-color:var(--gold)}}

/* ===== 上香仪式 ===== */
.incense-smoke{position:absolute;width:3px;background:linear-gradient(to top,rgba(200,200,200,.3),transparent);border-radius:50%;animation:smokeRise 3s ease-out forwards;pointer-events:none}
@keyframes smokeRise{0%{opacity:.6;height:0;transform:translateX(0) scaleX(1)}30%{height:40px;opacity:.5;transform:translateX(-3px) scaleX(1.5)}60%{height:60px;opacity:.3;transform:translateX(5px) scaleX(2)}100%{height:80px;opacity:0;transform:translateX(-2px) scaleX(3)}}
.incense-stick{width:4px;height:40px;background:linear-gradient(to bottom,#d4a040,#a07020);border-radius:2px;position:relative;transition:all .5s ease}
.incense-stick.lit::before{content:'';position:absolute;top:-6px;left:-2px;width:8px;height:8px;background:radial-gradient(circle,#f0d060,#e0a020);border-radius:50%;box-shadow:0 0 8px rgba(240,208,96,.6);animation:incenseGlow 1.5s ease-in-out infinite alternate}
@keyframes incenseGlow{0%{opacity:.7;transform:scale(.9)}100%{opacity:1;transform:scale(1.1)}}
.incense-pray-anim{animation:prayHands 1s ease-in-out}
@keyframes prayHands{0%{transform:scale(1)}50%{transform:scale(1.15)}100%{transform:scale(1)}}

/* ===== 禅坐仪式 ===== */
.meditation-circle.playing{animation:meditationSpin 20s linear infinite}
@keyframes meditationSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.meditation-circle.breathing{animation:breathe 8s ease-in-out infinite}
@keyframes breathe{0%,100%{transform:scale(1);box-shadow:0 0 30px rgba(201,168,76,.1)}50%{transform:scale(1.08);box-shadow:0 0 50px rgba(201,168,76,.2)}}
.meditation-dim{animation:dimScreen 2s ease forwards}
.meditation-bright{animation:brightScreen 2s ease forwards}
@keyframes dimScreen{from{filter:brightness(1)}to{filter:brightness(.6)}}
@keyframes brightScreen{from{filter:brightness(.6)}to{filter:brightness(1)}}
.breath-hint{font-size:.9rem;color:var(--gold);opacity:.7;animation:breathHintFade 4s ease-in-out infinite}
@keyframes breathHintFade{0%,100%{opacity:.5}50%{opacity:1}}
/* Timer in circle */
.meditation-timer-display{font-size:2rem;color:var(--gold);font-weight:700;letter-spacing:.1em}

/* ===== 付费服务加载仪式 ===== */
.ritual-bg{position:relative;overflow:hidden}
.ritual-bg::before{content:'';position:absolute;top:50%;left:50%;width:200%;height:200%;background:repeating-conic-gradient(transparent 0deg,rgba(201,168,76,.03) 10deg,transparent 20deg);transform:translate(-50%,-50%) rotate(0);animation:ritualSpin 8s linear infinite;pointer-events:none}
@keyframes ritualSpin{from{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}
/* 核心点拨金色大字 */
.core-insight{font-size:1.2rem;color:var(--gold-light);font-weight:700;letter-spacing:.1em;text-align:center;padding:16px;margin:12px 0;background:rgba(201,168,76,.06);border:1px solid var(--border-gold);border-radius:var(--radius);text-shadow:0 0 20px rgba(240,208,96,.3);animation:insightGlow 2.5s ease-in-out infinite}
@keyframes insightGlow{0%,100%{text-shadow:0 0 20px rgba(240,208,96,.2)}50%{text-shadow:0 0 30px rgba(240,208,96,.4),0 0 60px rgba(240,208,96,.1)}}
/* 渐显效果 */
.fade-in-up{animation:fadeInUp .6s ease forwards;opacity:0}
@keyframes fadeInUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* ===== 解梦仪式 ===== */
.dream-moonrise{animation:moonRise 1.5s ease forwards}
@keyframes moonRise{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}

/* ===== 黄历增强 ===== */
.yi-tag{background:rgba(46,204,113,.08);color:#2ecc71;border:1px solid rgba(46,204,113,.15);box-shadow:0 0 6px rgba(46,204,113,.08);border-radius:4px;padding:4px 10px;font-size:.88rem}
.ji-tag{background:rgba(180,60,50,.08);color:#c05050;border:1px solid rgba(180,60,50,.15);border-radius:4px;padding:4px 10px;font-size:.88rem}
.almanac-quote{font-size:1.05rem;color:var(--gold);letter-spacing:.1em;line-height:2;padding:12px 0;position:relative;text-align:center}
.almanac-quote::before,.almanac-quote::after{content:'"';font-size:1.5rem;color:var(--gold-dim);vertical-align:sub}
.almanac-quote::after{content:'"'}

/* ===== 功德灯墙滚动修复 ===== */
.light-wall-scroll{height:40px;overflow:hidden;margin:10px 0;position:relative}
.light-wall-scroll .scroll-content{animation:scrollUp 20s linear infinite}
.light-wall-scroll .scroll-item{height:40px;line-height:40px;font-size:.88rem;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.live-feed{background:rgba(201,168,76,.06);border:1px solid rgba(201,168,76,.12);border-radius:8px;padding:6px 12px;margin-bottom:12px;overflow:hidden;height:32px;line-height:32px}
.live-feed-inner{color:var(--gold);font-size:.78rem;white-space:nowrap;animation:scrollFeed 20s linear infinite;opacity:.8;display:inline-block}

/* ===== 先生每日寄语 ===== */
.daily-wisdom-card{background:linear-gradient(135deg,rgba(201,168,76,.08),rgba(180,140,60,.04));border:1px solid var(--border-gold);border-radius:var(--radius);padding:16px;margin-bottom:12px;position:relative;overflow:hidden}
.daily-wisdom-card::before{content:'';position:absolute;top:-20px;right:-20px;width:60px;height:60px;background:radial-gradient(circle,rgba(201,168,76,.08),transparent);border-radius:50%;pointer-events:none}
.wisdom-header{font-size:.85rem;color:var(--gold);margin-bottom:10px;display:flex;align-items:center;gap:6px}
.wisdom-header .icon{font-size:1rem}
.wisdom-wuxing{font-size:.72rem;color:var(--gold-dim);background:rgba(201,168,76,.1);padding:2px 8px;border-radius:10px;margin-left:4px}
.wisdom-text{font-size:.95rem;color:var(--text-primary);line-height:1.8;padding:0 12px;position:relative}
.wisdom-text::before{content:'\201C';position:absolute;left:-4px;top:-4px;font-size:1.6rem;color:var(--gold-dim);opacity:.5}
.wisdom-text::after{content:'\201D';display:block;text-align:right;font-size:1.6rem;color:var(--gold-dim);opacity:.5;line-height:0;margin-top:-4px;margin-right:-4px}
.wisdom-footer{font-size:.7rem;color:var(--text-dim);text-align:right;margin-top:8px;opacity:.6}

/* ===== 我的灯在守护 ===== */
.lantern-keeper-card{background:linear-gradient(145deg,rgba(60,45,20,.6),rgba(40,30,15,.8));border:1px solid rgba(201,168,76,.25);border-radius:var(--radius);padding:16px;margin-bottom:12px;box-shadow:0 2px 12px rgba(0,0,0,.15)}
.keeper-header{font-size:.9rem;color:var(--gold-light);margin-bottom:12px;display:flex;align-items:center;gap:8px}
.keeper-flame{display:inline-block;width:12px;height:16px;background:linear-gradient(to top,#e0a020,#f0d060);border-radius:50% 50% 50% 50% / 60% 60% 40% 40%;animation:flameBreath 1.5s ease-in-out infinite alternate;filter:blur(0.3px);box-shadow:0 0 8px rgba(240,208,96,.4)}
@keyframes flameBreath{0%{transform:scaleY(.85) scaleX(1);opacity:.8}100%{transform:scaleY(1.1) scaleX(.9);opacity:1}}
.keeper-light-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid rgba(201,168,76,.1)}
.keeper-light-item:last-of-type{border-bottom:none}
.keeper-light-icon{font-size:1.2rem;color:var(--gold);width:32px;text-align:center}
.keeper-light-info{flex:1}
.keeper-light-name{font-size:.82rem;color:var(--gold-light)}
.keeper-light-for{font-size:.72rem;color:rgba(201,168,76,.5);margin-top:2px}
.keeper-light-days{font-size:.75rem;color:var(--gold-dim);background:rgba(201,168,76,.08);padding:2px 8px;border-radius:10px}
.keeper-more{font-size:.72rem;color:var(--gold-dim);text-align:center;padding:6px 0;opacity:.7}
.keeper-renew-btn{display:block;text-align:center;color:var(--gold);font-size:.82rem;text-decoration:none;padding:8px 0;margin-top:8px;border-top:1px solid rgba(201,168,76,.15);transition:opacity .2s}
.keeper-renew-btn:active{opacity:.7}

/* ===== 灯到期提醒 ===== */
.lamp-expiry-bar{background:rgba(180,80,40,.08);border:1px solid rgba(180,80,40,.2);border-radius:8px;padding:10px 14px;margin-bottom:12px;font-size:.8rem;color:#c08050;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.lamp-expiry-bar .icon{font-size:1rem;color:#c08050}
.expiry-link{color:var(--gold);text-decoration:none;font-size:.78rem;margin-left:auto;padding:2px 10px;border:1px solid var(--gold-dim);border-radius:12px;white-space:nowrap;transition:background .2s}
.expiry-link:active{background:rgba(201,168,76,.1)}

/* ===== 功德簿 ===== */
.merit-stats-row{display:flex;justify-content:space-around;text-align:center;padding:12px 0;border-bottom:1px solid rgba(201,168,76,.12);margin-bottom:12px}
.merit-stat-item{flex:1}
.merit-stat-num{font-size:1.4rem;color:var(--gold);font-weight:700}
.merit-stat-label{font-size:.7rem;color:var(--text-dim);margin-top:2px}
.merit-timeline{position:relative;padding-left:28px}
.merit-timeline::before{content:'';position:absolute;left:12px;top:4px;bottom:4px;width:1px;background:linear-gradient(to bottom,var(--gold),rgba(201,168,76,.2))}
.merit-timeline-item{display:flex;align-items:flex-start;gap:10px;padding:8px 0;position:relative}
.merit-timeline-dot{position:absolute;left:-28px;top:8px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:.8rem;color:var(--gold);background:var(--bg-primary);border-radius:50%;z-index:1}
.merit-timeline-content{flex:1}
.merit-timeline-title{font-size:.82rem;color:var(--text-primary);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.merit-timeline-date{font-size:.7rem;color:var(--text-dim);margin-top:2px}
.merit-status{font-size:.65rem;padding:1px 6px;border-radius:8px;display:inline-block}
.merit-status.active{background:rgba(46,204,113,.1);color:#2ecc71}
.merit-status.expired{background:rgba(150,150,150,.1);color:#999}
.merit-milestones{margin-top:16px;padding-top:12px;border-top:1px solid rgba(201,168,76,.12)}
.merit-milestone-title{font-size:.85rem;color:var(--gold);margin-bottom:10px;text-align:center}
.merit-milestone-item{display:flex;align-items:center;gap:10px;padding:8px 12px;margin-bottom:6px;border-radius:8px;transition:background .2s}
.merit-milestone-item.achieved{background:rgba(201,168,76,.06);border:1px solid rgba(201,168,76,.15)}
.merit-milestone-item.locked{background:rgba(120,120,120,.04);border:1px solid rgba(120,120,120,.1);opacity:.6}
.milestone-icon{font-size:1.1rem;width:28px;text-align:center}
.milestone-icon .icon-star{color:var(--gold)}
.milestone-icon .icon-lock{color:#888}
.milestone-name{font-size:.82rem;color:var(--text-primary)}
.milestone-desc{font-size:.7rem;color:var(--text-dim);margin-top:1px}

/* ===== AI结果页理性外衣 ===== */
.ai-rational-cover{font-size:.7rem;color:var(--text-dim);text-align:center;padding:8px 16px;margin-bottom:12px;line-height:1.6;opacity:.7;border-bottom:1px solid rgba(120,120,120,.08)}
