:root{
  --ink:#0f1720; --dim:#5b6b78; --line:#d5dce2; --bg:#f4f7f9;
  --brand:#1f4d38; --brand2:#2b567f; --accent:#2b6b46;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg)}
.topbar{display:flex;justify-content:space-between;align-items:center;
  padding:14px 20px;background:var(--brand);color:#fff}
.brand{font-weight:800;font-size:18px}
.brand span{font-weight:500;opacity:.85;margin-left:6px;font-size:14px}
.logout{display:flex;align-items:center;gap:12px;margin:0}
.who{color:#dfeee6;font-size:14px}
.wrap{max-width:900px;margin:26px auto;padding:0 16px}
.foot{max-width:900px;margin:30px auto;padding:16px;color:var(--dim);font-size:13px;text-align:center}
h1{font-size:24px;margin:0 0 4px} h2{font-size:18px;margin:0 0 10px}
.muted{color:var(--dim)} .small{font-size:13px}
a{color:var(--brand2)}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;margin:16px 0;
  box-shadow:0 1px 2px rgba(16,23,32,.04)}
.card.auth{max-width:400px;margin:40px auto}
.head-row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}
label{display:block;font-weight:600;font-size:14px;margin:14px 0 5px}
input{width:100%;padding:11px 12px;font-size:16px;border:1px solid var(--line);border-radius:8px}
.btn{display:inline-block;padding:11px 18px;font-size:15px;border:1px solid var(--line);
  border-radius:8px;background:#fff;color:var(--ink);cursor:pointer;text-decoration:none;font-weight:600}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff;width:100%;margin-top:18px}
.btn.ghost{background:transparent;border-color:rgba(255,255,255,.5);color:#fff}
.head-row .btn.ghost{border-color:var(--line);color:var(--brand2)}
.flash{background:#fff7e6;border:1px solid #e6c67a;border-radius:8px;padding:10px 14px;margin-bottom:14px;font-size:14px}
.firsttime{background:#eef6f0;border:1px solid #bfe0cb;border-radius:8px;padding:11px 14px;margin:14px 0 4px;font-size:14px;color:#20492f}
.firsttime a{font-weight:700}
.tiles{display:flex;gap:14px;flex-wrap:wrap;margin:16px 0}
.tile{flex:1;min-width:170px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px}
.tile .k{font-size:12px;color:var(--dim);text-transform:uppercase;letter-spacing:.5px}
.tile .v{font-size:26px;font-weight:800;margin-top:4px}
table.grid{width:100%;border-collapse:collapse;font-size:14px}
table.grid th,table.grid td{border:1px solid var(--line);padding:8px 10px;text-align:left}
table.grid th{background:#eef2f5;font-size:12.5px}
table.grid .num{text-align:right}
table.grid tr.tot td{background:#f2f5f8;font-weight:700}
@media(max-width:560px){.tiles{flex-direction:column}table.grid{font-size:13px}}
details.pay{border:1px solid var(--line);border-radius:8px;margin:8px 0;background:#fff}
details.pay summary{display:flex;gap:14px;align-items:center;padding:10px 12px;cursor:pointer;font-size:14px;list-style:none}
details.pay summary::-webkit-details-marker{display:none}
details.pay summary::before{content:"\25B8";color:var(--dim);transition:transform .15s}
details.pay[open] summary::before{transform:rotate(90deg)}
details.pay[open] summary{border-bottom:1px solid var(--line);background:#f7f9fb}
details.pay .pdate{min-width:88px}
details.pay .pref{font-weight:600;flex:1}
details.pay .pamt{font-weight:700;text-align:right;min-width:100px}
details.pay table.grid{margin:0;border:0}
@media(max-width:560px){details.pay summary{flex-wrap:wrap;gap:6px 12px}details.pay .pcount{display:none}}
table.grid tr.split td{background:#fafbfc;color:var(--dim);font-size:12.5px;padding-top:4px;padding-bottom:4px;border-top:0}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.wrap{max-width:1040px}
