/* 万年历 v4.0 - css/4-class.css (从 style.css 拆分) */

/* ═══ style.css lines 1054-1103 ═══ */
/* ===== CSS类提取（替代inline style） ===== */
.ds-info { font-size: var(--fs-tiny); color: var(--gray-450); margin-top: 2px; }
.season-banner { display: none; }
.home-reminders { display: none; margin: -4px 12px 8px; padding: 6px 14px; font-size: var(--fs-xs); color: var(--gray-450); background: var(--gray-50); border-radius:var(--radius-md); cursor: default; }
.yi-ji-match { display: none; margin: 0 12px 6px; padding: 4px 14px; font-size: var(--fs-tiny); color: var(--gray-600); background: #fafafa; border-radius:var(--radius-md); }
/* 每日指南 */
.fc-row { display: flex; gap: 10px; margin-top: 4px; }
.fc-item { flex: 1; text-align: center; padding: 8px 4px; background: var(--gray-50); border-radius:var(--radius-md); cursor: pointer; }
.fc-label { font-size: var(--fs-tiny); color: var(--gray-500); margin-bottom: 4px; }
.fc-value { font-size: var(--fs-h1); font-weight: 600; display: flex; align-items: center; justify-content: center; gap: 6px; }
/* 幸运色圆点 */
.color-dot { display: inline-block; width: 16px; height: 16px; border-radius: 50%; flex-shrink: 0; box-shadow: inset 0 0 0 1px var(--color-border); }
.fc-foot { font-size: var(--fs-xs); color: var(--gray-450); margin-top: 6px; text-align: center; }
.fxg6mb10 { display: flex; gap: 6px; margin-bottom: 10px; }
/* 占卜 */
.hidden-block { display: none; }
.disclaimer { font-size: var(--fs-tiny); color: var(--gray-150); text-align: center; margin-top: 4px; }
/* 择吉 */
.zj-header { margin: 2px 10px 0; padding: 4px 10px; overflow: hidden; }
.zj-month-t { font-size: 18px; font-weight: 600; color: #111; }
.zj-year-l { font-size: var(--fs-small); color: var(--gray-500); }
.zj-bar { display: flex; align-items: center; justify-content: center; gap: 2px; margin: 0 10px 4px; padding: 6px 8px; border-radius:var(--radius-md); background: var(--bg-card); font-size: var(--fs-small); color: var(--color-text-muted); font-weight: 500; }
.zj-bar .ci-b { cursor: pointer; padding: 4px 8px; border-radius:var(--radius-md); white-space: nowrap; transition: background .12s; }
.zj-bar .ci-b:active { background: var(--color-primary-light); }
.zj-bar .ci-s { color: var(--color-border); font-size: 10px; padding: 0 2px; user-select: none; }
.zj-bar .ci-d { color: var(--color-primary); margin-left: 4px; }
.zj-info { margin: 2px 10px 8px; padding: 12px; display: none; }
.zj-body { margin: 4px 10px; padding: 8px; }
/* 择吉页日历更紧凑 */
#pg2 .dg .c { min-height: 38px; padding: 2px 0; }
#pg2 .dg .c .l { margin-top: 0; line-height: 1.1; }
#pg2 .zj-score-line { margin-top: 0; }
#pg2 .zj-bg { margin-top: 0; padding: 0 3px; line-height: 13px; font-size: 9px; }
/* AI页 */
.ai-ht { margin: 8px 10px; text-align: center; padding: 10px; }
.ai-ht-t { font-size: 16px; font-weight: 600; }
/* 设置页 */
.m-row { display: flex; align-items: center; cursor: pointer; }
.m-ic { font-size: 26px; margin-right: 12px; flex-shrink: 0; }
.m-f1 { flex: 1; }
.m-t { font-size: var(--fs-h2); font-weight: 600; color: var(--gray-800); }
.m-d { font-size: var(--fs-xs); color: var(--gray-500); margin-top: 2px; }
.m-ar { font-size: 20px; color: var(--gray-300); font-weight: 200; }
.m-box { margin: 0 10px 6px; padding: 4px 14px; }
.m-item { margin: 4px 10px 6px; padding: 12px 14px; display: flex; align-items: center; cursor: pointer; }
.m-ar-l { color: var(--gray-300); margin-left: auto; }
.m-v { margin-left: auto; margin-right: 4px; }
.m-v2 { margin-left: auto; }
/* 设置底部品牌 */


/* ═══ style.css lines 1189-1197 ═══ */
/* ===== 深度报告排版 ===== */
.deep-report{line-height:1.9;font-size:var(--fs-small);color:var(--gray-700)}
.deep-report .dr-section-title{display:flex;align-items:center;gap:8px;font-size:var(--fs-body);font-weight:700;color:var(--gray-900);margin-bottom:var(--sp-6);padding-left:10px;line-height:1.4}
.deep-report .dr-name-hdr{display:flex;align-items:center;gap:12px;margin:var(--sp-10) 0 var(--sp-6);font-size:var(--fs-body);font-weight:700;color:var(--gray-800)}
.deep-report .dr-name-hdr::before,.deep-report .dr-name-hdr::after{content:'';flex:1;height:1px;background:var(--color-border)}
.deep-report .dr-list{display:flex;flex-direction:column;gap:var(--sp-3);margin:var(--sp-4) 0 var(--sp-6);padding:0}
.deep-report .dr-list-item{display:flex;gap:6px;align-items:flex-start;font-size:var(--fs-small);line-height:1.7}
.deep-report .dr-num{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;background:var(--color-primary);color:#fff;border-radius:50%;font-size:10px;font-weight:700;flex-shrink:0;margin-top:4px}


/* ═══ style.css lines 1229-1750 ═══ */
/* ═══════════════════════════════════════════════
   常用工具类 — 替代高频内联样式
   ═══════════════════════════════════════════════ */
.fw-600 { font-weight: 600; }
.fw-700 { font-weight: 700; }
.t-center { text-align: center; }
.t-left { text-align: left; }
.d-flex { display: flex; }
.flex-wrap { flex-wrap: wrap; }
.gap-4 { gap: 4px; }
.gap-6 { gap: 6px; }
.gap-8 { gap: 8px; }
.mt-4 { margin-top: 4px; }
.mt-6 { margin-top: 6px; }
.mt-8 { margin-top: 8px; }
.mb-4 { margin-bottom: 4px; }
.mb-6 { margin-bottom: 6px; }
.mb-8 { margin-bottom: 8px; }
.c-primary { color: var(--color-primary); }
.c-secondary { color: var(--gray-600); }
.c-muted { color: var(--gray-500); }
.p-8 { padding: 8px; }
.fs-body { font-size: var(--fs-body); }
.fs-small { font-size: var(--fs-small); }
.fs-xs { font-size: var(--fs-xs); }
.lh-1_7 { line-height: 1.7; }
.lh-1_8 { line-height: 1.8; }
.deep-report .dr-label{display:inline-block;background:var(--color-primary-light);color:var(--color-primary);padding:1px 6px;border-radius:var(--radius-sm);font-weight:600;font-size:var(--fs-xs);line-height:1.6;margin-right:2px}
.deep-report .dr-strong{color:var(--color-primary);font-weight:700}
.deep-report .dr-score{text-align:center;padding:var(--sp-8);margin:var(--sp-6) 0;background:var(--gray-50);border-radius:var(--radius-md)}
.deep-report .dr-score-val{font-size:32px;font-weight:800;color:var(--color-primary);line-height:1.2;letter-spacing:1px}
.deep-report .dr-recommend{margin:var(--sp-6) 0;padding:var(--sp-8) var(--sp-10);background:var(--gray-50);border-radius:0 var(--radius-md) var(--radius-md) 0}
.deep-report .dr-recommend-title{font-size:var(--fs-small);font-weight:700;color:var(--color-primary);margin-bottom:var(--sp-3)}
.deep-report .dr-para{margin:var(--sp-3) 0;line-height:1.9;word-break:break-word}
.deep-report .dr-bullet{display:flex;gap:6px;align-items:flex-start;margin:2px 0;padding-left:4px;line-height:1.7}
.deep-report .dr-bullet-marker{color:var(--color-primary);font-weight:700;flex-shrink:0}
.deep-report .dr-footer{font-size:10px;color:var(--gray-400);text-align:center;margin-top:var(--sp-12);padding-top:var(--sp-6);border-top:1px solid var(--color-border)}
/* grid 两列网格 */
.deep-report .dr-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:var(--sp-4) 0}
.deep-report .dr-grid-item{background:var(--gray-50);border-radius:var(--radius-md);padding:10px 8px;text-align:center}
.deep-report .dr-grid-label{font-size:var(--fs-tiny);color:var(--gray-500);margin-bottom:4px}
.deep-report .dr-grid-val{font-size:var(--fs-body);font-weight:700;color:var(--gray-800)}
.deep-report .dr-divider{height:1px;background:var(--color-border);margin:var(--sp-6) 0;border:none}
.deep-report .dr-tag{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:var(--fs-xs);font-weight:600;margin-right:4px}
/* 深色模式适配 */
body.dark .deep-report .dr-section-title{color:var(--color-text-primary)}
body.dark .deep-report .dr-name-hdr{color:var(--color-text-primary)}
body.dark .deep-report .dr-para{color:var(--color-text-secondary)}
body.dark .deep-report .dr-score{background:var(--bg-card-elevated)}
body.dark .deep-report .dr-recommend{background:var(--bg-card-elevated)}
body.dark .deep-report .dr-grid-item{background:var(--bg-card-elevated)}
body.dark .deep-report .dr-grid-val{color:var(--color-text-primary)}
body.dark .zs-card{background:var(--bg-card-elevated);border-color:var(--color-border)}
.modal-success-title{font-size:var(--fs-h1);font-weight:600;color:var(--color-primary)}
.modal-success-desc{font-size:var(--fs-small);color:var(--gray-450);margin-top:4px}
.modal-success-btn{margin-top:12px;background:var(--color-primary);color:var(--bg-card);border:none;padding:8px 24px;border-radius:var(--radius-xl);cursor:pointer}

/* ═══════════════════════════════════════════
   原子工具类（替换内联style）
   ═══════════════════════════════════════════ */
/* 字号 */
.fs-tiny{font-size:var(--fs-tiny)}
.fs-xs{font-size:var(--fs-xs)}
.fs-small{font-size:var(--fs-small)}
.fs-body{font-size:var(--fs-body)}
.fs-h2{font-size:var(--fs-h2)}
.fs-h1{font-size:var(--fs-h1)}
.fs-12px{font-size:12px}
.fs-10px{font-size:10px}

/* 颜色 */
.c-primary{color:var(--color-primary)}
.c-text{color:var(--color-text-primary)}
.c-gray300{color:var(--gray-300)}
.c-gray400{color:var(--gray-400)}
.c-gray500{color:var(--gray-500)}
.c-gray600{color:var(--gray-600)}
.c-gray700{color:var(--gray-700)}
.c-gray800{color:var(--gray-800)}

/* 字体粗细 */
.fw-400{font-weight:400}

/* 边距 */
.mb-4{margin-bottom:4px}
.mb-6{margin-bottom:6px}
.mb-8{margin-bottom:8px}
.mb-12{margin-bottom:12px}
.mt-4{margin-top:4px}
.mt-6{margin-top:6px}
.mt-8{margin-top:8px}
.mt-12{margin-top:12px}
.ml-4{margin-left:4px}
.ml-6{margin-left:6px}
.mr-4{margin-right:4px}

/* 内边距 */
.p-4{padding:4px}
.p-8{padding:8px}
.p-10{padding:10px}
.p-12{padding:12px}
.p-16{padding:16px}
.px-8{padding-left:8px;padding-right:8px}
.px-12{padding-left:12px;padding-right:12px}
.py-6{padding-top:6px;padding-bottom:6px}
.py-8{padding-top:8px;padding-bottom:8px}

/* 弹性布局 */
.flex-1{flex:1}
.flex-2{flex:2}
.flex-08{flex:0.8}
.flex-07{flex:0.7}
.gap-6{gap:6px}
.gap-10{gap:10px}
.h-32{height:32px}
.h-36{height:36px}
.min-w-44{min-width:44px}

/* 文本 */
.t-left{text-align:left}
.t-center{text-align:center}
.t-right{text-align:right}
.lh-16{line-height:1.6}
.lh-17{line-height:1.7}
.cursor-pointer{cursor:pointer}
.bg-gray50{background:var(--gray-50)}

/* --- 黄历模块 (almanac.js) inline→class 替换 --- */
.al-section-title{font-size:var(--fs-body);font-weight:600;color:var(--gray-450);margin-bottom:4px}
.al-hour-link{margin-top:4px;font-size:var(--fs-tiny);color:var(--gray-500);text-align:center}
.al-clickable{cursor:pointer;color:var(--color-primary)}
.al-clickable-muted{cursor:pointer;color:var(--color-text-muted)}
.al-mt0{margin-top:0}
.al-divider-dashed{margin:6px 0;border-top:1px dashed var(--color-border)}
.al-health-title{font-size:var(--fs-small);font-weight:600;color:var(--color-primary);margin-bottom:4px}
.al-hour-detail-link{margin-top:6px;font-size:var(--fs-tiny);color:var(--gray-500);text-align:center;cursor:pointer}
.al-banner-warning{margin-top:8px;padding:8px;background:var(--color-primary-light);border:1px solid var(--color-primary);border-radius:var(--radius-md);text-align:center;font-size:var(--fs-small);color:var(--color-primary);font-weight:600}
.al-btn-full{width:100%;padding:8px;margin-top:6px;font-size:var(--fs-xs)}
.al-season-body{font-size:var(--fs-small);color:var(--gray-700);line-height:1.6;padding:6px 0 4px}
.al-season-link{font-size:var(--fs-xs);color:var(--color-primary);cursor:pointer;font-weight:500}
.al-modal-title-lg{font-size:var(--fs-h2);font-weight:700;color:var(--color-primary)}
.al-modal-mt4{margin-top:4px}
.al-detail-box{margin-top:6px;background:var(--gray-50);padding:6px;border-radius:var(--radius-md);font-size:var(--fs-xs)}
.al-pz-title{font-weight:600;color:var(--color-primary);font-size:var(--fs-h2);margin-bottom:6px}
.al-list-row{display:flex;justify-content:space-between;padding:3px 6px}
.al-list-item-muted{color:var(--gray-450);font-size:var(--fs-xs)}
.al-border-box{margin:6px 0;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;font-size:var(--fs-xs)}
.al-border-header{background:var(--gray-50);padding:4px 6px;font-weight:600;color:var(--gray-800)}
.al-today-box{margin-top:6px;padding:6px;background:#FFF5F5;border-radius:var(--radius-md);font-size:var(--fs-xs)}
.al-detail-muted{margin-top:4px;font-size:var(--fs-xs);color:var(--gray-600)}
.al-detail-tiny-muted{margin-top:2px;font-size:var(--fs-xs);color:var(--gray-600)}
.al-tiny-muted{margin-top:4px;font-size:var(--fs-tiny);color:var(--gray-500)}
.al-ly-box{margin:6px 0;padding:8px;background:#FFF5F5;border-radius:var(--radius-md);border:1px solid var(--color-primary);text-align:center}
.al-ly-name{font-weight:700;color:var(--color-primary);font-size:var(--fs-h1)}
.al-ly-meaning{margin-top:4px;font-size:var(--fs-xs);color:var(--gray-600)}
.al-scroll-box{margin:6px 0;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:4px 6px;font-size:var(--fs-xs);max-height:200px;overflow-y:auto}
.al-scroll-title{font-weight:600;color:var(--gray-800);margin-bottom:3px}
.al-grid-2col{display:grid;grid-template-columns:1fr 1fr}
.al-modal-narrow{max-width:320px;margin:0 auto}
.al-compass-row{text-align:center;margin-bottom:8px}
.al-legend-row{display:flex;justify-content:center;gap:14px;font-size:var(--fs-xs);margin-bottom:8px}
.al-gold-dot{color:var(--color-gold);font-weight:600}
.al-primary-dot{color:var(--color-primary);font-weight:600}
.al-blue-dot{color:#1565C0;font-weight:600}
.al-info-box{margin:6px 0;padding:8px;background:var(--gray-50);border-radius:var(--radius-md)}
.al-info-title{font-weight:600;color:var(--color-primary);margin-bottom:4px;font-size:var(--fs-xs)}
.al-info-body{font-size:var(--fs-tiny);line-height:1.6}
.al-tip-text{margin-top:4px;font-size:var(--fs-tiny)}
.al-source-text{margin-top:4px;color:var(--gray-500);font-size:10px}
.al-alert-box{margin:6px 0;padding:8px;background:var(--color-primary-light);border-radius:var(--radius-md);border:1px solid var(--color-primary)}
.al-alert-title{font-weight:600;color:var(--color-primary);margin-bottom:4px}
.al-alert-body{font-size:var(--fs-xs);line-height:1.7}
.al-warning-banner{margin-top:6px;padding:6px;background:#FFF5F5;border-radius:var(--radius-md);font-size:var(--fs-xs);text-align:center;color:var(--color-primary);font-weight:600}
.al-loading-text{text-align:center;color:var(--color-primary);padding:8px;margin-top:8px;font-size:12px}
.al-ai-divider{margin-top:8px;border-top:1px solid var(--gray-200);padding-top:8px}
.al-full-title{font-weight:700;font-size:var(--fs-h1);color:var(--color-primary);text-align:center;margin-bottom:6px}
.al-full-subtitle{text-align:center;font-size:var(--fs-tiny);color:var(--gray-500);margin-bottom:8px}
.al-sec-body-text{font-size:var(--fs-small);line-height:1.8}
.al-sec-small-text{font-size:var(--fs-small)}
.al-sec-tiny-muted{margin-top:4px;font-size:var(--fs-tiny);color:var(--gray-500)}
.al-gold-strong{color:var(--color-gold)}
.al-blue-strong{color:#1565C0}
.al-primary-span{color:var(--color-primary);font-weight:600}
.al-yj-box{background:var(--gray-50);border-radius:var(--radius-md);padding:8px;margin-bottom:8px}
.al-yj-mt4{margin-top:4px}
.al-dswy-banner{margin-bottom:8px;padding:6px;background:var(--color-primary-light);border:1px solid var(--color-primary);border-radius:var(--radius-md);text-align:center;font-size:var(--fs-small);color:var(--color-primary);font-weight:600}
.al-full-card{margin-bottom:4px;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}
.al-full-card-header{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;background:var(--gray-50);cursor:pointer;font-size:var(--fs-xs);font-weight:600;color:var(--gray-800)}
.al-full-sec-body{padding:6px 8px;font-size:var(--fs-xs);line-height:1.6}
.al-share-row{margin-top:6px;text-align:center}
.al-share-btn{padding:8px 16px;font-size:var(--fs-xs)}
.al-svg-compass{width:100%;max-width:200px;display:block;margin:0 auto}

/* --- 设置页面 (pages/settings.js) inline→class --- */
.st-vip-card{position:relative;margin:var(--sp-4) var(--sp-10) var(--sp-6);padding:var(--sp-10) var(--sp-14);background:var(--bg-card);color:var(--color-text-body);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer}
.st-center-row{display:flex;justify-content:space-between;align-items:center}
.st-badge{font-size:10px;background:rgba(255,255,255,.2);padding:1px 6px;border-radius:var(--radius-md)}
.st-expired{font-size:var(--fs-xs);margin-top:var(--sp-4);opacity:.8}
.st-renew{font-size:10px;margin-top:var(--sp-4);opacity:.6;text-align:right}
.st-ml6{margin-left:var(--sp-6)}
.st-flex-start{display:flex;justify-content:flex-start;gap:10px}
.st-flex-center{display:flex;gap:var(--sp-8);justify-content:center}
.st-btn-cancel{background:var(--color-border);color:var(--color-text-secondary);padding:8px 20px;border-radius:var(--radius-xl);border:none}
.st-btn-primary{background:var(--color-primary);color:var(--bg-card);padding:8px 20px;border-radius:var(--radius-xl);border:none}
.st-btn-save{flex:1;background:var(--color-primary);color:var(--bg-card);padding:12px;border:none;border-radius:var(--radius-md);font-size:14px;font-weight:600;cursor:pointer}
.st-btn-cancel2{flex:0 0 auto;background:var(--bg-page,#f5f5f5);color:var(--gray-600);padding:12px 18px;border:none;border-radius:var(--radius-md);font-size:14px;cursor:pointer}
.st-vip-bene{font-size:11px;color:var(--color-text-secondary);margin:4px 0 8px;display:flex;flex-wrap:wrap;justify-content:center;gap:3px 8px}
.st-fs48{font-size:48px}
.st-mb8{margin-bottom:8px}
.st-shake{animation:shake 0.5s;font-size:28px;margin:12px 0}
.st-congrats{font-size:16px;font-weight:600;color:var(--color-primary);margin:8px 0}
.st-price-info{font-size:12px;color:var(--color-text-muted);margin-bottom:12px}
.st-p10-0{padding:10px 0}
.st-fs18{font-size:18px}
.st-subtitle{font-size:12px;color:var(--color-text-secondary);margin:4px 0 12px}
.st-about-body{border-top:1px solid var(--color-border);padding-top:12px;text-align:left;font-size:13px;color:var(--color-text-secondary);line-height:1.8}
.st-about-footer{margin-top:8px;font-size:11px;color:var(--color-text-light);border-top:1px solid var(--color-border-light);padding-top:8px}
.st-muted-label{color:var(--color-text-muted)}
.st-center{margin-top:8px;text-align:center}
.st-link{font-size:12px;color:var(--color-primary);cursor:pointer}
.st-mt12{margin-top:12px}
.st-mt12-fs11{font-size:11px;color:var(--color-text-light);margin-top:12px}
.st-privacy-body{padding:5px 0;text-align:left;font-size:13px;line-height:1.8;color:var(--color-text-body)}
.st-section-mt{margin-top:12px}
.st-modal-confirm-title{margin-bottom:var(--sp-8)}
.st-order-detail{font-size:var(--fs-small);color:var(--gray-600);margin-bottom:var(--sp-12)}
.st-order-hint{font-size:var(--fs-xs);color:var(--color-primary);background:var(--color-primary-light);padding:var(--sp-8);border-radius:var(--radius-md);margin-bottom:var(--sp-10)}
.st-order-btn{background:var(--color-border);color:var(--gray-600)}
.st-success-body{padding:var(--sp-12)}
.st-success-text{font-size:var(--fs-small);color:var(--gray-700)}
.st-success-tiny{font-size:var(--fs-tiny);color:var(--gray-500)}
.st-sync-info{font-size:var(--fs-xs);color:var(--color-text-secondary);margin-bottom:var(--sp-6)}
.st-sync-last{font-size:var(--fs-tiny);color:var(--color-text-muted);text-align:center;margin-bottom:var(--sp-4)}
.st-sync-action{background:var(--color-primary);color:var(--bg-card);padding:8px 20px;border-radius:var(--radius-xl);border:none}
.st-sync-action-g2{background:var(--gray-200);color:var(--gray-700)}
.st-sync-foot{margin-top:var(--sp-6);font-size:var(--fs-tiny);color:var(--color-text-muted);text-align:center}
.st-sync-foot-link{cursor:pointer;color:var(--color-primary)}
.st-sync-result{margin-top:var(--sp-6);font-size:var(--fs-xs);color:var(--gray-700);text-align:center}
.st-invite-preview{font-size:11px;margin-top:1px;word-break:break-all;line-height:1.4}
.st-invite-preview a{color:var(--color-primary,#C62828);text-decoration:none}
.st-invite-card{margin:8px 0;background:var(--bg-page, #f5f5f5);border-radius:var(--radius-md);padding:14px;text-align:left;font-size:14px;line-height:1.8;color:var(--gray-800)}
.st-invite-actions{display:flex;gap:10px;margin-top:10px}
.st-copy-btn{flex:1;background:var(--color-primary);color:var(--bg-card);padding:10px;border:none;border-radius:var(--radius-md);font-size:14px;font-weight:600;cursor:pointer}
.st-cancel-btn{flex:0 0 auto;background:var(--bg-page,#f5f5f5);color:var(--gray-600);padding:10px 16px;border:none;border-radius:var(--radius-md);font-size:14px;cursor:pointer}
.st-exchange-body{text-align:center;padding:8px 0}
.st-exchange-icon{font-size:28px;margin-bottom:8px}
.st-exchange-title{font-size:16px;font-weight:600;color:var(--gray-800);margin-bottom:6px}
.st-exchange-desc{font-size:12px;color:var(--gray-500);margin-bottom:8px}
.st-exchange-btn{background:var(--color-primary);color:var(--bg-card);padding:8px 20px;border-radius:var(--radius-xl);border:none}
.st-share-select{padding:4px 0}
.st-share-hint{font-size:12px;color:var(--gray-500);text-align:center;margin-bottom:10px}
.st-share-item{display:flex;align-items:center;gap:10px}
.st-share-icon{font-size:28px;width:36px;text-align:center}
.st-share-name{font-size:14px;font-weight:600;color:var(--gray-800)}
.st-share-desc{font-size:11px;color:var(--gray-500);margin-top:2px}
.st-share-arrow{color:var(--color-primary);font-size:14px}
.st-loading-wrap{text-align:center;padding:20px}
.st-loading-icon{font-size:32px;margin-bottom:12px}
.st-loading-text{font-size:14px;color:var(--gray-500)}
.st-error-wrap{text-align:center;padding:20px}
.st-error-icon{font-size:36px;margin:8px 0}
.st-canvas-wrap{padding:0;text-align:center}
.st-canvas-display{width:100%;max-width:340px;border-radius:var(--radius-md);display:block;margin:0 auto}
.st-btn-row{margin-top:14px;display:flex;gap:10px;justify-content:center}
.st-tts-bar{background:var(--color-primary);color:#fff;padding:8px 20px;border-radius:20px;font-size:13px;display:flex;align-items:center;gap:10px;pointer-events:auto;box-shadow:0 2px 12px rgba(0,0,0,.15)}
.st-tts-text{flex:1}
.st-tts-btn{cursor:pointer;font-size:16px;opacity:.8}
.st-holiday-row{display:flex;justify-content:space-between;padding:var(--sp-2) 0;border-bottom:1px solid var(--bg-page)}
.st-holiday-foot{margin-top:var(--sp-6);font-size:var(--fs-tiny);color:var(--gray-400);text-align:center}
.st-term-title{font-size:var(--fs-body);font-weight:600;color:var(--gray-800);margin-bottom:var(--sp-6)}
.st-term-grid{display:grid;grid-template-columns:1fr 1fr;gap:3px;font-size:var(--fs-xs)}
.st-term-cell{background:var(--gray-50);padding:3px 6px;border-radius:var(--radius-sm)}
.st-term-name{color:var(--color-primary);font-weight:600}
.st-fest-title{font-weight:600;color:var(--color-primary);margin-bottom:var(--sp-6);font-size:var(--fs-h2)}
.st-fest-name{margin:var(--sp-4) 0}
.st-fest-foot{margin-top:var(--sp-6);font-size:var(--fs-xs);color:var(--gray-500)}
.st-search-wrap{padding:var(--sp-10)}
.st-search-input{font-size:var(--fs-body)}
.st-search-btn{margin-top:var(--sp-6)}
.st-search-result{font-size:var(--fs-xs);color:var(--gray-700);margin-top:var(--sp-6)}
.st-empty-text{font-size:var(--fs-tiny);color:var(--gray-400);text-align:center;padding:var(--sp-6)}
.st-empty-text2{text-align:center;padding:20px;color:var(--gray-400);font-size:14px}
.st-bm-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:var(--fs-xs);border-bottom:1px solid var(--bg-page)}
.st-bm-del{color:var(--color-primary);cursor:pointer;font-size:10px}
.st-cd-count{color:var(--color-primary);font-weight:600}
.st-cd-del{color:var(--color-primary);cursor:pointer;font-size:10px;margin-left:6px}
.st-rem-form-row{display:flex;gap:10px;margin-top:14px}
.st-period-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;text-align:center}
.st-period-wk{font-size:var(--fs-xs);font-weight:600;color:var(--gray-500);padding:2px 0}
.st-generate-btn{background:var(--color-primary);color:var(--bg-card);padding:10px;border:none;border-radius:var(--radius-md);font-size:14px;font-weight:600;cursor:pointer}.ai-fr-gap10{align-items:center;gap:10px}
.ai-fr-gap4{align-items:center;gap:4px;flex-wrap:nowrap}
.ai-bg-card-box{background:var(--bg-card);border-radius:var(--radius-md);padding:6px;margin-bottom:6px}
.ai-deep-btn{background:var(--color-primary);color:#fff;border:0;border-radius:var(--radius-xl);height:28px;line-height:28px;font-size:11px;font-weight:600;padding:0 12px;cursor:pointer;box-shadow:0 2px 6px rgba(198,40,40,.25);flex-shrink:0}
/* --- AI页面 (pages/ai.js) inline→class --- */
.ai-sk4w4we{font-size:12px;height:32px;text-align:center}

.ai-s6bv7zh{text-align:center;padding:40px 20px;color:var(--gray-500)}
.ai-sx80bgr{font-size:40px;margin-bottom:12px}
.ai-s9nx91m{font-size:var(--fs-body);font-weight:600;color:var(--gray-700);margin-bottom:6px}
.ai-shxfjf9{font-size:var(--fs-small);line-height:1.7}
.ai-shceme0{font-size:var(--fs-small);color:var(--gray-500);margin-bottom:var(--sp-6)}
.ai-sd4au6u{cursor:pointer;padding:10px 12px;margin-bottom:6px}
.ai-s14a79e{display:flex;align-items:center;gap:8px}
.ai-sgicll6{font-size:18px}
.ai-s4h9d0q{flex:1;min-width:0}
.ai-syco3wl{font-weight:600;color:var(--gray-800);font-size:var(--fs-small)}
.ai-s8z6pwd{font-size:10px;color:var(--gray-400);margin-top:2px}
.ai-sfes1qh{font-size:14px;color:var(--gray-300);cursor:pointer;padding:0 4px}
.ai-snu4mz7{text-align:center;margin-top:var(--sp-8)}
.ai-sur50zi{flex:0.8;margin-bottom:0}
.ai-s3d3cvp{margin:0;flex:1.2}
.ai-sitym4{font-size:var(--fs-small);font-weight:600;color:var(--color-text-primary);margin:var(--sp-14) 0 var(--sp-8);display:flex;align-items:center;gap:6px}
.ai-sogased{margin-top:var(--sp-14)}
.ai-ss3xlyw{flex:0.9;min-width:50px;margin-bottom:0}
.ai-shoyrkw{margin-bottom:0}
.ai-s2vxyvd{flex:1.4;min-width:110px;margin-bottom:0}
.ai-s5w4e8i{background:var(--gray-50);border-radius:var(--radius-md);padding:8px 10px;margin:var(--sp-10) 0 0}
.ai-s9xnrpi{font-size:var(--fs-small);color:var(--gray-600);font-weight:500}
.ai-sshle25{font-size:var(--fs-small);font-weight:600;color:var(--color-primary);flex:1;text-align:center}
.ai-sdu1um0{font-size:var(--fs-small);white-space:nowrap}
.ai-s8pi552{flex-shrink:0;height:28px;line-height:28px;font-size:11px;min-width:56px;padding:0 8px;margin-left:6px}
.ai-sw86x8u{background:var(--gray-50);border-radius:var(--radius-md);padding:0;margin-bottom:var(--sp-8);font-size:var(--fs-small);line-height:1.7;color:var(--gray-700);overflow:hidden;max-height:0;transition:max-height .3s,padding .3s}
.ai-sgz6b8w{margin-bottom:var(--sp-8)}
.ai-stauqz8{text-align:left;font-size:var(--fs-xs);color:var(--gray-500)}
.ai-s6fcrly{text-align:center;font-size:var(--fs-xs);color:var(--gray-500)}
.ai-sf2tuuq{text-align:center;font-size:var(--fs-xs);color:var(--gray-500);cursor:pointer}
.ai-sxip2u7{height:26px;line-height:26px;font-size:11px;min-width:72px;padding:0 6px;width:100%;background:var(--color-primary);color:#fff;border:0;border-radius:var(--radius-xl);cursor:pointer;font-weight:600}
.ai-somg3wt{gap:6px;align-items:center;margin-bottom:var(--sp-8)}
.ai-sk1qwet{flex:1;height:38px;font-size:13px}
.ai-s40oxij{flex-shrink:0;height:38px;line-height:38px;font-size:13px;min-width:80px;padding:0 14px}
.ai-sq58t80{display:none}
.ai-sl19tl9{flex:4}
.ai-sjqqnic{gap:6px;align-items:center;margin-bottom:12px}
.ai-sho50m8{height:38px}
.ai-s188t92{height:38px;line-height:38px;font-size:13px;padding:0 18px;width:auto;flex-shrink:0;margin-top:0}
.ai-ssk9271{margin:10px 0 8px}
.ai-snpl49t{height:40px;display:flex;align-items:flex-end;justify-content:center}
.ai-sy9fzsi{font-size:var(--fs-body);font-weight:700;margin-bottom:6px}
.ai-sg0xy54{width:100%;font-size:var(--fs-xs);text-align:center;border-collapse:collapse}
.ai-sllqzpa{display:flex;justify-content:space-around;background:var(--gray-50);border-radius:var(--radius-md);padding:6px 4px}
.ai-sc697hv{display:flex;flex-wrap:wrap;gap:4px}
.ai-ssp7di9{display:inline-block;padding:2px 8px;background:#FFF0F0;color:var(--color-primary);border-radius:var(--radius-md);font-size:var(--fs-tiny);font-weight:500}
.ai-sc6dpop{display:flex;overflow-x:auto;gap:4px;padding:4px 0}
.ai-s13ej5t{margin-top:6px;}
.ai-sh4uqk3{width:100%;padding:10px;font-size:var(--fs-small);}
.ai-spv1x4x{color:#7ED321;font-weight:600}
.ai-sh3rdm0{text-align:center;color:var(--gray-500);padding:12px 0}
.ai-sr78deu{justify-content:space-between;align-items:center;margin-top:6px}
.ai-s8iedyn{justify-content:space-between;align-items:center}
.ai-s37piur{color:#E8913A;font-size:14px;margin-bottom:4px}
.ai-so0n1ja{font-weight:700;margin-bottom:6px}
.ai-sivzazu{color:var(--gray-500);text-align:center;padding:10px}
.ai-swa2ql3{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid var(--bg-page)}
.ai-sr24ys4{margin-bottom:4px}
.ai-sbwqnoa{font-size:11px;color:var(--gray-500);padding:2px 0 4px;font-weight:500}
.ai-s9h1chs{margin:4px 0}
.ai-sq4yoli{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:4px}
.ai-sl8vq5z{padding:6px 4px;font-size:12px;height:auto;border-radius:var(--radius-xl);margin:0}
.ai-swxnxlj{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.ai-s1zc81a{font-size:12px;color:var(--color-primary);cursor:pointer;text-align:right;display:block;padding:2px 0}
.ai-s63texw{color:var(--gray-500);text-align:center;padding:16px;font-size:13px}
.ai-svnpm8k{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.ai-sj1banb{flex:4;min-width:0}
.ai-sgichvp{font-size:13px}
.ai-sgicgeb{font-size:11px}
.ai-stqmhns{font-size:13px;font-weight:600;color:var(--color-primary)}
.ai-smxyokc{font-size:10px;color:var(--gray-500);margin-top:2px}
.ai-sn82yim{font-size:20px;cursor:pointer;color:var(--color-primary);user-select:none}
.ai-shdoxjz{text-align:center;padding:10px}
.ai-sovmpwb{font-size:var(--fs-body);color:var(--gray-700);margin-top:2px}
.ai-sa6l3ne{width:100%;padding:8px;font-size:var(--fs-xs);}
.ai-st5rg68{line-height:1.7}
.ai-sk71dro{font-size:var(--fs-small);background:var(--bg-card);padding:4px 12px;border-radius:var(--radius-md);cursor:pointer;color:var(--gray-700);border:1px solid var(--color-border);display:inline-block}
.ai-sfnc2u5{padding:8px 0;border-bottom:1px solid var(--bg-page);cursor:pointer}
.ai-sfni49z{display:flex;justify-content:space-between;align-items:center}
.ai-snfol6n{font-size:var(--fs-tiny);color:var(--gray-500);margin-top:2px}
.ai-sk7ggx7{margin-top:8px;text-align:center}
.ai-sffkpd4{font-weight:600;color:var(--gray-800);margin-bottom:4px;font-size:var(--fs-body);}
.ai-sjwp9vh{font-size:var(--fs-tiny);color:var(--gray-500);margin-bottom:6px}
.ai-snrydtn{background:var(--gray-50);border-radius:var(--radius-md);padding:8px;color:var(--gray-700);font-size:var(--fs-xs);line-height:1.6}
.ai-sg4dcy4{text-align:center;padding:20px 12px;color:var(--gray-500)}
.ai-snl309j{font-size:32px;margin-bottom:8px}
.ai-slq0h7{font-size:14px;font-weight:600;color:var(--gray-700);margin-bottom:2px}
.ai-sfb4lnh{font-size:12px;line-height:1.6;margin-bottom:8px}
.ai-sp2b16t{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.ai-s1ae126{display:inline-block;padding:6px 16px;background:var(--color-primary);color:#fff;border-radius:var(--radius-xl);font-size:12px;cursor:pointer}
.ai-syc4dk3{border-top:1px solid var(--gray-200);margin-top:8px;padding-top:8px}
.ai-sy9cxxu{text-align:center;padding:16px;color:var(--gray-500)}
.ai-sa7z7yl{text-align:center;padding:12px 0}
.ai-sb3434i{font-size:var(--fs-xs);color:var(--gray-700);margin-bottom:10px;text-align:center}
.ai-skmm5kj{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid var(--bg-page);font-size:var(--fs-xs);}
.ai-su8mpoy{color:var(--gray-500);margin-left:4px;font-size:var(--fs-tiny);}
.ai-sw9tz6n{margin-top:6px;padding:8px 10px;background:var(--gray-50);border-radius:var(--radius-md);font-size:var(--fs-xs);color:var(--gray-700);line-height:1.6}
.ai-s7cxm2x{font-weight:600;color:var(--gray-800);margin-bottom:2px}

/* --- VIP模块 (vip.js) inline→class --- */
.vp-pay-wrap { text-align:center;padding:8px 0; }
.vp-pay-icon { font-size:32px;margin-bottom:6px; }
.vp-pay-amount { font-size:24px;font-weight:700;color:var(--color-primary);margin:4px 0; }
.vp-pay-name { font-size:var(--fs-body);color:var(--gray-800);margin-bottom:8px; }
.vp-pay-detail-box { margin:10px 0;padding:12px;background:#FFF8F0;border-radius:var(--radius-md);border:1px solid #f0e0d0; }
.vp-pay-detail-label { font-size:var(--fs-xs);color:var(--gray-450);margin-bottom:6px; }
.vp-pay-row { display:flex;justify-content:space-between;font-size:var(--fs-small);color:var(--gray-800);padding:2px 0; }
.vp-pay-row-sm { display:flex;justify-content:space-between;font-size:var(--fs-xs);color:var(--gray-500);padding:2px 0; }
.vp-pay-confirm-btn { background:var(--color-primary);color:var(--bg-card);border:none;padding:10px 32px;border-radius:var(--radius-xl);font-size:var(--fs-body);font-weight:600;width:80%;cursor:pointer;margin:8px 0; }
.vp-pay-agree { font-size:var(--fs-tiny);color:var(--gray-500);margin-top:4px; }
.vp-pay-qr-wrap { margin:8px auto;text-align:center; }
.vp-pay-qr-img { width:200px;height:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:4px;background:#fff; }
.vp-pay-tip { font-size:var(--fs-xs);color:var(--gray-600);margin-top:6px; }
.vp-success-title-lg { font-size:20px;font-weight:600;color:var(--color-primary); }
.vp-hero-title { text-align:center;font-size:var(--fs-h1);font-weight:700;color:var(--color-primary);margin-bottom:4px; }
.vp-hero-sub { text-align:center;font-size:var(--fs-xs);color:var(--gray-450);margin-bottom:4px; }
.vp-vip-stat-wrap { text-align:center;margin:8px 0; }
.vp-vip-active { font-size:var(--fs-small);color:#4CAF50;font-weight:600; }
.vp-vip-expiry { font-size:var(--fs-xs);color:var(--gray-450);margin-top:2px; }
.vp-renew-card { border:1px solid var(--color-primary);border-radius:var(--radius-md);padding:12px;margin:6px 0;cursor:pointer; }
.vp-renew-inner { display:flex;justify-content:space-between;align-items:center; }
.vp-renew-label { font-weight:600;font-size:var(--fs-body); }
.vp-renew-price { font-size:20px;font-weight:700;color:var(--color-primary); }
.vp-renew-unit { font-size:var(--fs-xs);color:var(--gray-500); }
.vp-renew-desc { font-size:var(--fs-xs);color:var(--gray-450);margin-top:4px; }
.vp-lucky-card { border:1px dashed var(--color-primary);border-radius:var(--radius-md);padding:10px;margin:4px 0;cursor:pointer;text-align:center; }
.vp-lucky-card2 { border:1px dashed var(--color-primary);border-radius:var(--radius-md);padding:10px;margin:6px 0;cursor:pointer;text-align:center; }
.vp-lucky-text { font-size:var(--fs-small);color:var(--color-primary); }
.vp-compare-hdr { margin:4px 0 6px;font-size:var(--fs-xs);color:var(--color-primary);font-weight:500;text-align:center; }
.vp-benefit-wrap { margin:4px 0; }
.vp-benefit-row { display:flex;align-items:center;padding:3px 0;border-bottom:1px solid #f8f8f8;font-size:var(--fs-xs); }
.vp-benefit-icon { width:22px;font-size:var(--fs-body); }
.vp-benefit-name { flex:1;color:var(--gray-800);font-weight:500; }
.vp-benefit-free { width:70px;text-align:center;color:var(--gray-500);font-size:var(--fs-tiny); }
.vp-benefit-arrow { width:10px;text-align:center;color:var(--gray-300); }
.vp-benefit-vip { width:80px;text-align:center;color:var(--color-primary);font-weight:600;font-size:var(--fs-tiny); }
.vp-tag-rec { background:var(--color-primary);color:var(--bg-card);font-size:10px;padding:1px 8px;border-radius:var(--radius-md);margin-left:4px; }
.vp-plan-inner { display:flex;justify-content:space-between;align-items:center; }
.vp-plan-name { font-weight:600;font-size:var(--fs-body); }
.vp-plan-price { font-size:20px;font-weight:700;color:var(--color-primary); }
.vp-plan-unit { font-size:var(--fs-xs);color:var(--gray-500); }
.vp-plan-desc { font-size:var(--fs-xs);color:var(--gray-450);margin-top:4px; }
.vp-footnote { font-size:10px;color:var(--gray-500);text-align:center;margin-top:8px; }
.vp-status-card-vip { margin:6px 10px 4px;padding:12px 14px;display:flex;align-items:center;border:1px solid var(--color-primary);border-radius:var(--radius-lg);background:var(--bg-card); }
.vp-status-icon { font-size:28px;margin-right:12px;flex-shrink:0; }
.vp-status-label { font-size:var(--fs-h2);font-weight:600;color:var(--color-primary); }
.vp-status-expiry { font-size:var(--fs-xs);color:var(--gray-450); }
.vp-status-badge { background:var(--color-primary);color:var(--bg-card);padding:4px 10px;border-radius:var(--radius-lg);font-size:var(--fs-tiny);font-weight:600;cursor:pointer; }
.vp-lucky-link { margin:-2px 10px 4px;font-size:var(--fs-xs);color:var(--color-primary);text-align:center;cursor:pointer;padding:4px 0; }
.vp-status-card-free { margin:6px 10px 4px;padding:12px 14px;display:flex;align-items:center;cursor:pointer;border:1px solid var(--gray-100);border-radius:var(--radius-lg); }
.vp-status-label-free { font-size:var(--fs-h2);font-weight:600;color:var(--gray-800); }
.vp-status-remain { font-size:var(--fs-xs);color:var(--gray-500); }
.vp-status-badge-free { background:var(--color-primary);color:var(--bg-card);padding:4px 12px;border-radius:var(--radius-lg);font-size:var(--fs-xs);font-weight:600; }

/* --- 核心引擎 (core.js) inline→class --- */
.co-rem-tag{display:inline-block;margin-right:8px;font-size:var(--fs-xs)}
.co-sc-card{text-align:center;padding:4px}
.co-sc-icon{font-size:36px;margin-bottom:4px}
.co-sc-name{font-size:18px;font-weight:700;color:var(--color-primary);margin-bottom:2px}
.co-sc-desc{font-size:var(--fs-xs);color:var(--gray-500);margin-bottom:8px}
.co-sc-detail{background:var(--gray-50);border-radius:var(--radius-md);padding:8px;text-align:left;font-size:var(--fs-xs);line-height:1.8}
.co-label-green{color:#7ED321;font-weight:600}
.co-label-orange{color:#E8913A;font-weight:600}
.co-label-blue{color:#4A90D9;font-weight:600}
.co-btn-row{display:flex;gap:8px;margin-top:8px;justify-content:center}
.co-btn-share{flex:1;padding:8px}
.co-btn-close{flex:1;padding:8px;background:var(--color-border);color:var(--gray-600)}
.co-season-body{font-size:var(--fs-small);line-height:1.7;color:var(--gray-700);padding:4px 0}
.co-season-flex{display:flex;gap:6px;align-items:flex-start}
.co-season-icon{font-size:24px}
.co-season-title{font-weight:600;color:var(--color-primary);margin-bottom:4px}
.co-season-link{font-size:var(--fs-xs);color:var(--gray-450);cursor:pointer}
.co-yj-body{font-size:var(--fs-body);line-height:1.8;color:var(--gray-700)}
.co-yj-title{font-weight:700;color:var(--color-primary);font-size:var(--fs-h1);margin-bottom:6px}
.co-yj-text{font-size:var(--fs-small)}
.co-yj-source{margin-top:8px;color:var(--gray-500);font-size:var(--fs-tiny)}
.co-donate-body{text-align:center;font-size:var(--fs-small);line-height:1.7;color:var(--gray-700)}
.co-donate-icon{font-size:36px;margin-bottom:6px}
.co-donate-title{font-weight:600;color:var(--color-primary);font-size:var(--fs-h2)}
.co-donate-desc{margin:4px 0 10px}
.co-donate-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:240px;margin:0 auto}
.co-donate-total{margin-top:8px;font-size:var(--fs-xs);color:var(--gray-500)}
.co-donate-foot{margin-top:6px;font-size:var(--fs-tiny);color:var(--gray-300)}
.co-custom-body{text-align:center;font-size:var(--fs-small);color:var(--gray-700)}
.co-custom-icon{font-size:28px;margin-bottom:8px}
.co-custom-title{font-weight:600;color:var(--color-primary);margin-bottom:8px}
.co-custom-flex{display:flex;align-items:center;justify-content:center;gap:4px}
.co-custom-symbol{font-size:20px;font-weight:600;color:var(--color-primary)}
.co-custom-input{width:100px;height:44px;border:1px solid var(--gray-150);border-radius:var(--radius-md);text-align:center;font-size:18px;outline:none}
.co-custom-btn{margin-top:10px;height:40px}
.co-bless-body{text-align:center;padding:10px 0}
.co-bless-icon{font-size:48px;margin-bottom:8px}
.co-bless-title{font-size:20px;font-weight:700;color:var(--color-primary);margin-bottom:4px}
.co-bless-amount{font-size:var(--fs-body);color:var(--gray-700)}
.co-bless-gold{font-size:18px;font-weight:700;color:var(--color-gold)}
.co-bless-msg{margin-top:8px;font-size:var(--fs-small);color:var(--gray-500);line-height:1.6}
.co-bless-cum{margin-top:10px;font-size:var(--fs-xs);color:var(--gray-300)}
.co-bless-btn{margin-top:10px;height:40px;background:var(--bg-page);color:var(--color-primary);width:auto;padding:0 24px;border-radius:var(--radius-xl);font-size:var(--fs-small)}
.co-star-row{color:#E8913A;font-size:14px;margin-bottom:4px}
.co-score-label{font-size:11px;color:var(--gray-500);margin-top:2px}
/* ===== 工具类（替代高频内联style） ===== */
.u-mt8{margin-top:8px}
.u-mt6{margin-top:6px}
.u-mt4{margin-top:4px}
.u-mt3{margin-top:3px}
.u-mt10{margin-top:10px}
.u-flex1{flex:1}
.u-tac{text-align:center}
.u-cprimary{color:var(--color-primary)}
.u-cred{color:#C62828}
.u-p0tac{padding:0;text-align:center}
/* ===== 工具类（复合模式） ===== */
.st-nav-btn{cursor:pointer;font-size:16px;opacity:.8}
.st-cpfw{color:var(--color-primary);font-weight:600}
.st-nav-month{font-size:20px;color:var(--color-primary);cursor:pointer;padding:2px 6px;user-select:none}
.st-tac12c{text-align:center;font-size:12px;color:var(--color-text-primary)}
.st-tiny-c5{font-size:var(--fs-tiny);color:var(--gray-500)}
.st-link12{font-size:12px;color:var(--color-primary);cursor:pointer;text-align:right;display:block;padding:2px 0}
.st-w340{width:100%;max-width:340px;border-radius:var(--radius-md);display:block;margin:0 auto}
.st-flex-gap10{display:flex;gap:10px;justify-content:center;margin-top:14px}
.st-bg-primary{background:var(--color-primary);color:var(--bg-card)}
.st-bg-gray2{background:var(--gray-200);color:var(--gray-700)}
.st-chip-primary{background:var(--color-primary);color:#fff;padding:8px 20px;border-radius:20px;font-size:13px;display:flex;align-items:center;gap:10px;pointer-events:auto;box-shadow:0 2px 12px rgba(0,0,0,.15)}
.st-flex-row-sb{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:var(--fs-xs);border-bottom:1px solid var(--bg-page)}
.st-card-sm{flex:1;padding:6px;background:var(--bg-card)5f5;border-radius:var(--radius-md);text-align:center}
.st-xs-c7{font-size:var(--fs-xs);color:var(--gray-700)}
