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

/* ═══ style.css lines 219-244 ═══ */
/* ===== 日历 ===== */
.cw{background:var(--bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:0 var(--sp-6) var(--sp-6)}
.wr{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;padding:var(--sp-4) 0}
.wr .w{font-size:var(--fs-small);color:var(--color-text-muted);padding:2px 0;font-weight:500}
.wr .w.we{color:var(--color-weekend);font-weight:600}
.dg{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}
.dg .c{text-align:center;padding:3px 0;min-height:42px;cursor:pointer;position:relative;border-radius:var(--radius-sm);transition:background .12s}
.dg .c:active{background:var(--gray-50)}
.dg .c .n{font-size:var(--fs-h1);font-weight:500;color:var(--color-text-primary);line-height:1.2}
.dg .c.ot .n{color:var(--color-other-month)}
.dg .c.we .n{color:var(--color-weekend)}
.dg .c.td .n{color:var(--color-text-white);background:var(--color-primary);width:24px;height:24px;line-height:24px;border-radius:50%;margin:0 auto;font-weight:700;display:inline-block}
.dg .c.sl{background:var(--color-primary-light);border:1.5px solid var(--color-primary);border-radius:var(--radius-sm)}
.dg .c.sl .n{color:var(--color-primary);font-weight:700}
.dg .c .c-rd{width:5px;height:5px;background:var(--color-primary);border-radius:50%;display:inline-block;vertical-align:middle;margin-left:2px;pointer-events:none;flex-shrink:0}
.dg .c .c-rd-line{display:flex;justify-content:center;align-items:center;margin-top:1px;height:10px}
.dg .c .l{font-size:var(--fs-small);color:var(--color-text-muted);line-height:1.2;margin-top:1px;font-weight:500}
.dg .c .l2{font-size:var(--fs-xs);line-height:1.2;font-weight:500;margin-top:0}
.dg .c.jr .l{color:var(--color-festival);font-weight:600}
.dg .c.jq .l{color:var(--color-primary);font-weight:600}
.dg .c .l2.jr{color:var(--color-festival);font-weight:600}
.dg .c .l2.jq{color:var(--color-primary);font-weight:600}
/* 日历格子天气图标 */
.dg .c .c-wt{position:absolute;bottom:1px;right:2px;font-size:var(--fs-micro);line-height:1;pointer-events:none;z-index:1}
/* 星宿名（格子左下角） */


/* ═══ style.css lines 283-357 ═══ */
/* ===== 黄历折叠区 ===== */
.hl-fd{margin:0 var(--sp-12) var(--sp-8);background:var(--bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:0 var(--sp-14);overflow:hidden}
.hl-fd .hl-tg{display:flex;justify-content:space-between;align-items:center;padding:6px 8px 6px 6px;cursor:pointer;user-select:none;border-bottom:1px solid var(--color-border-light)}
.hl-fd .hl-tg:last-child{border-bottom:none}
.hl-fd .hl-tg .hl-lb{font-size:var(--fs-h2);font-weight:600;color:var(--color-text-primary)}
.hl-fd .hl-tg .hl-ar{font-size:14px;color:var(--color-text-primary);transition:transform .25s ease}
.hl-fd .hl-tg .hl-ar.op{transform:rotate(180deg)}
.hl-fd .hl-bd{max-height:0;overflow:hidden;transition:max-height .35s}
.hl-fd .hl-bd.op{max-height:800px}
.hl-fd .hl-in{padding:var(--sp-4) 0 var(--sp-8)}
.hl-fd .hl-in .hl-lbl{font-size:var(--fs-body);color:var(--color-almanac-label);font-weight:600;margin:var(--sp-8) 0 3px}
.hl-fd .hl-in .hl-txt{font-size:var(--fs-body);color:var(--color-text-body);line-height:1.6;padding-left:var(--sp-2)}
/* 黄历详解平铺卡片 */
.hl-grd{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);padding:var(--sp-4) 0 var(--sp-6)}
.hl-card{background:var(--gray-50);border-radius:var(--radius-sm);padding:5px 7px}
.hl-card .hl-cl{font-size:11px;color:var(--color-almanac-label);font-weight:600;margin-bottom:2px}
/* 节气养生卡片 */
.sh-card{padding:7px 0;border-bottom:1px solid var(--color-border-light)}
.sh-card:last-child{border-bottom:none}
.sh-card .sh-l{font-size:11px;color:var(--color-almanac-label);font-weight:600;margin-bottom:var(--sp-2)}
.sh-card .sh-v{font-size:var(--fs-small);color:var(--gray-700);line-height:1.6}
.sh-ai{font-size:var(--fs-xs);color:var(--color-primary);cursor:pointer;font-weight:500}
.sh-ai:active{opacity:.7}
/* 占卜摇签动画 */
@keyframes qShake{0%{transform:translateX(0)}15%{transform:translateX(-6px)rotate(-2deg)}30%{transform:translateX(5px)rotate(1deg)}45%{transform:translateX(-4px)rotate(-1deg)}60%{transform:translateX(3px)rotate(.5deg)}80%{transform:translateX(-2px)}100%{transform:translateX(0)}}
/* 占卜结果卡片 */
.hl-card .hl-ct{font-size:var(--fs-small);color:var(--color-text-body);line-height:1.5;word-break:break-word}
body.dark .hl-card{background:var(--gray-800)}
body.dark .hl-card .hl-ct{color:#ccc}

/* 时辰网格 - 一行12列 */
.sg{display:block;text-align:center;margin:var(--sp-4) 0;font-size:11px;font-weight:500}
.sg .s{padding:var(--sp-2) 0}
.sg .s .sz{font-size:var(--fs-small);font-weight:500;color:var(--color-text-body)}
.sg .s .sv{font-size:11px;padding:var(--sp-2) 0;font-weight:500}
.sg .s .sv.ji{color:var(--color-shichen-ji);font-weight:600}
.sg .s .sv.ping{color:var(--color-shichen-ping)}
.sg .s .sv.xiong{color:var(--color-shichen-xiong)}
.sg .s .sv.current{background:var(--color-shichen-current-bg);border-radius:var(--radius-md);padding:3px 0;margin:calc(-1 * var(--sp-2)) 0;color:var(--color-primary);font-weight:700}
.sg .s .sv.current .sz{color:var(--color-primary);font-weight:700}
/* ===== Almanac inline-style utilities ===== */
.hl-body-text{font-size:var(--fs-small);line-height:1.7;color:var(--gray-700)}
.hl-alert-box{margin:6px 0;padding:8px;background:var(--color-primary-light);border:1px solid var(--color-primary);border-radius:var(--radius-md);text-align:center;color:var(--color-primary);font-weight:600}
.hl-current-item{background:var(--color-primary-light);border-radius:var(--radius-sm);font-weight:600;color:var(--color-primary)}
.hl-soft-box{padding:6px;background:#FFF5F5;border-radius:var(--radius-md);font-size:var(--fs-xs)}
.hl-primary-text{color:var(--color-primary);font-weight:600}
.hl-primary-link{color:var(--color-primary);cursor:pointer;font-weight:500}
.hl-source{color:var(--gray-500);font-size:var(--fs-tiny)}
.hl-splitter{margin:6px 0;border-top:1px dashed var(--color-border)}
/* 时辰盘横向（2行×6列） */
.st-grid{display:flex;flex-direction:column;gap:var(--sp-2);margin:var(--sp-3) 0}
.st-row{display:grid;grid-template-columns:repeat(6,1fr);gap:2px}
.st-cell{padding:3px 1px;border-radius:var(--radius-sm);background:var(--gray-50);text-align:center;cursor:pointer;transition:background .12s}
.st-cell:active{background:var(--gray-100)}
.st-cell.cur{background:var(--color-primary-light);border:1px solid var(--color-primary)}
.st-top{display:flex;justify-content:center;align-items:center;margin-bottom:1px}
.st-ns{font-size:13px;font-weight:700;letter-spacing:0.5px}
.st-ns.ji{color:var(--color-shichen-ji)}
.st-ns.ping{color:var(--color-shichen-ping)}
.st-ns.xiong{color:var(--color-shichen-xiong)}
.st-ns.current{color:var(--color-primary);background:transparent}
.st-time-inline{font-size:8px;color:var(--color-text-light);white-space:nowrap;line-height:1.2}
body.dark .st-cell{background:#2a2a2a}
body.dark .st-cell.cur{background:rgba(176,80,80,0.2);border-color:var(--color-primary)}
body.dark .st-ns{color:#ccc}
body.dark .st-time-inline{color:#666}
/* 时辰盘表格化结束 */
body.dark .sg .s .sv.current{background:#2a1a2a;color:var(--color-primary)}
body.dark .sg .s .sv.current .sz{color:var(--color-primary)}

/* 神煞可点击 */
.shen-sha{cursor:pointer;padding:0 1px;border-bottom:1px dotted var(--color-text-light);transition:color .12s}
.shen-sha:hover{color:var(--color-primary);border-bottom-color:var(--color-primary)}
body.dark .shen-sha{border-bottom-color:var(--gray-700)}
body.dark .shen-sha:hover{color:var(--color-primary);border-bottom-color:var(--color-primary)}

/* ═══ style.css lines 368-475 ═══ */
/* ===== 天气卡片 - 折叠式 ===== */
.d-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-6)}
.d-city{font-size:var(--fs-small);font-weight:600;color:var(--color-text-body);cursor:pointer}
.d-more{font-size:11px;color:var(--color-text-muted);cursor:pointer}
/* 上屏核心区（常驻，可点击切换） */
.weather-core{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none;padding:var(--sp-4) 0}
.weather-core:active{opacity:.7}
.weather-core-left{display:flex;align-items:center;gap:12px}
.weather-big-icon{font-size:42px;line-height:1}
.weather-temp-area{}
.weather-main-temp{font-size:38px;font-weight:700;color:var(--color-text-primary);line-height:1.1}
.wt-deg{font-size:16px;font-weight:400;color:var(--color-text-muted)}
.weather-sub-info{font-size:12px;color:var(--color-text-muted);margin-top:2px}
.weather-core-right{display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.weather-alert{font-size:12px;font-weight:600;padding:2px 10px;border-radius:var(--radius-md);background:rgba(255,255,255,.6)}
.weather-toggle{font-size:11px;color:var(--gray-400);transition:transform .25s ease;padding:3px 8px}
/* 折叠式卡片通用 */
.fold-h{display:flex;justify-content:space-between;align-items:center;cursor:pointer;user-select:none;padding:1px 0}
.fold-h:active{opacity:.7}
.fold-h>span{font-size:16px;font-weight:600;color:var(--color-text-primary)}
.fold-ar{font-size:13px;color:var(--color-text-primary);transition:transform .25s ease;padding:2px 4px}
.fold-ar.op{transform:rotate(180deg)}
.fold-b{max-height:0;overflow:hidden;transition:max-height .35s ease}
.fold-b.op{max-height:800px}
.weather-toggle.open{transform:rotate(180deg)}
/* 下屏折叠详情 */
.weather-detail{max-height:0;overflow:hidden;transition:max-height .35s ease}
.weather-detail.open{max-height:600px}
.weather-info-tags{display:flex;align-items:center;gap:8px;margin-top:6px;padding:8px 0 2px;border-top:1px solid var(--gray-100);font-size:12px;color:var(--color-text-muted)}
.wi-sep{color:var(--gray-300);font-size:10px}
.weather-advice{font-size:12px;color:var(--color-primary);text-align:center;margin-top:4px;padding:6px 0 2px;border-top:1px solid var(--gray-100)}
.weather-aqi{font-size:12px;color:var(--color-text-secondary);margin-top:4px;padding:4px 0}
.aqi-dot{display:inline-block;width:6px;height:6px;border-radius:50%;vertical-align:middle;margin-right:2px}
.aqi-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.aqi-sep{color:var(--gray-300);font-size:10px;margin:0 2px}
.weather-indices{display:flex;gap:8px;margin-top:4px;padding:6px 0;border-top:1px solid var(--gray-50);justify-content:space-around}
.wi-item{text-align:center;flex:1}
.wi-icon{font-size:18px}
.wi-name{font-size:9px;color:var(--color-text-muted);margin-top:1px}
.wi-val{font-size:11px;font-weight:600}
.weather-trend{margin-top:4px;border-top:1px solid var(--gray-100)}
.weather-trend-toggle{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:12px;cursor:pointer;color:var(--color-text-secondary);user-select:none}
.weather-trend-toggle:active{color:var(--color-primary)}
.weather-trend-body{display:none;overflow-x:auto;padding:var(--sp-4) 0;gap:var(--sp-4)}
.weather-trend-body.on{display:flex}
.th-item{flex-shrink:0;text-align:center;padding:var(--sp-4) var(--sp-10);min-width:44px}
.th-item.th-now{background:var(--gray-50);border-radius:var(--radius-md)}
.th-time{font-size:9px;color:var(--color-text-muted)}
.th-icon{font-size:16px;margin:var(--sp-2) 0}
.th-temp{font-size:12px;font-weight:600;color:var(--color-text-body)}
/* 未来预报 - 沿用旧样式 */
.d-fc{display:flex;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--gray-100);overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:4px}
.d-fc::-webkit-scrollbar{display:none}
.d-f{flex-shrink:0;width:58px;text-align:center;padding:6px 0;background:rgba(255,255,255,.6);border-radius:var(--radius-sm);scroll-snap-align:center}
.d-f .i{font-size:20px;margin-bottom:var(--sp-2)}
.d-f .t{font-size:var(--fs-body);font-weight:600;color:var(--color-text-body)}
.d-f .tl{font-size:11px;color:var(--color-text-muted);margin-top:1px}
body.dark .d-city{color:var(--gray-600)}
body.dark .weather-main-temp{color:var(--gray-800)}
body.dark .d-f{background:rgba(0,0,0,.15)}
body.dark .d-f .t{color:var(--gray-600)}
body.dark .weather-info-tags{color:var(--gray-500)}
body.dark .weather-alert{background:rgba(0,0,0,.2)}
.sm{font-size:var(--fs-small);color:var(--color-text-muted);font-weight:400;cursor:pointer;transition:color .12s}
.sm:active{color:var(--color-primary)}
.cs{display:flex;gap:var(--sp-16);margin:var(--sp-8) 0;font-size:var(--fs-small)}
.cs .ci{text-align:center}
.cs .ci .cl{color:var(--color-text-muted);font-size:11px}
.cs .ci .cv{font-weight:500}
/* 时辰指南 - 冲煞干支平铺 */
.cs2{display:flex;gap:var(--sp-6);margin:var(--sp-8) 0}
.ci2{flex:1;text-align:center;background:var(--gray-50);padding: var(--sp-6) var(--sp-4);border-radius:var(--radius-sm)}
.ci2 .cl{color:var(--color-text-muted);font-size:11px}
.ci2 .cv{font-weight:600;font-size:15px;margin-top:1px}
/* 宜忌并排 */
.yj-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-6);margin:var(--sp-6) 0}
.yj-block{background:var(--gray-50);border-radius:var(--radius-sm);padding: var(--sp-6) var(--sp-8)}
.yj-lb{font-size:var(--fs-small);font-weight:600;color:var(--color-primary);margin-bottom:3px}
.yj-lb.ji{color:var(--color-text-muted)}
body.dark .ci2{background:var(--gray-800)}
body.dark .yj-block{background:var(--gray-800)}
.ts2{display:inline-block;background:var(--color-primary-light);color:var(--color-primary);padding: 3px var(--sp-10);border-radius:var(--radius-sm);font-size:var(--fs-small);font-weight:500;margin:3px}
.ts2.on{background:var(--color-primary);color:var(--color-text-white)}
.tl{display:flex;flex-wrap:wrap;gap:var(--sp-4);margin:var(--sp-4) 0}
.tl .t{background:var(--bg-page);color:var(--gray-700);padding:var(--sp-2) 9px;border-radius:var(--radius-sm);font-size:var(--fs-small)}
.tl .t.iy{background:var(--color-primary-light);color:var(--color-primary)}
.hg{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.hg .h{background:var(--gray-50);padding: var(--sp-6) var(--sp-10);border-radius:var(--radius-md);font-size:var(--fs-small);color:var(--gray-700)}
.ww{display:flex;justify-content:space-between;align-items:center}
.ww .wt{font-size:36px;font-weight:300;color:var(--color-text-primary)}
.ww .wt small{font-size:16px}
.ww .wi{text-align:right;font-size:var(--fs-small);color:var(--color-text-secondary);line-height:1.6}
.fc{display:flex;gap:var(--sp-12);margin-top:var(--sp-8);padding-top:var(--sp-8);border-top:1px solid var(--color-border-light)}
.fc .fw{text-align:center;font-size:var(--fs-small);color:var(--color-text-secondary);flex:1}
.fc .fw .fwt{font-weight:500;color:var(--color-text-primary)}
.lr{display:flex;gap:var(--sp-12);margin-top:var(--sp-8)}
.lr .l{flex:1;text-align:center}
.lr .l .lv{font-size:17px;font-weight:600;color:var(--color-text-primary);margin-top:var(--sp-2)}
.lr .l .ll{font-size:var(--fs-xs);color:var(--color-text-muted)}
.fd2{font-size:var(--fs-body);color:var(--gray-700);line-height:1.6;margin-top:var(--sp-8);padding-top:var(--sp-8);border-top:1px solid var(--color-border-light)}
.qb{font-size:15px;color:var(--gray-700);line-height:1.7;text-align:center;padding:var(--sp-6) 0}
/* 占卜卡片 — 统一为白底品牌红 */
.oc{background:var(--bg-card);border-radius:var(--radius-lg);padding:var(--sp-16);text-align:center;margin-bottom:var(--sp-8);border:1px solid var(--color-border)}
.oc .ot{font-size:15px;font-weight:600;color:var(--color-text-primary);margin-bottom:var(--sp-4)}
.oc .os{font-size:var(--fs-small);color:var(--color-text-muted);margin-bottom:var(--sp-10)}
.oc .ob{display:inline-block;background:var(--color-primary);color:var(--color-text-white);padding:8px 32px;border-radius:var(--radius-xl);font-size:14px;cursor:pointer;font-weight:600;border:none;transition:transform .1s,opacity .1s}
.oc .ob:active{transform:scale(.95);opacity:.85}


/* ═══ style.css lines 513-548 ═══ */
/* ===== AI页 ===== */
.ai-l{margin:0 var(--sp-10)}
.ai-c{background:var(--bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-12) 14px;margin-bottom:var(--sp-8);display:flex;align-items:center;gap:var(--sp-10);cursor:pointer}
.ai-c:active{background:var(--gray-50)}
.ai-c .ai{font-size:26px;width:34px;text-align:center;flex-shrink:0}
.ai-c .ai-i{flex:1}
.ai-c .ai-i .ai-n{font-size:16px;font-weight:600}
.ai-c .ai-i .ai-d{font-size:var(--fs-small);color:var(--color-text-muted);margin-top:var(--sp-2)}
.ai-s{display:none;position:fixed;top:0;left:0;right:0;bottom:58px;background:var(--bg-page);z-index:50;overflow-y:auto}
.ai-s.on{display:block}
.ai-sh{display:flex;align-items:center;padding: var(--sp-10) var(--sp-14);background:var(--bg-card);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:10}
.ai-bk{font-size:22px;color:var(--color-primary);cursor:pointer;padding:0 var(--sp-4);line-height:1}
.ai-st{font-size:var(--fs-h1);font-weight:700;margin-left:var(--sp-4);flex:1}
.ai-s{padding:0}
.ai-sb{padding: var(--sp-16) var(--sp-16)}

/* ===== AI 决策助手 ===== */
.ai-input{width:100%;border:none;background:var(--bg-input);border-radius:var(--radius-sm);padding: 9px var(--sp-12);font-size:var(--fs-small);color:var(--color-text-body);outline:none;box-sizing:border-box;margin-bottom:var(--sp-6)}
.ai-input:focus{background:var(--gray-100)}
.ai-btns{display:flex;flex-wrap:wrap;gap:var(--sp-6)}
.ai-btn{display:inline-block;background:var(--color-primary);color:var(--color-text-white);padding: var(--sp-4) var(--sp-12);border-radius:var(--radius-sm);font-size:var(--fs-xs);cursor:pointer;transition:opacity .12s;user-select:none}
.ai-btn:active{opacity:.8}
.ai-func-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:var(--sp-4);width:100%}
/* AI快捷3×2网格（首页AI智能工具） */
.ai-quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:var(--sp-6)}
.ai-quick-grid .pill-m{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 4px;background:var(--bg-page);border-radius:var(--radius-sm);cursor:pointer;transition:background .12s,border-color .12s;border:1px solid var(--color-border);user-select:none}
.ai-quick-grid .pill-m:active{background:var(--color-primary-light);border-color:var(--color-primary)}
.ai-qi{font-size:18px;line-height:1.4}
.ai-qn{font-size:12px;color:var(--color-text-secondary);font-weight:500;margin-top:2px;line-height:1.2}
.ai-func-card{text-align:center;padding:10px 2px;background:var(--bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:border .12s}
.ai-func-card:active{border-color:var(--color-primary)}
.ai-func-icon{font-size:20px;line-height:1.2}
.ai-func-name{font-size:11px;color:var(--gray-700);margin-top:2px;font-weight:500}
.ai-result{font-size:var(--fs-small);color:var(--color-text-secondary);margin-top:var(--sp-6);display:none}
.fg{margin-bottom:var(--sp-14)}
.fl{font-size:15px;color:var(--color-text-secondary);font-weight:600;display:block;margin-bottom:3px}

/* ═══ style.css lines 549-585 ═══ */
/* ===== 统一表单组件 ===== */
.fi{width:100%;height:40px;border:1px solid var(--color-text-light);border-radius:var(--radius-sm);padding:0 var(--sp-12);font-size:15px;outline:none;background:var(--bg-card);transition:border .15s}
.fi:focus{border-color:var(--color-primary)}
/* 统一日期/时间输入框，与文本输入框视觉一致 */
input[type="date"].fi,input[type="time"].fi{-webkit-appearance:none;appearance:none;line-height:40px}
input[type="date"].fi::-webkit-calendar-picker-indicator,
input[type="time"].fi::-webkit-calendar-picker-indicator{opacity:.5;padding:0;margin-left:2px;cursor:pointer}
input[type="date"].fi::-webkit-datetime-edit{padding:0}
.fs{width:100%;height:40px;border:1px solid var(--color-text-light);border-radius:var(--radius-sm);padding:0 var(--sp-8);font-size:var(--fs-body);outline:none;background:var(--bg-card)}
.fr{display:flex;gap:var(--sp-8)}
.fr .fg{flex:1}
/* 表单分割线 */
.form-divider{margin:var(--sp-6) 0;border-top:1px solid var(--color-border)}
/* 表单按钮行 */
.form-btn-row{display:flex;gap:6px;margin-top:4px}
.form-btn-row .btn{flex:1}
.btn{width:100%;height:46px;background:var(--color-primary);color:var(--color-text-white);font-size:15px;font-weight:600;border:none;border-radius:var(--radius-sm);cursor:pointer;margin-top:var(--sp-6);transition:transform .1s,opacity .1s}
.btn:active{transform:scale(.97);opacity:.85}
.btn.g2{background:var(--color-text-secondary)}
.btn.g3{background:var(--color-text-muted)}

/* ===== AI子面板统一输入框 ===== */
.ai-row{display:flex;gap:8px;margin-bottom:10px;align-items:center}
.ai-row .ai-label{font-size:var(--fs-xs);color:var(--color-text-secondary);white-space:nowrap}
.ai-row .ai-unit{font-size:var(--fs-tiny);color:var(--gray-500)}
.ai-row .ai-y{height:30px;font-size:var(--fs-small);flex:1.2;min-width:56px}
.ai-row .ai-m,.ai-row .ai-d{height:30px;font-size:var(--fs-small);flex:1;min-width:50px}
.ai-row .ai-h{height:30px;font-size:var(--fs-small);flex:1;min-width:44px}
.ai-row .ai-item{height:30px;font-size:var(--fs-small);flex:1;min-width:50px}
.ai-btn-primary{width:100%;padding:7px;font-size:var(--fs-small);height:34px}
.ar{border-top:1px solid var(--color-border);margin-top:var(--sp-8);padding-top:var(--sp-8);display:none}
.ar.on{display:block}
.art{font-size:var(--fs-small);color:var(--gray-700);line-height:1.6}
.art-c{background:#f9f5f0;border-radius:var(--radius-sm);padding:var(--sp-12);margin-bottom:var(--sp-8);font-size:var(--fs-small);line-height:1.6}
.art-c .lb{display:inline-block;background:var(--color-primary-light);color:var(--color-primary);padding: 1px 7px;border-radius:var(--radius-sm);font-size:11px;font-weight:600;margin-right:3px}
.art-c .lb.g{background:#e8f5e9;color:var(--color-success)}


/* ═══ style.css lines 586-650 ═══ */
/* ===== AI取名面板 ===== */
.nm-surnames{display:grid;grid-template-columns:repeat(9,1fr);gap:3px;margin-top:2px}
.nm-sn{text-align:center;padding:3px 0;font-size:12px;color:var(--gray-700);background:var(--bg-card);border:1px solid #eee;border-radius:var(--radius-md);cursor:pointer;transition:all .12s}
.nm-sn:active{background:var(--gray-50)}
.nm-sn.on{background:var(--color-primary);color:var(--color-text-white);border-color:var(--color-primary)}
.nm-orient{display:flex;flex-direction:column;gap:4px}
.nm-og{display:grid;grid-template-columns:repeat(5,1fr);gap:3px}
/* .nm-ot → pill-m */
.pill-m{text-align:center;color:var(--color-text-secondary);background:var(--bg-card);border:1px solid var(--color-border);cursor:pointer;transition:all .12s}
.pill-m:active{background:var(--gray-50)}
.pill-m.on{background:var(--color-primary);color:var(--color-text-white);border-color:var(--color-primary);font-weight:600}
.nm-ot-more{font-size:var(--fs-xs);color:var(--color-primary);cursor:pointer;text-align:right;padding:2px 0 0}
.nm-gender{display:flex;gap:var(--sp-6);padding:3px;background:var(--gray-100);border-radius:22px}
.nm-gb{flex:1;text-align:center;padding:8px 12px;border-radius:var(--radius-xl);font-size:14px;color:var(--color-text-secondary);background:var(--bg-page);cursor:pointer;transition:all .12s;border:1px solid transparent}
.nm-gb:active{background:var(--gray-50)}
.nm-gb.on{background:var(--color-primary);color:var(--color-text-white);font-weight:600}
.zs-tags{display:block}
/* .zs-btn → pill-s，样式由 .pill-s/.pill-s.on 覆盖 */
.nm-birth-module{background:var(--gray-50);border-radius:var(--radius-md);padding:var(--sp-12) 10px;margin-bottom:var(--sp-10)}
.nm-birth-form{display:flex;gap:var(--sp-8)}
.nm-birth-form .fg{flex:1;margin-bottom:0}
.nm-birth-form .fi,.nm-birth-form .fs{height:38px;font-size:13px}
.nm-bazi-preview{background:var(--bg-card);border-radius:var(--radius-md);padding: var(--sp-6) var(--sp-10);font-size:13px;color:var(--gray-600);margin-top:var(--sp-8);text-align:center;border:1px solid #eee}
.nm-bazi-preview span{color:var(--color-primary);font-weight:600}
.nm-loading{text-align:center;padding:var(--sp-12);color:var(--gray-500);font-size:13px}
.nm-card{display:flex;flex-direction:column;background:#fff;border:1px solid #f0f0f0;border-radius:var(--radius-md);padding:8px 10px 6px;margin-bottom:6px}
.nm-card:active{border-color:var(--color-primary)}
.nm-card-top{display:grid;grid-template-columns:1fr 1fr 1fr 0.5fr 1.5fr;align-items:center;text-align:center;gap:2px}
.nm-card-name{font-size:15px;font-weight:700;color:#222;white-space:nowrap;text-align:left}
.nm-card-wxtext{font-size:12px;letter-spacing:2px}
.nm-card-scoregroup{margin-left:auto;display:flex;align-items:baseline;gap:3px}
.nm-card-score{font-size:16px;font-weight:700;line-height:1}
.nm-card-sclabel{font-size:10px;font-weight:600}
.nm-card-fav{font-size:18px;cursor:pointer;opacity:.6;padding:0;user-select:none}
.nm-card-fav:active{transform:scale(1.2)}
.nm-card-bottom{display:flex;margin-top:5px;padding-top:5px;border-top:1px solid #eee;align-items:baseline}
.nm-card-mean{flex:1;font-size:11px;color:var(--gray-500);min-width:0}
.nm-card-wuge{flex:1;text-align:right;font-size:10px;white-space:nowrap}
.nm-wx-info{margin:4px 0 6px;padding:6px 8px;background:var(--gray-50);border-radius:var(--radius-md)}

/* ===== 随喜打赏 ===== */
.dn-btn{display:flex;align-items:center;justify-content:center;padding:10px 6px;background:var(--gray-50);border-radius:var(--radius-md);cursor:pointer;font-size:15px;font-weight:600;color:var(--color-primary);transition:all .12s;user-select:none}
.dn-btn:active{background:var(--color-primary);color:var(--color-text-white);transform:scale(.95)}
.dn-btn.dn-custom{background:var(--color-primary-light);border:1px dashed var(--color-primary);color:var(--color-primary);font-size:13px}
body.dark .dn-btn{background:var(--gray-800);color:var(--color-primary)}
body.dark .dn-btn:active{background:var(--color-primary);color:var(--color-text-white)}
/* 打赏入口条 */
.dn-entry{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px;margin:8px 10px;background:var(--bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;font-size:13px;color:var(--color-primary);transition:opacity .12s}
.dn-entry:active{opacity:.7}
body.dark .dn-entry{background:var(--gray-800);border-color:var(--gray-700)}
.nm-item{display:flex;justify-content:space-between;align-items:center;padding: var(--sp-8) var(--sp-10);border-bottom:1px solid var(--gray-100)}
.nm-item:last-child{border-bottom:none}
.nm-item .nm-n{font-size:16px;font-weight:600;color:var(--color-primary)}
.nm-item .nm-m{font-size:12px;color:var(--gray-700);margin-left:var(--sp-6)}
.nm-item .nm-a{font-size:14px;cursor:pointer;color:var(--gray-500);padding:var(--sp-2)}
.nm-item .nm-a:active{color:var(--color-primary)}
.nm-card-hdr{display:grid;grid-template-columns:1fr 1fr 1fr 0.5fr 1.5fr;align-items:center;gap:2px;padding:6px 10px;background:var(--gray-50);border-radius:var(--radius-md);margin-bottom:6px}
/* 择吉表头 - 独立于取名，3列(日期/属性/得分+收藏) */
.zs-card-hdr{display:flex;align-items:center;gap:2px;padding:6px 10px;background:var(--gray-50);border-radius:var(--radius-md);margin-bottom:6px;margin-top:10px}
.zs-card-hdr > span{font-size:var(--fs-xs);color:var(--gray-500)}
/* 择吉卡片 - 横排，flex-direction:row覆盖父类 */
.zs-card{display:flex!important;flex-direction:row!important;align-items:center;padding:8px 10px;background:#fff;border:1px solid #f0f0f0;border-radius:var(--radius-md);margin-bottom:6px}
body.dark .nm-sn{background:var(--gray-800);border-color:var(--gray-700);color:var(--gray-300)}
body.dark .nm-sn.on{background:var(--color-primary);border-color:var(--color-primary);color:#fff}


/* ═══ style.css lines 651-747 ═══ */
/* ===== utility: settings/vip shared classes ===== */
.txt-center{text-align:center}
.txt-title-lg{font-size:16px;font-weight:700}
.txt-title{font-size:15px;font-weight:600}
.txt-body{font-size:13px}
.txt-body-muted{font-size:13px;color:var(--color-text-secondary)}
.txt-muted{font-size:12px;color:var(--color-text-muted)}
.txt-tiny-muted{font-size:11px;color:var(--color-text-muted)}
.txt-tiny-light{font-size:11px;color:var(--color-text-light)}
.price-lg{font-weight:700;color:var(--color-primary);font-size:16px}
.vip-card{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;cursor:pointer;border:1px solid var(--color-border);border-radius:var(--radius-md)}
.vip-card-lucky{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;cursor:pointer;border:1px dashed var(--color-primary);border-radius:var(--radius-md);margin-bottom:6px;background:var(--bg-card)}
.vip-card-mb{margin-bottom:6px}
.vip-header{text-align:center;padding:10px}
.vip-icon{font-size:36px;margin-bottom:8px}
.vip-title{font-size:16px;font-weight:600;color:var(--color-text-primary);margin-bottom:4px}
.vip-desc{font-size:13px;color:var(--color-text-secondary);margin-bottom:4px}
.vip-plan-bg{background:var(--gray-50);border-radius:var(--radius-md);padding:0;margin:10px 0;overflow:hidden}
.vip-footnote{font-size:11px;color:var(--color-text-light);text-align:center}
.vip-card-inner{display:flex;justify-content:space-between;align-items:center}
.vip-label{font-size:16px}
.vip-sub{font-size:11px;color:var(--color-text-muted);margin-top:2px}

/* ===== settings page ===== */
.st-card{background:var(--bg-card);border-radius:var(--radius-lg);margin-bottom:var(--sp-8);padding:var(--sp-14);border:1px solid var(--color-border)}
.st-row{display:flex;justify-content:space-between;align-items:center}
.st-row-mb{margin-bottom:6px}
.st-p10{padding:10px 14px}
.st-p12{padding:12px 14px}
.st-m4{margin:4px 10px 6px}
.st-m0{margin:0 10px 6px}
.st-fs16{font-size:16px}
.st-fs12{font-size:12px}
.st-fs11{font-size:11px}
.st-fw700{font-weight:700}
.st-fw600{font-weight:600}
.st-c333{color:var(--color-text-body)}
.st-c999{color:var(--color-text-muted)}
.st-c628{color:var(--color-primary)}
.st-gap6{gap:6px}
.st-flex{display:flex}
.st-flex1{flex:1}
.st-mla{margin-left:auto}
.st-ccc{color:var(--color-text-light)}
.st-pointer{cursor:pointer}
.st-border{border:1px solid var(--color-border)}
.st-border0{border:none}
.st-radius10{border-radius:var(--radius-md)}
.st-radius12{border-radius:var(--radius-lg)}
.st-bg5{background:var(--gray-50)}
.st-pad0{padding:0}
.st-overflow{overflow:hidden}
.st-mt2{margin-top:2px}
.st-mt4{margin-top:4px}
.st-mb4{margin-bottom:4px}
.st-mr4{margin-right:4px}

/* ===== 日程提醒（统一版） ===== */
.rem-group{margin-bottom:10px}
.rem-group-title{font-size:12px;font-weight:600;color:var(--gray-500);padding:4px 0 2px;margin-bottom:2px}
.rem-item{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--bg-page)}
.rem-item:last-child{border-bottom:none}
.rem-checkbox{font-size:16px;cursor:pointer;flex-shrink:0;width:22px;text-align:center;line-height:1}
.rem-body{flex:1;min-width:0;cursor:pointer}
.rem-text{font-size:14px;color:var(--gray-800);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rem-text.done{text-decoration:line-through;color:var(--gray-300)}
.rem-meta{font-size:11px;color:var(--gray-500);margin-top:1px}
.rem-delete{color:var(--color-primary);cursor:pointer;font-size:11px;flex-shrink:0;padding:4px 6px}
.rem-add-btn{display:block;width:100%;padding:10px;text-align:center;background:var(--bg-page);border-radius:var(--radius-md);border:1px dashed var(--color-border);color:var(--color-primary);font-size:14px;font-weight:600;cursor:pointer;margin-top:10px}

body.dark .nm-gb{background:var(--gray-800);color:var(--gray-500)}
body.dark .nm-gb.on{background:var(--color-primary);color:#fff}
body.dark .nm-birth-module{background:var(--bg-card)}
body.dark .nm-bazi-preview{background:var(--bg-card);border-color:var(--color-border);color:var(--color-text-secondary)}
body.dark .nm-item{border-color:var(--color-border)}
body.dark .nm-card{background:var(--bg-card-elevated);border-color:var(--color-border)}
body.dark .nm-card-name{color:var(--color-text-body)}
body.dark .nm-card-mean{color:var(--color-text-muted)}
body.dark .nm-wx-info{background:var(--bg-card-elevated)}
body.dark .weather-aqi{color:var(--gray-500)}
body.dark .weather-indices{border-top-color:var(--gray-800)}
body.dark .wi-name{color:var(--gray-600)}
body.dark .wi-val{color:var(--gray-300)}
body.dark .weather-trend{border-top-color:var(--gray-800)}
body.dark .weather-trend-toggle{color:var(--gray-500)}
body.dark .weather-trend-toggle:active{color:var(--color-primary)}
body.dark .th-item.th-now{background:rgba(255,255,255,.05)}
body.dark .th-temp{color:var(--gray-600)}
body.dark .th-time{color:var(--gray-600)}
body.dark .pill-s{border-color:var(--gray-700);color:var(--gray-400)}
body.dark .zf-hint{color:var(--gray-600)}
body.dark .zj-sc-p{background:var(--gray-600)}
body.dark .zj-sc-chong{background:var(--gray-700)}
body.dark .nm-item .nm-m{color:var(--gray-500)}
body.dark .nm-card-hdr{border-bottom-color:var(--gray-700)}
body.dark .sk-b{background:linear-gradient(90deg,#333 25%,#444 50%,#333 75%);background-size:400px 100%}


/* ═══ style.css lines 760-788 ═══ */
/* ===== 我的页 ===== */
.st-r{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-10) 0;font-size:15px;cursor:pointer}
.st-r+.st-r{border-top:1px solid var(--color-border)}
.st-l{color:var(--color-text-body)}
.st-v{font-size:var(--fs-xs);color:var(--color-text-muted)}
.bdg{background:var(--color-primary);color:var(--color-text-white);font-size:var(--fs-micro);padding: 1px var(--sp-6);border-radius:var(--radius-md)}
.rmd-h{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-8) 0;border-bottom:1px solid var(--color-border-light)}
.rmd-h .ri{font-size:20px}
.rmd-h .rt{font-size:15px;font-weight:600;flex:1}
.td-i{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-8) 0;border-bottom:1px solid var(--bg-page);font-size:var(--fs-body)}
.td-i .ch{width:20px;height:20px;border-radius:50%;border:2px solid var(--color-text-light);cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:11px}
.td-i .ch.dn{background:var(--color-success);border-color:var(--color-success);color:var(--color-text-white)}
.td-i .tx{flex:1}
.td-i .tx.dn{text-decoration:line-through;color:var(--color-text-light)}
.td-i .dl{color:var(--color-primary);cursor:pointer;opacity:.5;font-size:15px}
.td-a{display:flex;gap:var(--sp-8);margin-top:var(--sp-6)}
.td-i2{flex:1;height:40px;border:1px solid var(--color-text-light);border-radius:var(--radius-sm);padding:0 var(--sp-12);font-size:var(--fs-body);outline:none;background:var(--bg-card)}
/* 按钮缩小 */
.td-b{height:28px;padding:0 var(--sp-14);background:var(--color-primary);color:var(--color-text-white);border:none;border-radius:14px;font-size:var(--fs-xs);font-weight:600;cursor:pointer}
.rmd-n{font-size:var(--fs-small);color:var(--gray-700);padding:var(--sp-6) 0;border-bottom:1px solid var(--bg-page);display:flex;align-items:center;gap:var(--sp-8)}
.rmd-n .rd{font-size:10px;color:var(--color-primary);background:var(--color-primary-light);padding: 1px var(--sp-6);border-radius:var(--radius-sm)}
.pg2{}
.pg2 .ph{font-size:11px;color:var(--color-text-muted);padding:var(--sp-2) 0;font-weight:600}
.pg2 .pd{width:28px;height:28px;border-radius:50%;margin:var(--sp-2) auto;font-size:var(--fs-xs);line-height:28px;color:var(--color-text-light)}
.pg2 .pd.om{color:var(--color-other-month)}
.pg2 .pd.p{background:var(--color-primary);color:var(--color-text-white)}
.pg2 .pd.o{background:var(--color-success);color:var(--color-text-white)}
.pg2 .pd.t{border:2px solid var(--color-primary);line-height:24px;color:var(--color-text-body)}


/* ═══ style.css lines 960-1053 ═══ */
/* ─── 节气限定报告 ─── */
.block-season-report {
}
.sr-card {
  padding: 8px 0;
}
.sr-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  margin: 6px 0;
}
.sr-item {
  padding: 6px 8px;
  background: var(--gray-50);
  border-radius:var(--radius-md);
  font-size: 12px;
  line-height: 1.5;
}
.sr-item .sr-lbl {
  font-size: 11px;
  color: var(--gray-500);
  margin-bottom: 2px;
}
.sr-item .sr-val {
  color: var(--color-text-body);
  font-weight: 500;
}
.sr-section {
  margin: 8px 0;
  padding: 6px 8px;
  background: var(--color-gold-bg);
  border-radius:var(--radius-md);
  font-size: 12px;
  line-height: 1.6;
  color: var(--color-text-secondary);
}
.sr-section strong {
  color: var(--color-primary);
}

/* 分隔线 */
.ai-divider{height:1px;background:var(--color-border);margin:var(--sp-14) 0}

/* ===== AI页实用工具类 ===== */
/* 间距 */
.ma4  { margin: 4px; }
.mt2  { margin-top: 2px; }
.mt6  { margin-top: 6px; }
.mt8  { margin-top: 8px; }
.mb2  { margin-bottom: 2px; }
.mb4  { margin-bottom: 4px; }
.mb6  { margin-bottom: 6px; }
.mb8  { margin-bottom: 8px; }
.mr2  { margin-right: 2px; }
/* 字号 */
.f10 { font-size: 10px; }
.f11 { font-size: 11px; }
.f12 { font-size: 12px; }
.f13 { font-size: 13px; }
.f14 { font-size: 14px; }
.f15 { font-size: 15px; }
/* 字重 */
.fw6 { font-weight: 600; }
.fw7 { font-weight: 700; }
/* 颜色 */
.c555  { color: var(--gray-700); }
.c666  { color: var(--gray-600); }
.c999  { color: var(--gray-500); }
.cp    { color: var(--color-primary); }
.c333  { color: var(--gray-800); }
.cdd   { color: var(--gray-150); }
/* 布局 */
.fx1  { flex: 1; }
.fxg4 { display: flex; gap: 4px; }
.fxg6 { display: flex; gap: 6px; }
.fxww { display: flex; flex-wrap: wrap; }
/* 常用组合 */
.f10c999  { font-size: 10px; color: var(--gray-500); }
.f11c666  { font-size: 11px; color: var(--gray-600); }
.f11c999  { font-size: 11px; color: var(--gray-500); }
.f13lh17  { font-size: 13px; line-height: 1.7; }
.f13lh17c555 { font-size: 13px; line-height: 1.7; color: var(--gray-700); }
.f12fw6c555mb4 { font-size: 12px; font-weight: 600; color: var(--gray-700); margin-bottom: 4px; }
.fw6cpmb4    { font-weight: 600; color: var(--color-primary); margin-bottom: 4px; }
.fw6cp       { font-weight: 600; color: var(--color-primary); }
.fw6         { font-weight: 600; }
.fxwwg3m4   { display: flex; flex-wrap: wrap; gap: 3px; margin: 4px 0; }
.tacfx1 { text-align: center; flex: 1; }
.f14fw7mb6 { font-size: 14px; font-weight: 700; margin-bottom: 6px; }
.bgfff-p6-mb6 { background: #fff; border-radius:var(--radius-md); padding: 6px; margin-bottom: 6px; }
.w100p-f12-tac-bcc { width: 100%; font-size: 12px; text-align: center; border-collapse: collapse; }
.mt6 { margin-top: 6px; }


/* ═══ style.css lines 1104-1188 ═══ */
/* ─── 数据管理 ─── */
.dm-wrap { text-align: center; }
.dm-stats { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin-bottom: 6px; }
.dm-item { display: flex; align-items: center; gap: 3px; background: var(--gray-50); border-radius:var(--radius-xl); padding: 5px 12px; font-size: 13px; }
.dm-ic { font-size: 14px; line-height: 1; }
.dm-n { color: var(--color-text-muted); font-size: 12px; }
.dm-v { color: var(--color-text-body); font-weight: 600; font-size: 14px; margin-left: 1px; }
.dm-divider { height: 1px; background: var(--color-border); margin: 12px 0; }
.dm-actions { display: flex; gap: 8px; justify-content: center; }
.dm-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; flex: 1; max-width: 100px; padding: 10px 8px; background: var(--bg-card); border: 1px solid var(--color-border); border-radius:var(--radius-lg); cursor: pointer; transition: all .12s; user-select: none; }
.dm-btn:active { background: var(--color-primary-light); border-color: var(--color-primary); }
.dm-btn-ic { font-size: 22px; line-height: 1.2; }
.dm-btn-l { font-size: 12px; color: var(--color-text-secondary); font-weight: 500; }
body.dark .dm-item { background: var(--gray-800); }
body.dark .dm-n { color: var(--gray-500); }
body.dark .dm-v { color: var(--gray-300); }
body.dark .dm-btn { background: var(--gray-800); border-color: var(--gray-700); }
body.dark .dm-btn-l { color: var(--gray-400); }
.brd-box { margin: 0 10px 4px; padding: 12px 14px 8px; text-align: center; }
.brd-t { font-size: 15px; font-weight: 600; color: var(--color-primary); margin-bottom: 2px; }
.brd-s { font-size: 11px; color: var(--gray-400); line-height: 1.4; }
.brd-ln { width: 24px; height: 1px; background: var(--color-primary); margin: 6px auto; border-radius: 1px; }
.brd-v { font-size: 10px; color: var(--gray-400); line-height: 1.4; }
.brd-icp { font-size: 9px; color: var(--gray-400); text-align: center; margin-top: 2px; }
/* 生理周期 */
.pd-box { padding: 10px 14px; }
.pd-h { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.pd-ht { font-size: var(--fs-h2); font-weight: 600; color: var(--gray-700); }
.pd-c { font-size: var(--fs-xs); color: var(--color-primary); cursor: pointer; }
.pd-row { margin-top: 6px; display: flex; gap: 6px; align-items: center; }
.pd-inp { flex: 1; font-size: var(--fs-xs); height: 30px; }
.pd-btn { font-size: var(--fs-tiny); }
/* 生理周期容器 */
.pd-sc { margin: 0 10px 6px; display: none; }
.pd-oh { overflow: hidden; max-height: 600px; }
/* 日程 */
.sch-box { margin: 4px 10px 6px; padding: 10px 14px; }
.sch-h { display: flex; justify-content: space-between; align-items: center; }
.sch-tags { margin: 0 10px 6px; padding: 8px 14px; }
.sch-tag-w { display: flex; gap: 6px; flex-wrap: wrap; }
.sch-view { margin: 0 10px 6px; padding: 4px 14px; }
.sch-tab-w { display: flex; gap: 0; border-radius:var(--radius-md); overflow: hidden; border: 1px solid var(--color-border); }
.sch-tab { flex: 1; text-align: center; padding: 5px 0; cursor: pointer; font-size: var(--fs-xs); }
.sch-list { margin: 0 10px 6px; padding: 8px 14px; }
.sch-cnt { max-height: 55vh; overflow-y: auto; }
.sch-ld { text-align: center; padding: 20px; color: var(--gray-400); font-size: var(--fs-small); }
/* 浮动按钮 */
.fab-pos { position: fixed; bottom: 60px; right: 16px; z-index: 100; }
.fab-btn { width: 48px; height: 48px; background: var(--color-primary); color: var(--bg-card); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 24px; box-shadow: 0 2px 8px rgba(198,40,40,.3); cursor: pointer; }

/* ===== 弹窗内容统一排版 ===== */
.modal-title{font-size:var(--fs-body);font-weight:600;color:var(--gray-800);margin-bottom:var(--sp-6)}
.modal-text{font-size:var(--fs-small);line-height:1.8;color:var(--gray-700);padding:2px 0}
.modal-text-lh{font-size:var(--fs-small);line-height:1.9;color:var(--gray-700);padding:2px 0}
.modal-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:3px}
.modal-grid-item{background:var(--gray-50);padding:3px 6px;border-radius:var(--radius-sm);font-size:var(--fs-xs)}
.modal-tag{color:var(--color-primary);font-weight:600}
.modal-muted{color:var(--gray-500)}
.modal-light{color:var(--gray-400)}
.modal-row{display:flex;justify-content:space-between;padding:var(--sp-2) 0;border-bottom:1px solid var(--bg-page)}
.modal-success{text-align:center;padding:16px}
.modal-success-icon{font-size:48px;margin-bottom:8px}

/* ===== 积分签到区 ===== */
.fiss-card{margin:0 var(--sp-10) var(--sp-6);padding:var(--sp-8) var(--sp-10)}
.fiss-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.fiss-header-title{font-size:12px;font-weight:600}
.fiss-header-pts{font-size:12px;color:var(--color-primary);font-weight:600}
.fiss-bar{height:4px;background:var(--gray-100);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:6px}
.fiss-bar-fill{height:100%;background:linear-gradient(90deg,var(--color-primary),#E8913A);border-radius:var(--radius-sm);transition:width .3s}
.fiss-row{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:4px}
.fiss-streak{font-size:10px;color:var(--color-text-muted)}
.fiss-hint{font-size:9px;color:var(--color-text-muted);text-align:right;margin-bottom:8px}
.fiss-hint-center{text-align:center;margin-bottom:6px}
.fiss-divider{border-top:1px solid var(--gray-100);margin:0 -10px 6px}
.fiss-divider2{border-top:1px solid var(--gray-100);margin:8px -10px 6px}
.fiss-sectitle{font-size:10px;color:var(--gray-500);font-weight:600;margin-bottom:6px;text-align:center}
.fiss-btn-row{display:flex;justify-content:center;gap:10px}
.fiss-btn-p{flex:1;text-align:center;font-size:12px;color:var(--bg-card);cursor:pointer;padding:10px 0;background:var(--color-primary);border-radius:var(--radius-md);font-weight:600}
.fiss-btn-o{flex:1;text-align:center;font-size:12px;color:var(--color-primary);cursor:pointer;padding:10px 0;border:1.5px solid var(--color-primary);border-radius:var(--radius-md);font-weight:600}
.fiss-btn-ex{flex:1;text-align:center;font-size:11px;color:var(--bg-card);cursor:pointer;padding:6px 0;background:var(--color-primary);border-radius:var(--radius-md);font-weight:600}
.fiss-btn-done{flex:1;text-align:center;font-size:12px;color:var(--gray-400);padding:10px 0;background:var(--gray-50);border-radius:var(--radius-md)}
.fiss-ex-row{display:flex;justify-content:center;gap:10px}
.fiss-ex-title{font-size:10px;color:var(--gray-500);font-weight:600;margin-bottom:5px;text-align:center}

