:root{
  --primary:#ff6a00; --primary-d:#e85d00; --bg:#f5f6f8; --card:#ffffff;
  --text:#222; --sub:#8a8f99; --line:#eee; --red:#e4393c; --green:#16a34a;
  --radius:14px; --shadow:0 2px 10px rgba(0,0,0,.06);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;height:100%;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--text);font-size:15px;line-height:1.5;
  overscroll-behavior-y:none;
}
#app{max-width:480px;margin:0 auto;min-height:100%;background:var(--bg);
  position:relative;padding-bottom:64px;}

/* 顶栏 */
.topbar{position:sticky;top:0;z-index:20;height:50px;background:var(--primary);
  color:#fff;display:flex;align-items:center;justify-content:space-between;
  padding:0 16px;box-shadow:0 1px 4px rgba(0,0,0,.1);}
.topbar-title{font-size:17px;font-weight:600;}
.sync-dot{width:9px;height:9px;border-radius:50%;background:#bfe9c8;display:inline-block;}
.sync-dot.off{background:#ffd0a0;}
.sync-dot.err{background:#ff9a9a;}

/* 页面 */
.page{padding:14px;animation:fade .2s ease;}
@keyframes fade{from{opacity:.4}to{opacity:1}}
.hidden,[hidden]{display:none!important;}

/* 卡片 */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:16px;margin-bottom:12px;}
.card h3{margin:0 0 10px;font-size:15px;}
.row{display:flex;align-items:center;justify-content:space-between;}
.muted{color:var(--sub);font-size:13px;}
.big{font-size:26px;font-weight:700;}
.red{color:var(--red);} .green{color:var(--green);}

/* 底部导航 */
.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);
  width:100%;max-width:480px;height:56px;background:#fff;border-top:1px solid var(--line);
  display:flex;z-index:30;}
.tab{flex:1;border:none;background:none;color:var(--sub);font-size:11px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:0;}
.tab .ico{font-size:20px;line-height:1;}
.tab.active{color:var(--primary);font-weight:600;}

/* FAB */
.fab{position:fixed;bottom:72px;left:50%;transform:translateX(-50%);
  width:54px;height:54px;border-radius:50%;background:var(--primary);color:#fff;
  border:none;font-size:30px;line-height:54px;box-shadow:0 4px 12px rgba(255,106,0,.4);
  z-index:31;}

/* 弹层 */
.sheet-mask{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:40;
  display:flex;align-items:flex-end;justify-content:center;}
.sheet{width:100%;max-width:480px;background:#fff;border-radius:18px 18px 0 0;
  max-height:90vh;display:flex;flex-direction:column;animation:slideup .25s ease;}
@keyframes slideup{from{transform:translateY(100%)}to{transform:translateY(0)}}
.sheet-head{display:flex;justify-content:space-between;align-items:center;
  padding:14px 16px;border-bottom:1px solid var(--line);font-weight:600;font-size:16px;}
.sheet-close{border:none;background:none;font-size:18px;color:var(--sub);}
.sheet-body{padding:16px;overflow:auto;}

/* 表单 */
label{display:block;font-size:13px;color:var(--sub);margin:12px 0 6px;}
input,select,textarea{width:100%;padding:11px 12px;border:1px solid var(--line);
  border-radius:10px;font-size:15px;background:#fff;color:var(--text);outline:none;}
input:focus,select:focus,textarea:focus{border-color:var(--primary);}
.seg{display:flex;background:#f0f1f3;border-radius:10px;padding:3px;gap:3px;}
.seg button{flex:1;border:none;background:none;padding:9px 0;border-radius:8px;
  font-size:14px;color:var(--sub);}
.seg button.on{background:#fff;color:var(--primary);font-weight:600;box-shadow:var(--shadow);}
.btn{width:100%;padding:13px;border:none;border-radius:12px;background:var(--primary);
  color:#fff;font-size:16px;font-weight:600;margin-top:16px;}
.btn.ghost{background:#f0f1f3;color:var(--text);}
.btn.sm{width:auto;padding:8px 14px;font-size:14px;margin:0;}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;}
.chip{padding:8px 12px;border:1px solid var(--line);border-radius:20px;font-size:13px;
  background:#fff;color:var(--text);}
.chip.on{border-color:var(--primary);background:#fff3ea;color:var(--primary);}
.chip.rec{background:var(--primary);color:#fff;border-color:var(--primary);}

/* 列表 */
.list{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;}
.list .item{display:flex;align-items:center;justify-content:space-between;
  padding:13px 16px;border-bottom:1px solid var(--line);}
.list .item:last-child{border-bottom:none;}
.list .item .l{display:flex;align-items:center;gap:10px;}
.avatar{width:34px;height:34px;border-radius:50%;background:#fff3ea;color:var(--primary);
  display:flex;align-items:center;justify-content:center;font-size:16px;}
.amount-neg{color:var(--red);} .amount-pos{color:var(--green);}

/* 统计 */
.bars{display:flex;align-items:flex-end;gap:8px;height:140px;padding:10px 4px 0;}
.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;}
.bar{width:60%;background:var(--primary);border-radius:5px 5px 0 0;min-height:2px;}
.bar.m{background:#ffd0a0;}
.bar-label{font-size:11px;color:var(--sub);margin-top:4px;}
.pie-wrap{display:flex;align-items:center;gap:14px;}
.pie-legend{flex:1;font-size:13px;}
.pie-legend div{display:flex;justify-content:space-between;padding:2px 0;}

/* 进度 */
.prog{height:10px;background:#f0f1f3;border-radius:6px;overflow:hidden;}
.prog>i{display:block;height:100%;background:var(--primary);}

/* AI */
.chat{display:flex;flex-direction:column;gap:10px;}
.bubble{max-width:82%;padding:10px 13px;border-radius:14px;font-size:14px;white-space:pre-wrap;word-break:break-word;}
.bubble.me{align-self:flex-end;background:var(--primary);color:#fff;border-bottom-right-radius:4px;}
.bubble.ai{align-self:flex-start;background:#f0f1f3;color:var(--text);border-bottom-left-radius:4px;}

/* toast */
.toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);
  background:rgba(0,0,0,.8);color:#fff;padding:12px 18px;border-radius:10px;
  font-size:14px;z-index:60;max-width:80%;text-align:center;}

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.grid2 .card{margin:0;}
.section-title{font-size:15px;font-weight:600;margin:6px 2px 8px;}
