:root{
  --bg:#f5f7fa;
  --surface:#ffffff;
  --surface-2:#f8fafc;
  --ink:#101828;
  --text:#344054;
  --muted:#667085;
  --subtle:#98a2b3;
  --line:#e6ebf2;
  --brand:#111827;
  --accent:#e93f6f;
  --accent-soft:#fff1f4;
  --blue:#2563eb;
  --blue-soft:#eff6ff;
  --green:#12a66a;
  --green-soft:#ecfdf3;
  --orange:#f59e0b;
  --orange-soft:#fff7ed;
  --red:#ef4444;
  --red-soft:#fff1f3;
  --radius:16px;
  --shadow:0 8px 22px rgba(16,24,40,.055);
  --shadow-lg:0 22px 60px rgba(16,24,40,.18);
}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",Arial,sans-serif;color:var(--text);background:var(--bg)}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
.btn{border:0;border-radius:12px;padding:10px 14px;font-weight:900;background:var(--brand);color:#fff;transition:transform .14s ease,opacity .14s ease}
.btn:active{transform:scale(.98)}
.btn.secondary{background:#eef2f7;color:#344054}
.btn.accent{background:var(--accent);color:#fff}
.btn.ghost{background:#fff;color:#344054;border:1px solid var(--line)}
.btn.danger{background:var(--red);color:#fff}
.btn.success{background:var(--green);color:#fff}
.btn.small{font-size:12px;padding:7px 10px;border-radius:10px}
.input, input, textarea, select{width:100%;border:1px solid #dfe5ee;border-radius:12px;padding:11px 12px;background:#fff;color:var(--text);outline:none}
.input:focus,input:focus,textarea:focus,select:focus{border-color:rgba(233,63,111,.55);box-shadow:0 0 0 3px rgba(233,63,111,.10)}
textarea{min-height:90px;resize:vertical}
label{display:block;font-size:13px;color:#475467;margin:11px 0 7px;font-weight:850}
.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 7px;font-size:11px;font-weight:850;background:#f2f4f7;color:#667085;white-space:nowrap}
.badge.red{background:var(--red-soft);color:#d92d20}.badge.blue{background:var(--blue-soft);color:var(--blue)}.badge.green{background:var(--green-soft);color:#039855}.badge.accent{background:var(--accent-soft);color:var(--accent)}.badge.orange{background:var(--orange-soft);color:#b54708}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.muted{color:var(--muted)}
.copybox{background:var(--surface-2);border:1px dashed #d8e0ea;border-radius:13px;padding:10px;font-size:13px;color:#42495a;line-height:1.58;white-space:pre-wrap}
.modal{position:fixed;inset:0;background:rgba(16,24,40,.58);display:none;align-items:flex-end;justify-content:center;padding:12px;z-index:50}
.modal.show{display:flex}.modal-box{background:#fff;border-radius:22px;padding:16px;width:100%;max-width:520px;max-height:90vh;overflow:auto;box-shadow:var(--shadow-lg)}.modal-title{margin:0;font-size:18px;color:var(--ink);font-weight:950}.row{display:flex;align-items:center;justify-content:space-between;gap:10px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.toast{position:fixed;left:50%;bottom:84px;transform:translateX(-50%);background:#111827;color:#fff;border-radius:999px;padding:10px 14px;font-size:13px;display:none;z-index:99;max-width:86%}.toast.show{display:block}.empty{color:#8c94a6;text-align:center;padding:32px 14px;line-height:1.7}.money{color:var(--accent);font-weight:950}
@media(max-width:520px){.grid2{grid-template-columns:1fr}}
