/* ============================================================
   司命栻 · 全站设计系统 v1.0（当代东方 · 新中式极简）
   Token 依据《全站设计系统 v1.0》第 3 章：
   13 色 / 6 档字阶 / 4 基数间距 / 5 档圆角
   用色纪律：绿=品牌与主操作；金=价值；红=语义（价格/警示/红点）
   ============================================================ */
:root{
  /* 顶部安全区：部分手机浏览器/微信内核会误报 env(safe-area-inset-top)（浏览器自身已避让状态栏），
     导致所有页面顶部多出一条空白；故普通浏览器一律归零，仅 PWA 全屏模式（将来接 manifest）恢复避让 */
  --safe-top:0px;
  /* ---- 色彩 13 token（新系统权威值） ---- */
  --paper:#FBF7EF;          /* 纸底：页面底 */
  --card:#FFFFFF;           /* 卡片：内容容器 */
  --line:#E9E1D2;           /* 描边 / 分割 */
  --green:#0E6B47;          /* 主绿：主按钮 / 选中（白字 6.54） */
  --green-d:#0A5236;        /* 深绿：标题 / 渐变起（白字 9.24） */
  --green-l:#12795A;        /* 亮绿：渐变止 / 次级（白字 5.37） */
  --mist:#E6F1EA;           /* 绿雾：浅底 / 图标底（绿字 5.64） */
  --ink:#14110F;            /* 墨：正文（纸上 17.8） */
  --ink-2:#4A443A;          /* 次级：小标题（9.02） */
  --muted:#6B6357;          /* 辅助：注释 / 元信息（5.54） */
  --gold:#F5B301;           /* 茶金：会员 / 分数（黑字 10.15） */
  --gold-d:#7A5B12;         /* 深金：金色小字（纸上 5.56） */
  --red:#C92F23;            /* 赤红：价格 / 警示 / 红点（纸上 5.02） */
  /* ---- 旧变量名兼容映射（历史引用无缝过渡） ---- */
  --paper-2:var(--card);
  --paper-3:var(--mist);
  --sub:var(--muted);
  --cinnabar:var(--green);
  --cinnabar-deep:var(--green-d);
  --cinnabar-dark:#08402A;
  --seal:var(--red);
  --gold-light:#F0CD69;     /* 柔金 hairline */
  --gold-pale:#FBF0CE;      /* 浅金底 */
  --jade:var(--green-l);
  --indigo:#2F5878;         /* 黛蓝（五行·水，仅数据语义保留） */
  --earth:#A5822F;          /* 赭土（五行·土，仅数据语义保留） */
  /* 多巴胺点缀辅色（20% 层：入口图标 / 数据峰值标记，低频小面积） */
  --dopa-yellow:#FFD124;
  --dopa-pink:#FF78A8;
  --dopa-cyan:#00C6CF;
  --dopa-orange:#FF7D3B;
  /* 字体：宋体（思源宋）标题 / 系统黑体正文 */
  --font-display:"Noto Serif SC","Songti SC","STSong","SimSun",serif;
  --font-kai:"Ma Shan Zheng","Kaiti SC","STKaiti","KaiTi",serif;
  --font-body:-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  /* 圆角：标签 10 / 图标 13 / 卡片 14 / 大卡 16 / 胶囊 22 */
  --r-chip:10px; --r-icon:13px; --r-card:14px; --r-sheet:16px; --r-btn:22px; --r-input:12px;
  /* 阴影 */
  --shadow-card:0 2px 8px rgba(20,17,15,.045);
  --shadow-float:0 6px 18px rgba(14,107,71,.32);
  /* 层级 */
  --z-nav:50; --z-sheet:80; --z-modal:90; --z-toast:100; --z-loading:120;
  /* 纹理 */
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
  --huiwen:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3E%3Cpath d='M2 20 V2 H20 V14 H8 V8 H14 V11' fill='none' stroke='%23E3B84B' stroke-width='1.6'/%3E%3C/svg%3E");
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
html,body{height:100%}
body{
  font-family:var(--font-body);
  color:var(--ink);
  /* 舞台底：视口宽于 480 时 #app 居中，两侧露出此背景 */
  background:#ECE6D8 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90' viewBox='0 0 90 90'%3E%3Cpath d='M0 45h90M45 0v90' stroke='%23DCD3C0' stroke-width='0.5'/%3E%3C/svg%3E");
  font-size:12.5px;line-height:1.6;letter-spacing:.01em;
}
body::after{content:"";position:fixed;inset:0;background:var(--grain);pointer-events:none;z-index:999;opacity:.18}
button{font-family:inherit;border:none;background:none;cursor:pointer;color:inherit}
input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;outline:none}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;line-height:1.2;letter-spacing:.04em}
::selection{background:var(--gold-pale);color:var(--ink)}

/* 键盘焦点环（无障碍） */
:focus{outline:none}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--green);outline-offset:2px;border-radius:4px;
}

@media (display-mode: standalone), (display-mode: fullscreen){
  :root{--safe-top:env(safe-area-inset-top)}   /* PWA 全屏模式才避让刘海/状态栏 */
}
/* ============ 应用外壳：移动优先，桌面居中呈"手机"列 ============ */
#app{
  position:relative;max-width:480px;margin:0 auto;
  min-height:100vh;min-height:100dvh;              /* dvh 回退：老 WebView 用 vh */
  padding-top:var(--safe-top);                     /* 顶部安全区见 :root --safe-top 说明 */
  background:var(--paper);overflow:hidden;
  box-shadow:0 0 0 1px var(--line),0 12px 48px rgba(20,17,15,.2);
}
#stage{position:relative;min-height:100vh;min-height:100dvh}
.tab-page{display:none;min-height:100vh;min-height:100dvh;padding-bottom:96px}
.tab-page.active{display:block;animation:pageIn .32s cubic-bezier(.2,.8,.2,1) both}
#page-dyn{display:none;min-height:100vh;min-height:100dvh;padding-bottom:96px;background:var(--paper)}
#page-dyn.active{display:block}
#page-dyn.forward{animation:slideIn .32s cubic-bezier(.2,.8,.2,1) both}
#page-dyn.backward{animation:slideOutBack .32s cubic-bezier(.2,.8,.2,1) both}

/* ============ 动效 ============ */
@keyframes pageIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes slideIn{from{opacity:.4;transform:translateX(48px)}to{opacity:1;transform:none}}
@keyframes slideOutBack{from{opacity:.4;transform:translateX(-48px)}to{opacity:1;transform:none}}
@keyframes riseIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
/* to 帧省略 → 回落至元素自身 transform（.sheet 依赖 translateX(-50%) 水平居中，不可被 to{transform:none} 覆盖） */
@keyframes sheetUp{from{transform:translate(-50%,100%)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes spinRev{to{transform:rotate(-360deg)}}
@keyframes stampIn{0%{opacity:0;transform:scale(2.4) rotate(-18deg)}60%{opacity:1;transform:scale(.92) rotate(6deg)}100%{opacity:1;transform:scale(1) rotate(4deg)}}
@keyframes coinSpin{0%{transform:rotateY(0)}100%{transform:rotateY(1800deg)}}
@keyframes pulse{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes shimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}

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

/* ============ 布栅 ============ */
.wrap{padding:0 12px}
.block{margin-top:16px}
.flex{display:flex}.between{justify-content:space-between}.center{align-items:center}.gap8{gap:8px}.gap12{gap:12px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.muted{color:var(--sub)}
.small{font-size:11.5px}
.serif{font-family:var(--font-display)}
.kai{font-family:var(--font-kai)}
.cinnabar-text{color:var(--green-d)}
.gold-text{color:var(--gold-d)}

/* ============ 区段标题： hairline—◆ 题字 ◆—hairline ============ */
.section-title{display:flex;align-items:center;gap:12px;margin:24px 0 12px}
.section-title .hair{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold-light))}
.section-title .hair:last-of-type{background:linear-gradient(270deg,transparent,var(--gold-light))}
.section-title .diamond{width:6px;height:6px;background:var(--gold);transform:rotate(45deg);flex:none}
.section-title h3{font-size:15px;letter-spacing:2px;font-weight:700}
.section-title h1{font-size:15px;letter-spacing:2px;font-weight:700}
.page-sub{margin:-6px 2px 14px;font-size:11.5px;color:var(--sub);letter-spacing:2px;text-align:center}
.section-title .more{font-size:11.5px;color:var(--sub);flex:none;letter-spacing:1px;padding:6px 0;margin-right:-4px}

/* ============ 卡片：白底 + 1px 描边 + 14 圆角 + 极轻阴影 ============ */
.paper-card{
  position:relative;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-card);padding:16px;box-shadow:var(--shadow-card);
}
.paper-card.gold-edge{border-color:rgba(245,179,1,.55)}
.paper-card.gold-edge::before{
  content:"";position:absolute;inset:5px;border:1px solid rgba(245,179,1,.28);
  border-radius:calc(var(--r-card) - 4px);pointer-events:none;
}
.paper-card .corner{position:absolute;width:14px;height:14px;border:1.5px solid var(--gold);opacity:.75;pointer-events:none}
.corner.tl{top:7px;left:7px;border-right:none;border-bottom:none}
.corner.tr{top:7px;right:7px;border-left:none;border-bottom:none}
.corner.bl{bottom:7px;left:7px;border-right:none;border-top:none}
.corner.br{bottom:7px;right:7px;border-left:none;border-top:none}

/* ============ 印章（红仅语义：吉凶印 / 忌） ============ */
.seal{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--seal);color:#FFFFFF;font-family:var(--font-kai);
  border-radius:4px;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.85);
  transform:rotate(3deg);line-height:1.05;text-align:center;letter-spacing:1px;
}
.seal-s{width:26px;height:26px;font-size:13px;padding:1px}
.seal-m{width:44px;height:44px;font-size:15px;padding:3px;flex-direction:column}
.seal-lg{width:64px;height:64px;font-size:22px;padding:4px;flex-direction:column;gap:2px}
.seal-tag{
  display:inline-flex;align-items:center;gap:4px;padding:3px 8px;font-size:11px;letter-spacing:1px;
  background:rgba(201,47,35,.08);color:var(--seal);border:1px solid rgba(201,47,35,.35);
  border-radius:var(--r-chip);font-family:var(--font-body);
}
.seal-tag.gold{background:rgba(245,179,1,.12);color:var(--gold-d);border-color:rgba(245,179,1,.5)}
.seal-tag.jade{background:rgba(18,121,90,.1);color:var(--green-d);border-color:rgba(18,121,90,.4)}

/* ============ 按钮四态：default / pressed / disabled / loading ============ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  height:44px;padding:0 20px;border-radius:var(--r-btn);
  font-family:var(--font-body);font-size:14px;font-weight:700;letter-spacing:1px;
  transition:transform .12s ease-out,filter .12s ease-out,box-shadow .12s ease-out,background .12s ease-out;
  border:1px solid transparent;user-select:none;
}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--green);color:#FFFFFF}
.btn-primary:active{filter:brightness(.92)}
.btn-primary[disabled]{background:#BDB6A8;color:#fff}
.btn-ghost{background:var(--card);color:var(--green);border-color:var(--green)}
.btn-ghost:active{filter:brightness(.92)}
.btn-ghost[disabled]{background:var(--card);color:#BDB6A8;border-color:#D8D2C4}
.btn-gold{background:var(--gold);color:#14110F}   /* 价值按钮：金底黑字 */
.btn-gold:active{filter:brightness(.92)}
.btn-gold[disabled]{background:#BDB6A8;color:#fff}
.btn-plain{background:transparent;color:var(--green-d);letter-spacing:1px;font-weight:700;font-size:14px;height:36px}
.btn-block{width:100%}
.btn[disabled]{opacity:1;pointer-events:none}
.btn.loading{pointer-events:none;opacity:.85}
.btn.loading::before{
  content:"";flex:none;width:14px;height:14px;border-radius:50%;
  border:2px solid rgba(20,17,15,.15);border-top-color:currentColor;
  animation:spin .8s linear infinite;
}
.btn-sm{height:36px;font-size:12.5px;letter-spacing:1px;padding:0 14px}

/* ============ 表单：输入框 46 高 / 12 圆角 / 聚焦绿边 2px ============ */
.field{margin-bottom:16px}
.field-label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:7px;letter-spacing:1px;font-family:var(--font-body)}
.input,.select,.textarea{
  width:100%;min-height:46px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-input);
  padding:12px 14px;font-size:13px;color:var(--ink);transition:border .12s ease-out,box-shadow .12s ease-out;
}
.input:focus,.select:focus,.textarea:focus{
  border-color:var(--green);
  box-shadow:inset 0 0 0 1px var(--green),0 0 0 3px rgba(14,107,71,.1);
}
.input:disabled,.select:disabled,.textarea:disabled{background:#F2EDE0;color:var(--muted)}
.input.error,.select.error{border-color:var(--red)}
.select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236B6357' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.textarea{min-height:92px;resize:none;line-height:1.6}
.code-row{display:flex;gap:10px}
.code-row .input{flex:1}

/* 选择 chip 组：24 高骨架 / 圆角 10 / 触控友好 */
.chip-row{display:flex;flex-wrap:wrap;gap:9px}
.chip{
  min-height:36px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-chip);background:var(--card);
  font-size:12.5px;font-family:var(--font-body);letter-spacing:1px;color:var(--ink-2);
  transition:all .12s ease-out;display:inline-flex;align-items:center;gap:5px;
}
.chip.on{background:var(--mist);border-color:var(--green);color:var(--green-d)}

/* 开关 */
.switch{position:relative;width:46px;height:26px;border-radius:13px;background:#D6CFC0;transition:.2s;flex:none}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:.2s}
.switch.on{background:var(--green)}
.switch.on::after{left:23px}

/* 进度条 */
.progress{height:4px;background:#EDE7DA;border-radius:2px;overflow:hidden}
.progress>i{display:block;height:100%;background:var(--gold);border-radius:2px;transition:width .3s ease}

/* ============ 子页头：48 高 ============ */
.sub-header{
  position:sticky;top:var(--safe-top);z-index:20;display:flex;align-items:center;  /* 吸顶偏移随 --safe-top：普通浏览器 0，PWA 全屏避状态栏 */
  height:48px;padding:0 12px;background:rgba(251,247,239,.94);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.sub-header .back{width:44px;height:44px;display:flex;align-items:center;justify-content:center;color:var(--ink);margin-left:-8px}
.sub-header h1{flex:1;text-align:center;font-size:15px;letter-spacing:3px;font-weight:700}
.sub-header .head-right{width:auto;min-width:44px;display:flex;justify-content:flex-end;align-items:center;gap:4px;margin-right:-8px}
.icon{width:22px;height:22px;display:inline-block;vertical-align:-5px}
.icon svg{width:100%;height:100%;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* ============ 底部导航：60 高 / 6 项 / 选中绿 700 ============ */
#tabbar{
  position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:480px;
  height:calc(60px + env(safe-area-inset-bottom));padding:0 6px env(safe-area-inset-bottom);
  display:flex;background:rgba(251,247,239,.97);
  border-top:1px solid var(--line);z-index:var(--z-nav);
}
.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--sub);position:relative;padding-top:4px;transition:color .12s ease-out}
.tab-item .tab-icon{width:24px;height:24px;position:relative;transition:transform .12s ease-out}
.tab-item:active .tab-icon{transform:scale(.88)}
.tab-item .tab-label{font-size:10px;letter-spacing:1px;font-weight:500;letter-spacing:.08em}
.tab-item.on{color:var(--green)}
.tab-item.on .tab-label{font-weight:700}
.tab-item.on::after{content:"";width:4px;height:4px;background:var(--green);border-radius:50%;position:absolute;bottom:3px}
/* 问AI：绿雾圆牌强调（金不用、绿不抢主 CTA） */
.tab-ai .tab-icon{width:30px;height:30px;margin-top:-6px;border-radius:50%;background:var(--mist);display:flex;align-items:center;justify-content:center}
.tab-ai .tab-icon svg{width:18px!important;height:18px!important}
.tab-ai .tab-label{letter-spacing:.08em}

/* ============ 底部弹层 Sheet ============ */
.sheet-mask{position:fixed;inset:0;background:rgba(20,17,15,.5);z-index:var(--z-sheet);animation:fadeIn .2s ease}
.sheet{
  position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:480px;
  max-height:82vh;max-height:82dvh;                    /* dvh 回退 */
  overflow:auto;background:var(--card);
  border-radius:var(--r-sheet) var(--r-sheet) 0 0;z-index:calc(var(--z-sheet) + 1);
  animation:sheetUp .2s cubic-bezier(.2,.8,.2,1) both;
  box-shadow:0 -10px 40px rgba(20,17,15,.22);
}
.sheet-handle{width:36px;height:4px;background:#DED6C4;border-radius:2px;margin:10px auto 2px}
.sheet-title{text-align:center;font-family:var(--font-display);font-size:15px;font-weight:700;letter-spacing:2px;padding:8px 0 2px}
.sheet-body{padding:14px 16px calc(24px + env(safe-area-inset-bottom))}

/* ============ 居中弹窗 ============ */
.modal-mask{position:fixed;inset:0;background:rgba(20,17,15,.55);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:28px;animation:fadeIn .2s}
.modal{
  width:100%;max-width:340px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-sheet);padding:20px;position:relative;animation:riseIn .28s ease both;
  box-shadow:0 20px 60px rgba(20,17,15,.32);
  max-height:calc(100vh - 56px);max-height:calc(100dvh - 56px);   /* 遮罩上下 padding 28px；dvh 回退 */
  display:flex;flex-direction:column;                             /* 超高时仅正文滚动，标题/关闭按钮常驻 */
}
.modal-title{text-align:center;font-family:var(--font-display);font-size:15px;font-weight:700;letter-spacing:2px;margin-bottom:12px;flex:none}
.modal-body{font-size:12.5px;color:var(--ink-2);line-height:1.85;flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
.modal-actions{display:flex;gap:10px;margin-top:16px;flex:none}
.modal-actions .btn{flex:1;height:44px;font-size:14px}

/* ============ Toast：底部 72 / 深底白字 / 2s ============ */
#toast-root{position:fixed;bottom:calc(72px + env(safe-area-inset-bottom));left:0;right:0;z-index:var(--z-toast);display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}
.toast{
  background:rgba(20,17,15,.92);color:#F3EFE4;font-size:12.5px;letter-spacing:1px;
  padding:11px 18px;border-radius:14px;max-width:82vw;animation:riseIn .25s ease both;
  box-shadow:0 8px 24px rgba(20,17,15,.3);
}

/* ============ 加载罗盘 ============ */
.compass-overlay{position:fixed;inset:0;z-index:var(--z-loading);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;background:rgba(251,247,239,.92);backdrop-filter:blur(3px);animation:fadeIn .2s}
.compass{position:relative;width:120px;height:120px}
.compass .ring{position:absolute;border-radius:50%;border:1px solid rgba(14,107,71,.5)}
.compass .r1{inset:0;animation:spin 6s linear infinite}
.compass .r1::before,.compass .r1::after{content:"";position:absolute;width:6px;height:6px;background:var(--gold);transform:rotate(45deg)}
.compass .r1::before{top:-3px;left:calc(50% - 3px)}
.compass .r1::after{bottom:-3px;left:calc(50% - 3px)}
.compass .r2{inset:12px;border-style:dashed;animation:spinRev 9s linear infinite}
.compass .r3{inset:26px;border-color:rgba(18,121,90,.45)}
.compass .needle{position:absolute;left:50%;top:50%;width:4px;height:52px;margin:-26px 0 0 -2px;background:linear-gradient(180deg,var(--green) 50%,var(--ink) 50%);border-radius:2px;animation:spin 2.4s cubic-bezier(.6,.1,.4,.9) infinite}
.compass .core{position:absolute;left:50%;top:50%;width:16px;height:16px;margin:-8px 0 0 -8px;background:var(--card);border:1px solid var(--gold);transform:rotate(45deg)}
.compass-text{font-family:var(--font-display);letter-spacing:5px;color:var(--ink-2);font-size:14px}
.compass-text b{color:var(--green-d);font-weight:700}
.compass-steps{font-size:12px;color:var(--sub);letter-spacing:2px;margin-top:6px;animation:pulse 1.5s ease infinite}

/* ============ 骨架屏：#EDE7DA · 1.2s 呼吸 ============ */
.skeleton{background:#EDE7DA;animation:pulse 1.2s ease-in-out infinite;border-radius:8px}

/* ============ 免责 & AI 标识 ============ */
.disclaimer{
  margin:24px 0 6px;padding:13px 14px;border:1px dashed rgba(107,99,87,.45);border-radius:10px;
  font-size:11.5px;line-height:1.85;color:var(--sub);background:rgba(233,225,210,.35);letter-spacing:.5px;
}
.disclaimer b{color:var(--ink-2);font-weight:600}
.disclaimer .d-foot{display:block;margin-top:7px;padding-top:6px;border-top:1px dashed rgba(107,99,87,.35);font-size:10px;letter-spacing:.5px;color:var(--muted)}
.disclaimer .d-foot a{color:inherit;text-decoration:underline}
.ai-tag{display:inline-flex;align-items:center;gap:4px;font-size:10px;color:var(--gold-d);background:rgba(245,179,1,.14);border:1px solid rgba(245,179,1,.45);padding:2px 7px;border-radius:var(--r-chip);letter-spacing:1px;font-family:var(--font-body)}
.ai-tag.on{color:#FCFAF4;background:var(--green);border-color:var(--green)}   /* 实时推演生效态：绿签点亮 */

/* ============ 走马标签 ============ */
.tag-line{display:flex;flex-wrap:wrap;gap:6px}
.mini-tag{font-size:10px;padding:2px 8px;border-radius:var(--r-chip);background:rgba(20,17,15,.05);color:var(--ink-2);letter-spacing:1px}

/* ============ 空状态：图形 64 + 一行说明 ============ */
.empty{padding:48px 20px;text-align:center;color:var(--sub)}
.empty .icon{width:64px;height:64px;color:#C9C2B0;margin-bottom:10px}
.empty p{font-size:12.5px;letter-spacing:1px}

/* ============ 元素色微标（五行数据语义，克制使用） ============ */
.el-木{color:var(--jade)} .el-火{color:var(--seal)} .el-土{color:var(--earth)}
.el-金{color:var(--gold-d)} .el-水{color:var(--indigo)}
.el-dot{display:inline-block;width:6px;height:6px;border-radius:2px;transform:rotate(45deg);margin-right:4px;vertical-align:1.5px}
.el-dot.木{background:var(--jade)} .el-dot.火{background:var(--seal)} .el-dot.土{background:var(--earth)}
.el-dot.金{background:var(--gold)} .el-dot.水{background:var(--indigo)}

/* ============ 海报纸片 ============ */
.poster-card{background:var(--card);border:1px solid rgba(245,179,1,.6);border-radius:var(--r-sheet);padding:26px 22px;text-align:center;position:relative}
.poster-card::before{content:"";position:absolute;inset:6px;border:1px solid rgba(245,179,1,.35);border-radius:12px;pointer-events:none}
.poster-card .p-brand{font-size:11.5px;letter-spacing:6px;color:var(--sub);margin-bottom:14px}
.poster-card .p-dazi{font-family:var(--font-display);font-size:44px;font-weight:900;letter-spacing:6px;color:var(--ink);margin:6px 0}
.poster-card .p-verse{font-family:var(--font-kai);font-size:14px;color:var(--green-d);letter-spacing:2px;margin:8px 0 14px}
.poster-card .p-intro{font-family:var(--font-kai);font-size:12.5px;color:var(--sub);line-height:1.9;margin:10px 4px 0;text-align:justify;letter-spacing:.5px}
