
/* ================= 主题变量 ================= */
:root{
  --bg:#07080B;
  --panel:rgba(255,255,255,.045);
  --stroke:rgba(255,255,255,.075);
  --txt:#EDEFF3;
  --muted:#8E93A0;
  --ic:#C9CED8;
  --hi:rgba(255,255,255,.05);
  --shadow:0 24px 50px rgba(0,0,0,.34);
  --shadow-lg:0 30px 60px rgba(0,0,0,.4);
  --shadow-btn:0 14px 30px rgba(0,0,0,.42);

  --nav-bg:rgba(255,255,255,.05);
  --pill-bg:rgba(255,255,255,.07);
  --pill-hi:rgba(255,255,255,.13);
  --icon-bg:rgba(255,255,255,.07);
  --row-hover:rgba(255,255,255,.05);
  --soft:#FFFFFF;          /* 白色圆钮 */
  --soft-txt:#0B0C10;
  --thumb:#FFFFFF;
  --thumb-txt:#0A0B0F;

  --stat-in:linear-gradient(165deg,rgba(150,225,120,.16),rgba(255,255,255,.02) 60%);
  --stat-ex:linear-gradient(165deg,rgba(255,140,150,.13),rgba(255,255,255,.02) 60%);
  --side-bg:linear-gradient(170deg,rgba(140,130,200,.16),rgba(255,255,255,.03) 45%,rgba(255,255,255,.02));
  --logo-bg:linear-gradient(150deg,#1b1d24,#0d0e13);

  --bar-1:rgba(200,182,242,.85);
  --bar-2:rgba(150,128,214,.42);
  --bar-a1:rgba(228,215,255,1);
  --bar-a2:rgba(176,150,240,.55);
  --bar-txt:rgba(255,255,255,.85);
  --dot-ring:#FFFFFF;
  --dot-core:#6F57B8;

  --tip-bg:rgba(16,17,23,.9);
  --pos:#B9F86A;
  --card-shadow:0 12px 26px rgba(0,0,0,.35);
  --aurora:.75;

  --r:26px;
  --ease:cubic-bezier(.22,.8,.24,1);
}
body.light{
  --bg:#ECEEF3;
  --panel:rgba(255,255,255,.72);
  --stroke:rgba(15,18,25,.08);
  --txt:#14161C;
  --muted:#6E7480;
  --ic:#3A3F4B;
  --hi:rgba(255,255,255,.9);
  --shadow:0 18px 40px rgba(30,35,60,.10);
  --shadow-lg:0 24px 50px rgba(30,35,60,.13);
  --shadow-btn:0 14px 28px rgba(30,35,60,.18);

  --nav-bg:rgba(255,255,255,.7);
  --pill-bg:rgba(15,18,25,.06);
  --pill-hi:rgba(15,18,25,.11);
  --icon-bg:rgba(15,18,25,.05);
  --row-hover:rgba(15,18,25,.04);
  --soft:#12141A;
  --soft-txt:#FFFFFF;
  --thumb:#12141A;
  --thumb-txt:#FFFFFF;

  --stat-in:linear-gradient(165deg,rgba(120,205,80,.20),rgba(255,255,255,.6) 62%);
  --stat-ex:linear-gradient(165deg,rgba(255,120,135,.16),rgba(255,255,255,.6) 62%);
  --side-bg:linear-gradient(170deg,rgba(150,140,215,.24),rgba(255,255,255,.8) 45%,rgba(255,255,255,.65));
  --logo-bg:linear-gradient(150deg,#ffffff,#e9ebf1);

  --bar-1:#B7A3EE;
  --bar-2:#9079DC;
  --bar-a1:#C9B8FA;
  --bar-a2:#8A72DE;
  --bar-txt:#FFFFFF;
  --dot-ring:#FFFFFF;
  --dot-core:#6F57B8;

  --tip-bg:rgba(255,255,255,.94);
  --pos:#4E9A2E;
  --card-shadow:0 10px 22px rgba(30,35,60,.12);
  --aurora:.5;
}
/* 主题切换时统一柔和过渡 */
html.theming *{transition:all .45s var(--ease) !important}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:var(--bg);
  color:var(--txt);
  font-family:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;position:relative;min-height:100vh;padding:0 0 48px;
}
.aurora{position:fixed;border-radius:50%;filter:blur(120px);pointer-events:none;z-index:0;opacity:var(--aurora)}
.a1{width:720px;height:520px;left:-120px;top:60px;background:radial-gradient(circle at 40% 40%,rgba(150,225,120,.30),transparent 65%)}
.a2{width:640px;height:520px;right:-140px;top:-80px;background:radial-gradient(circle at 50% 50%,rgba(86,110,220,.28),transparent 65%)}
.a3{width:620px;height:520px;right:60px;top:420px;background:radial-gradient(circle at 50% 50%,rgba(150,110,220,.24),transparent 65%)}
.a4{width:520px;height:360px;left:22%;top:640px;background:radial-gradient(circle at 50% 50%,rgba(70,120,190,.16),transparent 65%)}

.reveal{opacity:0;transform:translateY(22px) scale(.985);animation:rise .85s var(--ease) forwards;animation-delay:var(--d,0s)}
@keyframes rise{to{opacity:1;transform:none}}

.wrap{position:relative;z-index:1;max-width:1440px;margin:0 auto;padding:22px 34px 0}

/* ---------- header ---------- */
header{display:flex;align-items:center;justify-content:space-between;gap:20px}
.brand{display:flex;align-items:center;gap:12px}
.logo{
  width:38px;height:38px;border-radius:12px;display:grid;place-items:center;
  background:var(--logo-bg);border:1px solid var(--stroke);
  box-shadow:0 8px 22px rgba(0,0,0,.18), inset 0 1px 0 var(--hi);
}
.logo svg path{stroke:var(--txt)}
.brand h2{font-size:22px;font-weight:700;letter-spacing:-.4px}

.nav{
  position:relative;display:flex;align-items:center;gap:4px;
  background:var(--nav-bg);border:1px solid var(--stroke);
  padding:6px;border-radius:999px;backdrop-filter:blur(18px);
  box-shadow:0 14px 34px rgba(0,0,0,.18), inset 0 1px 0 var(--hi);
}
.nav .thumb{
  position:absolute;top:6px;left:0;height:calc(100% - 12px);border-radius:999px;
  background:var(--thumb);box-shadow:0 6px 16px rgba(0,0,0,.28);
  transition:transform .5s var(--ease), width .5s var(--ease);z-index:0;
}
.nav button{
  position:relative;z-index:1;border:0;background:transparent;cursor:pointer;
  font:600 13.5px/1 'Plus Jakarta Sans',sans-serif;color:var(--muted);
  padding:11px 18px;border-radius:999px;transition:color .35s ease;white-space:nowrap;
}
.nav button.on{color:var(--thumb-txt)}
.nav button:hover{color:var(--txt)}
.nav button.on:hover{color:var(--thumb-txt)}

.sw{
  width:42px;height:24px;border-radius:999px;background:var(--pill-bg);
  border:1px solid var(--stroke);position:relative;cursor:pointer;flex:0 0 auto;margin-right:4px;
}
.sw::after{
  content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;
  background:var(--thumb);transition:transform .45s var(--ease);box-shadow:0 2px 6px rgba(0,0,0,.35);
}
.sw.on::after{transform:translateX(18px)}

.hactions{display:flex;align-items:center;gap:12px}
.iconbtn{
  width:44px;height:44px;border-radius:50%;display:grid;place-items:center;cursor:pointer;
  background:var(--icon-bg);border:1px solid var(--stroke);color:var(--ic);
  backdrop-filter:blur(14px);transition:transform .35s var(--ease),background .3s;
}
.iconbtn:hover{transform:translateY(-2px);background:var(--pill-hi)}
.avatar{
  width:46px;height:46px;border-radius:50%;position:relative;overflow:hidden;cursor:pointer;
  background:linear-gradient(150deg,#f5a38a,#d76b8f 55%,#7f5bd6);
  border:2px solid rgba(255,255,255,.16);transition:transform .35s var(--ease);
}
.avatar:hover{transform:translateY(-2px) scale(1.04)}
.avatar::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.45),transparent 55%)}
.avatar span{position:absolute;inset:0;display:grid;place-items:center;font-weight:800;font-size:14px;color:#fff;letter-spacing:.5px}

h1.page{font-size:56px;font-weight:700;letter-spacing:-2px;margin:30px 0 26px}

/* ---------- layout ---------- */
.layout{display:grid;grid-template-columns:minmax(0,1fr) 342px;gap:20px;align-items:start}
.main{display:flex;flex-direction:column;gap:20px}
.row{display:flex;gap:20px}
.card{
  position:relative;border-radius:var(--r);background:var(--panel);
  border:1px solid var(--stroke);backdrop-filter:blur(22px);
  box-shadow:var(--shadow), inset 0 1px 0 var(--hi);overflow:hidden;
}
.clabel{font-size:15px;font-weight:600;color:var(--txt)}
.chead{display:flex;align-items:center;justify-content:space-between;padding:22px 24px 6px}
.pill{
  display:inline-flex;align-items:center;gap:8px;padding:8px 15px;border-radius:999px;
  background:var(--pill-bg);border:1px solid var(--stroke);
  font:600 12.5px/1 'Plus Jakarta Sans',sans-serif;color:var(--txt);cursor:pointer;
  transition:background .3s,transform .3s var(--ease);
}
.pill:hover{background:var(--pill-hi);transform:translateY(-1px)}

/* ---------- 总资产 ---------- */
.balance{
  flex:2.02;min-height:250px;padding:26px 30px;display:flex;flex-direction:column;justify-content:space-between;
  background:linear-gradient(135deg,#b3ef9e 0%,#cdf08c 42%,#dff0a2 58%,#cfe6c6 100%);
  border:1px solid rgba(255,255,255,.35);color:#12240F;
}
.balance .blob{position:absolute;border-radius:50%;filter:blur(46px);pointer-events:none}
.balance .b1{width:300px;height:230px;right:-40px;top:-70px;background:rgba(186,166,242,.85)}
.balance .b2{width:260px;height:220px;right:-30px;bottom:-70px;background:rgba(255,238,196,.9)}
.balance .fold{
  position:absolute;width:420px;height:230px;right:-40px;bottom:-100px;transform:rotate(-18deg);
  background:linear-gradient(120deg,rgba(255,255,255,.55),rgba(255,255,255,.05));
  border-radius:70px;filter:blur(2px);opacity:.55;
}
.balance .inner{position:relative;z-index:2}
.balance .cap{font-size:17px;font-weight:700;color:#223318;letter-spacing:-.2px}
.big{font-size:52px;font-weight:300;letter-spacing:-2px;line-height:1.05;margin-top:14px;display:flex;align-items:flex-start;gap:4px}
.big sup{font-size:22px;font-weight:500;line-height:1;margin-top:6px}
.sub{font-size:12.5px;font-weight:600;color:#3d4d2f;margin-top:10px;opacity:.85}
.bactions{display:flex;align-items:center;gap:12px;position:relative;z-index:2}
.btn{
  border:0;cursor:pointer;font:700 13.5px/1 'Plus Jakarta Sans',sans-serif;
  padding:16px 30px;border-radius:999px;transition:transform .35s var(--ease),box-shadow .35s var(--ease),background .3s;
}
.btn.dark{background:#0B0C10;color:#fff;box-shadow:0 10px 24px rgba(0,0,0,.3)}
.btn.dark:hover{transform:translateY(-3px);box-shadow:var(--shadow-btn)}
.btn.light{background:#fff;color:#111}
.btn.light:hover{transform:translateY(-3px);box-shadow:0 14px 28px rgba(0,0,0,.2)}
.btn.round{width:52px;height:52px;padding:0;border-radius:50%;background:#fff;color:#111;display:grid;place-items:center}
.btn.round:hover{transform:translateY(-3px) rotate(180deg)}
.credit-balance{flex-direction:row;align-items:stretch;gap:20px;overflow:hidden}
.credit-left{position:relative;z-index:2;min-width:0;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;text-align:center}
.credit-balance .cap{font-size:17px}
.credit-balance .big{font-size:52px;font-weight:500;letter-spacing:-2px;line-height:1;margin:0;align-items:baseline}
.credit-balance .big sup{font-size:16px;font-weight:700;letter-spacing:0;margin:0 0 0 5px}
.credit-balance .bactions{margin-top:3px}
.credit-balance .bactions .btn{padding:10px 25px;font-size:14px}
.credit-profile{position:relative;z-index:2;flex:0 0 248px;border-left:1px solid rgba(34,51,24,.18);padding-left:18px;display:flex;flex-direction:column;justify-content:center;gap:10px}
.credit-profile-top{display:flex;align-items:center;gap:11px}
.credit-avatar{position:relative;flex:0 0 62px;width:62px;height:62px;border-radius:50%;border:3px solid rgba(255,255,255,.9);box-shadow:0 6px 18px rgba(47,65,35,.17);cursor:pointer}
.credit-avatar img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%}
.credit-avatar .upload-dot{position:absolute;right:-4px;bottom:-3px;width:23px;height:23px;border-radius:50%;display:grid;place-items:center;background:#182315;color:white;border:2px solid white;font-size:16px;font-weight:600;line-height:1}
.credit-avatar:hover{transform:translateY(-2px)}
.credit-account{display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-width:0}
.credit-account strong{font-size:14px;color:#1b2c19;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.credit-account .type{padding:4px 9px;border-radius:999px;background:rgba(255,255,255,.56);color:#2f4d25;font-size:14px;font-weight:700;white-space:nowrap}
.credit-expire{display:flex;justify-content:space-between;align-items:center;gap:8px;background:rgba(255,255,255,.44);border:1px solid rgba(255,255,255,.5);border-radius:12px;padding:7px 9px;color:#304227;font-size:14px;font-weight:600;white-space:nowrap}
.credit-expire b{font-size:14px;color:#1d3314}

/* ---------- 收入 / 支出 ---------- */
.stats{flex:1;display:flex;flex-direction:column;gap:20px}
.stat{flex:1;padding:20px 22px;display:flex;flex-direction:column;justify-content:space-between;min-height:112px}
.stat .num{font-size:34px;font-weight:300;letter-spacing:-1.2px;margin-top:8px;display:flex;align-items:flex-start;gap:3px}
.stat .num sup{font-size:15px;font-weight:500;margin-top:4px}
.stat .foot{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-top:10px}
.stat .foot p{font-size:11.5px;color:var(--muted);font-weight:500}
.chg{font:700 11.5px/1 'Plus Jakarta Sans',sans-serif;padding:8px 11px;border-radius:999px;white-space:nowrap}
.chg.up{color:#0B0C10;background:linear-gradient(140deg,#cdf581,#a9ec6a);box-shadow:0 6px 16px rgba(169,236,106,.25)}
.chg.down{color:#fff;background:linear-gradient(140deg,#ff8b8b,#f96a6a);box-shadow:0 6px 16px rgba(249,106,106,.25)}
.stat.income{background:var(--stat-in)}
.stat.expense{background:var(--stat-ex)}
.dashboard-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;flex:0 0 auto}
.dashboard-shop-picker{display:none;align-items:center;gap:9px;padding:8px 12px;border:1px solid var(--stroke);border-radius:14px;background:var(--panel);box-shadow:inset 0 1px 0 var(--hi);font-size:14px;color:var(--muted)}
.dashboard-shop-picker.visible{display:flex}
.dashboard-shop-picker select{max-width:220px;min-width:110px;border:0;outline:0;background:transparent;color:var(--txt);font:600 14px 'Plus Jakarta Sans',sans-serif;cursor:pointer}
.dashboard-shop-picker option{color:#14161C}
.stat .foot p{font-size:14px}
.stat .chg{font-size:14px;padding:6px 10px}

/* ---------- 销量走势 ---------- */
.revenue{flex:1;padding-bottom:14px}
.rhead{display:flex;align-items:center;gap:10px}
.sales-period-select{min-width:84px;font-size:14px}
.sales-period-select option{color:#14161C}
.bars{position:relative;height:172px;margin:22px 22px 0;display:flex;align-items:flex-end;gap:14px}
.bcol{flex:1;height:100%;display:flex;align-items:flex-end;position:relative}
.bar{
  width:100%;height:0;border-radius:16px 16px 12px 12px;position:relative;cursor:pointer;
}
.bar::before{
  content:'';position:absolute;inset:0;border-radius:inherit;
  background:linear-gradient(180deg,var(--bar-1),var(--bar-2));
  transform-origin:bottom;animation:trend-bar-rise .65s var(--ease) both;
  animation-delay:var(--bar-delay,0ms);
}
@keyframes trend-bar-rise{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.bar:hover::before,.bcol.active .bar::before{
  background:linear-gradient(180deg,var(--bar-a1),var(--bar-a2));
}
.bar .v{
  position:absolute;bottom:10px;left:0;right:0;text-align:center;
  font:700 11.5px/1 'Plus Jakarta Sans',sans-serif;color:var(--bar-txt);
}
.bcol.is-small .v{bottom:calc(100% + 5px);color:var(--txt);white-space:nowrap}
.bcol.is-zero .dot{display:none}
.dot{
  position:absolute;top:-7px;left:50%;width:15px;height:15px;margin-left:-7.5px;border-radius:50%;
  border:3.5px solid var(--dot-ring);background:var(--dot-core);opacity:0;transform:scale(.4);
  transition:opacity .35s,transform .45s var(--ease);box-shadow:0 4px 12px rgba(0,0,0,.35);
}
.bcol.active .dot{opacity:1;transform:scale(1)}
.months{display:flex;gap:14px;margin:12px 22px 0}
.months span{flex:1;text-align:center;font:600 11.5px/1 'Plus Jakarta Sans',sans-serif;color:var(--muted)}
.months span.on{color:var(--txt)}
.tip{
  position:absolute;transform:translate(-50%,-100%) translateY(6px);pointer-events:none;
  background:var(--tip-bg);border:1px solid var(--stroke);backdrop-filter:blur(14px);
  border-radius:14px;padding:9px 13px;display:flex;align-items:center;gap:9px;white-space:nowrap;
  box-shadow:0 14px 30px rgba(0,0,0,.25);opacity:0;visibility:hidden;
  transition:opacity .18s,transform .18s,visibility .18s;
}
.tip.is-visible{opacity:1;visibility:visible;transform:translate(-50%,-100%) translateY(0)}
.tip .ico{width:22px;height:22px;border-radius:50%;background:var(--pill-bg);display:grid;place-items:center;color:var(--ic)}
.tip b{font-size:13px;font-weight:700;display:block;color:var(--txt)}
.tip i{font-style:normal;font-size:10.5px;color:var(--pos);font-weight:700}

/* ---------- 支出分布 ---------- */
.split{flex:1;padding-bottom:18px}
.splitbody{display:flex;align-items:center;gap:18px;padding:6px 24px 4px}
.donut{position:relative;width:158px;height:158px;flex:0 0 158px}
.donut svg{transform:rotate(-90deg);overflow:visible}
.donut circle{fill:none;stroke-linecap:round;transition:stroke-dasharray 1.15s var(--ease), opacity .3s, stroke-width .3s;cursor:pointer}
.donut circle:hover{stroke-width:16;opacity:1}
.dcenter{position:absolute;inset:0;display:grid;place-content:center;text-align:center}
.dcenter span{font-size:11.5px;color:var(--muted);font-weight:600}
.dcenter b{font-size:26px;font-weight:300;letter-spacing:-1px;display:flex;align-items:flex-start;justify-content:center;gap:2px;margin-top:2px}
.dcenter b sup{font-size:12px;font-weight:500;margin-top:3px}
.legend{display:grid;grid-template-columns:1fr 1fr;gap:14px 12px;flex:1}
.lg .t{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--txt);font-weight:600}
.lg .t i{width:3px;height:13px;border-radius:2px;display:inline-block}
.lg .p{font-size:15px;font-weight:600;margin-top:3px;padding-left:10px}

/* ---------- 最近交易 ---------- */
.tx{padding-bottom:8px}
.txrow{
  display:grid;grid-template-columns:1.5fr .8fr 1.1fr .7fr .8fr 34px;align-items:center;gap:12px;
  padding:14px 24px;border-radius:18px;transition:background .3s;
  opacity:0;transform:translateY(14px);animation:rise .7s var(--ease) forwards;animation-delay:var(--d);
}
.txrow:hover{background:var(--row-hover)}
.who{display:flex;align-items:center;gap:13px;font-weight:600;font-size:14px}
.tico{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--icon-bg);border:1px solid var(--stroke)}
.tico svg{fill:var(--ic)}
.tag{font:700 11px/1 'Plus Jakarta Sans',sans-serif;padding:7px 11px;border-radius:999px;color:#0B0C10;background:linear-gradient(140deg,#cdf581,#a9ec6a);justify-self:start}
.tag.grey{background:var(--pill-bg);color:var(--muted)}
.meta{font-size:12.5px;color:var(--muted);font-weight:500}
.amt{text-align:right;font-size:16px;font-weight:700}
.amt.neg{color:var(--txt)}
.amt.pos{color:var(--pos)}
.kebab{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:18px;line-height:1;transition:color .3s}
.kebab:hover{color:var(--txt)}

/* ---------- 侧栏 ---------- */
.sidebar{
  border-radius:34px;padding:24px 22px 22px;position:relative;overflow:hidden;
  background:var(--side-bg);border:1px solid var(--stroke);backdrop-filter:blur(24px);
  box-shadow:var(--shadow-lg), inset 0 1px 0 var(--hi);
}
.sidebar .halo{position:absolute;width:340px;height:280px;right:-110px;top:-120px;border-radius:50%;filter:blur(70px);background:rgba(120,140,240,.3);pointer-events:none}
.sidehead{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2}
.sidehead h3{font-size:19px;font-weight:700;letter-spacing:-.3px;display:flex;align-items:flex-start;gap:3px}
.sidehead h3 sup,.subhead h3 sup{font-size:11px;font-weight:700;color:var(--muted);margin-top:2px}
.addbtn{
  display:flex;align-items:center;gap:12px;padding:6px 6px 6px 18px;border-radius:999px;cursor:pointer;
  background:var(--pill-bg);border:1px solid var(--stroke);font:700 12.5px/1 'Plus Jakarta Sans',sans-serif;color:var(--txt);
  transition:transform .35s var(--ease),background .3s;
}
.addbtn:hover{transform:translateY(-2px);background:var(--pill-hi)}
.addbtn i{width:30px;height:30px;border-radius:50%;background:var(--soft);color:var(--soft-txt);display:grid;place-items:center;font-style:normal}

/* 卡片堆 */
.stack{position:relative;height:212px;margin:22px 0 26px;z-index:2}
.pcard{
  position:absolute;left:0;right:0;height:64px;border-radius:16px;padding:0 18px;
  display:flex;align-items:center;justify-content:space-between;
  font-weight:700;font-size:14px;letter-spacing:.3px;color:rgba(20,15,35,.85);
  box-shadow:var(--card-shadow);transition:transform .6s var(--ease), box-shadow .5s;
  transform:translateY(var(--y));
}
.pcard .no{font:700 12px/1 'Plus Jakarta Sans',sans-serif;letter-spacing:1px;opacity:.7}
.pcard.c1{--y:0px;background:linear-gradient(120deg,#f7b98a,#f0a06c)}
.pcard.c2{--y:26px;background:linear-gradient(120deg,#79e2d0,#5fc9c0)}
.pcard.c3{--y:52px;background:linear-gradient(120deg,#b7a4ec,#8f7bd8);color:rgba(255,255,255,.92)}
.pcard.c4{
  --y:88px;height:118px;border-radius:20px;flex-direction:column;align-items:flex-start;justify-content:center;gap:10px;
  background:linear-gradient(135deg,rgba(186,172,240,.95),rgba(140,124,214,.88));
  color:#fff;padding:0 20px;backdrop-filter:blur(10px);
}
.pcard.c4 .n{font-size:17px;font-weight:600;letter-spacing:1.2px}
.pcard.c4 .row2{display:flex;align-items:center;gap:26px;font-size:12px;font-weight:600;opacity:.92}
.stack:hover .c1{transform:translateY(-30px) scale(.98)}
.stack:hover .c2{transform:translateY(-8px) scale(.99)}
.stack:hover .c3{transform:translateY(12px)}
.stack:hover .c4{transform:translateY(88px) scale(1.01);box-shadow:0 20px 40px rgba(0,0,0,.3)}

/* 备忘录 */
.subs{position:relative;z-index:2;display:flex;flex-direction:column;min-height:0;flex:1}
.subhead{display:flex;align-items:center;justify-content:space-between}
.subhead h3{font-size:18px;font-weight:700;display:flex;align-items:flex-start;gap:3px}
.subhead h3 sup{font-size:14px}
.manage{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer;transition:color .3s}
.manage:hover{color:var(--txt)}
.memo-add{border:1px solid var(--stroke);border-radius:999px;background:var(--pill-bg);color:var(--txt);padding:8px 13px;font:700 14px/1 'Plus Jakarta Sans',sans-serif;cursor:pointer}
.memo-add:hover{background:var(--pill-hi)}
.memo-add:disabled{opacity:.5;cursor:not-allowed}
.apps{display:flex;align-items:center;gap:9px;margin:18px 0}
.app{
  width:42px;height:42px;border-radius:50%;display:grid;place-items:center;overflow:hidden;font-size:22px;
  border:1px solid rgba(255,255,255,.1);cursor:pointer;
  transition:transform .4s var(--ease), box-shadow .4s;
}
.app:hover{transform:translateY(-6px) scale(1.06);box-shadow:0 14px 26px rgba(0,0,0,.3)}
.app[aria-pressed="true"]{outline:2px solid var(--txt);outline-offset:3px}
.memo-list{min-height:0;overflow-y:auto;scrollbar-width:thin;padding-right:2px}
.srow{
  display:flex;align-items:flex-start;gap:11px;padding:12px 14px;border-radius:18px;margin-bottom:10px;
  background:var(--pill-bg);border:1px solid var(--stroke);cursor:pointer;
  transition:transform .35s var(--ease),background .3s,border-color .3s;
}
.srow:hover{transform:translateX(4px);background:var(--pill-hi)}
.srow .si{width:32px;height:32px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--icon-bg);font-size:17px}
.srow .nm{flex:1;min-width:0}
.srow .nm b{font-size:14px;font-weight:700;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.srow .nm span{font-size:14px;color:var(--muted);font-weight:600;display:block;margin-top:5px}
.memo-row-actions{display:flex;gap:8px;align-items:center;margin-top:7px}
.memo-row-actions button,.memo-more{border:0;background:none;color:var(--muted);font:600 14px/1 'Plus Jakarta Sans',sans-serif;cursor:pointer}
.memo-row-actions button:hover,.memo-more:hover{color:var(--txt)}
.memo-empty{padding:24px 10px;text-align:center;color:var(--muted);font-size:14px;line-height:1.6}
.memo-more{padding:10px;width:100%;text-align:center}
.memo-editor{min-height:0;overflow-y:auto;padding:14px;border:1px solid var(--stroke);border-radius:18px;background:var(--pill-bg);scrollbar-width:thin}
.memo-editor[hidden],.memo-list[hidden],.apps[hidden]{display:none}
.memo-editor-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:14px}
.memo-editor-head button{border:0;background:none;color:var(--muted);font-size:20px;cursor:pointer}
.memo-editor label{display:block;margin:12px 0 5px;color:var(--muted);font-size:14px;font-weight:600}
.memo-editor input,.memo-editor textarea,.memo-editor select{width:100%;min-height:35px;padding:8px 10px;border:1px solid var(--stroke);border-radius:10px;background:var(--panel);color:var(--txt);font:500 14px/1.3 'Plus Jakarta Sans',sans-serif;color-scheme:dark}
body.light .memo-editor input,body.light .memo-editor textarea,body.light .memo-editor select{color-scheme:light}
.memo-editor textarea{resize:vertical;min-height:65px;max-height:130px}
.memo-editor option{color:#16181e}
.memo-editor .memo-check{display:flex;align-items:center;gap:9px;margin:12px 0;color:var(--txt)}
.memo-editor .memo-check input{width:16px;min-height:16px;accent-color:#9d89db}
.memo-editor-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.memo-editor-actions button{border:1px solid var(--stroke);border-radius:999px;background:var(--pill-bg);color:var(--txt);padding:8px 13px;font:700 14px/1 'Plus Jakarta Sans',sans-serif;cursor:pointer}
.memo-editor-actions button[type="submit"]{background:var(--soft);color:var(--soft-txt)}
.memo-error{min-height:16px;color:#e47f8c;font-size:14px;margin-top:5px}

@media(max-width:1180px){
  .layout{grid-template-columns:1fr}
  .row{flex-direction:column}
  h1.page{font-size:42px}
}
@media(max-width:720px){
  .wrap{padding:16px 16px 0}
  header{flex-wrap:wrap;justify-content:center}
  .nav{order:3;width:100%;overflow:auto}
  .big{font-size:40px}
  .splitbody{flex-direction:column}
  .txrow{grid-template-columns:1fr 1fr;gap:8px}
  .txrow .meta:nth-child(3){display:none}
}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;transition-duration:.01ms !important}
}
/* 单窗口桌面布局：保持两列并压缩纵向间距 */
html, body { height: 100%; overflow: hidden; overscroll-behavior: none; }
body { min-height: 0; padding: 0; }
.wrap {
  max-width: none; height: 100%; padding: 14px 22px;
  display: flex; flex-direction: column;
}
header { flex: 0 0 auto; }
h1.page { flex: 0 0 auto; font-size: clamp(32px, 3vw, 46px); line-height: 1.05; margin: 10px 0; }
.layout {
  flex: 1; min-height: 0; align-items: stretch; gap: 14px;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 26%);
}
.main {
  min-height: 0; display: grid; gap: 12px;
  grid-template-rows: minmax(160px, .9fr) minmax(180px, 1fr) minmax(205px, 1fr);
}
.row { min-height: 0; flex-direction: row; gap: 12px; }
.card { min-height: 0; }
.balance { min-height: 0; padding: 17px 20px; }
.big { font-size: 40px; margin-top: 7px; }
.sub { margin-top: 6px; }
.bactions { gap: 8px; }
.btn { padding: 12px 20px; }
.btn.round { width: 40px; height: 40px; }
.stats { gap: 12px; }
.stat { min-height: 0; padding: 11px 15px; }
.stat .num { font-size: 28px; margin-top: 3px; }
.stat .foot { margin-top: 3px; }
.chead { padding: 11px 17px 4px; }
.revenue, .split { padding-bottom: 8px; }
.bars { height: clamp(100px, 14vh, 155px); margin: 8px 16px 0; }
.months { margin: 6px 16px 0; }
.splitbody { padding: 0 12px; gap: 8px; }
.donut { width: 128px; height: 128px; flex: 0 0 128px; }
.donut svg { width: 128px; height: 128px; }
.legend { gap: 8px; }
.tx { padding-bottom: 4px; }
.txrow { padding: 7px 16px; }
.sidebar { padding: 16px 16px 12px; border-radius: 24px; display:flex;flex-direction:column;min-height:0; }
.stack { height: 158px; margin: 12px 0 14px; }
.pcard { height: 52px; padding: 0 12px; }
.pcard.c2 { --y: 20px; }
.pcard.c3 { --y: 40px; }
.pcard.c4 { --y: 64px; height: 88px; padding: 0 16px; }
.stack:hover .c4 { transform: translateY(64px) scale(1.01); }
.apps { margin: 10px 0; }
.app { width: 36px; height: 36px; }
.srow { padding: 7px 10px; margin-bottom: 6px; }
.srow .si { width: 30px; height: 30px; }
@media (max-width: 1320px), (max-height: 760px) {
  html, body { height: auto; min-height: 100%; overflow-x: hidden; overflow-y: auto; }
  .wrap { height: auto; min-height: 100vh; }
  .layout { flex: none; grid-template-columns: minmax(0, 1fr); }
  .main { display: flex; flex-direction: column; }
  .row { flex-direction: column; }
  .balance { min-height: 240px; }
  .stat { min-height: 112px; }
  .revenue, .split { min-height: 240px; }
}

[data-web-style="web-static-1cdb9257f51f"]{--d:.08s}
[data-web-style="web-static-fa1fcc284d2f"]{--d:.14s}
[data-web-style="web-static-b395f69c8a3a"]{--d:.2s}
[data-web-style="web-static-d6d39b564f58"]{--d:.26s}
[data-web-style="web-static-d9c1009e1e8b"]{--d:.32s}
[data-web-style="web-static-1bca2e065907"]{--d:.38s}
[data-web-style="web-static-53c12ee58c51"]{--d:.44s}
[data-web-style="web-static-c2ffb7372109"]{display:flex;align-items:flex-start;gap:6px}
[data-web-style="web-static-50efbbd0a115"]{font-size:11px;color:var(--muted)}
[data-web-style="web-static-99ba58c036cd"]{--d:.24s}
