:root{--bg: #ece9f4;--surface: #ffffff;--border: #e4e0ee;--text: #1a1626;--muted: #6b6480;--primary: #6d28d9;--primary-dark: #5b21b6;--accent: #a78bfa;--danger: #dc2626;--ok: #16a34a;font-family:Outfit,Sarabun,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--text)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}a{color:var(--primary);text-decoration:none}.app{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:linear-gradient(165deg,#3b1e78,#6d28d9 55%,#4c1d95);color:#e9e2fb;padding:22px 14px;display:flex;flex-direction:column;gap:3px}.sidebar .brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:19px;letter-spacing:-.01em;color:#fff;padding:6px 10px 18px}.sidebar a{color:#d6ccf3;padding:10px 12px;border-radius:10px;font-size:14px;font-weight:500}.sidebar a.active{background:#ffffff29;color:#fff}.sidebar a:hover{background:#ffffff1a;color:#fff}.sidebar .spacer{flex:1}.sidebar .me{font-size:12px;color:#cabdf0;padding:10px 12px;border-top:1px solid rgba(255,255,255,.16);border-radius:10px}.sidebar .me:hover{background:#ffffff1a}.main{padding:28px 32px;overflow:auto}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.page-head h1{font-size:24px;font-weight:700;letter-spacing:-.01em;margin:0}button{font:inherit;cursor:pointer;border:0;border-radius:10px;padding:10px 16px;background:var(--primary);color:#fff;font-weight:600;box-shadow:0 8px 18px -8px #6d28d980}button:hover{background:var(--primary-dark)}button.ghost{background:#f4f2fb;color:#463f57;border:1px solid var(--border);box-shadow:none}button.ghost:hover{border-color:var(--accent);background:#efeafd}button.danger{background:var(--danger);box-shadow:none}button:disabled{opacity:.5;cursor:not-allowed}input,select{font:inherit;padding:11px 13px;border:1.5px solid var(--border);border-radius:10px;background:#fff;width:100%;color:var(--text)}input:focus,select:focus{outline:none;border-color:var(--accent)}label{display:block;font-size:13px;color:#374151;margin:0 0 4px;font-weight:500}.field{margin-bottom:14px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:end}.card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:22px;box-shadow:0 24px 48px -36px #2d145a40}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em}tr:last-child td{border-bottom:0}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;background:#f2ecfe;color:#5b21b6}.badge.ok{background:#dcfce7;color:#166534}.badge.muted{background:#f3f4f6;color:#6b7280}.actions{display:flex;gap:8px}.actions button{padding:5px 10px;font-size:13px}.pagination{display:flex;gap:12px;align-items:center;justify-content:flex-end;margin-top:16px;font-size:14px;color:var(--muted)}.error{background:#fef2f2;color:#b91c1c;padding:10px 14px;border-radius:8px;font-size:14px;margin-bottom:12px}.muted{color:var(--muted)}.empty{padding:40px;text-align:center;color:var(--muted)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{width:380px;background:#fff;padding:40px 36px;border-radius:24px;box-shadow:0 40px 80px -40px #2d145a73;text-align:center}.login-card .brandmark{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:20px;font:800 24px/1 Outfit;letter-spacing:-.02em}.login-card h1{margin:0 0 4px;font-size:24px;font-weight:700}.login-wrap{background:linear-gradient(150deg,#3b1e78,#6d28d9 60%,#4c1d95)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182780;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:#fff;border-radius:20px;padding:28px;width:480px;max-height:90vh;overflow:auto;box-shadow:0 40px 80px -40px #2d145a80}.modal h2{margin:0 0 16px;font-size:18px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px}.stat{background:#fff;border:1px solid var(--border);border-radius:18px;padding:22px;box-shadow:0 24px 48px -36px #2d145a40}.stat .n{font-size:30px;font-weight:700;letter-spacing:-.02em;color:var(--primary)}.stat .l{color:var(--muted);font-size:13px;margin-top:4px}
