:root{--brand:#1b4a9c;--brand-dark:#14356f;--bg:#f4f6fa;--card:#fff;--border:#dde3ec;--text:#1c2430;--muted:#6b7683}*{box-sizing:border-box}body{margin:0;font-family:Noto Sans Thai,Sarabun,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--brand)}.btn{background:var(--brand);color:#fff;border:0;border-radius:6px;padding:10px 16px;font-size:14px;cursor:pointer}.btn:hover{background:var(--brand-dark)}.btn.ghost{background:transparent;color:var(--brand);border:1px solid var(--border)}.input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;margin-top:4px}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:20px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{width:360px}.login-card h1{font-size:18px;margin:0 0 4px;color:var(--brand-dark)}.login-card .sub{color:var(--muted);font-size:13px;margin-bottom:20px}.field{margin-bottom:14px}.field label{font-size:13px;color:var(--muted)}.err{color:#c0392b;font-size:13px;margin-bottom:10px}.topbar{display:flex;align-items:center;justify-content:space-between;background:var(--card);border-bottom:1px solid var(--border);padding:12px 20px}.topbar .brand{font-weight:700;color:var(--brand-dark)}.layout{display:flex;min-height:calc(100vh - 53px)}.side{width:220px;background:var(--card);border-right:1px solid var(--border);padding:14px}.side a{display:block;padding:10px 12px;border-radius:6px;color:var(--text);text-decoration:none;font-size:14px;margin-bottom:2px}.side a.active,.side a:hover{background:var(--bg);color:var(--brand-dark)}.main{flex:1;padding:24px}.pill{font-size:12px;background:#eef2f9;color:var(--brand-dark);padding:2px 8px;border-radius:10px}.muted{color:var(--muted)}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}.kpi{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:16px}.kpi .n{font-size:26px;font-weight:700;color:var(--brand-dark)}.kpi .l{font-size:13px;color:var(--muted)}
