:root{--g:#2e7d32;--gl:#e8f5e9;--b:#42a5f5;--bl:#e3f2fd;--k:#212121;--bg:#f0f4f2}
*{box-sizing:border-box}body{margin:0;font-family:"Microsoft YaHei",sans-serif;background:var(--bg);color:var(--k)}
a{color:var(--g);text-decoration:none}.layout{display:flex;min-height:100vh}
.sidebar{width:230px;background:linear-gradient(180deg,#1b5e20,#263238);color:#fff;padding:16px 0;flex-shrink:0}
.sidebar h1{font-size:16px;margin:0 16px 16px;line-height:1.4}
.sidebar a{display:block;color:#c8e6c9;padding:10px 18px;font-size:13px}
.sidebar a:hover,.sidebar a.active{background:rgba(255,255,255,.1);color:#fff}
.main{flex:1;min-width:0}.topbar{background:#fff;padding:12px 18px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.content{padding:18px}.card{background:#fff;border-radius:10px;padding:16px;box-shadow:0 4px 14px rgba(0,0,0,.05);margin-bottom:14px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.stat{background:linear-gradient(135deg,var(--gl),var(--bl));border-radius:10px;padding:16px}
.stat b{font-size:24px;display:block}.table{width:100%;border-collapse:collapse;font-size:13px}
.table th,.table td{border-bottom:1px solid #eee;padding:8px;text-align:left;vertical-align:top}
.btn{display:inline-block;background:var(--g);color:#fff;border:0;border-radius:6px;padding:7px 12px;font-size:13px;cursor:pointer}
.btn-blue{background:var(--b)}.btn-outline{background:#fff;color:var(--g);border:1px solid var(--g)}
.btn-danger{background:#c62828}.form-group{margin-bottom:10px}label{display:block;font-size:13px;margin-bottom:4px;font-weight:600}
input,select,textarea{width:100%;padding:8px 10px;border:1px solid #cfd8dc;border-radius:6px;font-size:13px}
.flash{padding:10px;border-radius:6px;margin-bottom:10px}.flash-ok{background:var(--gl)}.flash-err{background:#ffebee;color:#c62828}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--gl),var(--bl))}
.login-box{width:min(400px,92%);background:#fff;padding:28px;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.08)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:900px){.layout{flex-direction:column}.sidebar{width:100%}.stats{grid-template-columns:1fr 1fr}.grid-2{grid-template-columns:1fr}}
