/* ===== 清云观 · 青绿暗金 × 道法自然 ===== */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&family=Noto+Serif+SC:wght@400;500;600;700;900&display=swap');

* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
:root{
  /* 色彩 - 青绿+暗金 */
  --bg:#0e1a12;
  --bg-deep:#080f0a;
  --bg-elevated:#15241a;
  --bg-card:rgba(255,255,255,.05);
  --bg-card-hover:rgba(255,255,255,.08);
  --bg-glass:rgba(14,26,18,.72);
  --green:#4a7c59;
  --green-deep:#2d5238;
  --green-soft:rgba(74,124,89,.14);
  --green-glow:rgba(74,124,89,.2);
  --gold:#b8a05a;
  --gold-deep:#8a7242;
  --gold-line:rgba(184,160,90,.18);
  --gold-line-strong:rgba(184,160,90,.35);
  --red:#c54a3e;
  --red-soft:rgba(197,74,62,.14);
  --text:#e8f0e4;
  --text-soft:rgba(232,240,228,.82);
  --text-dim:rgba(232,240,228,.62);
  --text-mute:rgba(232,240,228,.5);
  --line:rgba(184,160,90,.12);
  /* 间距 8dp rhythm */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px;
  --sp-5:24px; --sp-6:32px; --sp-7:48px; --sp-8:64px;
  /* 圆角 */
  --radius:16px; --radius-sm:10px; --radius-lg:20px;
  /* 缓动 */
  --ease:cubic-bezier(0.16,1,0.3,1);
  /* 字体 */
  --font-serif:"Noto Serif SC","Songti SC","SimSun",serif;
  --font-sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  /* 纹样 - 云水纹 */
  --cloud-svg:url('data:image/svg+xml,%3Csvg width="80" height="40" viewBox="0 0 80 40" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M20 20c0-5 5-10 15-10s15 5 15 10-5 10-15 10-15-5-15-10z" fill="%23b8a05a"/%3E%3Cpath d="M50 15c0-3 3-6 8-6s8 3 8 6-3 6-8 6-8-3-8-6z" fill="%23b8a05a"/%3E%3C/svg%3E');
}
html,body{ height:100%; }
body{
  font-family:var(--font-sans);
  background:var(--bg); color:var(--text); overflow:hidden;
  user-select:none; -webkit-font-smoothing:antialiased;
  font-size:15px; line-height:1.6;
}
.screen{ display:none; position:fixed; inset:0; }
.screen.active{ display:block; }

/* ===== 全局云水纹底 ===== */
.screen::before{ content:''; position:absolute; inset:0; opacity:.025;
  background-image:var(--cloud-svg); background-repeat:repeat; pointer-events:none; z-index:0; }
#pick::before, #home::before{ z-index:0; }

/* ===== 环境光斑 blob（青城山林感） ===== */
.screen::after{ content:''; position:absolute; width:300px; height:300px; border-radius:50%;
  background:radial-gradient(circle,var(--green-glow),transparent 70%);
  top:-80px; right:-60px; opacity:.6; pointer-events:none; z-index:0;
  animation:blobFloat 12s ease-in-out infinite; }
@keyframes blobFloat{
  0%,100%{ transform:translate(0,0) scale(1); }
  33%{ transform:translate(-30px,20px) scale(1.1); }
  66%{ transform:translate(20px,-15px) scale(.95); }
}

/* ===== 落地页 ===== */
#pick{ background:linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%); overflow-y:auto; -webkit-overflow-scrolling:touch; }
#pick::after{ content:''; position:fixed; top:0; left:0; right:0; height:240px;
  background:radial-gradient(ellipse at 50% 0%,var(--green-glow),transparent 65%);
  pointer-events:none; z-index:1; animation:none; }
.landing{ min-height:100%; position:relative; z-index:2; }
.landing-hero{ height:280px; background:linear-gradient(180deg,#1a2e22 0%,#0e1a12 100%); position:relative;
  display:flex; flex-direction:column; align-items:center; justify-content:flex-end; padding-bottom:30px; }
.landing-hero-mask{ position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(14,26,18,.3) 20%, rgba(14,26,18,.98)); }
.landing-hero-title{ position:relative; font-size:48px; letter-spacing:8px; color:var(--gold);
  font-weight:900; font-family:var(--font-serif);
  text-shadow:0 0 24px rgba(184,160,90,.25); }
.landing-hero-sub{ position:relative; font-size:13px; letter-spacing:4px; color:var(--text-dim); margin-top:8px; }
.landing-body{ padding:32px 20px 64px; max-width:420px; margin:0 auto; }
.landing-sec-title{ font-size:16px; color:var(--gold); letter-spacing:3px; margin:32px 0 16px;
  font-weight:700; font-family:var(--font-serif); display:flex; align-items:center; gap:8px; }
.landing-sec-title::before{ content:''; width:3px; height:18px; background:var(--green); border-radius:2px; }
.landing-intro{ font-size:14px; line-height:2.1; color:var(--text-soft); text-indent:2em; }

/* 道长简洁卡片 */
.master-list{ display:flex; flex-direction:column; gap:10px; }
.mlc-card{ display:flex; align-items:center; gap:14px; background:var(--bg-card);
  border:1px solid var(--gold-line); border-radius:var(--radius); padding:14px 16px; cursor:pointer; transition:.25s var(--ease);
  position:relative; overflow:hidden; }
.mlc-card:active{ transform:scale(.96); background:var(--bg-card-hover); }
.mlc-card::after{ content:''; position:absolute; top:0; left:0; right:0; height:2px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent); opacity:.5; }
.mlc-photo{ width:50px; height:50px; border-radius:50%; flex:0 0 auto;
  background-size:cover; background-position:center; background-color:var(--bg-deep);
  border:2px solid var(--gold-line-strong);
  display:flex; align-items:center; justify-content:center; font-size:26px; }
.mlc-info{ flex:1; min-width:0; }
.mlc-name{ font-size:16px; color:var(--text); font-weight:700; font-family:var(--font-serif); }
.mlc-title{ font-size:12px; color:var(--text-dim); margin:2px 0 6px; }
.mlc-tags{ display:flex; flex-wrap:wrap; gap:4px; margin-bottom:4px; }
.mlc-price{ font-size:12px; color:var(--green); }
.mlc-arrow{ font-size:20px; color:var(--text-dim); }
.spec-tag{ font-size:10px; padding:2px 8px; border-radius:10px;
  background:var(--green-soft); color:var(--gold); border:1px solid var(--gold-line); }

.btn-enter{ display:block; width:100%; margin-top:36px; padding:15px; font-family:inherit;
  font-size:16px; letter-spacing:4px; color:#fff; border:none; border-radius:var(--radius);
  background:linear-gradient(135deg,var(--green),var(--green-deep));
  box-shadow:0 4px 20px rgba(74,124,89,.25); transition:.25s var(--ease); }
.btn-enter:active{ transform:scale(.96); }
.landing-note{ text-align:center; font-size:11px; color:var(--text-mute); margin-top:20px; }

/* ===== 登录门/建档门 ===== */
.login-gate{ position:fixed; inset:0; z-index:100; background:rgba(8,15,10,.95);
  display:flex; align-items:center; justify-content:center; padding:30px; }
.login-gate::after{ content:''; position:absolute; top:0; left:0; right:0; height:200px;
  background:radial-gradient(ellipse at 50% 0%,var(--green-glow),transparent 65%); pointer-events:none; }
.login-card{ width:100%; max-width:340px; background:var(--bg-card); border:1px solid var(--gold-line);
  border-radius:20px; padding:36px 26px; text-align:center; position:relative; z-index:2; }
.login-logo{ font-size:44px; }
.login-title{ font-size:26px; color:var(--gold); letter-spacing:4px; margin:16px 0 12px; font-weight:900; font-family:var(--font-serif); }
.login-desc{ font-size:13px; color:var(--text-dim); line-height:1.9; margin-bottom:28px; }
.btn-wx-login{ width:100%; padding:14px; border:none; border-radius:var(--radius); font-family:inherit;
  font-size:16px; letter-spacing:1px; color:#fff; background:#07c160; transition:.25s var(--ease); }
.btn-wx-login:active{ transform:scale(.96); }
.wx-ico{ width:20px; height:20px; border-radius:50%; background:#fff; position:relative; display:inline-block; }
.wx-ico::before{ content:'微'; position:absolute; inset:0; color:#07c160; font-size:12px;
  display:flex; align-items:center; justify-content:center; font-weight:700; }
.login-tip{ font-size:11px; color:var(--text-mute); margin-top:18px; }
.reg-input{ width:100%; box-sizing:border-box; margin:8px 0; padding:12px 16px;
  border-radius:var(--radius); border:1px solid var(--gold-line); background:var(--bg-deep);
  color:var(--text); font-size:16px; font-family:inherit; text-align:center; }
.reg-input::placeholder{ color:var(--text-mute); }
.reg-ok{ margin-top:6px; }

/* ===== 主界面骨架 ===== */
#home{ background:linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%); }
#home.active{ display:flex; flex-direction:column; }
#home::after{ content:''; position:absolute; top:0; left:0; right:0; height:200px;
  background:radial-gradient(ellipse at 50% 0%,var(--green-glow),transparent 60%);
  pointer-events:none; z-index:0; animation:none; }
.topbar{ height:52px; display:flex; align-items:center; justify-content:space-between;
  padding:0 20px; background:var(--bg-glass); backdrop-filter:blur(20px) saturate(180%);
  -webkit-backdrop-filter:blur(20px) saturate(180%);
  border-bottom:1px solid var(--gold-line); flex:0 0 auto; position:relative; z-index:2; }
.brand{ font-size:20px; letter-spacing:4px; color:var(--gold); font-weight:900; font-family:var(--font-serif);
  text-shadow:0 0 8px rgba(184,160,90,.15); }
.topbar-right{ display:flex; align-items:center; }
.points-chip{ font-size:12px; color:var(--gold); background:var(--green-soft);
  border:1px solid rgba(74,124,89,.3); padding:5px 14px; border-radius:20px; }
.points-chip b{ font-size:14px; }
.tab-body{ flex:1; position:relative; overflow:hidden; z-index:2; }
.tab-page{ display:none; position:absolute; inset:0; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.tab-page.active{ display:block; animation:fadeIn .25s ease; }
@keyframes fadeIn{ from{opacity:0} to{opacity:1} }

/* ===== 求签+运程 合并首页 ===== */
.draw-page{ padding:20px 16px; }
.entry-cards{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:20px; }
.entry-card{ background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius);
  padding:26px 16px 22px; text-align:center; cursor:pointer; transition:.25s var(--ease); position:relative; overflow:hidden;
  animation:cardIn .4s ease backwards; }
.entry-card:nth-child(1){ animation-delay:.05s; }
.entry-card:nth-child(2){ animation-delay:.15s; }
@keyframes cardIn{ from{ opacity:0; transform:translateY(12px); } to{ opacity:1; transform:none; } }
.entry-card::before{ content:''; position:absolute; top:0; left:0; right:0; height:2px;
  background:linear-gradient(90deg,transparent,var(--green),var(--gold),var(--green),transparent); }
.entry-card:active{ transform:scale(.96); background:var(--bg-card-hover); }
.entry-card::after{ content:'☯'; position:absolute; top:8px; right:6px; opacity:.05; font-size:30px; color:var(--gold); }
.entry-ico-svg{ width:40px; height:40px; color:var(--green); margin-bottom:10px; }
#entryFortune .entry-ico-svg{ color:var(--gold); }
.entry-title{ font-size:17px; color:var(--text); font-weight:700; margin-bottom:4px; font-family:var(--font-serif); }
.entry-desc{ font-size:12px; color:var(--text-dim); }

/* 首页功能导航入口 */
.home-nav-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:20px; }
.hn-item{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:14px 6px;
  background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius-sm);
  cursor:pointer; transition:.25s var(--ease); animation:cardIn .4s ease backwards; }
.hn-item:nth-child(1){ animation-delay:.05s; }
.hn-item:nth-child(2){ animation-delay:.1s; }
.hn-item:nth-child(3){ animation-delay:.15s; }
.hn-item:nth-child(4){ animation-delay:.2s; }
.hn-item:nth-child(5){ animation-delay:.25s; }
.hn-item:nth-child(6){ animation-delay:.3s; }
.hn-item:nth-child(7){ animation-delay:.35s; }
.hn-item:nth-child(8){ animation-delay:.4s; }
.hn-item:active{ transform:scale(.92); }
.hn-ico{ font-size:26px; }
.hn-label{ font-size:11px; color:var(--text-dim); text-align:center; }

/* 今日道语卡 */
.daily-card{ background:var(--bg-card); border:1px solid var(--gold-line); border-left:3px solid var(--green);
  border-radius:var(--radius); padding:20px 22px; }
.daily-card-label{ font-size:13px; color:var(--gold); font-weight:600; margin-bottom:10px; letter-spacing:2px; font-family:var(--font-serif); }
.daily-card-text{ font-size:15px; line-height:1.8; color:var(--text-soft); }
.daily-card-loading{ color:var(--text-mute); }

/* ===== 子页（求签/运程覆盖层） ===== */
.sub-page{ position:fixed; inset:0; z-index:30; background:var(--bg);
  display:none; flex-direction:column; }
.sub-page[style*="flex"]{ display:flex !important; }
.sub-page::before{ content:''; position:absolute; top:0; left:0; right:0; height:160px;
  background:radial-gradient(ellipse at 50% 0%,var(--green-glow),transparent 60%); pointer-events:none; z-index:0; }
.sub-header{ height:48px; display:flex; align-items:center; gap:12px; padding:0 16px;
  background:transparent; flex:0 0 auto; position:relative; z-index:2; }
.sub-back{ border:none; background:none; font-size:24px; color:var(--green); cursor:pointer; line-height:1; }
.sub-header span{ font-size:18px; color:var(--gold); font-weight:700; font-family:var(--font-serif); }
.sub-body{ flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; position:relative; z-index:2; }

/* 主题选择 */
.topic-section{ padding:24px 20px 16px; }
.topic-label{ font-size:15px; color:var(--gold); font-weight:700; margin-bottom:16px; font-family:var(--font-serif); }
.topic-grid{ display:flex; flex-wrap:wrap; gap:10px; }
.topic-item{ padding:10px 22px; border-radius:24px; font-size:14px; color:var(--text-soft);
  background:var(--bg-card); border:1px solid var(--gold-line); cursor:pointer; transition:.25s var(--ease); }
.topic-item.on{ background:linear-gradient(135deg,var(--green),var(--green-deep)); color:#fff;
  border-color:transparent; box-shadow:0 4px 12px rgba(74,124,89,.25); }

/* 求签动画区 - 竹简卷轴 */
.draw-area{ display:flex; flex-direction:column; align-items:center; padding:40px 20px; }
.cylinder-wrap{ position:relative; margin-bottom:30px; }
.cyl-glow{ position:absolute; inset:-20px; border-radius:50%;
  background:radial-gradient(circle, rgba(74,124,89,.15), transparent 70%); filter:blur(8px);
  pointer-events:none; }
.cylinder{ width:100px; height:140px; position:relative; z-index:2; transform-origin:50% 100%; }
.cyl-body{ width:100%; height:100%; border-radius:8px;
  background:linear-gradient(180deg,var(--green),var(--green-deep));
  border:2px solid var(--gold); box-shadow:0 8px 20px rgba(0,0,0,.3);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px;
  font-size:16px; color:var(--gold); font-family:var(--font-serif); font-weight:600;
  writing-mode:vertical-rl; letter-spacing:4px; padding:12px 0; }
.cyl-body::before{ content:''; position:absolute; top:-6px; left:50%; transform:translateX(-50%); width:110%; height:8px; background:var(--gold); border-radius:4px; }
.cyl-body::after{ content:''; position:absolute; bottom:-6px; left:50%; transform:translateX(-50%); width:110%; height:8px; background:var(--gold); border-radius:4px; }
.cylinder.shaking{ animation:shake .1s infinite; }
.cylinder.dropping{ animation:drop .6s ease; }
@keyframes shake{
  0%{ transform:rotate(-7deg) translateY(0); }
  25%{ transform:rotate(5deg) translateY(-4px); }
  50%{ transform:rotate(-5deg) translateY(0); }
  75%{ transform:rotate(7deg) translateY(-3px); }
  100%{ transform:rotate(-7deg) translateY(0); }
}
@keyframes drop{
  0%{ transform:translateY(0) rotate(0); opacity:1; }
  40%{ transform:translateY(40px) rotate(20deg); opacity:.8; }
  100%{ transform:translateY(0) rotate(0); opacity:1; }
}
.draw-tip{ font-size:14px; color:var(--text-dim); margin-bottom:28px; }
.btn-main{ padding:13px 44px; font-size:17px; letter-spacing:4px; font-family:inherit;
  color:#fff; border:none; border-radius:var(--radius); cursor:pointer;
  background:linear-gradient(135deg,var(--green),var(--green-deep));
  box-shadow:0 4px 20px rgba(74,124,89,.25); transition:.25s var(--ease); }
.btn-main:active{ transform:scale(.96); }

/* 签文主题标签 */
.sign-topic{ text-align:center; font-size:13px; color:var(--green); letter-spacing:2px;
  margin-bottom:10px; padding:4px 14px; background:var(--green-soft); border-radius:12px;
  display:inline-block; margin-left:50%; transform:translateX(-50%); }

/* 运程表单 */
.fortune-form{ padding:28px 24px; max-width:400px; margin:0 auto; }
.ff-title{ font-size:24px; letter-spacing:4px; color:var(--gold); text-align:center; font-weight:900; font-family:var(--font-serif); }
.ff-sub{ font-size:12px; color:var(--text-dim); text-align:center; margin:8px 0 28px; }
.fortune-form label{ display:block; font-size:13px; color:var(--text-soft); margin:16px 0 8px; }
.fortune-form input,.fortune-form select{
  width:100%; padding:12px 14px; font-size:15px; font-family:inherit;
  background:var(--bg-deep); border:1px solid var(--gold-line); border-radius:var(--radius-sm); color:var(--text); }
.fortune-form input::placeholder{ color:var(--text-mute); }
.seg{ display:flex; border:1px solid var(--gold-line); border-radius:var(--radius-sm); overflow:hidden; }
.seg span{ flex:1; text-align:center; padding:11px 0; font-size:14px; color:var(--text-dim); cursor:pointer; }
.seg span.on{ background:var(--green); color:#fff; }
.fortune-form .btn-main{ display:block; margin:28px auto 0; }
.fortune-result{ padding:0 20px 30px; max-width:400px; margin:0 auto; }
.fr-card{ background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); padding:22px; }
.fr-score{ text-align:center; font-size:28px; letter-spacing:4px; color:var(--green); font-weight:900; font-family:var(--font-serif); }
.fr-meta{ text-align:center; font-size:12px; color:var(--text-dim); margin:10px 0 20px; }
.fr-row{ display:flex; padding:11px 0; border-top:1px solid var(--line); font-size:14px; }
.fr-row .k{ width:70px; color:var(--text-dim); flex:0 0 auto; }
.fr-row .v{ color:var(--text-soft); }
.fr-advice{ margin-top:18px; padding:14px 16px; background:var(--green-soft); border-radius:var(--radius-sm); font-size:14px; line-height:1.7; color:var(--gold); }

/* 八字门 */
.bazi-gate{ text-align:center; padding:60px 30px; }
.bazi-gate-ico{ font-size:48px; margin-bottom:14px; }
.bazi-gate-title{ font-size:20px; color:var(--gold); margin-bottom:10px; font-weight:800; }
.bazi-gate-desc{ font-size:14px; color:var(--text-dim); line-height:1.9; margin-bottom:28px; }

/* ===== 对话 ===== */
.tab-page[data-page=chat]{ display:none; flex-direction:column; }
.tab-page[data-page=chat].active{ display:flex; }
.master-switcher{ display:flex; gap:0; padding:0; overflow-x:auto; -webkit-overflow-scrolling:touch;
  background:transparent; border-bottom:1px solid var(--line); }
.master-switcher::-webkit-scrollbar{ display:none; }
.ms-item{ flex:1; min-width:75px; display:flex; flex-direction:column; align-items:center;
  padding:12px 8px 10px; cursor:pointer; position:relative; }
.ms-item::after{ content:''; position:absolute; bottom:0; left:50%; transform:translateX(-50%);
  width:0; height:3px; background:var(--green); border-radius:2px; transition:.25s var(--ease); }
.ms-item.on::after{ width:32px; }
.ms-avatar{ font-size:22px; width:36px; height:36px; border-radius:50%;
  background-size:cover; background-position:center; background-color:var(--bg-deep);
  display:flex; align-items:center; justify-content:center;
  margin-bottom:4px; filter:grayscale(.5) opacity(.5); transition:.25s var(--ease); border:2px solid transparent; }
.ms-item.on .ms-avatar{ filter:none; opacity:1; border-color:var(--gold); }
.ms-name{ font-size:11px; color:var(--text-mute); white-space:nowrap; }
.ms-item.on .ms-name{ color:var(--green); font-weight:600; }

/* 对话模式栏 · AI vs 真人 */
.chat-mode-bar{ flex:0 0 auto; display:flex; align-items:center; gap:10px;
  padding:10px 16px; font-size:12px; border-bottom:1px solid var(--line); transition:background .3s; }
.chat-mode-bar.mode-ai{ background:linear-gradient(90deg,rgba(58,102,184,.08),rgba(58,102,184,.02)); }
.chat-mode-bar.mode-master{ background:linear-gradient(90deg,rgba(184,160,90,.12),rgba(184,160,90,.03)); }
.chat-mode-badge{ flex:0 0 auto; font-size:10px; font-weight:700; letter-spacing:1px;
  padding:3px 10px; border-radius:10px; color:#fff; }
.chat-mode-bar.mode-ai .chat-mode-badge{ background:#3a66b8; }
.chat-mode-bar.mode-master .chat-mode-badge{ background:linear-gradient(135deg,var(--gold-deep),var(--gold)); }
.chat-mode-text{ color:var(--text-soft); flex:1; min-width:0; }
.chat-mode-text b{ color:var(--gold); }
.chat-mode-bar button{ padding:5px 14px; border:1px solid var(--green); border-radius:18px;
  background:none; color:var(--green); font-family:inherit; font-size:12px; flex:0 0 auto; transition:.25s var(--ease); }
.chat-mode-bar.mode-master button{ border-color:var(--gold); color:var(--gold); }

.chat-master-hint{ flex:0 0 auto; padding:8px 16px; font-size:12px; text-align:center;
  background:rgba(184,160,90,.15); color:var(--gold); }

.chat-list{ flex:1; overflow-y:auto; padding:18px 16px; -webkit-overflow-scrolling:touch; }
.msg{ margin-bottom:16px; display:flex; animation:msgIn .3s ease; }
@keyframes msgIn{ from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:none; } }
.msg .bubble{ max-width:78%; padding:12px 15px; border-radius:16px; font-size:15px; line-height:1.7; }
.msg.bot .bubble{ background:var(--bg-card); border:1px solid var(--gold-line); color:var(--text-soft); border-top-left-radius:4px; }
.chat-mode-bar.mode-master ~ .chat-list .msg.bot .bubble{ background:rgba(184,160,90,.08); border:1px solid rgba(184,160,90,.2); }
.msg.me{ justify-content:flex-end; }
.msg.me .bubble{ background:linear-gradient(135deg,var(--green),var(--green-deep)); color:#fff; border-top-right-radius:4px; }
.msg.system{ justify-content:center; }
.msg.system .bubble{ max-width:90%; padding:6px 16px; font-size:12px; color:var(--text-dim);
  background:rgba(255,255,255,.03); border-radius:14px; text-align:center; border:none; }

.chat-input{ flex:0 0 auto; display:flex; gap:10px; padding:12px 14px; background:transparent; border-top:1px solid var(--line); }
.chat-input input{ flex:1; padding:12px 14px; font-size:15px; font-family:inherit;
  background:var(--bg-deep); border:1px solid var(--gold-line); border-radius:24px; color:var(--text); }
.chat-input input::placeholder{ color:var(--text-mute); }
.chat-input button{ width:50px; border:none; border-radius:24px; font-size:15px; font-family:inherit;
  color:#fff; background:linear-gradient(135deg,var(--green),var(--green-deep)); }

/* ===== 缘起（论坛） ===== */
.forum-wrap{ padding:16px 14px 40px; }
.forum-tabs{ display:flex; gap:8px; margin-bottom:16px; overflow-x:auto; }
.forum-tabs::-webkit-scrollbar{ display:none; }
.forum-tab{ flex:0 0 auto; padding:8px 16px; border-radius:20px; font-size:13px;
  color:var(--text-dim); background:var(--bg-card); border:1px solid var(--gold-line); }
.forum-tab.on{ background:var(--green); color:#fff; border-color:transparent; }
.forum-list{ display:flex; flex-direction:column; gap:14px; }
.forum-item{ background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius);
  overflow:hidden; animation:cardIn .4s ease backwards; }
.forum-item:nth-child(1){ animation-delay:.05s; }
.forum-item:nth-child(2){ animation-delay:.1s; }
.forum-item:nth-child(3){ animation-delay:.15s; }
.forum-item:nth-child(4){ animation-delay:.2s; }
.forum-item:nth-child(5){ animation-delay:.25s; }
.forum-item:nth-child(6){ animation-delay:.3s; }
.forum-item.pinned{ border-color:var(--gold-line-strong); }
.forum-pin-badge{ display:inline-block; font-size:10px; padding:2px 8px; border-radius:4px;
  background:linear-gradient(135deg,var(--gold-deep),var(--gold)); color:#fff; margin:12px 0 0 12px; }
.forum-item-img{ width:100%; height:160px; background-size:cover; background-position:center; background-color:var(--bg-deep); }
.forum-item-head{ display:flex; align-items:center; gap:8px; padding:12px 16px 0; }
.forum-type-tag{ font-size:10px; padding:2px 8px; border-radius:4px; flex:0 0 auto; }
.ft-tag-activity{ background:var(--green-soft); color:var(--green); }
.ft-tag-review{ background:rgba(90,158,90,.1); color:#5a9e5a; }
.ft-tag-share{ background:rgba(184,160,90,.1); color:var(--gold); }
.forum-author{ font-size:12px; color:var(--text-soft); }
.forum-time{ font-size:11px; color:var(--text-mute); margin-left:auto; }
.forum-item-title{ font-size:15px; color:var(--text); font-weight:700; margin:8px 16px 6px; }
.forum-item-text{ font-size:13px; color:var(--text-dim); line-height:1.7; margin:0 16px 14px; }

/* ===== 底部导航 ===== */
.tabbar{ flex:0 0 auto; height:58px; display:flex;
  background:var(--bg-glass); backdrop-filter:blur(20px) saturate(180%);
  -webkit-backdrop-filter:blur(20px) saturate(180%);
  border-top:1px solid var(--gold-line); }
.tab-item{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center;
  font-size:10px; color:var(--text-dim); gap:3px; cursor:pointer; transition:color .25s var(--ease); }
.tab-ico{ width:22px; height:22px; color:var(--text-dim); opacity:.85; transition:.25s var(--ease); }
.tab-item.active{ color:var(--green); }
.tab-item.active .tab-ico{ color:var(--green); opacity:1; }
.tab-item:active{ transform:scale(.92); }

/* ===== 签文弹层 ===== */
.modal{ position:fixed; inset:0; background:rgba(8,15,10,.7); display:none;
  align-items:center; justify-content:center; z-index:50; padding:24px; }
.modal.show{ display:flex; }
.sign-paper{ width:100%; max-width:380px; max-height:86vh; overflow-y:auto;
  background:var(--bg); border:1px solid var(--gold-line); border-radius:20px; padding:26px 24px;
  box-shadow:0 8px 40px rgba(0,0,0,.4); animation:rise .35s ease; }
@keyframes rise{ from{ transform:translateY(30px) scale(.96); opacity:0; } to{ transform:none; opacity:1; } }
.sign-head{ display:flex; align-items:center; justify-content:space-between;
  border-bottom:2px solid var(--gold-line); padding-bottom:12px; margin-bottom:16px; }
.sign-no{ font-size:20px; letter-spacing:2px; color:var(--green); font-weight:800; }
.sign-luck{ font-size:16px; padding:3px 14px; border-radius:20px; color:#fff;
  background:linear-gradient(135deg,var(--green),var(--green-deep)); }
.sign-poem{ font-size:18px; line-height:2.1; text-align:center; letter-spacing:2px;
  color:var(--gold); margin:8px 0 20px; font-weight:600; }
.sign-block{ margin-top:16px; }
.sign-label{ font-size:13px; color:var(--green); margin-bottom:6px; font-weight:600;
  border-left:3px solid var(--green); padding-left:8px; }
.sign-explain,.sign-guide{ font-size:14px; line-height:1.85; color:var(--text-soft); }
.btn-close{ display:block; width:100%; margin-top:24px; padding:13px; font-family:inherit;
  font-size:15px; color:var(--text-dim); border:1px solid var(--gold-line); border-radius:var(--radius);
  background:transparent; }

/* 解签选择 */
.interp-pick{ margin:6px 0 4px; }
.interp-q{ text-align:center; font-size:14px; color:var(--text-soft); margin-bottom:14px; }
.interp-btns{ display:flex; gap:12px; }
.interp-ai,.interp-master{ flex:1; display:flex; flex-direction:column; align-items:center; gap:4px;
  padding:14px 8px; border-radius:var(--radius); font-family:inherit; font-size:14px; cursor:pointer; transition:.25s var(--ease); border:none; }
.interp-ai small,.interp-master small{ font-size:11px; opacity:.7; }
.interp-ai{ background:var(--bg-card); border:1px solid var(--green); color:var(--green); }
.interp-master{ background:linear-gradient(135deg,var(--green),var(--green-deep)); color:#fff; }
.interp-ai:active,.interp-master:active{ transform:scale(.96); }

/* ===== 充值/不足 弹层 ===== */
.recharge-box{ width:100%; max-width:360px; background:var(--bg);
  border:1px solid var(--gold-line); border-radius:20px; padding:26px 22px;
  box-shadow:0 8px 40px rgba(0,0,0,.4); animation:rise .35s ease; }
.recharge-title{ text-align:center; font-size:20px; color:var(--gold); font-weight:800; }
.recharge-note{ text-align:center; font-size:11px; color:var(--text-mute); margin:8px 0 20px; }
.pkg-list{ display:flex; flex-direction:column; gap:10px; }
.pkg-item{ display:flex; align-items:center; justify-content:space-between;
  background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); padding:14px 18px; transition:.25s var(--ease); }
.pkg-item:active{ background:var(--green-soft); }
.pkg-pts{ font-size:16px; color:var(--text); }
.pkg-pts small{ font-size:12px; color:var(--green); margin-left:6px; }
.pkg-price{ font-size:16px; color:var(--green); font-weight:700; }
.lack-tip{ text-align:center; font-size:14px; color:var(--text-soft); margin:6px 0 22px; line-height:1.6; }
.lack-actions{ display:flex; gap:12px; }
.btn-lack-ghost,.btn-lack-main{ flex:1; padding:12px 0; border-radius:var(--radius); font-family:inherit;
  font-size:14px; }
.btn-lack-ghost{ background:none; border:1px solid var(--green); color:var(--green); }
.btn-lack-main{ border:none; color:#fff; background:linear-gradient(135deg,var(--green),var(--green-deep)); }
.btn-lack-main:disabled{ opacity:.4; }

/* ===== 道长预约 ===== */
.master-book-box{ width:100%; max-width:400px; max-height:86vh; overflow-y:auto;
  background:var(--bg); border:1px solid var(--gold-line); border-radius:20px; padding:24px 20px;
  box-shadow:0 8px 40px rgba(0,0,0,.4); animation:rise .35s ease; }
.mb-master-card{ display:flex; gap:12px; align-items:center; padding:14px; background:var(--bg-card);
  border:1px solid var(--gold-line); border-radius:var(--radius); margin-bottom:20px; }
.mb-avatar{ font-size:30px; width:44px; height:44px; border-radius:50%; background:var(--bg-deep);
  background-size:cover; background-position:center; display:flex; align-items:center; justify-content:center; flex:0 0 auto;
  border:2px solid var(--gold-line-strong); }
.mb-info{ flex:1; }
.mb-name{ font-size:16px; color:var(--text); font-weight:700; }
.mb-tag{ font-size:12px; color:var(--text-dim); margin-top:3px; }
.mb-section{ margin-bottom:18px; }
.mb-section-title{ font-size:14px; color:var(--gold); font-weight:700; margin-bottom:10px; }
.mb-pay-info{ font-size:14px; color:var(--text-dim); margin-bottom:10px; }
.mb-price-list{ display:flex; gap:10px; }
.mb-price-item{ flex:1; text-align:center; padding:14px 8px; border-radius:var(--radius);
  background:var(--bg-card); border:1px solid var(--gold-line); color:var(--text-dim); font-size:14px; cursor:pointer; }
.mb-price-item.on{ border-color:var(--green); background:var(--green-soft); color:var(--green); }
.mb-price-item b{ display:block; color:var(--green); font-size:18px; margin-top:4px; }
.mb-date-list{ display:flex; gap:8px; overflow-x:auto; }
.mb-date-list::-webkit-scrollbar{ display:none; }
.mb-date-item{ flex:0 0 auto; min-width:60px; text-align:center; padding:10px 6px;
  border-radius:var(--radius-sm); background:var(--bg-card); border:1px solid var(--gold-line); color:var(--text-dim); cursor:pointer; }
.mb-date-item.on{ border-color:var(--green); background:var(--green-soft); color:var(--green); }
.mb-date-item b{ display:block; font-size:15px; }
.mb-date-item small{ font-size:11px; }
.mb-slot-list{ display:flex; flex-wrap:wrap; gap:8px; }
.mb-slot-item{ flex:0 0 auto; min-width:100px; text-align:center; padding:10px;
  border-radius:var(--radius-sm); background:var(--bg-card); border:1px solid var(--gold-line); color:var(--text-soft); font-size:13px; cursor:pointer; }
.mb-slot-item.on{ border-color:var(--green); background:var(--green-soft); color:var(--green); }
.mb-slot-item.disabled{ opacity:.35; }
.mb-slot-item small{ display:block; font-size:11px; margin-top:3px; }
.mb-confirm{ width:100%; padding:14px; border:none; border-radius:var(--radius); margin:10px 0 12px;
  font-family:inherit; font-size:16px; color:#fff; background:linear-gradient(135deg,var(--green),var(--green-deep)); }

/* ===== 商城 ===== */
.shop-wrap{ padding:16px 14px 40px; }
.shop-tabs{ display:flex; gap:10px; margin-bottom:16px; }
.shop-tab{ flex:1; text-align:center; padding:10px 0; border-radius:22px; font-size:14px;
  color:var(--text-dim); border:1px solid var(--gold-line); background:var(--bg-card); }
.shop-tab.on{ background:linear-gradient(135deg,var(--green),var(--green-deep)); color:#fff; border-color:transparent; }
.goods-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.goods-item{ background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius);
  overflow:hidden; cursor:pointer; transition:.25s var(--ease); }
.goods-item:active{ transform:scale(.96); }
.goods-thumb{ height:120px; background-size:cover; background-position:center; background-color:var(--bg-deep);
  display:flex; align-items:center; justify-content:center; font-size:40px; }
.goods-body{ padding:10px 12px 12px; }
.goods-name{ font-size:13px; color:var(--text); line-height:1.4; font-weight:600; }
.goods-desc{ font-size:11px; color:var(--text-dim); margin:4px 0 8px; height:28px; overflow:hidden; }
.goods-foot{ display:flex; align-items:center; justify-content:space-between; }
.goods-price{ font-size:15px; color:var(--green); font-weight:700; }
.goods-buy{ padding:5px 14px; border:none; border-radius:16px; font-family:inherit; font-size:12px;
  color:#fff; background:var(--green); }

/* 商品详情页 */
.overlay-page{ position:fixed; inset:0; z-index:40; background:var(--bg);
  display:none; flex-direction:column; }
.overlay-page[style*="flex"]{ display:flex !important; }
.overlay-page::before{ content:''; position:absolute; top:0; left:0; right:0; height:160px;
  background:radial-gradient(ellipse at 50% 0%,var(--green-glow),transparent 60%); pointer-events:none; z-index:0; }
.gdp-header{ height:48px; display:flex; align-items:center; gap:12px; padding:0 16px;
  background:transparent; flex:0 0 auto; position:relative; z-index:2; }
.gdp-back{ border:none; background:none; font-size:22px; color:var(--green); cursor:pointer; }
.gdp-title{ font-size:16px; color:var(--gold); font-weight:700; }
.gdp-body{ flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; padding-bottom:80px; position:relative; z-index:2; }
.gdp-hero{ width:100%; height:280px; background-size:cover; background-position:center; }
.gdp-content{ padding:20px 18px; }
.gdp-name{ font-size:20px; color:var(--text); font-weight:800; margin-bottom:8px; }
.gdp-price{ font-size:24px; color:var(--green); font-weight:800; margin-bottom:14px; }
.gdp-desc{ font-size:14px; line-height:1.8; color:var(--text-soft); margin-bottom:24px; }
.gdp-section-title{ font-size:14px; color:var(--gold); font-weight:700; margin-bottom:12px; }
.gdp-specs{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:24px; }
.gdp-spec{ display:flex; justify-content:space-between; align-items:center; min-width:140px;
  padding:12px 16px; border-radius:var(--radius); background:var(--bg-card); border:1px solid var(--gold-line); font-size:14px; color:var(--text-soft); cursor:pointer; }
.gdp-spec.on{ border-color:var(--green); background:var(--green-soft); }
.gdp-spec b{ color:var(--green); font-size:16px; }
.gdp-detail-info{ background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); padding:18px; }
.gdp-info-title{ font-size:14px; color:var(--gold); font-weight:700; margin-bottom:10px; }
.gdp-info-text{ font-size:13px; line-height:1.9; color:var(--text-dim); }
.gdp-buy-btn{ position:fixed; bottom:0; left:0; right:0; padding:16px; border:none;
  font-size:17px; letter-spacing:2px; color:#fff; background:linear-gradient(135deg,var(--green),var(--green-deep));
  font-family:inherit; z-index:20; }

/* 道长详情页 */
.mdp-hero{ width:100%; height:300px; background-size:cover; background-position:center; background-color:var(--bg-deep);
  display:flex; align-items:center; justify-content:center; }
.mdp-content{ padding:20px 18px 80px; }
.mdp-name{ font-size:22px; color:var(--text); font-weight:800; }
.mdp-title{ font-size:13px; color:var(--text-dim); margin:6px 0 12px; }
.mdp-specs{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:20px; }
.mdp-section-title{ font-size:14px; color:var(--gold); font-weight:700; margin-bottom:10px; }
.mdp-bio{ font-size:14px; line-height:2; color:var(--text-soft); margin-bottom:24px; text-indent:2em; }
.mdp-svc-list{ display:flex; gap:10px; margin-bottom:20px; }
.mdp-svc{ flex:1; text-align:center; padding:14px 8px; border-radius:var(--radius);
  background:var(--bg-card); border:1px solid var(--gold-line); font-size:13px; color:var(--text-dim); }
.mdp-svc b{ display:block; color:var(--green); font-size:18px; margin-top:4px; }
.mdp-btn-row{ position:fixed; bottom:0; left:0; right:0; display:flex; gap:0; z-index:20; }
.mdp-btn-ai,.mdp-btn-master{ flex:1; padding:16px 8px; border:none; font-family:inherit;
  font-size:15px; color:#fff; display:flex; flex-direction:column; align-items:center; gap:2px; }
.mdp-btn-ai small,.mdp-btn-master small{ font-size:11px; opacity:.8; }
.mdp-btn-ai{ background:var(--bg-deep); }
.mdp-btn-master{ background:linear-gradient(135deg,var(--green),var(--green-deep)); }

/* ===== 我的 ===== */
.mine-wrap{ padding:20px 18px 40px; max-width:420px; margin:0 auto; }
.profile-card{ display:flex; align-items:center; gap:14px; padding:16px;
  background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); margin-bottom:14px; }
.pf-avatar{ width:50px; height:50px; border-radius:50%; background:var(--bg-deep);
  display:flex; align-items:center; justify-content:center; font-size:26px; flex:0 0 auto;
  border:2px solid var(--gold-line-strong); }
.pf-info{ flex:1; min-width:0; }
.pf-name{ font-size:16px; color:var(--text); font-weight:700; margin-bottom:4px; }
.pf-bazi{ font-size:12px; color:var(--text-dim); }
.pf-edit{ padding:6px 16px; border:1px solid var(--green); border-radius:18px;
  background:none; color:var(--green); font-family:inherit; font-size:13px; flex:0 0 auto; }
.mine-card{ background:linear-gradient(135deg,rgba(74,124,89,.15),rgba(184,160,90,.08));
  border:1px solid var(--gold-line); border-radius:var(--radius); padding:24px; text-align:center; }
.mine-bal-label{ font-size:13px; color:var(--gold); letter-spacing:2px; }
.mine-bal{ font-size:40px; color:#fff; margin:8px 0 16px; font-weight:800; }
.btn-recharge{ padding:11px 36px; border:none; border-radius:var(--radius); font-family:inherit;
  font-size:15px; color:var(--bg); font-weight:700; background:linear-gradient(135deg,var(--gold),var(--gold-deep)); }
.mine-cost-tip{ text-align:center; font-size:12px; color:var(--text-mute); margin:14px 0 24px; }
.task-title{ font-size:14px; color:var(--gold); font-weight:700; margin:8px 0 12px; }
.task-list{ margin-bottom:24px; }
.task-item{ display:flex; align-items:center; justify-content:space-between;
  background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); padding:14px 16px; margin-bottom:10px; }
.task-name{ font-size:14px; color:var(--text); font-weight:600; }
.task-desc{ font-size:12px; color:var(--text-dim); margin-top:3px; }
.task-btn{ padding:7px 20px; border:none; border-radius:20px; font-family:inherit;
  font-size:13px; color:#fff; background:linear-gradient(135deg,var(--green),var(--green-deep)); }
.task-btn.done{ background:none; border:1px solid var(--gold-line); color:var(--text-mute); }
.log-item{ display:flex; justify-content:space-between; padding:10px 4px; border-bottom:1px solid var(--line); font-size:13px; }
.log-desc{ color:var(--text-soft); }
.log-time{ color:var(--text-mute); font-size:11px; margin-top:2px; }
.log-delta{ font-size:15px; align-self:center; }
.log-delta.plus{ color:#5a9e5a; }
.log-delta.minus{ color:var(--green); }
.log-empty{ text-align:center; color:var(--text-mute); font-size:13px; padding:20px; }
.order-list{ display:flex; flex-direction:column; gap:10px; margin-bottom:8px; }
.order-item{ display:flex; justify-content:space-between; align-items:center;
  padding:12px 14px; background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); }
.order-title{ font-size:13px; color:var(--text); margin-bottom:4px; }
.order-sub{ font-size:11px; color:var(--text-dim); margin-bottom:3px; }
.order-status{ font-size:11px; color:#5a9e5a; }
.order-amount{ font-size:15px; color:var(--green); font-weight:700; flex:0 0 auto; margin-left:10px; }

/* 编辑个人信息 */
.edit-profile-box{ width:100%; max-width:360px; background:var(--bg);
  border:1px solid var(--gold-line); border-radius:20px; padding:26px 22px;
  box-shadow:0 8px 40px rgba(0,0,0,.4); animation:rise .35s ease; }
.edit-profile-box label{ display:block; font-size:13px; color:var(--text-soft); margin:12px 0 6px; }
.edit-profile-box .seg{ margin-bottom:4px; }

/* toast & banner */
.toast{ position:fixed; left:50%; top:50%; transform:translate(-50%,-50%) scale(.9);
  background:rgba(8,15,10,.9); color:var(--gold); padding:14px 26px; border-radius:12px;
  border:1px solid var(--gold-line); font-size:14px; z-index:80; opacity:0; pointer-events:none; transition:.25s; }
.toast.show{ opacity:1; transform:translate(-50%,-50%) scale(1); }
.daily-banner{ position:fixed; left:50%; top:60px; transform:translateX(-50%) translateY(-120%);
  z-index:60; background:var(--bg-deep); color:var(--gold);
  padding:10px 20px; border-radius:24px; font-size:13px;
  border:1px solid var(--gold-line); transition:transform .5s; max-width:88vw; text-align:center; }
.daily-banner.show{ transform:translateX(-50%) translateY(0); }

/* ===== 求签页丰富 ===== */
.draw-notice{ display:flex; align-items:center; gap:10px; margin:16px 20px 0; padding:12px 18px;
  background:var(--bg-card); border:1px solid var(--gold-line); border-left:3px solid var(--green); border-radius:var(--radius); }
.draw-notice-icon{ font-size:20px; color:var(--gold); }
.draw-notice-text{ font-size:13px; color:var(--text-soft); letter-spacing:1px; }
.draw-almanac{ margin:20px; padding:18px; background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); }
.almanac-title{ font-size:15px; color:var(--gold); font-weight:700; margin-bottom:14px; font-family:var(--font-serif); display:flex; align-items:center; gap:6px; }
.almanac-title::before{ content:'☯'; font-size:12px; color:var(--green); }
.almanac-body{ display:flex; gap:12px; }
.almanac-col{ flex:1; }
.almanac-col-title{ font-size:12px; color:var(--text-dim); margin-bottom:6px; }
.almanac-col-val{ font-size:14px; color:var(--text); line-height:1.6; }
.almanac-col-val b{ color:var(--green); }
.almanac-divider{ width:1px; background:var(--line); }

/* ===== 留资表单 ===== */
.lead-form-box{ width:100%; max-width:360px; max-height:86vh; overflow-y:auto;
  background:var(--bg); border:1px solid var(--gold-line); border-radius:20px; padding:26px 22px;
  box-shadow:0 8px 40px rgba(0,0,0,.4); animation:rise .35s ease; }
.lead-form-box label{ display:block; font-size:13px; color:var(--text-soft); margin:12px 0 6px; }
.lead-topics{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:4px; }
.lead-topic{ padding:8px 16px; border-radius:20px; font-size:13px; color:var(--text-dim);
  background:var(--bg-card); border:1px solid var(--gold-line); cursor:pointer; transition:.25s var(--ease); }
.lead-topic.on{ background:var(--green); color:#fff; border-color:transparent; }
.lead-form-box textarea{ width:100%; font-family:inherit; background:var(--bg-deep); border:1px solid var(--gold-line);
  border-radius:var(--radius-sm); color:var(--text); padding:12px 14px; font-size:15px; }

/* ===== 运程推演动画 ===== */
.fortune-anim-wrap{ width:280px; text-align:center; }
.bazi-wheel{ position:relative; width:200px; height:200px; margin:0 auto 30px; }
.wheel-ring{ position:absolute; border-radius:50%; border:1px solid var(--gold-line); }
.wheel-outer{ inset:0; border-top-color:var(--green); animation:spin 2s linear infinite; }
.wheel-middle{ inset:25px; border-right-color:var(--gold); animation:spinRev 1.5s linear infinite; }
.wheel-inner{ inset:50px; border-bottom-color:var(--green); animation:spin 1s linear infinite; }
.wheel-core{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  font-size:36px; color:var(--gold); animation:pulse 1s ease infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }
@keyframes spinRev{ to{ transform:rotate(-360deg); } }
@keyframes pulse{ 50%{ opacity:.4; transform:translate(-50%,-50%) scale(.85); } }
.fortune-anim-steps{ display:flex; flex-direction:column; gap:10px; }
.fas-step{ font-size:14px; color:var(--text-dim); transition:.3s; }
.fas-step.on{ color:var(--gold); font-weight:700; }
.fas-step.done{ color:var(--green); }
.fas-step.done::before{ content:'✓ '; }

/* ===== 签文历史 ===== */
.sign-history-list{ margin-bottom:24px; }
.sh-item{ display:flex; align-items:center; gap:12px; padding:12px 14px; margin-bottom:8px;
  background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); cursor:pointer; transition:.25s var(--ease); }
.sh-item:active{ transform:scale(.96); }
.sh-luck{ flex:0 0 auto; width:40px; height:40px; border-radius:50%; display:flex; align-items:center;
  justify-content:center; font-size:11px; font-weight:700; color:#fff; }
.sh-luck.luck-top{ background:linear-gradient(135deg,var(--gold),var(--gold-deep)); }
.sh-luck.luck-good{ background:linear-gradient(135deg,var(--green),var(--green-deep)); }
.sh-luck.luck-mid{ background:var(--text-mute); }
.sh-info{ flex:1; min-width:0; }
.sh-no{ font-size:14px; color:var(--text); font-weight:600; }
.sh-topic{ font-size:12px; color:var(--text-dim); margin-top:2px; }
.sh-time{ font-size:11px; color:var(--text-mute); flex:0 0 auto; }

/* ===== 分享图片 ===== */
.share-img-box{ width:100%; max-width:340px; background:var(--bg);
  border:1px solid var(--gold-line); border-radius:20px; padding:20px;
  box-shadow:0 8px 40px rgba(0,0,0,.4); animation:rise .35s ease; text-align:center; }
.share-img-wrap img{ width:100%; border-radius:12px; }
.share-tip{ font-size:12px; color:var(--text-mute); margin:12px 0 16px; }

/* 运程分享按钮 */
.fr-share-btn{ display:block; width:100%; margin-top:16px; padding:11px; border:1px solid var(--gold);
  border-radius:var(--radius); background:none; color:var(--gold); font-family:inherit; font-size:14px; }
.fr-share-btn:active{ background:var(--bg-card-hover); }

/* 道长详情页分享按钮 */
.mdp-share-row{ margin:0 18px 80px; }
.mdp-share-btn{ width:100%; padding:12px; border:1px solid var(--gold-line); border-radius:var(--radius);
  background:none; color:var(--gold); font-family:inherit; font-size:14px; display:flex; align-items:center;
  justify-content:center; gap:8px; }
.mdp-share-btn:active{ background:var(--bg-card-hover); }

/* ===== 输入框焦点态 ===== */
.reg-input:focus, .fortune-form input:focus, .fortune-form select:focus,
.lead-form-box textarea:focus, .lead-form-box input:focus{
  outline:none; border-color:var(--gold); box-shadow:0 0 0 2px rgba(184,160,90,.12); }

/* ===== 骨架屏加载 ===== */
@keyframes shimmer{ 0%{ background-position:-200% 0; } 100%{ background-position:200% 0; } }
.skeleton{ background:linear-gradient(90deg,var(--bg-card) 25%,var(--bg-card-hover) 50%,var(--bg-card) 75%);
  background-size:200% 100%; animation:shimmer 1.5s infinite; border-radius:var(--radius-sm); }

/* ===== 按钮加载态 ===== */
.btn-loading{ opacity:.6; pointer-events:none; }
.btn-loading::after{ content:'...'; animation:dots 1s infinite; }
@keyframes dots{ 0%,20%{ content:'.'; } 40%{ content:'..'; } 60%,100%{ content:'...'; } }

/* ===== 卡片微光hover ===== */
.entry-card:hover, .mlc-card:hover, .goods-item:hover, .sh-item:hover, .hn-item:hover{
  border-color:var(--gold-line-strong); background:var(--bg-card-hover); }

/* ===== 每日道语加载骨架 ===== */
.daily-card-text.daily-card-loading{
  background:var(--bg-card); color:transparent; border-radius:var(--radius-sm);
  background:linear-gradient(90deg,var(--bg-card) 25%,var(--bg-card-hover) 50%,var(--bg-card) 75%);
  background-size:200% 100%; animation:shimmer 1.5s infinite; }

/* ===== 新功能页面 ===== */

/* 祈福卡页面 */
.blessing-card-preview{
  background:linear-gradient(135deg,var(--green-deep),var(--bg-elevated));
  border:1px solid var(--gold-line-strong); border-radius:var(--radius-lg);
  padding:30px 24px; text-align:center; position:relative; overflow:hidden; margin-bottom:20px;
}
.blessing-card-preview::before{ content:'☯'; position:absolute; top:10px; right:10px; font-size:40px; opacity:.08; color:var(--gold); }
.bc-name{ font-size:22px; color:var(--gold); font-weight:800; font-family:var(--font-serif); margin-bottom:8px; letter-spacing:3px; }
.bc-blessing{ font-size:15px; color:var(--text-soft); line-height:2; margin:16px 0; }
.bc-seal{ display:inline-block; padding:4px 16px; border:1px solid var(--gold-line); border-radius:12px; font-size:12px; color:var(--gold); margin-top:8px; }
.bc-actions{ display:flex; gap:12px; }
.bc-btn{ flex:1; padding:12px; border-radius:var(--radius); font-family:inherit; font-size:14px; border:none; cursor:pointer; }
.bc-btn-primary{ background:linear-gradient(135deg,var(--green),var(--green-deep)); color:#fff; }
.bc-btn-ghost{ background:none; border:1px solid var(--gold); color:var(--gold); }

/* 心愿记录页面 */
.wish-input-box{ background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); padding:16px; margin-bottom:16px; }
.wish-type-grid{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.wish-type{ padding:8px 16px; border-radius:20px; font-size:13px; color:var(--text-dim); background:var(--bg-card); border:1px solid var(--gold-line); cursor:pointer; }
.wish-type.on{ background:var(--green); color:#fff; border-color:transparent; }
.wish-textarea{ width:100%; font-family:inherit; background:var(--bg-deep); border:1px solid var(--gold-line); border-radius:var(--radius-sm); color:var(--text); padding:12px 14px; font-size:15px; resize:none; }
.wish-list{ display:flex; flex-direction:column; gap:12px; }
.wish-item{ background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); padding:16px; }
.wish-item-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.wish-item-type{ font-size:11px; padding:2px 10px; border-radius:10px; background:var(--green-soft); color:var(--green); }
.wish-item-time{ font-size:11px; color:var(--text-mute); }
.wish-item-text{ font-size:14px; color:var(--text-soft); line-height:1.7; }
.wish-item-status{ font-size:12px; color:var(--gold); margin-top:8px; }

/* 活动列表页面 */
.event-item{ background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); overflow:hidden; margin-bottom:14px; }
.event-item-img{ width:100%; height:140px; background:linear-gradient(135deg,var(--green-deep),var(--bg-elevated)); display:flex; align-items:center; justify-content:center; font-size:48px; }
.event-item-body{ padding:14px 16px; }
.event-item-title{ font-size:15px; color:var(--text); font-weight:700; margin-bottom:6px; }
.event-item-meta{ display:flex; gap:12px; font-size:12px; color:var(--text-dim); margin-bottom:8px; }
.event-item-desc{ font-size:13px; color:var(--text-soft); line-height:1.6; }
.event-item-btn{ display:inline-block; margin-top:10px; padding:6px 18px; border-radius:18px; font-size:12px; color:#fff; background:var(--green); }

/* 文化页面 */
.culture-tabs{ display:flex; gap:8px; margin-bottom:16px; overflow-x:auto; }
.culture-tabs::-webkit-scrollbar{ display:none; }
.culture-tab{ flex:0 0 auto; padding:8px 16px; border-radius:20px; font-size:13px; color:var(--text-dim); background:var(--bg-card); border:1px solid var(--gold-line); }
.culture-tab.on{ background:var(--green); color:#fff; border-color:transparent; }
.culture-article{ background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); overflow:hidden; margin-bottom:14px; }
.culture-article-img{ width:100%; height:120px; background:linear-gradient(135deg,var(--green-deep),var(--bg-elevated)); display:flex; align-items:center; justify-content:center; font-size:40px; }
.culture-article-body{ padding:14px 16px; }
.culture-article-title{ font-size:15px; color:var(--text); font-weight:700; margin-bottom:6px; }
.culture-article-summary{ font-size:13px; color:var(--text-dim); line-height:1.7; }

/* 提醒页面 */
.reminder-item{ display:flex; align-items:flex-start; gap:12px; padding:14px 16px; margin-bottom:10px; background:var(--bg-card); border:1px solid var(--gold-line); border-radius:var(--radius); }
.reminder-ico{ font-size:24px; flex:0 0 auto; margin-top:2px; }
.reminder-info{ flex:1; }
.reminder-title{ font-size:14px; color:var(--text); font-weight:600; margin-bottom:4px; }
.reminder-desc{ font-size:12px; color:var(--text-dim); line-height:1.6; }
.reminder-date{ font-size:11px; color:var(--green); margin-top:4px; }

/* ===== prefers-reduced-motion ===== */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important;
    transition-duration:.01ms !important; }
}
