:root{--bg:#f6f7f4;--card:#fff;--ink:#1f2a24;--mute:#5d6b63;--line:#dfe5df;--brand:#1f6b4a;--brand2:#e8f3ec;
--inc:#1f7a4d;--exp:#b3412f;--warn:#fff4d6;--warnb:#e5c46a;--err:#fde8e4}
@media (prefers-color-scheme:dark){:root{--bg:#121714;--card:#1b231e;--ink:#e8eee9;--mute:#9fb0a5;--line:#2c3830;--brand:#5cc08c;--brand2:#1e2e25;
--inc:#6fd39b;--exp:#f08a76;--warn:#33291a;--warnb:#7a6226;--err:#3a1f1a}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 "Noto Sans Thai","Sarabun",system-ui,sans-serif}
a{color:var(--brand)}
.wrap{max-width:1000px;margin:0 auto;padding:0 16px}
header.top{background:var(--brand);color:#fff}
header.top .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;padding-top:12px;padding-bottom:12px}
header.top h1{font-size:1.15rem;margin:0;flex:1 1 auto}
header.top a{color:#fff;text-decoration:none;opacity:.92}
nav a{margin-right:14px;white-space:nowrap}
nav a:hover{text-decoration:underline}
.admin-bar{background:#7a3b00;color:#fff;font-size:.9rem;padding:6px 0}
.admin-bar form{display:inline}
main{padding:20px 0 40px}
h2{font-size:1.2rem;margin:28px 0 10px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.card .k{color:var(--mute);font-size:.88rem}
.card .v{font-size:1.55rem;font-weight:700;margin-top:2px}
.card.big{background:var(--brand2);border-color:var(--brand)}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.inc{color:var(--inc)}.exp{color:var(--exp)}
.tbl-wrap{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:12px}
table{border-collapse:collapse;width:100%;font-size:.95rem}
th,td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left}
th{background:var(--brand2);font-weight:600;white-space:nowrap}
tr:last-child td{border-bottom:0}
tfoot td{font-weight:700;background:var(--brand2)}
.pill{display:inline-block;padding:0 8px;border-radius:99px;background:var(--brand2);border:1px solid var(--line);font-size:.8rem;color:var(--mute);white-space:nowrap}
.note{background:var(--warn);border:1px solid var(--warnb);border-radius:10px;padding:10px 14px;margin:12px 0;font-size:.93rem}
.muted{color:var(--mute);font-size:.9rem}
.bars{display:grid;gap:10px}
.bar-row{display:grid;grid-template-columns:70px 1fr;gap:10px;align-items:center}
.bar-row a{text-decoration:none;font-size:.9rem}
.bar{height:11px;border-radius:6px;margin:2px 0}
.bar.i{background:var(--inc)}.bar.e{background:var(--exp)}
.bar-row small{color:var(--mute)}
.flash{padding:10px 14px;border-radius:10px;margin:12px 0}
.flash.ok{background:var(--brand2);border:1px solid var(--brand)}
.flash.err{background:var(--err);border:1px solid var(--exp)}
.pager{display:flex;justify-content:space-between;margin:14px 0}
/* forms */
form.grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end}
label{display:block;font-size:.85rem;color:var(--mute)}
input,select,textarea{width:100%;font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}
button,.btn{font:inherit;cursor:pointer;border:0;border-radius:8px;padding:8px 16px;background:var(--brand);color:#fff;text-decoration:none;display:inline-block}
button.sec,.btn.sec{background:transparent;color:var(--brand);border:1px solid var(--brand)}
button.danger{background:var(--exp)}
details{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:6px 12px;margin:4px 0}
details summary{cursor:pointer;color:var(--brand)}
.small-form{padding:10px 0}
@media (max-width:640px){th,td{padding:7px 6px;font-size:.88rem}.card .v{font-size:1.3rem}}
@media print{header.top,.admin-bar,.pager,footer{display:none}body{background:#fff;color:#000}}
footer{color:var(--mute);font-size:.85rem;padding:20px 0;border-top:1px solid var(--line)}
