:root{
  --brand:#2eb84e;
  --brand-d:#1f9a3f;
  --brand-l:#eaf8ee;
  --ink:#1b2330;
  --ink-2:#5b6675;
  --muted:#93a0b0;
  --line:#eef1f4;
  --bg:#f4f6f8;
  --warn:#f59e0b;
  --danger:#e5484d;
  --radius:14px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  background:#e9edf1;
  color:var(--ink);
  font-size:15px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input{font-family:inherit}

/* 手机画布 */
.screen{
  max-width:460px;
  margin:0 auto;
  min-height:100vh;
  background:var(--bg);
  position:relative;
  display:flex;
  flex-direction:column;
}

/* ---------------- 登录 ---------------- */
.screen-login{
  background:
    radial-gradient(120% 60% at 50% -10%, #d9f5e1 0%, #f4f6f8 55%, #f4f6f8 100%);
  padding:0 22px 24px;
  justify-content:center;
}
.login-hero{text-align:center;padding:48px 0 26px}
.brand-mark{
  width:62px;height:62px;border-radius:20px;margin:0 auto 16px;
  background:linear-gradient(135deg,#4fd06c,#1f9a3f);
  color:#fff;font-size:28px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 12px 26px rgba(46,184,78,.32);
}
.login-hero h1{font-size:21px;margin:0 0 6px;letter-spacing:.5px}
.login-hero p{margin:0;color:var(--muted);font-size:13px}
.login-card{background:#fff;border-radius:20px;padding:22px 18px 18px;box-shadow:0 10px 34px rgba(24,40,70,.07)}
.field{margin-bottom:14px}
.field label{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:7px;font-weight:500}
.field input{
  width:100%;height:46px;border-radius:11px;border:1px solid #e3e8ee;background:#fafbfc;
  padding:0 14px;font-size:15px;color:var(--ink);outline:none;transition:.18s;
}
.field input:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(46,184,78,.12)}
.login-err{color:var(--danger);font-size:12.5px;min-height:18px;margin:-4px 0 6px}
.btn{
  height:46px;border-radius:11px;font-size:15.5px;font-weight:600;
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  transition:.18s;padding:0 18px;
}
.btn-primary{background:linear-gradient(135deg,#3cc257,#22a343);color:#fff;box-shadow:0 8px 18px rgba(46,184,78,.28)}
.btn-primary:active{transform:translateY(1px);box-shadow:0 4px 10px rgba(46,184,78,.24)}
.btn-primary[disabled]{opacity:.55;box-shadow:none}
.btn-block{width:100%}
.btn-ghost{background:#f2f4f7;color:var(--ink-2)}
.login-tip{margin-top:14px;text-align:center;font-size:11.5px;color:var(--muted)}
.login-foot{text-align:center;font-size:11px;color:#b6c0cc;padding:26px 0 6px}

/* ---------------- 首页 ---------------- */
.home-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 18px 12px;
  background:linear-gradient(180deg,#e8f8ec 0%,rgba(244,246,248,0) 100%);
}
.hi{display:flex;align-items:center;gap:11px}
.avatar{
  width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#4fd06c,#1f9a3f);
  color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:17px;
}
.hi-name{font-size:17px;font-weight:600}
.hi-sub{font-size:12px;color:var(--muted);margin-top:1px}
.icon-btn{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#5c6879}
.icon-btn:active{background:#e7ecf1}
.home-body{padding:4px 16px 30px;flex:1}
.sec-title{font-size:13px;color:var(--muted);font-weight:500;margin:16px 4px 9px;letter-spacing:.3px}

.card-hero{
  border-radius:18px;padding:18px;color:#fff;position:relative;overflow:hidden;
  background:linear-gradient(135deg,#45c860 0%,#1c9a3d 100%);
  box-shadow:0 12px 26px rgba(31,154,63,.26);
}
.card-hero::after{
  content:"";position:absolute;right:-40px;top:-50px;width:170px;height:170px;border-radius:50%;
  background:rgba(255,255,255,.09);
}
.card-hero::before{
  content:"";position:absolute;right:-10px;bottom:-70px;width:120px;height:120px;border-radius:50%;
  background:rgba(255,255,255,.06);
}
.card-hero .ch-top{display:flex;justify-content:space-between;align-items:flex-start;position:relative;z-index:1}
.ch-title{font-size:13.5px;opacity:.95}
.ch-date{font-size:11.5px;opacity:.8;margin-top:3px}
.ch-badge{
  background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.35);
  font-size:11.5px;padding:3px 9px;border-radius:20px;white-space:nowrap;
}
.ch-badge.done{background:#fff;color:#1c9a3d;border-color:#fff;font-weight:600}
.ch-amount{font-size:33px;font-weight:700;letter-spacing:.3px;margin:14px 0 2px;position:relative;z-index:1}
.ch-amount small{font-size:17px;margin-right:2px;font-weight:600}
.ch-label{font-size:12px;opacity:.85;position:relative;z-index:1}
.ch-foot{
  display:flex;align-items:center;justify-content:space-between;
  margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.22);
  font-size:12.5px;position:relative;z-index:1;
}
.ch-foot .go{display:flex;align-items:center;gap:3px}

.list-item{
  background:#fff;border-radius:14px;padding:14px 15px;display:flex;align-items:center;
  justify-content:space-between;margin-bottom:9px;box-shadow:0 2px 8px rgba(24,40,70,.04);
}
.list-item:active{background:#fafcfa}
.li-main{display:flex;flex-direction:column;gap:2px}
.li-title{font-size:14.5px;font-weight:500}
.li-sub{font-size:11.5px;color:var(--muted)}
.li-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.li-amt{font-size:15.5px;font-weight:600;color:#1b2330}
.li-amt small{font-size:11px;font-weight:500;color:var(--muted);margin-right:1px}
.tag{font-size:11px;padding:1.5px 7px;border-radius:20px}
.tag-wait{background:#fff6e6;color:#c47a00}
.tag-done{background:var(--brand-l);color:#1f9a3f}
.empty{text-align:center;color:var(--muted);padding:46px 0;font-size:13.5px}
.home-tip{margin:26px 6px 0;text-align:center;font-size:11.5px;color:#bcc6d1;line-height:1.9}
.empty-ico{font-size:30px;margin-bottom:8px}
.empty-sub{font-size:12px;color:#b6c0cc;margin-top:4px}

/* ---------------- 详情 ---------------- */
.screen-detail{background:var(--bg)}
.detail-head{
  position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;
  height:52px;padding:0 8px;background:rgba(255,255,255,.96);backdrop-filter:saturate(180%) blur(8px);
  border-bottom:1px solid var(--line);
}
.detail-title{font-size:16px;font-weight:600}
.detail-body{flex:1;padding-bottom:92px}
.amount-card{
  background:#fff;padding:26px 18px 20px;text-align:center;position:relative;overflow:hidden;
}
.amount-card::after{
  content:"";position:absolute;left:-30px;top:-40px;width:150px;height:150px;border-radius:50%;
  background:radial-gradient(circle,#eafaf0 0%,rgba(255,255,255,0) 70%);
}
.amount-big{font-size:30px;font-weight:700;letter-spacing:.2px;position:relative}
.amount-big small{font-size:17px;margin-right:2px}
.amount-sub{color:var(--muted);font-size:12.5px;margin-top:6px}
.amount-meta{color:#aab4c1;font-size:11.5px;margin-top:10px}
.notice-bar{
  background:#fffbf0;color:#b47300;font-size:12.5px;padding:10px 16px;
  border-top:1px solid #fdf2dd;border-bottom:1px solid #fdf2dd;
}
.items{background:#fff;margin-top:10px}
.group-head{
  padding:13px 16px 9px;font-size:12.5px;color:var(--muted);background:#fafbfc;
  border-bottom:1px solid var(--line);letter-spacing:.3px;
}
.row{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--line)}
.row:last-child{border-bottom:none}
.row .k{color:#39424f;font-size:14px}
.row .v{color:#1b2330;font-size:14px;font-variant-numeric:tabular-nums;font-weight:500}
.row.sum .k,.row.sum .v{font-weight:700}
.row.sum{background:#fbfefc}
.row.net .v{color:#1f9a3f;font-size:16px}
.row.net{background:var(--brand-l)}

.sign-block{background:#fff;margin-top:10px;padding:16px}
.sign-block .sb-title{font-size:12.5px;color:var(--muted);margin-bottom:10px}
.sign-img-wrap{
  border:1px dashed #cfe9d8;border-radius:12px;background:#fbfdfb;padding:6px;
}
.sign-img-wrap img{margin:0 auto;max-height:110px}
.signed-meta{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:12.5px;color:#1f9a3f}
.stamp{
  display:inline-flex;align-items:center;gap:4px;border:1.5px solid #46b96a;color:#1f9a3f;
  border-radius:6px;padding:2px 8px;font-size:11.5px;font-weight:600;transform:rotate(-4deg);
}
.detail-bar{
  position:fixed;bottom:0;left:0;right:0;max-width:460px;margin:0 auto;
  display:flex;align-items:center;gap:8px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.97);border-top:1px solid var(--line);
  backdrop-filter:saturate(180%) blur(10px);
}
.bar-act{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10.5px;color:var(--muted);width:52px}
.bar-act.on{color:var(--brand-d)}
.bar-sign{
  flex:1;height:46px;border-radius:11px;background:linear-gradient(135deg,#3cc257,#22a343);
  color:#fff;font-size:15.5px;font-weight:600;display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 16px rgba(46,184,78,.26);
}
.bar-sign.done{background:#e8f6ec;color:#1f9a3f;box-shadow:none}

/* ---------------- 弹层 ---------------- */
.sheet-mask{
  position:fixed;inset:0;background:rgba(17,24,39,.42);z-index:100;
  display:flex;align-items:flex-end;justify-content:center;animation:fade .18s ease;
}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet{
  width:100%;max-width:460px;background:#fff;border-radius:20px 20px 0 0;
  padding:16px 18px calc(18px + env(safe-area-inset-bottom));
  animation:up .24s cubic-bezier(.22,.9,.3,1);
}
@keyframes up{from{transform:translateY(30px);opacity:.6}to{transform:none;opacity:1}}
.sheet-head{display:flex;align-items:center;justify-content:space-between;font-size:15.5px;font-weight:600;margin-bottom:12px}
.sheet-close{width:30px;height:30px;border-radius:50%;background:#f2f4f7;color:#6b7684;font-size:13px}
.sign-hint{font-size:12.5px;color:var(--muted);margin-bottom:10px}
.sign-box{position:relative;height:176px;border-radius:12px;background:#fcfdfc;border:1px solid #e6ecef;overflow:hidden}
.sign-box canvas{width:100%;height:100%;touch-action:none;position:relative;z-index:2}
.sign-ph{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:#c8d2da;font-size:14px;pointer-events:none;z-index:1;
}
.sign-line{position:absolute;left:24px;right:24px;bottom:38px;border-bottom:1px dashed #dfe7ea;pointer-events:none}
.sign-tools{display:flex;gap:10px;margin-top:14px}
.sign-tools .btn{flex:1}
.sign-legal{font-size:11px;color:#aab4c1;line-height:1.6;margin-top:12px}
.set-list{margin:2px 0 6px}
.set-item{display:flex;align-items:center;justify-content:space-between;padding:15px 2px;border-bottom:1px solid var(--line);font-size:15px}
.set-item:last-child{border-bottom:none}
.set-item.danger{color:var(--danger)}
.chev{color:#c8d2da;font-size:18px}
.pwd-form input{
  width:100%;height:46px;border-radius:11px;border:1px solid #e3e8ee;background:#fafbfc;
  padding:0 14px;font-size:15px;margin-bottom:11px;outline:none;
}
.pwd-form input:focus{border-color:var(--brand);background:#fff}

.toast{
  position:fixed;left:50%;bottom:96px;transform:translateX(-50%);
  background:rgba(24,32,44,.9);color:#fff;font-size:13.5px;padding:9px 16px;border-radius:10px;
  z-index:200;max-width:80%;text-align:center;
}
.hidden{display:none!important}
.wecom-tip{margin:0 0 10px;padding:9px 12px;border-radius:9px;background:#eef5ff;border:1px solid #cfe0ff;
  color:#2b5ca8;font-size:12.5px;line-height:1.6}
[hidden]{display:none!important}

/* 备案号 */
.beian-line{margin-top:14px;text-align:center;font-size:11px;color:#b6c0cc}
.beian{color:#9aa5b1;text-decoration:none;font-size:11px;letter-spacing:.2px}
.beian:hover{color:#35b34a;text-decoration:underline}
.beian-light{color:rgba(255,255,255,.8)}
.beian-light:hover{color:#fff}
