*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
     background:#F2F4F7;color:#1B2430;font-size:15px;padding:14px 14px 40px}
.wrap{max-width:520px;margin:0 auto}
.wide{max-width:1100px;margin:0 auto}
.card{background:#fff;border-radius:14px;padding:16px;margin-bottom:12px;
      box-shadow:0 1px 3px rgba(16,24,40,.08)}
h1{font-size:17px;margin:0 0 2px;color:#0F2A4E}
h2{font-size:15px;margin:0 0 10px;color:#0F2A4E}
.sub{font-size:12px;color:#7A8699;margin-bottom:14px}
.nobar{display:flex;align-items:center;gap:10px;background:#0F2A4E;color:#fff;
       border-radius:12px;padding:12px 14px;margin-bottom:14px}
.nobar .lab{font-size:12px;opacity:.75}
.nobar .no{font-size:26px;font-weight:800;letter-spacing:1px;line-height:1.1}
.nobar input{flex:1;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.35);
      color:#fff;font-size:22px;font-weight:800;padding:8px 10px;border-radius:8px;
      width:100%;letter-spacing:1px}
.nobar input::placeholder{color:rgba(255,255,255,.5);font-weight:400}
label{display:block;font-size:12.5px;color:#5A6678;margin:12px 0 5px}
label .req{color:#C8322B;font-weight:700}
.lock{max-width:340px;margin:60px auto;text-align:center}
.lock h1{font-size:18px}
.lock .sub{margin-bottom:0}
.lock input[type=password],.lock input[type=tel]{width:100%;margin-top:10px;font-size:16px;text-align:center}
.lock .btn{margin-top:12px;padding:13px;font-size:16px}
input[type=password],input[type=tel]{width:100%;padding:11px 12px;font-size:16px;border:1px solid #D3DAE3;
  border-radius:9px;background:#fff;color:#1B2430}
input[type=password]:focus,input[type=tel]:focus{outline:none;border-color:#2F6BD8;box-shadow:0 0 0 3px rgba(47,107,216,.12)}
input[type=text],input[type=number],input[type=date],select,textarea{
  width:100%;padding:11px 12px;font-size:16px;border:1px solid #D3DAE3;border-radius:9px;
  background:#fff;color:#1B2430;appearance:none}
select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8'><path d='M1 1l5 5 5-5' fill='none' stroke='%235A6678' stroke-width='2'/></svg>");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}
textarea{min-height:58px;resize:vertical;font-family:inherit}
input:focus,select:focus,textarea:focus{outline:none;border-color:#2F6BD8;
  box-shadow:0 0 0 3px rgba(47,107,216,.12)}
.row{display:flex;gap:10px}
.row>div{flex:1}
.amt input{font-size:22px;font-weight:800;color:#0F7A3D;padding:12px}
.btn{width:100%;padding:15px;font-size:17px;font-weight:700;border:0;border-radius:11px;
     background:#0F2A4E;color:#fff;margin-top:18px;cursor:pointer}
.btn:active{background:#0A1D38}
.btn[disabled]{background:#A7B2C2}
.btn.sm{padding:10px 14px;font-size:14px;margin-top:0;width:auto}
.btn.ghost{background:#fff;color:#0F2A4E;border:1px solid #C9D3E0}
.msg{margin-top:12px;padding:11px 13px;border-radius:9px;font-size:13.5px;display:none;line-height:1.5}
.msg.ok{display:block;background:#E7F6EE;color:#0B6B37;border:1px solid #B7E4C9}
.msg.err{display:block;background:#FDECEA;color:#A3201A;border:1px solid #F5C6C2}
.msg.info{display:block;background:#EEF3FC;color:#23487F;border:1px solid #CFDDF5}
.tip{font-size:11.5px;color:#8A94A6;line-height:1.6;margin-top:10px}
.foot{text-align:center;font-size:11.5px;color:#9AA4B4;margin-top:16px;line-height:1.7}
.foot a{color:#2F6BD8;text-decoration:none}
.badge{display:inline-block;font-size:11px;padding:3px 8px;border-radius:20px;
   background:#EEF3FC;color:#23487F;margin-bottom:8px}
.badge.done{background:#E7F6EE;color:#0B6B37}
.badge.warn{background:#FFF4E0;color:#8A5A00}

/* 表格（台账 / 管理后台） */
.bar{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-bottom:12px}
.bar>div{display:flex;flex-direction:column;gap:4px}
.bar label{margin:0;font-size:12px}
.bar input,.bar select{padding:8px 10px;font-size:14px;width:auto;min-width:120px}
.bar button{padding:9px 14px;font-size:14px;border:0;border-radius:9px;background:#0F2A4E;color:#fff;cursor:pointer}
.bar button.ghost{background:#fff;color:#0F2A4E;border:1px solid #C9D3E0}
.stats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.stat{flex:1;min-width:110px;background:#fff;border-radius:12px;padding:12px 14px;
      box-shadow:0 1px 3px rgba(16,24,40,.08)}
.stat .k{font-size:11.5px;color:#7A8699}
.stat .v{font-size:20px;font-weight:800;color:#0F2A4E;margin-top:3px}
.stat .v.red{color:#C8322B}
.stat .v.green{color:#0F7A3D}
.tblwrap{overflow-x:auto;background:#fff;border-radius:12px;box-shadow:0 1px 3px rgba(16,24,40,.08)}
table{border-collapse:collapse;width:100%;font-size:13px;min-width:900px}
th,td{padding:9px 10px;text-align:left;border-bottom:1px solid #EDF1F6;white-space:nowrap}
th{background:#F7F9FC;color:#5A6678;font-weight:600;font-size:12px;position:sticky;top:0}
tr:hover td{background:#FAFCFF}
td.num{text-align:right;font-variant-numeric:tabular-nums}
.tag{display:inline-block;font-size:11px;padding:2px 7px;border-radius:20px;background:#EEF3FC;color:#23487F}
.tag.done{background:#E7F6EE;color:#0B6B37}
.tag.wait{background:#FFF4E0;color:#8A5A00}
.tag.off{background:#F1F3F6;color:#8A94A6}
.empty{padding:28px;text-align:center;color:#9AA4B4;font-size:13px}
.small{font-size:12px;color:#8A94A6}
