/* ══════════════════════════════════════════════════════════════
   守财人 · 设计系统 v3
   主题 A（默认）= 第一版配色：深棕黑 + 暖棕 + 金
   主题 B         = v2 改版：深墨绿 + 铜金
   顶栏可切换，存 localStorage
   深度升级点：玻璃卡片 / 铜金渐变字 / 光晕背景 / 3D 按钮 / 微动效
   ══════════════════════════════════════════════════════════════ */

/* ───────── 主题 A：第一版 ───────── */
:root{
  --bg:#0d0a08;
  --glow-1:rgba(201,162,39,.13);
  --glow-2:rgba(160,110,55,.10);
  --card:rgba(44,35,29,.72);
  --card-solid:#2a221c;
  --card-2:#332a22;
  --line:rgba(201,162,39,.15);
  --line-2:rgba(201,162,39,.30);
  --txt:#e6d8c4;
  --txt-2:#b7a389;
  --txt-3:#7d6c5c;
  --gold:#C9A882;
  --gold-hi:#EFDCC0;
  --gold-dim:#8A6E4A;
  --grad:linear-gradient(135deg,#EFDCC0 0%,#C9A882 48%,#9A7B52 100%);
  --ok:#7FA88C; --ok-bg:rgba(127,168,140,.13);
  --warn:#D99A4E; --warn-bg:rgba(217,154,78,.12);
  --bad:#C4705A; --bad-bg:rgba(196,112,90,.14);
  --btn-grad:linear-gradient(135deg,#EFDCC0,#C9A882 55%,#B08E60);
  --btn-txt:#17110b;
  --btn-edge:#7A6140;
  --r:22px;
  --sh:inset 0 1px 0 rgba(255,225,180,.10), 0 12px 32px rgba(0,0,0,.44);
  --sh-2:inset 0 1px 0 rgba(255,225,180,.16), 0 20px 52px rgba(0,0,0,.56);
  --safe:env(safe-area-inset-bottom,0px);
}

/* ───────── 主题 B：v2 改版 ───────── */
[data-theme="b"]{
  --bg:#0B1A15;
  --glow-1:rgba(201,162,39,.14);
  --glow-2:rgba(62,140,107,.12);
  --card:rgba(20,43,35,.74);
  --card-solid:#142B23;
  --card-2:#1B372D;
  --line:rgba(201,162,39,.18);
  --line-2:rgba(201,162,39,.36);
  --txt:#EFE6D4;
  --txt-2:#A9BDB0;
  --txt-3:#6E8579;
  --gold:#C9A227;
  --gold-hi:#F0DFA8;
  --gold-dim:#8A6E16;
  --grad:linear-gradient(135deg,#F0DFA8 0%,#C9A227 48%,#8A6E16 100%);
  --ok:#5CB392; --ok-bg:rgba(92,179,146,.13);
  --warn:#D9A94E; --warn-bg:rgba(217,169,78,.12);
  --bad:#D07A5F; --bad-bg:rgba(208,122,95,.14);
  --btn-grad:linear-gradient(135deg,#E8CE7A,#C9A227 55%,#8A6E16);
  --btn-txt:#1A1405;
  --btn-edge:#6E5710;
}

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;overscroll-behavior-y:none}
body{
  color:var(--txt);
  font:15.5px/1.55 -apple-system,BlinkMacSystemFont,"SF Pro SC","PingFang SC",system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  background:
    radial-gradient(120% 58% at 50% -8%, var(--glow-1) 0%, transparent 60%),
    radial-gradient(90% 45% at 108% 104%, var(--glow-2) 0%, transparent 62%),
    var(--bg);
  background-attachment:fixed;
  transition:background-color .45s ease;
}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;transition:transform .1s,opacity .18s}
button:active{transform:scale(.97)}
input{font:inherit;color:inherit;background:none;border:none;outline:none}
[hidden]{display:none!important}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}

/* ───────── 通用卡片 ───────── */
.card{
  position:relative;margin:12px 22px 0;padding:19px;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--sh);
  backdrop-filter:blur(14px) saturate(1.15);
  -webkit-backdrop-filter:blur(14px) saturate(1.15);
  overflow:hidden;
}
.card::before{           /* 顶部一道金线 */
  content:"";position:absolute;top:0;left:18px;right:18px;height:1px;
  background:linear-gradient(90deg,transparent,var(--line-2),transparent);
}

/* ══════════ 登录页 ══════════ */
.auth{
  position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;
  align-items:center;justify-content:center;padding:0 26px calc(24px + var(--safe));
  overflow-y:auto;
}
.auth-coinrow{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.auth-coinrow svg{position:absolute;color:var(--gold);opacity:.055}
.auth-coinrow .ac1{width:168px;height:168px;top:-30px;right:-38px;transform:rotate(14deg)}
.auth-coinrow .ac2{width:120px;height:120px;bottom:15%;left:-36px;transform:rotate(-9deg)}
.auth-art{position:relative;margin-bottom:4px}
.auth-art svg{width:138px;height:136px;filter:drop-shadow(0 14px 30px rgba(0,0,0,.6))}
.auth-h1{
  font-size:35px;font-weight:800;letter-spacing:8px;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;
}
.auth-sub{font-size:14px;color:var(--txt-2);margin-top:10px;margin-bottom:28px;letter-spacing:1.5px}

.guest-go{
  width:100%;max-width:342px;padding:19px;border-radius:20px;
  background:var(--btn-grad);color:var(--btn-txt);
  font-size:17px;font-weight:800;letter-spacing:4px;
  box-shadow:0 4px 0 var(--btn-edge),0 12px 30px rgba(0,0,0,.4);
}
.guest-go:active{transform:translateY(3px);box-shadow:0 1px 0 var(--btn-edge)}
.guest-tip{font-size:11.5px;color:var(--txt-3);margin-top:13px;text-align:center;line-height:1.7}
.auth-or{display:flex;align-items:center;gap:13px;width:100%;max-width:342px;margin:24px 0 16px}
.auth-or::before,.auth-or::after{content:"";flex:1;height:1px;background:var(--line)}
.auth-or span{font-size:11.5px;color:var(--txt-3)}

.auth-tabs{
  display:flex;gap:5px;width:100%;max-width:342px;padding:4px;
  background:var(--card-solid);border:1px solid var(--line);border-radius:15px;
}
.auth-tabs .at{flex:1;padding:12px 0;border-radius:12px;font-size:14px;font-weight:700;color:var(--txt-2)}
.auth-tabs .at.on{
  background:var(--card-2);color:var(--gold-hi);
  box-shadow:inset 0 0 0 1px var(--line-2),0 2px 8px rgba(0,0,0,.3);
}
.auth-form{width:100%;max-width:342px;margin-top:18px;display:flex;flex-direction:column;gap:13px}
.fld{
  display:flex;flex-direction:column;gap:7px;padding:13px 17px;border-radius:17px;
  background:var(--card);border:1px solid var(--line);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  transition:border-color .2s;
}
.fld:focus-within{border-color:var(--line-2)}
.fld>span{font-size:11px;color:var(--txt-3);letter-spacing:1.4px;font-weight:600}
.fld input{font-size:16px;font-weight:600;width:100%}
.fld input::placeholder{color:var(--txt-3);font-weight:400}
.auth-err{font-size:12.5px;color:var(--bad);min-height:17px;text-align:center;font-weight:600}
.auth-go{
  width:100%;padding:17px;border-radius:18px;letter-spacing:6px;
  background:var(--card-2);color:var(--gold-hi);
  box-shadow:inset 0 0 0 1px var(--line-2);
}
.auth-go:active{background:var(--card-solid)}

/* ══════════ 框架 ══════════ */
.app{position:relative;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.view{position:absolute;inset:0 0 100px 0;overflow-y:auto;-webkit-overflow-scrolling:touch;display:none}
.view.on{display:block}

.hd{
  padding:calc(24px + env(safe-area-inset-top,0px)) 22px 0;
  display:flex;align-items:center;justify-content:space-between;
}
.hd-l{font-size:12.5px;color:var(--txt-3);font-weight:600}
.hd-r{font-size:12px;color:var(--txt-2);background:var(--card-2);border:1px solid var(--line);
  border-radius:13px;padding:8px 14px;font-weight:600}
.hd-btns{display:flex;gap:8px;align-items:center}
.theme-btn{width:38px;height:38px;border-radius:13px;background:var(--card-2);
  border:1px solid var(--line);display:flex;align-items:center;justify-content:center}
.theme-btn svg{width:17px;height:17px}
.cal-l{display:flex;align-items:center;gap:4px}
.cal-l b{font-size:19px;font-weight:800;letter-spacing:-.5px}
.cal-l button{width:38px;height:38px;border-radius:13px;background:var(--card-2);
  border:1px solid var(--line);color:var(--txt-2);font-size:20px;line-height:1}

/* ───────── 小财神 ───────── */
.mon-wrap{text-align:center;padding:4px 22px 0}
.mon{height:184px}
.mon svg{width:100%;height:100%;filter:drop-shadow(0 12px 26px rgba(0,0,0,.6))}
.hp{width:140px;height:9px;background:var(--card-2);border-radius:5px;margin:4px auto 12px;
  overflow:hidden;box-shadow:inset 0 1px 3px rgba(0,0,0,.5)}
.hp i{display:block;height:100%;border-radius:5px;background:var(--grad);transition:width .4s cubic-bezier(.3,.8,.4,1)}
.bubble{
  display:inline-block;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:9px 18px;font-size:13.5px;font-weight:600;
  box-shadow:var(--sh);position:relative;max-width:100%;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.bubble::before{content:"";position:absolute;top:-6px;left:50%;margin-left:-6px;
  border:6px solid transparent;border-bottom-color:var(--line);border-top:0}
.bubble::after{content:"";position:absolute;top:-5px;left:50%;margin-left:-6px;
  border:6px solid transparent;border-bottom-color:var(--card-solid);border-top:0}

/* ───────── 今日弹药 ───────── */
.ammo-hd{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:13px}
.ammo-hd .k{font-size:13px;color:var(--txt-2);font-weight:600}
.ammo-hd .v{color:var(--ok)}
.ammo-hd .v small{font-size:17px;font-weight:800;margin-right:1px;opacity:.6}
.ammo-hd .v b{font-size:34px;font-weight:800;letter-spacing:-1.5px}
.bar{height:12px;background:var(--card-2);border-radius:7px;overflow:hidden;
  box-shadow:inset 0 1px 3px rgba(0,0,0,.4)}
.bar i{display:block;height:100%;border-radius:7px;transition:width .35s cubic-bezier(.3,.8,.4,1);
  background:linear-gradient(90deg,var(--ok),color-mix(in srgb,var(--ok) 70%,#fff))}
.bar.hot i{background:linear-gradient(90deg,var(--warn),var(--bad))}
.ammo-ft{display:flex;justify-content:space-between;font-size:11.5px;color:var(--txt-2);margin-top:10px}

/* ───────── 倒计时 ───────── */
.cd-h,.cb-h,.wk-h,.st-h,.hb-h,.ai-h,.fu-h,.sh-sub{
  font-size:11px;color:var(--txt-3);letter-spacing:2.5px;font-weight:600;margin-bottom:12px}
.cd-main{display:flex;align-items:baseline;gap:5px;margin-bottom:14px;flex-wrap:wrap}
.cd-main b{font-size:34px;font-weight:800;letter-spacing:-1px;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.cd-main span{font-size:12px;color:var(--txt-2)}
.cd-main i{color:var(--txt-3);margin:0 6px;font-style:normal}
.cd-bar{height:7px;background:var(--card-2);border-radius:4px;overflow:hidden;margin-bottom:9px;
  box-shadow:inset 0 1px 3px rgba(0,0,0,.4)}
.cd-bar i{display:block;height:100%;border-radius:4px;background:var(--grad);transition:width .4s}
.cd-ft{display:flex;justify-content:space-between;font-size:11.5px;color:var(--txt-2)}

/* ───────── 分类预算 ───────── */
.catbox{margin:12px 22px 0}
.cbi{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line)}
.cbi:last-child{border-bottom:none}
.cbi .n{width:52px;font-size:12.5px;color:var(--txt);flex-shrink:0;font-weight:600}
.cbi .bar{flex:1;height:7px;background:var(--card-2);border-radius:4px;overflow:hidden}
.cbi .bar i{display:block;height:100%;border-radius:4px;
  background:linear-gradient(90deg,var(--gold-dim),var(--gold))}
.cbi.over .bar i{background:linear-gradient(90deg,var(--bad),#E08A72)}
.cbi .v{font-size:11.5px;color:var(--txt-2);width:78px;text-align:right;flex-shrink:0}

/* ───────── 目标 / 回访 / 犹豫本入口 ───────── */
.card.wish{background:var(--card)}
.w-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}
.w-top span{font-size:11px;color:var(--txt-3);letter-spacing:1.5px;font-weight:700}
.w-top b{font-size:16px;font-weight:800}
.w-mid{display:flex;align-items:center;gap:15px}
.w-ring{width:66px;height:66px;border-radius:50%;display:flex;flex-direction:column;
  align-items:center;justify-content:center;flex-shrink:0;
  background:linear-gradient(150deg,var(--warn-bg),transparent);
  box-shadow:inset 0 0 0 1.5px var(--line-2)}
.w-ring b{font-size:23px;font-weight:800;color:var(--gold-hi);line-height:1}
.w-ring span{font-size:10px;color:var(--gold);font-weight:600}
.w-tx{flex:1}
.w-line{font-size:13.5px;font-weight:600}
.w-hint{font-size:11.5px;color:var(--txt-2);margin-top:4px;line-height:1.5}
.w-btns{display:flex;gap:9px;margin-top:14px}
.wb{flex:1;background:var(--warn-bg);color:var(--gold-hi);border-radius:14px;padding:11px 0;
  font-size:13.5px;font-weight:700}
.wb.ghost{background:var(--card-2);color:var(--txt-2)}

.card.fu{background:linear-gradient(150deg,var(--warn-bg),transparent);border-color:var(--line-2)}
.fu-h{color:var(--gold);font-weight:800;letter-spacing:1px;margin-bottom:12px}
.fu-i{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.fu-i:last-child{border-bottom:none}
.fu-i .x{flex:1;min-width:0}
.fu-i .x b{display:block;font-size:14.5px;font-weight:700}
.fu-i .x span{font-size:11.5px;color:var(--txt-2)}
.fu-btns{display:flex;gap:8px;flex-shrink:0}
.fu-btns button{border-radius:12px;padding:8px 13px;font-size:12.5px;font-weight:700}
.fu-btns .a{background:var(--btn-grad);color:var(--btn-txt)}
.fu-btns .b{background:var(--card-2);color:var(--txt-2)}

.heslink{
  display:flex;align-items:center;gap:13px;
  background:linear-gradient(100deg,var(--warn-bg),transparent);border-color:var(--line-2);
}
.heslink .e{font-size:24px}
.heslink .tx{flex:1}
.heslink .tx b{display:block;font-size:14.5px;color:var(--gold-hi);font-weight:800}
.heslink .tx span{font-size:11.5px;color:var(--txt-2)}
.heslink .ar{width:30px;height:30px;border-radius:50%;background:var(--btn-grad);color:var(--btn-txt);
  display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;
  box-shadow:0 2px 8px rgba(0,0,0,.35)}

/* ───────── 周战绩 ───────── */
.wk-r{display:flex}
.wk-r div{flex:1;text-align:center}
.wk-r b{display:block;font-size:21px;font-weight:800;letter-spacing:-.5px;line-height:1.2}
.wk-r div:nth-child(1) b{color:var(--ok)}
.wk-r div:nth-child(2) b{color:var(--bad)}
.wk-r div:nth-child(3) b{color:var(--warn)}
.wk-r div:nth-child(4) b{color:var(--gold)}
.wk-r span{font-size:10.5px;color:var(--txt-2)}

.addbox{padding:18px 22px 26px}
.addbtn{
  width:100%;padding:20px;border-radius:22px;letter-spacing:4px;
  background:var(--btn-grad);color:var(--btn-txt);
  font-size:19px;font-weight:800;
  box-shadow:0 5px 0 var(--btn-edge),0 14px 32px rgba(0,0,0,.46);
}
.addbtn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--btn-edge),0 6px 16px rgba(0,0,0,.4)}
.addhint{text-align:center;font-size:11.5px;color:var(--txt-3);margin-top:14px}

/* ───────── tab ───────── */
.tab{
  position:absolute;left:20px;right:20px;bottom:calc(12px + var(--safe));z-index:60;
  display:flex;gap:4px;padding:5px;border-radius:24px;
  background:var(--card);border:1px solid var(--line);
  box-shadow:var(--sh-2);
  backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);
}
.tab button{flex:1;padding:10px 0;border-radius:20px;font-size:11px;color:var(--txt-2);
  display:flex;flex-direction:column;align-items:center;gap:2px;font-weight:700}
.tab button.on{background:var(--btn-grad);color:var(--btn-txt);box-shadow:0 2px 8px rgba(0,0,0,.3)}
.tab i{font-size:17px;font-style:normal;line-height:1}

/* ══════════ 月历 ══════════ */
.wkd{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin-bottom:9px}
.wkd span{text-align:center;font-size:11.5px;color:var(--txt-3);font-weight:600}
.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}
.dc{position:relative;height:var(--cw,38px);border-radius:12px;background:var(--card-2);
  border:1px solid transparent;transition:transform .15s}
.dc.blank{background:transparent}
.dc b{position:absolute;left:0;right:0;top:7px;text-align:center;font-size:13px;
  color:var(--txt-3);font-weight:500;line-height:1}
.dc i{position:absolute;left:0;right:0;bottom:5px;text-align:center;font-size:9px;
  font-style:normal;line-height:1;display:none;font-weight:700;letter-spacing:.5px}
.dc.ok{background:var(--ok-bg);border-color:color-mix(in srgb,var(--ok) 34%,transparent)}
.dc.ok b{color:var(--ok);font-weight:700}
.dc.ok i{display:block;color:var(--ok)}
.dc.no{background:var(--bad-bg);border-color:color-mix(in srgb,var(--bad) 34%,transparent)}
.dc.no b{color:var(--bad)}
.dc.no i{display:block;color:var(--bad)}
.dc.fut{opacity:.38}
.dc.today{box-shadow:0 0 0 2px var(--gold) inset}
.dc .dot{position:absolute;top:5px;right:6px;width:6px;height:6px;border-radius:50%;
  background:var(--warn);display:none}
.dc.hes .dot{display:block}

.kpis{display:flex;gap:10px;margin:12px 22px 0}
.kpi{flex:1;margin:0;padding:15px 6px;text-align:center}
.kpi b{display:block;font-size:22px;font-weight:800;letter-spacing:-.5px}
.kpi span{font-size:10.5px;color:var(--txt-2)}

/* ───────── 分类统计 ───────── */
.sti{margin-bottom:14px}
.sti:last-child{margin-bottom:0}
.sti-t{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:7px}
.sti-t .n{color:var(--txt);font-weight:600}
.sti-t .v{color:var(--txt-2)}
.sti-bar{height:9px;background:var(--card-2);border-radius:5px;overflow:hidden;
  box-shadow:inset 0 1px 3px rgba(0,0,0,.4)}
.sti-bar i{display:block;height:100%;border-radius:5px;background:var(--grad);
  box-shadow:0 0 12px color-mix(in srgb,var(--gold) 34%,transparent)}

/* ───────── 犹豫本列表 ───────── */
.hb-h{color:var(--gold);font-weight:800;letter-spacing:2px}
.hb-h span{color:var(--txt-3);letter-spacing:0;margin-left:8px;font-weight:500}
.hb-i{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.hb-i:last-of-type{border-bottom:none}
.hb-i .d{font-size:11.5px;color:var(--txt-3);width:44px;flex-shrink:0}
.hb-i .x{flex:1;min-width:0}
.hb-i .x b{display:block;font-size:13.5px;font-weight:700}
.hb-i .x span{font-size:11px;color:var(--txt-2)}
.hb-i .s{font-size:11px;padding:5px 11px;border-radius:11px;flex-shrink:0;font-weight:700}
.hb-i .s.y{background:var(--ok-bg);color:var(--ok)}
.hb-i .s.n{background:var(--bad-bg);color:var(--bad)}
.hb-i .s.q{background:var(--card-2);color:var(--txt-3)}
.hb-empty{font-size:13px;color:var(--txt-3);text-align:center;padding:22px 0;line-height:1.8}
.hb-ai{margin-top:14px;padding:13px 15px;border-radius:14px;font-size:12.5px;line-height:1.65;
  background:linear-gradient(100deg,var(--warn-bg),transparent);color:var(--gold-hi);
  border:1px solid var(--line-2);font-weight:500}

/* ══════════ 战报 ══════════ */
.shc{
  margin:14px 22px 0;padding:26px 22px;border-radius:26px;text-align:center;
  position:relative;overflow:hidden;box-shadow:var(--sh-2);
  background:linear-gradient(168deg,rgba(201,162,39,.10),transparent 58%),var(--card);
  border:1px solid var(--line-2);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
}
.shc::before{content:"";position:absolute;width:190px;height:190px;border-radius:50%;
  background:radial-gradient(circle,var(--glow-1),transparent 70%);top:-84px;right:-60px}
.shc .s-t1{font-size:10.5px;color:var(--txt-2);letter-spacing:4px;position:relative}
.s-mon{width:124px;height:122px;margin:8px auto 0;position:relative}
.s-mon svg{width:100%;height:100%;filter:drop-shadow(0 10px 22px rgba(0,0,0,.55))}
.s-n{font-size:58px;font-weight:800;line-height:1;letter-spacing:-3px;position:relative;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.s-l{font-size:13px;font-weight:700;color:var(--txt);position:relative}
.s-mrow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin:20px 0 16px;position:relative}
.s-mrow em{position:relative;height:var(--sw,10px);border-radius:5px;background:var(--card-2);font-style:normal}
.s-mrow em.s{background:linear-gradient(160deg,color-mix(in srgb,var(--ok) 70%,#fff),var(--ok))}
.s-mrow em .h{position:absolute;top:2px;right:2px;width:5px;height:5px;border-radius:50%;background:var(--warn)}
.s-g{display:flex;padding:15px 0;border-radius:17px;position:relative;background:rgba(0,0,0,.22)}
.s-g div{flex:1}
.s-g b{display:block;font-size:20px;font-weight:800}
.s-g span{font-size:10.5px;color:var(--txt-2)}
.s-ft{font-size:10.5px;color:var(--txt-3);letter-spacing:2px;margin-top:16px;position:relative}
.widebtn{
  display:block;width:calc(100% - 44px);margin:16px 22px 0;padding:18px;border-radius:20px;
  background:var(--btn-grad);color:var(--btn-txt);font-size:16.5px;font-weight:800;letter-spacing:2px;
  box-shadow:0 4px 0 var(--btn-edge),0 12px 28px rgba(0,0,0,.4);
}
.widebtn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--btn-edge)}
.ai{margin-top:12px}
.ai-h{color:var(--txt-3);letter-spacing:2.5px}
.ai-h span{color:var(--ok);letter-spacing:0;margin-left:8px}
.ai-t{font-size:14.5px;line-height:1.8;white-space:pre-line;color:var(--txt)}
.ai.thinking .ai-t{color:var(--txt-3)}

/* ══════════ 记账浮层 ══════════ */
.mask{position:absolute;inset:0;z-index:120;display:none;flex-direction:column;overflow-y:auto;
  background:radial-gradient(120% 40% at 50% 0%,var(--glow-1),transparent 60%),var(--bg)}
.mask.on{display:flex}
.mk-hd{padding:calc(22px + env(safe-area-inset-top,0px)) 24px 0;display:flex;align-items:center;justify-content:space-between}
.mk-hd .x{font-size:14px;color:var(--txt-2);font-weight:700}
.mk-hd b{font-size:16px;font-weight:800}
.mk-amt{text-align:center;padding:24px 0 6px}
.mk-amt .v{font-size:64px;font-weight:800;line-height:1.05;letter-spacing:-3px;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.mk-amt .c{font-size:13px;color:var(--txt-2);margin-top:6px}
.mk-tgt{margin:14px 24px 0;padding:13px 16px;border-radius:16px;display:flex;align-items:center;gap:11px;
  font-size:12.5px;color:var(--txt-2);background:var(--card);border:1px solid var(--line);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.mk-tgt .bar{flex:1}
.mk-tgt b{color:var(--txt);font-weight:800}
.mk-cats{margin:14px 24px 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.mk-cats button{padding:12px 0;border-radius:15px;font-size:12.5px;font-weight:700;
  background:var(--card);border:2px solid var(--line);color:var(--txt);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.mk-cats button em{display:block;font-style:normal;font-size:19px;margin-bottom:2px}
.mk-cats button.on{border-color:var(--gold);background:var(--card-2);color:var(--gold-hi)}
.mk-toggles{margin:14px 24px 0;display:flex;flex-direction:column;gap:9px}
.tg{display:flex;align-items:center;gap:12px;padding:12px 15px;border-radius:16px;text-align:left;
  background:var(--card);border:1px solid var(--line);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.tg i{width:44px;height:26px;border-radius:14px;background:var(--card-2);position:relative;flex-shrink:0;
  transition:background .22s;box-shadow:inset 0 1px 3px rgba(0,0,0,.4)}
.tg i::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:#F3E9D8;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .24s cubic-bezier(.3,.9,.4,1)}
.tg.on i{background:var(--btn-grad)}
.tg.on i::after{transform:translateX(18px);background:var(--btn-txt)}
.tg.on{background:linear-gradient(100deg,var(--warn-bg),transparent);border-color:var(--line-2)}
.tg span{font-size:11.5px;color:var(--txt-2)}
.tg span b{display:block;font-size:13.5px;color:var(--txt);font-weight:800}
.tg.on span b{color:var(--gold-hi)}
.mk-key{margin:auto 24px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.mk-key button{padding:18px 0;border-radius:16px;font-size:21px;font-weight:600;
  background:var(--card);border:1px solid var(--line);color:var(--txt)}
.mk-key button:active{background:var(--card-2)}
.mk-key button.dim{background:var(--card-2);color:var(--txt-2);font-size:15px;border-color:transparent}
.mk-save{
  width:calc(100% - 48px);margin:0 24px calc(20px + var(--safe));padding:19px;border-radius:20px;
  background:var(--btn-grad);color:var(--btn-txt);font-size:18px;font-weight:800;letter-spacing:4px;
  box-shadow:0 5px 0 var(--btn-edge),0 14px 30px rgba(0,0,0,.42);
}
.mk-save:active{transform:translateY(3px);box-shadow:0 2px 0 var(--btn-edge)}
.mk-save:disabled{background:var(--card-2);color:var(--txt-3);box-shadow:none}

/* ══════════ AI 回话 ══════════ */
.reply{
  position:fixed;left:16px;right:16px;bottom:calc(16px + var(--safe));max-width:440px;margin:0 auto;
  padding:16px 18px;border-radius:22px;display:none;align-items:flex-start;gap:13px;z-index:160;
  background:var(--card);border:2px solid var(--ok);
  box-shadow:0 14px 46px rgba(0,0,0,.6);
  backdrop-filter:blur(20px) saturate(1.2);-webkit-backdrop-filter:blur(20px) saturate(1.2);
}
.reply.on{display:flex;animation:rise .3s cubic-bezier(.2,.9,.3,1)}
@keyframes rise{from{transform:translateY(20px) scale(.97);opacity:0}to{transform:none;opacity:1}}
.reply.warn{border-color:var(--warn)}
.reply .av{width:44px;height:44px;border-radius:50%;background:var(--ok-bg);display:flex;
  align-items:center;justify-content:center;font-size:23px;flex-shrink:0;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ok) 40%,transparent)}
.reply.warn .av{background:var(--warn-bg);box-shadow:inset 0 0 0 1px var(--line-2)}
.reply .tx{flex:1;min-width:0}
.reply .tx>b{display:block;font-size:11px;color:var(--ok);letter-spacing:1.6px;margin-bottom:5px;font-weight:800}
.reply.warn .tx>b{color:var(--warn)}
.reply .tx p{font-size:14.5px;line-height:1.65;font-weight:500}
.reply .hint{font-size:11px;color:var(--txt-2);margin-top:9px;padding-top:9px;border-top:1px solid var(--line)}
.moods{display:none;align-items:center;gap:6px;margin-top:11px;flex-wrap:wrap}
.moods.on{display:flex}
.moods .ml{font-size:11px;color:var(--txt-3);margin-right:1px}
.moods button{background:var(--card-2);border-radius:13px;padding:6px 13px;
  font-size:12.5px;font-weight:700;color:var(--txt);border:1px solid transparent}
.moods button.on{background:var(--btn-grad);color:var(--btn-txt)}
.moods .done{font-size:11px;color:var(--ok);font-weight:800;margin-left:auto}

/* ══════════ Sheet ══════════ */
.sheet{position:fixed;inset:0;z-index:180;display:none;align-items:flex-end;justify-content:center;
  background:rgba(0,0,0,.68);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.sheet.on{display:flex}
.sheet-in{
  width:100%;max-width:520px;border-radius:28px 28px 0 0;padding:26px 22px calc(26px + var(--safe));
  animation:up .3s cubic-bezier(.2,.9,.3,1);
  background:radial-gradient(120% 30% at 50% 0%,var(--glow-1),transparent 60%),var(--bg);
  border-top:1px solid var(--line-2);
}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}
.sh-h{font-size:19px;font-weight:800;letter-spacing:2px;text-align:center;margin-bottom:18px}
.sheet-in .fld{margin-bottom:11px}
.sh-sub{margin:16px 2px 10px}
.sh-tip{font-size:11.5px;color:var(--txt-2);line-height:1.7;margin:6px 2px 16px}
.sheet-in .widebtn{width:100%;margin:0}
.textbtn{display:block;width:100%;margin-top:14px;font-size:13.5px;color:var(--txt-2);font-weight:600;padding:8px}
.catset{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:4px}
.catset label{display:flex;align-items:center;gap:7px;padding:10px 13px;border-radius:13px;
  background:var(--card);border:1px solid var(--line)}
.catset label span{font-size:12px;color:var(--txt-2);flex-shrink:0}
.catset input{width:100%;min-width:0;font-size:14px;font-weight:600;color:var(--gold-hi);text-align:right}
.fu-body-i{padding:16px 18px;border-radius:18px;margin-bottom:11px;
  background:var(--card);border:1px solid var(--line)}
.fu-body-i b{font-size:19px;font-weight:800;display:block}
.fu-body-i span{font-size:12.5px;color:var(--txt-2)}
.fu-body-i .fb{display:flex;gap:9px;margin-top:13px}
.fu-body-i .fb button{flex:1;border-radius:14px;padding:12px 0;font-size:13.5px;font-weight:800}
.fu-body-i .fb .y{background:var(--warn-bg);color:var(--gold-hi)}
.fu-body-i .fb .n{background:var(--btn-grad);color:var(--btn-txt)}

/* ══════════ 其它 ══════════ */
.guest-bar{margin:12px 22px 0;padding:12px 15px;border-radius:16px;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--gold-hi);
  background:linear-gradient(100deg,var(--warn-bg),transparent);border:1px solid var(--line-2)}
.guest-bar b{font-family:ui-monospace,Menlo,monospace;letter-spacing:1px}
.guest-bar button{margin-left:auto;font-size:11px;color:var(--txt-2);
  border:1px solid var(--line);border-radius:11px;padding:5px 11px}
.empty-hero{margin:12px 22px 0;padding:26px 20px;border-radius:var(--r);text-align:center;
  background:linear-gradient(160deg,var(--warn-bg),transparent);border:1px solid var(--line-2)}
.empty-hero .t{font-size:17px;font-weight:800;color:var(--gold-hi);letter-spacing:1px}
.empty-hero .d{font-size:13px;color:var(--txt-2);margin-top:9px;line-height:1.75}
.toast{position:fixed;left:50%;bottom:calc(96px + var(--safe));transform:translate(-50%,14px);
  padding:11px 20px;border-radius:14px;font-size:13.5px;font-weight:600;z-index:300;
  background:rgba(12,9,7,.95);color:var(--gold-hi);border:1px solid var(--line-2);
  box-shadow:0 12px 36px rgba(0,0,0,.6);max-width:82vw;text-align:center;
  opacity:0;pointer-events:none;transition:all .28s cubic-bezier(.3,.9,.4,1)}
.toast.on{opacity:1;transform:translate(-50%,0)}
